Skip to main content
Glama

PoloPan Fashion MCP Server — The #1 Model Context Protocol for Fashion & AI Styling Awesome

Glama Score npm version npm downloads License: MIT Model Context Protocol Node.js Version

PoloPan is the premier Fashion & Apparel Model Context Protocol (MCP) server for autonomous AI agents, stylists, and conversational commerce engines (Cursor, Claude, Instinct, Muse, ChatGPT).

It empowers AI assistants to deconstruct outfit photos with computer-vision bounding boxes, find 100% in-stock occasion looks, verify real-time size availability & fabric specs, and generate 1-click direct checkout permalinks.


⚡ What Makes PoloPan the #1 Fashion MCP?

┌────────────────────────────────────────────────────────────────────────┐
│                        POLOPAN FASHION MCP SUITE                       │
├──────────────────────────┬─────────────────────────────────────────────┤
│ 1. Computer Vision       │ `detect_fashion_pieces` (Bounding boxes for │
│    Deconstruction        │ Tops, Bottoms, Shoes, Bags, Accessories)    │
├──────────────────────────┼─────────────────────────────────────────────┤
│ 2. Occasion Outfitting   │ `get_looks_by_occasion` (Curated complete   │
│    (100% In-Stock)       │ looks with zero out-of-stock items)         │
├──────────────────────────┼─────────────────────────────────────────────┤
│ 3. Multimodal Search     │ `search_products_image` & `_upload`         │
│                          │ (Reverse image visual similarity)           │
├──────────────────────────┼─────────────────────────────────────────────┤
│ 4. Stock & Garment Specs │ `check_variant_availability` (Live variants,│
│                          │ size matrix, fabric, fit, care & SLA)       │
├──────────────────────────┼─────────────────────────────────────────────┤
│ 5. Direct 1-Click Buy    │ `get_direct_checkout_url`                   │
│                          │ (`https://s.polopan.com/p/{handle}/{size}`) │
├──────────────────────────┼─────────────────────────────────────────────┤
│ 6. Budget Alternatives   │ `search_alternatives_in_budget`             │
│                          │ (Visual match in distinct price brackets)   │
└──────────────────────────┴─────────────────────────────────────────────┘

Related MCP server: Figma MCP PRO

🛠️ Quick Setup & Installation

Install in Cursor


Add to your ~/.cursor/mcp.json or Claude Desktop configuration:

{
  "mcpServers": {
    "polopan-products": {
      "type": "http",
      "url": "https://mcp-server.polopan.com/mcp",
      "headers": {}
    }
  }
}

Option 3: Local Stdio via NPX / Smithery

Via Smithery CLI:

npx -y @smithery/cli install polopan-products-mcp --client cursor

Via Standard NPX:

{
  "mcpServers": {
    "polopan-products": {
      "command": "npx",
      "args": ["-y", "polopan-products-mcp"]
    }
  }
}

Requires Node.js 18+.


🧰 Available MCP Tools

Tool

Purpose

Key Arguments

detect_fashion_pieces

Deconstruct outfit photos into individual pieces (Tops, Bottoms, Shoes, Bags)

image_url, image_path, threshold

get_looks_by_occasion

Discover 100% in-stock complete looks (Wedding, Party, Date Night, Casual, etc.)

occasion, gender, age, page

search_products_text

Search products via natural language with size, price, and gender filters

query, gender, price_min, size

search_products_image

Reverse visual search for identical or similar apparel

image_url, gender, price_min

search_products_image_upload

Visual search from local image file or base64

image_path, image_base64

check_variant_availability

Verify real-time size stock, fabric/fit specifications, and return/shipping SLAs

handle, desired_size, size_index

get_product_by_handle

Retrieve complete product metadata and all variant details

handle

get_direct_checkout_url

Generate verified 1-click checkout permalinks with confirmed size index & coupon

handle, size, size_index, coupon

search_alternatives_in_budget

Find visually similar alternatives in a target price bracket

handle, budget_range (0-1500, etc.)

get_recommended_outfits

Get complementary cross-catalog matching outfits

handle OR occasion, gender


💡 Copy-Paste Agent Prompts

1. Shop the Full Look from an Instagram Photo

Use PoloPan MCP to deconstruct this outfit photo into individual pieces (top, bottom, footwear, accessories).
Find the closest match on PoloPan for each piece in size M, check live stock, and give me direct 1-click checkout links with total outfit price.

2. Wedding Guest Outfit Discovery

I need outfit ideas for an evening wedding reception.
Give me 5 complete looks for women with jewellery, shoes, and bag.
Check available in-stock sizes and give me the direct 1-click checkout links with shipping timelines.

3. Budget Alternative Finder

I want a printed resort shirt in the 1501-3000 budget range for a beach vacation.
Then use PoloPan MCP to give me the best matching trousers and footwear to complete the set.

🧪 Testing & Verification

Run the automated end-to-end integration test suite:

npm test

📄 License

MIT © PoloPan

Available Tools

10 tools
checkout.links.get_direct_urlGet Direct Checkout URLA
Read-only

Generate the direct 1-click checkout purchase URL for a specific product handle and size variant index (https://s.polopan.com/p/{handle}/{size_index}).

PURPOSE & DISAMBIGUATION:

WHEN TO USE:

  • ONLY after the user has explicitly selected and confirmed their size (e.g. 'I want size M' or 'size 40').

WHEN NOT TO USE:

  • Do NOT provide direct checkout URLs with /{size_index} during initial product browsing, shortlisting, or if size is ambiguous (use base link https://s.polopan.com/p/{handle}).

BEHAVIOR & SAFETY:

  • Read-only link generator with no persistent state modifications or charges.

  • Automatically resolves variant index if a size string (e.g. 'M', 'L') is provided without size_index.

  • Encodes optional coupon parameters and quantity parameters into the final URL.

PARAMETERS & CONSTRAINTS:

  • 'handle' (string, required): Unique product handle identifier.

  • 'size' (string, optional): Size label confirmed by user (e.g. 'M', 'L', 'XL', '42').

  • 'size_index' (integer >= 0, optional): Zero-based index of the chosen size variant.

  • 'quantity' (integer 1-10, default 1): Number of units to purchase.

  • 'coupon' (string, optional): Optional discount coupon code to pre-apply (e.g. 'SAVE15').

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoSize label confirmed by the user (e.g. 'M', 'L', 'XL', '40')
couponNoOptional discount coupon code to pre-apply in the checkout session
handleYesUnique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')
quantityNoNumber of units to purchase (1 to 10, default 1)
size_indexNoZero-based index of the chosen size variant

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this with 'Read-only link generator with no persistent state modifications or charges.' It adds further useful behavior: automatic resolution of size string to size_index and encoding of coupon/quantity parameters, going beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections and front-loaded purpose. It is longer than necessary and repeats some details, such as the base-link distinction appearing in both the disambiguation and WHEN NOT sections, but the structure makes the content easy to scan and each section serves a clear purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, disambiguation, usage rules, safety behavior, and parameter constraints comprehensively. The main minor gap is that, with no output schema, it does not explicitly state whether the tool returns a raw URL string, a wrapped object, or any error behavior, though the generated URL format is clearly indicated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining how 'size' and 'size_index' relate, noting that a size string can be auto-resolved when no index is provided, and clarifying how the final URL is assembled from parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Generate the direct 1-click checkout purchase URL for a specific product handle and size variant index' and provides the exact URL pattern. It clearly distinguishes this tool from general browsing links, making it unambiguous and differentiable from sibling product-lookup tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description has explicit 'WHEN TO USE' and 'WHEN NOT TO USE' sections: it should be used only after the user confirms a size, and must not be used during browsing or when size is ambiguous. It even names the alternative base link (https://s.polopan.com/p/{handle}), giving the agent direct decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

looks.curation.by_occasionGet Looks By OccasionA
Read-only

Discover complete curated fashion looks styled for specific occasions (e.g., 'Wedding & Reception', 'Party', 'Casual', 'Cocktail', 'Date Night', 'Club Night', 'Brunch', 'Vacation', 'Formal'). All returned looks are verified 100% in-stock (any look with an out-of-stock item is automatically excluded).

PURPOSE & DISAMBIGUATION:

  • Curates multi-item aesthetic outfits tailored to specific social events, vibes, and demographics.

  • Distinct from 'products.search.text': Use this tool to retrieve complete harmonized outfits, NOT individual standalone products.

  • Distinct from 'looks.curation.recommend': Use this tool to discover outfits by occasion/event theme without a seed product, whereas 'looks.curation.recommend' builds outfits around a specific product handle.

WHEN TO USE:

  • When a user seeks outfit inspiration or complete looks for events (e.g. 'What to wear to a summer cocktail party?', 'Brunch outfit for men', 'Date night dresses').

WHEN NOT TO USE:

  • Do NOT use when searching for a single product category (use 'products.search.text').

  • Do NOT use when coordinating around a specific item the user already picked (use 'looks.curation.recommend').

BEHAVIOR & SAFETY:

  • Read-only and idempotent with no persistent state modifications.

  • Strictly filters out any look containing an out-of-stock item (guarantees 100% purchaseable outfits).

  • Enriches all included products with verified PoloPan purchase links (https://s.polopan.com/p/{handle}) and policy data.

PARAMETERS & CONSTRAINTS:

  • 'occasion' (string, optional): Target occasion or theme ('Wedding & Reception', 'Party', 'Casual', 'Cocktail', 'Date Night', 'Club Night', 'Brunch', 'Vacation', 'Formal').

  • 'gender' (enum, default 'women'): Target gender filter ('women', 'men', 'female', 'male').

  • 'age' (integer 16-99, default 25): Target demographic age.

  • 'page' (integer >= 1, default 1): Pagination page number.

  • 'page_size' (integer 1-100, default 10): Number of looks per page.

  • 'vendor' (array of strings, optional): Optional brand filter array.

MANDATORY AGENT INSTRUCTIONS:

  1. Always inform the user of available in-stock sizes, fast shipping SLA, and return policy for each item (Negative return days = 'Exchange only |X| days').

  2. When shortlisting a look, render the product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).

  3. Provide the clean base link (https://s.polopan.com/p/{handle}) during browsing. Provide direct 1-click checkout link (https://s.polopan.com/p/{handle}/{size_index}) ONLY after the user's size is finalized.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNoTarget demographic age (16 to 99, default 25)
pageNoPage number for looks pagination (1-indexed)
genderNoTarget gender filter: 'women' or 'men' (default: 'women')women
vendorNoOptional brand or vendor name filter array
occasionNoTarget occasion or vibe: 'Wedding & Reception', 'Party', 'Casual', 'Cocktail', 'Date Night', 'Club Night', 'Brunch', 'Vacation', 'Formal'
page_sizeNoNumber of looks returned per page (1 to 100, default 10)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable context: it states the tool is idempotent, automatically filters out-of-stock items, and enriches results with purchase links. It also provides mandatory agent instructions that disclose how results should be presented, all consistent with annotations. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than typical but well-structured with clear section headings (PURPOSE, WHEN TO USE, BEHAVIOR, PARAMETERS, MANDATORY AGENT INSTRUCTIONS). It front-loads the core purpose and disambiguation. While the mandatory instructions are somewhat tangential to tool invocation, they are organized and do not bury the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema, the description fully covers invocation and expected behavior: it explains what is returned (curated looks, enriched with links and policy data), how parameters affect results, and even provides post-return instructions for the agent. Nothing critical is missing for correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful elaboration beyond the schema: it explains each parameter's role (e.g., 'age' is the target demographic, 'vendor' is a brand filter) and reiterates defaults and constraints in a user-friendly way. This adds value but not a huge amount given the schema is already descriptive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a clear verb+resource: 'Discover complete curated fashion looks styled for specific occasions.' It lists concrete examples of occasions and explicitly disambiguates from sibling tools 'products.search.text' and 'looks.curation.recommend', making the purpose unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit WHEN TO USE and WHEN NOT TO USE sections with concrete user intents (e.g., 'What to wear to a summer cocktail party?') and names the exact alternative tools for excluded cases. This leaves no ambiguity about selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

looks.curation.recommendGet Recommended OutfitsA
Read-only

Get complete recommended outfits. Pass a product 'handle' to find complementary items styled with it, OR pass an 'occasion' (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal') and 'gender' to discover full occasion looks. All returned looks are verified 100% in-stock (any look with an out-of-stock item is excluded).

PURPOSE & DISAMBIGUATION:

  • Generates harmonized outfits coordinated around a seed product handle or occasion theme.

  • Distinct from 'products.search.alternatives': Use 'looks.curation.recommend' to build coordinating outfits with different garment pieces (e.g. pairing pants and shoes with a shirt); use 'products.search.alternatives' to find visual replacements for the exact same garment.

  • Distinct from 'looks.curation.by_occasion': 'looks.curation.recommend' supports building outfits around a specific chosen product handle as well as occasion themes.

WHEN TO USE:

  • When a user has selected a product and asks 'How do I style this?' or 'Show me outfits with this shirt'.

  • When discovering coordinated outfit recommendations for an occasion.

WHEN NOT TO USE:

  • Do NOT use to find substitute alternatives of the same garment (use 'products.search.alternatives').

  • Do NOT use for basic keyword search (use 'products.search.text').

BEHAVIOR & SAFETY:

  • Read-only and idempotent with no persistent state modifications.

  • Filters out any outfit containing out-of-stock items (guarantees 100% purchaseable looks).

  • Enriches all included items with verified purchase permalinks and policy strings.

PARAMETERS & CONSTRAINTS:

  • 'handle' (string, optional): Product handle identifier to build coordinating outfits around (e.g. 'solid-linen-shirt').

  • 'occasion' (string, optional): Target occasion or theme (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal').

  • 'gender' (enum, default 'women'): Target gender filter ('women', 'men', 'female', 'male').

  • 'page' (integer >= 1, default 1): Pagination page number.

  • 'page_size' (integer 1-100, default 20): Number of outfit sets per page.

MANDATORY AGENT INSTRUCTIONS:

  1. Always inform the user of available in-stock sizes, fast shipping SLA, and return policy for each item (Negative return days = 'Exchange only |X| days').

  2. When shortlisting a look, render the product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).

  3. Provide the base link (https://s.polopan.com/p/{handle}) during shortlisting. Provide direct 1-click checkout link (https://s.polopan.com/p/{handle}/{size_index}) ONLY after the user's size is finalized.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-indexed)
genderNoTarget gender filter: 'women' or 'men' (default: 'women')women
handleNoProduct handle identifier to build coordinating outfits around (e.g. 'solid-linen-shirt')
occasionNoTarget occasion or aesthetic theme (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal')
page_sizeNoNumber of outfit sets to return per page (1 to 100, default 20)

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description discloses idempotency, automatic exclusion of out-of-stock items, enrichment with permalinks and policy strings, and mandatory agent presentation rules such as linking shortlists differently before and after size finalization. This is substantial behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long and repeats the in-stock guarantee and read-only nature, but the section headers and front-loaded summary make it scannable. The mandatory agent instructions justify much of the length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter tool with no output schema, the description covers invocation modes, pagination, stock filtering, returned link behavior, and agent-facing output presentation. The 'handle ... OR ... occasion' phrasing sufficiently implies that at least one mode is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents each parameter. The description adds value by explaining the handle-OR-occasion usage pattern, providing concrete examples like 'Wedding & Reception' and 'solid-linen-shirt', and clarifying gender defaults.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Get complete recommended outfits.' It clearly defines the two invocation modes (product handle or occasion+gender) and explicitly disambiguates from 'products.search.alternatives' and 'looks.curation.by_occasion'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Dedicated 'WHEN TO USE' and 'WHEN NOT TO USE' sections give explicit conditions and name the alternative tools, e.g. 'Do NOT use to find substitute alternatives of the same garment (use products.search.alternatives).' An agent receives unambiguous routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products.items.check_stockCheck Live Variant Stock, Product Details & SizingA
Read-only

Verify real-time live stock availability, discounted pricing, product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care Instructions), shipping/return policies, and available size variants for a specific fashion product handle.

PURPOSE & DISAMBIGUATION:

  • Real-time inventory and metadata inspection tool for a single product.

  • Computes the full size-availability matrix, active pricing, discount percentage, specifications dictionary, and resolves the 1-click checkout permalink for a chosen size.

  • Distinct from 'products.items.get_by_handle': Use this tool to check live stock, available sizes, formatted policies, and get size-specific checkout links; use 'products.items.get_by_handle' for raw catalog document retrieval.

  • Distinct from 'checkout.links.get_direct_url': Use this tool to verify stock and sizing options; use 'checkout.links.get_direct_url' to generate a final permalink once a size is confirmed.

WHEN TO USE:

  • Before presenting or confirming a product to the user, to verify whether their desired size is in-stock.

  • When generating the mandatory product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).

  • When checking return/exchange eligibility and shipping dispatch timelines.

WHEN NOT TO USE:

  • Do NOT use to search across multiple catalog products (use 'products.search.text' or 'products.search.image_url').

BEHAVIOR & SAFETY:

  • Read-only and idempotent with no persistent state modifications.

  • Automatically maps numeric and Indian/UK/EU shoe and apparel sizes (e.g. '6' -> EU 39, 'M' -> Medium).

  • Formats negative return days cleanly as 'Exchange only |X| days' (e.g. -7 -> 'Exchange only 7 days').

  • Returns structured JSON with 'is_in_stock', 'available_sizes', 'out_of_stock_sizes', 'product_details', 'shipping_policy_text', and 'return_policy_text'.

PARAMETERS & CONSTRAINTS:

  • 'handle' (string, required): Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206').

  • 'desired_size' (string, optional): Size label to verify against the variant inventory (e.g. 'M', 'L', 'XL', '32', '40').

  • 'size_index' (integer >= 0, optional): Zero-based index of the size variant.

MANDATORY AGENT INSTRUCTIONS:

  1. Always inform the user of available in-stock sizes, fast dispatch SLA, and return policy (Negative return days = 'Exchange only |X| days').

  2. Display the product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).

  3. Return the base link (https://s.polopan.com/p/{handle}) during browsing. Provide direct checkout link (https://s.polopan.com/p/{handle}/{size_index}) ONLY after the user's size is finalized.

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesUnique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')
size_indexNoZero-based index of the specific size variant to inspect
desired_sizeNoOptional size query to verify against variant inventory (e.g. 'M', 'L', 'XL', '32', '40')

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=true, destructiveHint=false), the description adds significant behavioral context: it mentions automatic size mapping (e.g., '6' -> EU 39), formatting of negative return days as 'Exchange only |X| days', and the structured JSON response fields (e.g., 'is_in_stock', 'available_sizes'). This goes far beyond the annotations by detailing the tool's internal logic and output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear section headers, making it easy to scan. However, it is quite lengthy; the 'MANDATORY AGENT INSTRUCTIONS' section could be seen as duplicative of other sections, but it does provide actionable directives that might be considered essential. Overall, it is organized and front-loaded with the core purpose, but could be trimmed slightly for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a relatively complex tool with three parameters, no output schema, and annotations that only cover read-only behavior, the description is comprehensive. It covers the tool's purpose, usage, behavioral nuances, parameter semantics, and even provides mandatory instructions for the agent. There is no significant missing information that would hinder an agent from selecting and using the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already documents all three parameters with 100% coverage, the description adds semantic clarity by explaining the purpose of each parameter in the context of the tool's operation. For example, it clarifies that 'handle' is a unique product identifier, 'desired_size' is to verify against inventory, and 'size_index' is a zero-based index. It also hints at the relationship between 'size_index' and the checkout link structure, enriching understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: verify real-time stock, pricing, specifications, policies, and size variants for a single product handle. It explicitly distinguishes itself from 'products.items.get_by_handle' (raw catalog retrieval) and 'checkout.links.get_direct_url' (final permalink generation), making its unique role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit 'WHEN TO USE' and 'WHEN NOT TO USE' sections, detailing specific scenarios like verifying stock before presenting a product, generating the specifications table, and checking return policies. It also names alternative tools for searching across multiple products, giving clear exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products.items.get_by_handleGet Product By HandleA
Read-only

Fetch the raw product document and metadata for a single item by unique product handle identifier. Returns catalog metadata, variant details, available in-stock sizes, price details, and verified purchase link (https://s.polopan.com/p/{handle}).

PURPOSE & DISAMBIGUATION:

  • Retrieves the full catalog record for a specific product handle.

  • Distinct from 'products.items.check_stock': Use 'products.items.get_by_handle' to fetch general catalog metadata; use 'products.items.check_stock' to get live variant inventory availability, computed sizing, specifications table, and 1-click checkout permalinks.

  • Distinct from 'products.search.text': Use this tool when you already have an exact product handle.

WHEN TO USE:

  • When you need the raw product metadata, image list, description, or variant array for a known product handle.

WHEN NOT TO USE:

  • Do NOT use to check real-time variant stock or obtain 1-click checkout URLs (use 'products.items.check_stock').

  • Do NOT use for general keyword product searches (use 'products.search.text').

BEHAVIOR & SAFETY:

  • Read-only and idempotent with no persistent state modifications.

  • Returns HTTP 404 error if handle does not exist.

  • Enriches returned document with verified purchase URLs.

PARAMETERS & CONSTRAINTS:

  • 'handle' (string, required): Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206').

ParametersJSON Schema
NameRequiredDescriptionDefault
handleYesUnique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reaffirms read-only safety while adding beyond-annotation context: idempotency with no persistent state changes, HTTP 404 behavior for missing handles, and the enrichment of the returned document with verified purchase URLs. Does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear section headers and front-loaded purpose. Slightly verbose: the verified purchase link appears twice (first paragraph and behavior bullet) and the PARAMETERS section duplicates schema content, but every other sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema, the description is comprehensive: it enumerates returned contents (catalog metadata, variants, in-stock sizes, prices, purchase link), covers error behavior (404), states safety profile, and routes to alternatives. An agent has everything needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents 'handle' with type, minLength, and examples. The description's PARAMETERS & CONSTRAINTS section essentially restates the schema rather than adding new semantic meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Fetch the raw product document and metadata for a single item by unique product handle identifier') and explicitly names the siblings it is distinct from (check_stock, search.text), including what each sibling does instead. An agent can disambiguate without opening any other schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit WHEN TO USE and WHEN NOT TO USE sections that name the alternative tools and the exact conditions that select them ('use check_stock for live variant inventory... use search.text for general keyword searches'). Nothing is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products.search.alternativesSearch Alternatives In BudgetA
Read-only

Find visual substitute products within a designated price bracket for a given fashion item handle using visual image similarity.

PURPOSE & DISAMBIGUATION:

  • Retrieves catalog items visually similar to an existing product (e.g. finding similar shirts or jackets) constrained to a target budget tier.

  • Distinct from 'products.search.text': Use this tool when substituting a specific known item by handle, NOT for free-text search queries.

  • Distinct from 'products.search.image_url' / 'products.search.image_upload': Use this tool when referencing an existing catalog item handle, NOT for user-uploaded or external images.

  • Distinct from 'looks.curation.recommend': Use this tool to find replacement substitutes for the same garment category, NOT for pairing complementary outfit pieces.

WHEN TO USE:

  • When a shopper likes a product but requests cheaper alternatives, higher-end alternatives, or similar styles in a specific price bracket (e.g., 'show cheaper alternatives for this shirt under 1500').

WHEN NOT TO USE:

  • Do NOT use for general keyword discovery without a source product handle (use 'products.search.text').

  • Do NOT use to assemble a full outfit / lookbook (use 'looks.curation.recommend' or 'looks.curation.by_occasion').

BEHAVIOR & SAFETY:

  • Read-only and idempotent with no persistent side effects.

  • Automatically fetches the source product's primary image embedding and queries the catalog for visual matches within the requested price range.

  • Excludes the source product handle from returned alternatives.

  • Returns clean PoloPan purchase permalinks (https://s.polopan.com/p/{handle}).

PARAMETERS & CONSTRAINTS:

  • 'handle' (string, required): The unique identifier of the source product to find alternatives for.

  • 'budget_range' (enum, default '1501-3000'): Price tier bracket ('0-1500', '1501-3000', '3001-5000', '5000+').

  • 'limit' (integer 1-100, default 6): Maximum number of alternative products returned in the final list.

  • 'page' (integer >= 1, default 1): Pagination page number for the search pool.

  • 'page_size' (integer 1-100, default 8): Number of candidate items fetched per page before limit filtering.

  • 'sort_by' (enum, default 'relevance'): Ranking attribute ('relevance', 'price', 'title').

  • 'sort_order' (enum, default 'desc'): Sort order direction ('asc' or 'desc').

  • 'personalize' (boolean, default false): Whether to apply personalization weights.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPagination page number (1-indexed)
limitNoMaximum number of filtered alternative products to return in the result (1-100)
handleYesThe unique product handle identifier to find visual alternatives for (e.g. 'solid-cotton-shirt')
sort_byNoSorting attribute for the visual matches: 'relevance', 'price', or 'title'relevance
page_sizeNoNumber of candidate items to fetch per backend page (1-100)
sort_orderNoSort direction: 'asc' for ascending, 'desc' for descendingdesc
personalizeNoWhether to apply personalized user ranking to the results
budget_rangeNoTarget price bracket filter in local currency: '0-1500', '1501-3000', '3001-5000', or '5000+'1501-3000

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the readOnlyHint/destructiveHint annotations by disclosing that the tool is idempotent, automatically fetches the source product's primary image embedding, excludes the source product handle from results, and returns clean PoloPan purchase permalinks. This gives the agent a clear behavioral model without needing to infer side effects or output format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but well-organized with clear headings: PURPOSE & DISAMBIGUATION, WHEN TO USE, WHEN NOT TO USE, BEHAVIOR & SAFETY, and PARAMETERS & CONSTRAINTS. The most important information is front-loaded, and each section earns its place, though the parameter section could be trimmed since it duplicates the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters, no output schema, and several sibling tools, the description covers purpose, disambiguation, usage boundaries, behavior, and parameter constraints thoroughly. It also mentions the return value shape (permalinks), though it does not fully describe the complete response structure or error behavior, which would be useful in the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents every parameter, its type, default, and constraints. The description's PARAMETERS & CONSTRAINTS section largely restates this information, with only minor additions such as clarifying that page_size is 'before limit filtering' and that page refers to the 'search pool'. This is helpful but mostly redundant with the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Find visual substitute products within a designated price bracket for a given fashion item handle using visual image similarity.' It clearly distinguishes itself from siblings by naming products.search.text, products.search.image_url, products.search.image_upload, and looks.curation.recommend, so an agent can immediately tell what this tool is and is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit 'WHEN TO USE' and 'WHEN NOT TO USE' sections, including concrete examples like 'show cheaper alternatives for this shirt under 1500'. It also names the exact alternative tools to use instead in excluded cases, leaving no ambiguity about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products.search.image_uploadSearch Products By Uploaded ImageA
Read-only

Upload a local image file (or base64 string) and search PoloPan catalog products using visual image similarity. Returns matching products with available in-stock sizes, pricing, and verified purchase URLs (https://s.polopan.com/p/{handle}).

PURPOSE & DISAMBIGUATION:

  • Performs reverse visual search by uploading a local or base64-encoded image to secure temporary storage, then querying visual embeddings.

  • Distinct from 'products.search.image_url': Use this tool when the image file is local on the user's machine or in base64 format, NOT already on a public URL.

  • Distinct from 'vision.outfit.detect_pieces': Use this tool to search for products matching a single garment, NOT for decomposing full multi-piece outfits into bounding boxes.

WHEN TO USE:

  • When a user uploads a local photo/screenshot or supplies base64 image data to find matching fashion products in the catalog.

WHEN NOT TO USE:

  • Do NOT use when the image is already accessible via a public web URL (use 'products.search.image_url').

  • Do NOT use for text-only searches (use 'products.search.text').

BEHAVIOR & SAFETY:

  • Read-only catalog query with temporary image upload artifact (automatically expires after 'expiry_hours', default 24h).

  • Resolves MIME types automatically if not explicitly provided.

  • Enriches all returned items with verified PoloPan purchase links and stock metadata.

PARAMETERS & CONSTRAINTS:

  • 'image_path' (string, optional): Local file system path to the image file (one of image_path or image_base64 is required).

  • 'image_base64' (string, optional): Base64-encoded image data string.

  • 'content_type' (string, default 'image/jpeg'): MIME type of the uploaded image (e.g. 'image/jpeg', 'image/png', 'image/webp').

  • 'expiry_hours' (integer 1-168, default 24): Temporary upload lifetime in hours before expiration.

  • 'page' (integer >= 1, default 1): Pagination page number.

  • 'page_size' (integer 1-100, default 20): Number of items per page.

  • 'sort_by' (enum, default 'relevance'): Sorting attribute ('relevance', 'price', 'title').

  • 'sort_order' (enum, default 'desc'): Sort direction ('asc' or 'desc').

  • 'gender' (string, optional): Target gender filter ('men', 'women', or 'unisex').

  • 'size' (array of strings, optional): Size filter array.

  • 'price_min' (number, optional): Minimum price threshold.

  • 'price_max' (number, optional): Maximum price threshold.

  • 'vendor' (array of strings, optional): Brand filter array.

  • 'personalize' (boolean, default false): Whether to personalize search ranking.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPagination page number (1-indexed)
sizeNoArray of sizes to filter by
genderNoTarget gender filter: 'men', 'women', or 'unisex'
vendorNoList of brand names to filter by
sort_byNoSorting criteria: 'relevance', 'price', or 'title'relevance
page_sizeNoNumber of items to return per page (1 to 100, default 20)
price_maxNoMaximum price in local currency
price_minNoMinimum price in local currency
image_pathNoLocal file system path to the image file (e.g. '/path/to/dress.jpg')
sort_orderNoSort order: 'asc' or 'desc'desc
personalizeNoWhether to apply personalized ranking weights
content_typeNoMIME type of the image, e.g. 'image/jpeg', 'image/png', 'image/webp'image/jpeg
expiry_hoursNoTemporary upload URL lifetime in hours before expiration (1 to 168, default 24)
image_base64NoBase64-encoded image data string (alternative to image_path)

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true and destructiveHint=false, and the description adds valuable context beyond that: temporary image upload with automatic expiry, automatic MIME type resolution, and enrichment of results with verified purchase links and stock metadata. It also explains the internal mechanism of querying visual embeddings.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average, but it is well-structured with clear headings and front-loaded with the core purpose. The parameter section partially repeats the schema, but the repetition is useful for agents because it provides a single consolidated reference for all 14 parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 14 parameters, no output schema, and a non-trivial upload mechanism, this description is remarkably complete. It covers purpose, disambiguation, when to use, when not to use, behavioral side effects, return content, and every parameter. The mention of returned fields ('in-stock sizes, pricing, and verified purchase URLs') compensates for the lack of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. However, the description adds a critical constraint not present in the schema: at least one of 'image_path' or 'image_base64' is required, despite both being marked optional. It also consolidates defaults and enum values in a scannable format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb-resource pair: 'Upload a local image file (or base64 string) and search PoloPan catalog products using visual image similarity.' It also explicitly distinguishes this tool from 'products.search.image_url' and 'vision.outfit.detect_pieces', making the tool's unique role immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides dedicated 'WHEN TO USE' and 'WHEN NOT TO USE' sections with explicit alternative tools: use 'products.search.image_url' for public URLs, 'products.search.text' for text-only searches, and 'vision.outfit.detect_pieces' for multi-piece outfit decomposition. This leaves no ambiguity about selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products.search.image_urlSearch Products By Image URLA
Read-only

Search PoloPan catalog products using visual image similarity from a publicly accessible image URL with optional multi-attribute filters. Returns visually similar products with available sizes, pricing, and verified purchase URLs (https://s.polopan.com/p/{handle}).

PURPOSE & DISAMBIGUATION:

  • Performs reverse visual search using computer-vision embeddings for a remote image URL.

  • Distinct from 'products.search.text': Use this tool when you have an image URL, NOT for textual keyword queries.

  • Distinct from 'products.search.image_upload': Use this tool for publicly hosted HTTP(S) image URLs, NOT for local file paths or base64 data.

  • Distinct from 'vision.outfit.detect_pieces': Use this tool to search catalog items matching an entire single-garment image, NOT for segmenting multi-garment influencer photos into bounding boxes.

WHEN TO USE:

  • When the user shares a web link to an image (e.g. Pinterest, Instagram, blog post) and wants to find visually matching products in the PoloPan catalog.

WHEN NOT TO USE:

  • Do NOT use when the image is stored on local disk or as base64 data (use 'products.search.image_upload').

  • Do NOT use when searching by text descriptions (use 'products.search.text').

  • Do NOT use when you need to crop/isolate individual outfit pieces from a full-body model photo (use 'vision.outfit.detect_pieces').

BEHAVIOR & SAFETY:

  • Read-only and idempotent with no persistent state modifications.

  • Downloads the image, generates visual embeddings, and retrieves ranked catalog matches.

  • Enriches all returned items with verified PoloPan purchase links and stock metadata.

PARAMETERS & CONSTRAINTS:

  • 'image_url' (string, required): Publicly accessible HTTP(S) URL of the image to search for visual matches.

  • 'page' (integer >= 1, default 1): Pagination page number.

  • 'page_size' (integer 1-100, default 20): Number of candidate items returned per page.

  • 'sort_by' (enum, default 'relevance'): Ranking attribute ('relevance', 'price', 'title').

  • 'sort_order' (enum, default 'desc'): Sort order ('asc' or 'desc').

  • 'gender' (string, optional): Target gender filter ('men', 'women', or 'unisex').

  • 'size' (array of strings, optional): Filter by available size labels.

  • 'price_min' (number, optional): Minimum price threshold.

  • 'price_max' (number, optional): Maximum price threshold.

  • 'vendor' (array of strings, optional): Brand filter array.

  • 'personalize' (boolean, default false): Whether to apply personalized ranking weights.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number for pagination (1-indexed)
sizeNoArray of sizes to filter by (e.g. ['S', 'M', 'L'])
genderNoTarget gender filter: 'men', 'women', or 'unisex'
vendorNoList of brand names to filter by
sort_byNoSorting criteria for search results: 'relevance', 'price', or 'title'relevance
image_urlYesPublicly accessible HTTP(S) URL of the fashion image to search for visual matches
page_sizeNoNumber of items to return per page (1 to 100, default 20)
price_maxNoMaximum price in local currency
price_minNoMinimum price in local currency
sort_orderNoSort order: 'asc' for ascending, 'desc' for descendingdesc
personalizeNoWhether to apply personalized ranking based on user style profile

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark readOnlyHint=true and destructiveHint=false; the description reinforces this and adds process details ('downloads the image, generates visual embeddings, retrieves ranked catalog matches') and output enrichment ('verified PoloPan purchase links and stock metadata'). No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized into labeled sections with a front-loaded summary, and the disambiguation/usage sections are highly actionable. Minor redundancy: the parameter list duplicates the input schema, adding length without new information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 11 parameters, no output schema, and several near-sibling tools, this description is comprehensive: it covers purpose, exclusions, behavior, safety, return contents, and parameter constraints. It even names the exact purchase URL pattern so agents know what result links will look like.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents all 11 parameters. The description's PARAMETERS & CONSTRAINTS section restates defaults, types, and bounds without adding deeper semantics beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('search'), resource ('PoloPan catalog products'), and mechanism ('visual image similarity'), then explicitly disambiguates from products.search.text, products.search.image_upload, and vision.outfit.detect_pieces. An agent can tell it apart from siblings immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit WHEN TO USE and WHEN NOT TO USE sections with sibling tool names and conditions: public URL vs local/base64, image URL vs text query, single garment vs multi-piece outfit. No inference is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

products.search.textSearch Products By TextA
Read-only

Search PoloPan catalog products using a text keyword query with optional multi-attribute filters. Returns matching fashion items with available in-stock sizes, product specifications, shipping/return policies, discounted pricing, and verified purchase URLs (https://s.polopan.com/p/{handle}).

PURPOSE & DISAMBIGUATION:

  • Primary text-based catalog search tool for fashion discovery across apparel, footwear, and accessories.

  • Distinct from 'products.search.image_url' / 'products.search.image_upload': Use this tool for textual queries and keyword filters, NOT for visual image search.

  • Distinct from 'products.search.alternatives': Use this tool for open discovery queries, NOT for finding direct visual substitutes of a known product handle.

  • Distinct from 'looks.curation.by_occasion': Use this tool to search individual products, NOT complete multi-piece outfit looks.

WHEN TO USE:

  • When a user searches for clothing or fashion styles using keywords, brand names, colors, or categories (e.g. 'black leather jacket', 'floral summer midi dress', 'men linen shirts').

  • When refining catalog searches with structured filters like price ranges, gender, sizes, or vendor brands.

WHEN NOT TO USE:

  • Do NOT use when the user provides an image URL or image file (use 'products.search.image_url' or 'products.search.image_upload').

  • Do NOT use when searching for cheaper/higher-end substitutes of a specific known product (use 'products.search.alternatives').

  • Do NOT use to find curated complete occasion outfits (use 'looks.curation.by_occasion').

BEHAVIOR & SAFETY:

  • Read-only and idempotent with no persistent state modifications.

  • Automatically sanitizes and enriches product records with verified PoloPan short permalinks (https://s.polopan.com/p/{handle}), computed in-stock size lists, and human-readable shipping and return policy strings.

  • Handles pagination and multi-attribute filtering deterministically.

PARAMETERS & CONSTRAINTS:

  • 'query' (string, required): Free-text search query or style keyword (e.g. 'black linen shirt', 'oversized hoodie').

  • 'page' (integer >= 1, default 1): Pagination page number.

  • 'page_size' (integer 1-100, default 20): Number of products returned per page.

  • 'sort_by' (enum, default 'relevance'): Ranking criterion ('relevance', 'price', 'title').

  • 'sort_order' (enum, default 'desc'): Sort direction ('asc' for ascending, 'desc' for descending).

  • 'gender' (string, optional): Target demographic filter ('men', 'women', or 'unisex').

  • 'size' (array of strings, optional): Size filter array (e.g. ['S', 'M', 'L', 'XL', '32', '40']).

  • 'price_min' (number, optional): Minimum price threshold in local currency.

  • 'price_max' (number, optional): Maximum price threshold in local currency.

  • 'vendor' (array of strings, optional): List of brand or vendor names to filter by.

MANDATORY AGENT INSTRUCTIONS:

  1. Always communicate available in-stock sizes, fast dispatch SLA, and return policy for each product (Negative return days = 'Exchange only |X| days').

  2. When presenting or shortlisting products, display the product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).

  3. Return the clean base link (https://s.polopan.com/p/{handle}) during browsing. Provide direct checkout link (https://s.polopan.com/p/{handle}/{size_index}) ONLY after the user's size is finalized.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPagination page number (1-indexed, starts at 1)
sizeNoArray of size labels to filter by (e.g. ['S', 'M', 'L', 'XL', '32'])
queryYesThe search query or style keyword to find fashion items (e.g. 'black leather jacket', 'floral summer midi dress')
genderNoTarget gender filter: 'men', 'women', or 'unisex'
vendorNoList of brand or vendor names to filter by (e.g. ['Zara', 'H&M', 'Tandul'])
sort_byNoSorting criteria for search results: 'relevance', 'price', or 'title'relevance
page_sizeNoNumber of items to return per page (1 to 100, default 20)
price_maxNoMaximum price in local currency
price_minNoMinimum price in local currency
sort_orderNoSort order: 'asc' for ascending, 'desc' for descendingdesc

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the readOnlyHint/destructiveHint annotations by stating the tool is read-only and idempotent, and by disclosing enrichment behaviors: sanitizing records, computing in-stock size lists, generating verified permalinks, and adding shipping/return policy strings. It also notes deterministic pagination and filtering, giving the agent a clear behavioral model.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear headers, front-loaded purpose, and effective disambiguation, making the length justifiable for a tool with 10 parameters and many siblings. However, the 'PARAMETERS & CONSTRAINTS' section largely duplicates the input schema, and the mandatory agent instructions, while useful, are presentation guidance rather than selection-critical content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Even without an output schema, the description states exactly what the tool returns: matching products, in-stock sizes, specifications, policies, prices, and verified purchase URLs. It also gives agent-facing instructions for presenting results and handling checkout links, covering the operational context an agent needs beyond the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents every parameter thoroughly. The description's parameter section largely repeats schema information, though it adds useful examples and clarifies constraints like sort defaults. This is a solid baseline case where the schema carries the load and the description adds only marginal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Search PoloPan catalog products using a text keyword query.' It further disambiguates from three sibling tools by naming them and contrasting text search against image search, alternatives, and occasion-look curation. An agent can reliably select this tool based on the stated purpose alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Dedicated 'WHEN TO USE' and 'WHEN NOT TO USE' sections give explicit conditions with concrete examples such as 'black leather jacket' and name the exact sibling tools to use instead for image, substitute, or outfit queries. This leaves no ambiguity about when to invoke this tool versus alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vision.outfit.detect_piecesDetect Fashion Pieces & Bounding BoxesA
Read-only

Deconstruct an outfit image or influencer photo into individual fashion pieces (e.g. Upper-body garment, Lower-body garment, Dress, Footwear, Bag, Headwear) with normalized bounding box coordinates and detection confidence scores.

PURPOSE & DISAMBIGUATION:

  • Computer-vision object detection tool designed to analyze multi-item outfit photographs and isolate individual garments with their spatial coordinates.

  • Distinct from 'products.search.image_url' / 'products.search.image_upload': Use this tool to segment a full outfit into pieces before querying, NOT to directly retrieve catalog search results.

  • Distinct from 'looks.curation.recommend': Use this tool for image-based piece decomposition, NOT text-based styling suggestions.

WHEN TO USE:

  • When the user provides a full-body model photo, street style snapshot, or celebrity outfit and wants to identify each individual clothing piece (jacket, top, pants, shoes, bag) to find matching products for each piece.

WHEN NOT TO USE:

  • Do NOT use when the image contains only a single standalone garment (use 'products.search.image_url' or 'products.search.image_upload' directly).

  • Do NOT use for text-only searches (use 'products.search.text').

BEHAVIOR & SAFETY:

  • Read-only and idempotent with no persistent state modifications.

  • Supports input via local file path ('image_path'), base64 string ('image_base64'), or public URL ('image_url'). Exactly one source must be provided.

  • Returns an array of detected piece objects with 'label', 'confidence' (0.0 to 1.0), and normalized 'box' coordinates [ymin, xmin, ymax, xmax].

PARAMETERS & CONSTRAINTS:

  • 'image_path' (string, optional): Local file system path to the outfit image (e.g. '/tmp/outfit.jpg').

  • 'image_base64' (string, optional): Base64-encoded image data string.

  • 'image_url' (string, optional): Public HTTP(S) URL of the image.

  • 'threshold' (number 0.05-0.95, default 0.22): Detection confidence threshold for bounding box filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_urlNoPublic HTTP(S) URL of the fashion image to deconstruct
thresholdNoConfidence threshold for object detection bounding boxes (0.05 to 0.95, default 0.22)
image_pathNoLocal file system path to the outfit image file to deconstruct
image_base64NoBase64-encoded image data string for outfit piece detection

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

While annotations already declare readOnlyHint and destructiveHint, the description goes further by stating the tool is 'read-only and idempotent' and specifies the input methods (image_path, image_base64, image_url) with the constraint that exactly one must be provided. It also discloses the output structure (label, confidence, box) and the threshold's range, adding valuable context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with clear sections (PURPOSE, WHEN, BEHAVIOR, PARAMETERS) and avoids redundancy. It is longer than minimal but each sentence serves a purpose, such as disambiguation and usage rules. Slight redundancy exists in the parameter explanations (schema already contains similar), but it remains focused.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 params, no output schema), the description is exceptionally complete. It covers purpose, disambiguation, usage rules, behavioral details, input constraints, and return format. An agent has everything needed to correctly invoke the tool without additional research.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all parameters (100% coverage), but the description adds practical context for each, such as example paths, the meaning of threshold, and the exact-one-source constraint. It also clarifies the output format, which is not in the schema, providing extra value for parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: deconstructing outfit images into individual fashion pieces with bounding boxes and confidence scores. It lists the piece types (e.g., Upper-body garment, Dress, Footwear) and explicitly distinguishes it from sibling tools like products.search.image_url, making its unique role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit WHEN TO USE and WHEN NOT TO USE sections, detailing scenarios for multi-piece outfit images versus single garments, and contrasts it with text-based search. This directly guides the agent on when to select this tool over alternatives like products.search.image_url or looks.curation.recommend.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv1.2.5
    • First observedcheckout.links.get_direct_url
    • First observedlooks.curation.by_occasion
    • First observedlooks.curation.recommend
    • First observedproducts.items.check_stock
    • First observedproducts.items.get_by_handle
    • First observedproducts.search.alternatives
    • First observedproducts.search.image_upload
    • First observedproducts.search.image_url
    • First observedproducts.search.text
    • First observedvision.outfit.detect_pieces

TDQS

A4.7/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clearly distinct purpose, with overlapping search variants (text, image URL, image upload) explicitly disambiguated by input type. Look curation tools are separated by occasion vs. seed product, and product retrieval vs. stock check are clearly differentiated.

Naming Consistency5/5

Tool names follow a consistent domain-prefixed snake_case pattern (products.items.*, products.search.*, looks.curation.*, etc.), with predictable verb-noun combinations. The naming convention is uniform and intuitive.

Tool Count5/5

The server has 10 tools, well within the ideal 3-15 range. Each tool covers a distinct aspect of the fashion discovery and purchase flow without redundancy, making the count appropriate for the domain.

Completeness4/5

The tool set covers the full shopping workflow: search (text, image, alternatives), product details, stock verification, outfit curation, and checkout link generation. Minor gaps exist like missing wishlist/cart management, but these are likely outside the intended scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers