Skip to main content
Glama

Server Details

Fashion & apparel MCP: visual outfit search, stock verification, and 1-click checkout.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 22 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
rofoso-com/polopan-fashion-mcp
GitHub Stars
1
Server Listing
PoloPan Fashion MCP Server

TDQS

A4/5.0

Scored across 10 tools

Disambiguation3/5

Most tools have distinct purposes across search, curation, product details, and vision, but several pairs overlap: looks.curation.by_occasion and looks.curation.recommend both return occasion-based outfits, and products.items.check_stock overlaps heavily with products.items.get_by_handle. Image search is also split into upload and URL variants that could cause selection confusion.

Naming Consistency4/5

Names follow a consistent module.submodule.action convention such as checkout.links.*, looks.curation.*, products.items.*, products.search.*, and vision.outfit.*, making navigation predictable. The final segments are slightly inconsistent—some are actions, some are nouns, and 'recommend' lacks an explicit object—but the namespace pattern mitigates this.

Tool Count4/5

Ten tools is a reasonable size for a fashion-commerce assistant covering search, product details, curation, vision, and checkout linking. The count is slightly generous because image search is split into upload and URL variants and curation has overlapping occasion/recommend tools, but no tool feels trivial.

Completeness4/5

The set covers the key discovery-to-purchase flow: search, alternatives, stock checks, curated looks, outfit detection, and direct checkout links. It lacks broader browsing/category listing and cart/order management, but those appear outside the server's stated scope, so the gaps are minor.

Available Tools

19 tools
address.deleteDelete Saved Delivery AddressA
Destructive
Inspect

Delete a saved delivery address by ID from ~/.polopan/region.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
address_idYesID of the saved address to delete

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and readOnlyHint=false, so irreversibility is covered. The description adds real value by naming the side-effect target (~/.polopan/region.json), but omits what happens if the ID is unknown or if the address is currently the default.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, with no filler. Every element earns its place.

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?

For a single-param destructive tool with full annotation coverage, a complete schema, and no output schema, the description supplies what the structured fields do not: the persistence location. Only missing edge-case behavior keeps it from a 5.

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% and the single address_id parameter is documented in the schema, so baseline 3 applies. The description adds no format, source, or lookup detail beyond 'by ID'.

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 (Delete), a specific resource (a saved delivery address), the selector (by ID), and the storage target. It is clearly distinguishable from address.save, address.set_default, and address.list_saved without opening any schema.

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

Usage Guidelines3/5

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

Use case is implied by the intent — remove a saved address — but there is no explicit when-to-use guidance, no exclusion conditions, and no pointer to alternatives such as address.set_default for merely changing the default rather than deleting.

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

address.get_currentGet Current Delivery Address for RegionA
Read-only
Inspect

Get the default delivery/shipping address saved for the currently active region from local configuration (~/.polopan/region.json).

WHEN TO USE (CRITICAL ANTI-SHORTCIRCUIT RULE):

  • ALWAYS call this BEFORE generating 1-click checkout links to check if the user already has a saved delivery address for their destination country.

  • If 'has_address' is false, DO NOT emit a naked checkout link. Prompt the user naturally for their shipping address (First Name, Street Address, City, Postal Code, Phone & Email) and save it using 'address.save'.

  • If 'has_address' is true, inform the user you are prefilling their saved address and proceed with checkout.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoOptional country code (e.g. 'US', 'AE', 'GB', 'IN') to inspect addresses for. Defaults to active region country.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare this a safe read (readOnlyHint=true, destructiveHint=false), so the bar is lower. The description nonetheless adds real context: the data source is local config at ~/.polopan/region.json, and — importantly with no output schema present — it discloses the 'has_address' result flag that callers must branch on. It does not cover failure modes (missing/corrupt config file, no active region), which is a minor gap.

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?

Front-loads the core purpose in one sentence, then uses a labeled block for the critical usage rule; every sentence carries actionable content. The uppercase 'CRITICAL ANTI-SHORTCIRCUIT RULE' framing is slightly dramatic but defensible given the downstream branching requirement.

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?

With no output schema, the description carries the burden of explaining returns and does disclose the key 'has_address' flag plus the prefill-vs-prompt behavior. It stops short of describing the remaining address fields or the error path when no region/config is available, so it is strong but not exhaustive.

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 single optional 'country' parameter (with code examples and default-to-active-region behavior) is already fully documented in the schema. The description's mention of the 'currently active region' restates rather than extends that semantics, so 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?

Names a specific verb+resource (get the default delivery/shipping address) and scopes it to the active region's local configuration. It is immediately distinguishable from siblings like address.list_saved or address.delete, which operate on address collections rather than the single active-region default.

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?

Gives an explicit directive ('ALWAYS call this BEFORE generating 1-click checkout links') plus branch-specific follow-ups depending on the result, and routes to a named alternative ('address.save') when no address exists. It even states the anti-pattern to avoid (emitting a naked checkout link) and what to ask the user for instead.

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

address.list_savedList Saved Delivery AddressesA
Read-only
Inspect

List all saved customer delivery addresses stored in ~/.polopan/region.json, optionally filtered by country.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoOptional country filter (ISO-2 code or natural country name)

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered by structured data. The description adds useful context by disclosing the backing store (~/.polopan/region.json), but says nothing about ordering, pagination, auth requirements, or behavior when the file is missing/empty — so it adds only modest value beyond annotations.

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

Conciseness5/5

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

One sentence, front-loaded with the verb and resource, followed by scope and the optional filter. No filler or redundancy; every clause carries information.

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?

For a one-parameter read-only list tool with full schema coverage, the description is nearly sufficient. Since there is no output schema, it could have stated what a returned address entry looks like (fields, ordering), which is the one remaining gap.

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 single 'country' parameter (ISO-2 or natural name, optional) is already fully documented in the schema. The description merely restates the filter without adding syntax, matching rules, or fallback behavior, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource (list saved customer delivery addresses) and even names the storage location (~/.polopan/region.json), so the agent knows exactly what collection is being read. It is clearly distinct from write siblings like address.save/address.delete, but it does not explicitly differentiate itself from address.get_current, leaving a small routing ambiguity.

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

Usage Guidelines3/5

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

The phrase 'optionally filtered by country' implies the intended usage (enumerate all saved addresses, narrow by country), but it is framed as a parameter note rather than guidance. There is no statement of when to prefer this over address.get_current or what happens when no filter is supplied, so usage is only implied.

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

address.saveSave or Update Delivery AddressBInspect

Save a customer delivery shipping address mapped to the active region in ~/.polopan/region.json.

Matches Flutter app (newapp) address schema: firstName, lastName, address1, address2, city, province, zip, country, phone, email, type.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoOptional existing address ID to update
zipYesPostal code / Zip code / PIN code
cityYesCity / Town
typeNoAddress label/type: 'Home', 'Work', or 'Other'Home
emailNoCustomer delivery notification email address
phoneNoRecipient contact phone number with country dialing code
countryNoDestination country code or natural name. Defaults to active region country.
address1YesStreet address, house/flat/building name
address2NoApartment, suite, unit, landmark, or area
lastNameNoRecipient last name
provinceNoState, Province, or Governorate
firstNameYesRecipient first name
is_defaultNoSet this address as default for the country (default true)
storage_modeNoStorage destination: 'local' (writes to ~/.polopan/region.json) or 'stateless' (returns for chat context without disk write). Defaults to 'stateless' in cloud-hosted environments.

TDQS

B3.4/5.0
Behavior4/5

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

Annotations establish it is a non-destructive write; the description adds real value by disclosing the persistence target (~/.polopan/region.json), the region-mapping behavior, and schema parity with the Flutter app. It stops short of explaining update-vs-create conflict semantics or what happens to pre-existing addresses.

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?

Front-loaded with the core purpose in one sentence, followed by a short schema-parity note. The second sentence is somewhat redundant with the schema's field list, but overall it is tight and well-structured.

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

Completeness3/5

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

For a 14-parameter mutation tool with no output schema, the essential behavior (where it writes, region binding) is covered and safety is carried by annotations. It does not address return values, the outcome of an update to an existing id, or failure modes, leaving modest gaps.

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 carries all 14 parameter meanings (enums, defaults, id semantics, storage_mode). The description only re-lists field names that the schema already documents, adding no syntax or format detail beyond it, so baseline 3 applies.

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

Purpose4/5

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

States a specific verb+resource (save/update a customer delivery shipping address) and clarifies its dual create-or-update role. It does not, however, name or contrast with address siblings like set_default or delete, leaving the agent to infer which address tool to reach for.

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

Usage Guidelines2/5

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

There is no explicit when-to-use vs when-not guidance and no reference to alternatives such as address.set_default (relevant since is_default is a parameter) or address.delete. Usage is only implied from the tool name and the 'id' parameter.

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

address.set_defaultSet Default Delivery AddressAInspect

Set an existing address as the default shipping address for its country in ~/.polopan/region.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
address_idYesID of the saved address to set as default

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation/safety profile is covered. The description usefully adds that the change is persisted to ~/.polopan/region.json and scoped per-country, but it does not say whether an existing default for that country is overwritten or what happens if the address belongs to a different country.

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

Conciseness5/5

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

A single front-loaded sentence with the verb first and zero wasted words. The persistence path is appended without diluting the core action.

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?

For a one-parameter mutation with no output schema and safety annotations already present, the description covers what changes and where it is stored. It stops short of describing replacement semantics for an existing default or error conditions, but nothing critical for invocation is missing.

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% for the single address_id parameter, so the baseline is 3. The description only reinforces that the address must be 'existing' and implies its country drives the scope; it adds no format or validation detail 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?

States a specific verb (set as default), the resource (an existing saved address), and the scope (default shipping address for its country). This clearly separates it from address.save (create), address.delete, and region.set_current (region-wide default).

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

Usage Guidelines3/5

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

The word 'existing' implies a precondition that the address must already be saved, which implicitly routes creation to address.save, but no sibling is named and there is no explicit when-to-use/when-not guidance. Usage is inferable rather than stated.

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

checkout.links.get_direct_urlGet Direct Checkout URL
Read-only
Inspect

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').

  • 'address_id' (string, optional): ID of specific saved address to prefill.

  • 'address' (object, optional): Delivery address object to prefill directly.

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')
addressNoOptional ad-hoc address object to prefill
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
quantityNoNumber of units to purchase (1 to 10, default 1)
address_idNoOptional saved address ID to prefill
size_indexNoZero-based index of the chosen size variant
looks.curation.by_occasionGet Looks By Occasion
Read-only
Inspect

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). Automatically localized to active country / 240+ destination regions.

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').

  • 'country' (string, optional): Target country name, city, currency, or ISO-2 code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.

  • 'mode' (enum, optional): Catalog mode: 'global' (ships to country) or 'local' (domestic only).

  • '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)
modeNoCatalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.
pageNoPage number for looks pagination (1-indexed)
genderNoTarget gender filter: 'women' or 'men' (default: 'women')women
vendorNoOptional brand or vendor name filter array
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
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)
looks.curation.recommendGet Recommended Outfits
Read-only
Inspect

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). Automatically localized to active country / 240+ destination regions.

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').

  • 'country' (string, optional): Target country name, city, currency, or ISO-2 code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.

  • 'mode' (enum, optional): Catalog mode: 'global' (ships to country) or 'local' (domestic only).

  • '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
modeNoCatalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.
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')
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
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)
products.items.check_stockCheck Live Variant Stock, Product Details & Sizing
Read-only
Inspect

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')
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
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')
products.items.get_by_handleGet Product By Handle
Read-only
Inspect

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')
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
products.items.get_size_guideGet Product Size Guide & Fit RecommendationA
Read-only
Inspect

Retrieve the complete size guide chart, body measurement matrix (Chest/Bust, Waist, Hip, Length, Shoulders), unit switcher (inches/cm), how-to-measure guidelines, and automatic best-fit size recommendations for a specific product handle.

PURPOSE & DISAMBIGUATION:

  • Dedicated size guide and fit consultancy tool for apparel and footwear.

  • Computes dimensional measurements across sizes, supports metric (cm) <-> imperial (in) unit conversions, and maps international/brand scales.

  • If user body measurements are provided (e.g. chest: 40 in, waist: 32 in), computes the best matching size variant with fit confidence and relaxed vs snug fit advice.

  • Distinct from 'products.items.check_stock': Use 'products.items.get_size_guide' when the user asks sizing/fit questions (e.g. 'What size fits a 40 chest?' or 'Show me the size chart'); use 'products.items.check_stock' for inventory checking.

WHEN TO USE:

  • When a user asks about sizing, fit, measurements, or how a garment fits (e.g., 'Is M true to size?', 'What are the chest measurements for this shirt in cm?').

  • When helping a customer choose between two sizes based on their body dimensions.

  • When rendering a full size chart matrix.

WHEN NOT TO USE:

  • Do NOT use for products without size variants (e.g., standard accessories, bags).

BEHAVIOR & SAFETY:

  • Read-only and idempotent.

  • Supports 'in' (inches) and 'cm' (centimeters) with automated dynamic range conversion.

  • Connects each recommended size to its direct 1-click checkout permalink (https://s.polopan.com/p/{handle}/{size_index}).

PARAMETERS & CONSTRAINTS:

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

  • 'unit' (enum 'in' | 'cm', default 'in'): Preferred measurement unit system.

  • 'desired_size' (string, optional): Specific size variant to inspect (e.g. 'M', 'L', '32', '40').

  • 'user_chest' (number, optional): User's chest / bust body measurement.

  • 'user_waist' (number, optional): User's waist body measurement.

  • 'user_hip' (number, optional): User's hip body measurement.

  • 'user_unit' (enum 'in' | 'cm', default 'in'): Unit of the user's provided body measurements.

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoMeasurement unit system for the size chart ('in' for inches, 'cm' for centimeters)in
handleYesUnique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')
user_hipNoOptional user body hip measurement for automated fit recommendation
user_unitNoUnit for the user's input measurements ('in' or 'cm')in
user_chestNoOptional user body chest/bust measurement for automated fit recommendation
user_waistNoOptional user body waist measurement for automated fit recommendation
desired_sizeNoOptional specific size label to highlight or verify (e.g. 'M', 'L', 'XL', '32')

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered and the restated 'Read-only and idempotent' adds little. The description does add genuine behavioral context beyond annotations: dynamic in/cm conversion, fit-confidence with relaxed vs snug advice when body measurements are supplied, and a per-size 1-click checkout permalink. It stops short of describing output format or edge-case handling (e.g., product lacking a size chart).

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 purpose is front-loaded and the sectioned layout (purpose, disambiguation, when/when-not, behavior, parameters) is easy to scan. It is somewhat long and has mild redundancy, notably restating the read-only/idempotent facts already in annotations and repeating example sizing questions across the purpose and WHEN TO USE sections.

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?

There is no output schema, so the description correctly carries the return-value burden and does so concretely, enumerating the chart, measurement matrix, unit switcher, how-to-measure guidelines, and fit recommendation plus permalink. Combined with full parameter coverage, an agent has everything needed to invoke and interpret this 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?

Schema description coverage is 100%, so the baseline is 3. The description goes modestly beyond the schema by clarifying the semantic split between 'unit' (chart unit) and 'user_unit' (unit of the user's own measurements), which the schema leaves ambiguous since both default to 'in', and by explaining that user_chest/waist/hip jointly drive best-fit computation. It adds clarifying value but no new syntax 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 opening sentence states a specific verb (Retrieve) and enumerates the exact resource returned (size guide chart, body measurement matrix, unit switcher, fit recommendations) scoped to a product handle. It explicitly distinguishes itself from sibling 'products.items.check_stock' by mapping sizing/fit questions to this tool and inventory questions to the other, so an agent can route without opening either 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?

The definition provides explicit WHEN TO USE bullets (sizing, fit, measurements, rendering a chart), an explicit WHEN NOT TO USE exclusion (products without size variants such as accessories/bags), and names the alternative sibling plus the condition that selects it. 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 Budget
Read-only
Inspect

Find visual substitute products within a designated price bracket for a given fashion item handle using visual image similarity. Automatically localized to active country / 240+ destination regions.

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+').

  • 'country' (string, optional): Target country name, city, currency, or ISO-2 code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.

  • 'mode' (enum, optional): Catalog mode: 'global' (ships to country) or 'local' (domestic only).

  • '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
modeNoCatalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.
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')
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
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
products.search.image_uploadSearch Products By Uploaded Image
Read-only
Inspect

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}). Automatically localized to active country / 240+ destination regions.

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.

  • 'country' (string, optional): Target country name, city, currency, or ISO-2 code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.

  • 'mode' (enum, optional): Catalog mode: 'global' (ships to country) or 'local' (domestic only).

  • '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
modeNoCatalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.
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
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
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)
products.search.image_urlSearch Products By Image URL
Read-only
Inspect

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}). Automatically localized to active country / 240+ destination regions.

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.

  • 'country' (string, optional): Target country name, city, currency, or ISO-2 code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.

  • 'mode' (enum, optional): Catalog mode: 'global' (ships to country) or 'local' (domestic only).

  • '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
modeNoCatalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.
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
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
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
products.search.textSearch Products By Text
Read-only
Inspect

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}). Automatically localized to active country / 240+ destination regions.

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, country regions, 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').

  • 'country' (string, optional): Target country name, city, currency, or ISO-2 code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.

  • 'mode' (enum, optional): Catalog mode: 'global' (ships to country) or 'local' (domestic only).

  • '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
modeNoCatalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.
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'])
countryNoCountry name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.
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
region.get_currentGet Current Shopping Region & SettingsA
Read-only
Inspect

Get the currently active shopping destination country, currency code, symbol, phone code, and catalog scope mode from persistent local configuration (~/.polopan/region.json).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context by disclosing the data source (persistent local configuration at ~/.polopan/region.json), implying no network call and locally persisted state.

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

Conciseness5/5

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

A single front-loaded sentence enumerating the returned fields with zero filler; every clause carries information.

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?

With no output schema and no parameters, the description appropriately enumerates the returned values (country, currency code, symbol, phone code, catalog scope mode) and the source of truth. It stops short of describing behavior when no region is configured, which is the only real gap.

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 tool takes zero parameters, so the schema has nothing to document and the baseline is 4. All semantic weight falls on the described return content, which the schema does not cover.

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 (Get) plus the exact resource and the fields returned (destination country, currency code, symbol, phone code, catalog scope mode). It is clearly distinguishable from region.set_current and region.list_supported by verb alone.

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

Usage Guidelines3/5

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

Usage is only implied by the verb 'Get' and the sibling pair region.set_current / region.list_supported; there is no explicit statement of when to call this versus those alternatives or whether the state can be absent.

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

region.list_supportedList & Search Supported CountriesA
Read-only
Inspect

Search the 240+ supported destination countries with localized currency codes, symbols, flags, phone codes, and price groups from live platform settings.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax number of countries to return (default: 20)
queryNoOptional search filter by country name, ISO code, currency, or phone dialing code (e.g. 'Emirates', 'dollar', 'CAD', 'Europe')

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true / destructiveHint=false, so the safety profile is covered. Beyond that, the description adds real context: the size of the dataset (240+), the fields attached to each entry (currency codes, symbols, flags, phone codes, price groups) and the fact they come from 'live platform settings' (i.e., data may change). It is silent on pagination behavior despite the limit parameter.

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

Conciseness5/5

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

A single front-loaded sentence with the verb first and no filler; the trailing field list is doing work by previewing the payload. Nothing could be removed without losing information.

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?

For a simple, read-only, two-optional-parameter tool, the description covers purpose and the shape of the returned records, which matters because there is no output schema. Only pagination/limit interaction and any search-matching caveats remain unaddressed, and those are minor for this complexity level.

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%, including the query field's accepted search axes and an example, so the schema already carries the parameter burden. The description echoes the search concept but adds no syntax, matching rules, or default/limit behavior beyond what the schema states. Baseline 3 is appropriate.

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

Purpose4/5

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

The description pairs a specific verb ('Search') with a specific resource ('240+ supported destination countries') and enumerates the data carried on each result, so the agent knows this is a catalog/read tool rather than a lookup of the user's own region. It does not explicitly contrast itself with region.get_current / region.set_current, but the scope is unambiguous.

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

Usage Guidelines3/5

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

Usage is only implied: calling it a search over 'supported destination countries' hints at discovery/validation use cases, but there is no statement of when to prefer this over region.get_current or the address.* tools, and no prerequisites or exclusions are given. Minimum viable guidance, nothing more.

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

region.set_currentSet Current Shopping RegionAInspect

Set the active shopping country/region using any natural country name, city (e.g. 'Dubai', 'London', 'California', 'Paris'), 2-letter ISO code ('US', 'GB', 'IN', 'AE', 'CA'), or currency ('USD', 'AED', 'GBP', 'EUR'). Saves to persistent local JSON (~/.polopan/region.json) so the user never needs to be asked again across turns and sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoCatalog mode: 'global' (ships to country) or 'local' (domestic store only). Defaults to 'global'.
countryYesTarget country name, alias, city, currency, or ISO-2 code (e.g. 'United States', 'US', 'UK', 'London', 'Dubai', 'UAE', 'Canada', 'India', 'Germany', 'AED', 'EUR')

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds the genuinely useful behavioral fact that the value is written to a persistent local JSON file (~/.polopan/region.json) and survives across turns and sessions. It does not say what happens on an unrecognized region or whether validation failures are possible, which keeps it below a 5.

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

Conciseness5/5

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

Two sentences, both front-loaded: the first covers accepted inputs, the second covers the persistence side effect. No filler and no repetition of the title.

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?

There is no output schema, and the description covers the action, the input flexibility, and the side effect, which is nearly everything an agent needs to call a 2-parameter setter. It omits error/validation behavior for invalid regions and whether the call requires prior authentication.

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 baseline is 3, but the description adds real semantic value by enumerating the accepted input variants (natural name, city, ISO-2, currency) and giving concrete examples that clarify the loosely typed 'country' string. It does not explain the interaction between the 'country' and 'mode' 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?

States a specific verb (Set) and resource (active shopping country/region) and implicitly distinguishes itself from region.get_current and region.list_supported by describing the write action and what it accepts. An agent can tell exactly what this tool mutates without opening the schema.

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

Usage Guidelines4/5

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

The description gives a rich and explicit set of accepted input forms (country name, city, ISO-2 code, currency) and explains the persistence rationale. It stops short of naming sibling alternatives (e.g., region.list_supported to discover valid values, region.get_current to read the current value), so routing is implied rather than stated.

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
Inspect

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. 19 tool updates
    • Addedaddress.delete
    • Addedaddress.get_current
    • Addedaddress.list_saved
    • Addedaddress.save
    • Addedaddress.set_default
    • Changedcheckout.links.get_direct_url9 fields changed
      • changedInput schema / properties / address / description
        Previous value: -"Delivery address object to prefill directly into checkout link"New value: +"Optional ad-hoc address object to prefill"
      • addedInput schema / properties / address / properties / zip / minLength
        Added value: +1
      • changedInput schema / properties / address / required
        Previous value: -[
        -  "firstName",
        -  "address1",
        -  "city"
        -]New value: +[
        +  "firstName",
        +  "address1",
        +  "city",
        +  "zip"
        +]
      • addedInput schema / properties / address_id
        Added value: +{
        +  "description": "Optional saved address ID to prefill",
        +  "type": "string"
        +}
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • changedInput schema / properties / coupon / description
        Previous value: -"Optional discount coupon code to pre-apply"New value: +"Optional discount coupon code to pre-apply in the checkout session"
      • changedInput schema / properties / handle / description
        Previous value: -"Unique product handle identifier"New value: +"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')"
      • changedInput schema / properties / quantity / description
        Previous value: -"Number of units to purchase (1-10)"New value: +"Number of units to purchase (1 to 10, default 1)"
      • changedInput schema / properties / size / description
        Previous value: -"Size label confirmed by the user (e.g. 'M', 'L', 'XL')"New value: +"Size label confirmed by the user (e.g. 'M', 'L', 'XL', '40')"
    • Changedlooks.curation.by_occasion7 fields changed
      • changedInput schema / properties / age / description
        Previous value: -"Target demographic age"New value: +"Target demographic age (16 to 99, default 25)"
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • changedInput schema / properties / gender / description
        Previous value: -"Target gender filter: 'women' or 'men'"New value: +"Target gender filter: 'women' or 'men' (default: 'women')"
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.",
        +  "enum": [
        +    "global",
        +    "local"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / description
        Previous value: -"Page number for looks pagination"New value: +"Page number for looks pagination (1-indexed)"
      • changedInput schema / properties / page_size / description
        Previous value: -"Number of looks per page"New value: +"Number of looks returned per page (1 to 100, default 10)"
      • changedInput schema / properties / vendor / description
        Previous value: -"Optional brand filter"New value: +"Optional brand or vendor name filter array"
    • Changedlooks.curation.recommend7 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • changedInput schema / properties / gender / description
        Previous value: -"Target gender filter: 'women' or 'men'"New value: +"Target gender filter: 'women' or 'men' (default: 'women')"
      • changedInput schema / properties / handle / description
        Previous value: -"Product handle to build coordinating outfits around"New value: +"Product handle identifier to build coordinating outfits around (e.g. 'solid-linen-shirt')"
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.",
        +  "enum": [
        +    "global",
        +    "local"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / occasion / description
        Previous value: -"Target occasion or aesthetic theme (e.g. 'Wedding', 'Party', 'Cocktail', 'Date Night')"New value: +"Target occasion or aesthetic theme (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal')"
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination"New value: +"Page number for pagination (1-indexed)"
      • changedInput schema / properties / page_size / description
        Previous value: -"Number of outfits per page"New value: +"Number of outfit sets to return per page (1 to 100, default 20)"
    • Changedproducts.items.check_stock4 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • changedInput schema / properties / desired_size / description
        Previous value: -"Optional size query to verify (e.g. 'M', 'L', 'XL', '32', '40')"New value: +"Optional size query to verify against variant inventory (e.g. 'M', 'L', 'XL', '32', '40')"
      • changedInput schema / properties / handle / description
        Previous value: -"Unique product handle identifier"New value: +"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')"
      • changedInput schema / properties / size_index / description
        Previous value: -"Zero-based index of the size variant"New value: +"Zero-based index of the specific size variant to inspect"
    • Changedproducts.items.get_by_handle2 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • changedInput schema / properties / handle / description
        Previous value: -"Unique product handle identifier (e.g. 'solid-linen-shirt')"New value: +"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')"
    • Addedproducts.items.get_size_guide
    • Changedproducts.search.alternatives10 fields changed
      • changedInput schema / properties / budget_range / description
        Previous value: -"Target price bracket in local currency"New value: +"Target price bracket filter in local currency: '0-1500', '1501-3000', '3001-5000', or '5000+'"
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • changedInput schema / properties / handle / description
        Previous value: -"Base product handle to find alternatives for"New value: +"The unique product handle identifier to find visual alternatives for (e.g. 'solid-cotton-shirt')"
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of filtered alternatives to return"New value: +"Maximum number of filtered alternative products to return in the result (1-100)"
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.",
        +  "enum": [
        +    "global",
        +    "local"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination"New value: +"Pagination page number (1-indexed)"
      • changedInput schema / properties / page_size / description
        Previous value: -"Number of items to fetch per page"New value: +"Number of candidate items to fetch per backend page (1-100)"
      • changedInput schema / properties / personalize / description
        Previous value: -"Whether to apply personalized ranking"New value: +"Whether to apply personalized user ranking to the results"
      • changedInput schema / properties / sort_by / description
        Previous value: -"Sorting criteria"New value: +"Sorting attribute for the visual matches: 'relevance', 'price', or 'title'"
      • changedInput schema / properties / sort_order / description
        Previous value: -"Sort order: 'asc' or 'desc'"New value: +"Sort direction: 'asc' for ascending, 'desc' for descending"
    • Changedproducts.search.image_upload16 fields changed
      • changedInput schema / properties / content_type / description
        Previous value: -"MIME type of the image, e.g. 'image/jpeg', 'image/png'"New value: +"MIME type of the image, e.g. 'image/jpeg', 'image/png', 'image/webp'"
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • changedInput schema / properties / expiry_hours / description
        Previous value: -"Temporary upload URL lifetime in hours"New value: +"Temporary upload URL lifetime in hours before expiration (1 to 168, default 24)"
      • changedInput schema / properties / gender / description
        Previous value: -"Target gender filter"New value: +"Target gender filter: 'men', 'women', or 'unisex'"
      • changedInput schema / properties / image_base64 / description
        Previous value: -"Base64-encoded image data string"New value: +"Base64-encoded image data string (alternative to image_path)"
      • changedInput schema / properties / image_path / description
        Previous value: -"Local file system path to the image file"New value: +"Local file system path to the image file (e.g. '/path/to/dress.jpg')"
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.",
        +  "enum": [
        +    "global",
        +    "local"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination"New value: +"Pagination page number (1-indexed)"
      • changedInput schema / properties / page_size / description
        Previous value: -"Number of items to return per page"New value: +"Number of items to return per page (1 to 100, default 20)"
      • changedInput schema / properties / personalize / description
        Previous value: -"Whether to personalize search ranking"New value: +"Whether to apply personalized ranking weights"
      • changedInput schema / properties / price_max / description
        Previous value: -"Maximum price"New value: +"Maximum price in local currency"
      • addedInput schema / properties / price_max / minimum
        Added value: +0
      • changedInput schema / properties / price_min / description
        Previous value: -"Minimum price"New value: +"Minimum price in local currency"
      • addedInput schema / properties / price_min / minimum
        Added value: +0
      • changedInput schema / properties / sort_by / description
        Previous value: -"Sorting criteria"New value: +"Sorting criteria: 'relevance', 'price', or 'title'"
      • changedInput schema / properties / vendor / description
        Previous value: -"List of brand names"New value: +"List of brand names to filter by"
    • Changedproducts.search.image_url11 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • changedInput schema / properties / image_url / description
        Previous value: -"Publicly accessible URL of the fashion image to search for visual matches"New value: +"Publicly accessible HTTP(S) URL of the fashion image to search for visual matches"
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.",
        +  "enum": [
        +    "global",
        +    "local"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination"New value: +"Page number for pagination (1-indexed)"
      • changedInput schema / properties / page_size / description
        Previous value: -"Number of items to return per page"New value: +"Number of items to return per page (1 to 100, default 20)"
      • changedInput schema / properties / personalize / description
        Previous value: -"Whether to apply personalized ranking"New value: +"Whether to apply personalized ranking based on user style profile"
      • addedInput schema / properties / price_max / minimum
        Added value: +0
      • addedInput schema / properties / price_min / minimum
        Added value: +0
      • changedInput schema / properties / size / description
        Previous value: -"Array of sizes to filter by"New value: +"Array of sizes to filter by (e.g. ['S', 'M', 'L'])"
      • changedInput schema / properties / sort_by / description
        Previous value: -"Sorting criteria for search results"New value: +"Sorting criteria for search results: 'relevance', 'price', or 'title'"
      • changedInput schema / properties / sort_order / description
        Previous value: -"Sort order: 'asc' or 'desc'"New value: +"Sort order: 'asc' for ascending, 'desc' for descending"
    • Changedproducts.search.text9 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region.",
        +  "type": "string"
        +}
      • addedInput schema / properties / mode
        Added value: +{
        +  "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.",
        +  "enum": [
        +    "global",
        +    "local"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination (starts at 1)"New value: +"Pagination page number (1-indexed, starts at 1)"
      • changedInput schema / properties / page_size / description
        Previous value: -"Number of items to return per page (max 100)"New value: +"Number of items to return per page (1 to 100, default 20)"
      • addedInput schema / properties / price_max / minimum
        Added value: +0
      • addedInput schema / properties / price_min / minimum
        Added value: +0
      • changedInput schema / properties / size / description
        Previous value: -"Array of sizes to filter by, e.g. ['S', 'M', 'L', 'XL']"New value: +"Array of size labels to filter by (e.g. ['S', 'M', 'L', 'XL', '32'])"
      • changedInput schema / properties / sort_by / description
        Previous value: -"Sorting criteria for the search results"New value: +"Sorting criteria for search results: 'relevance', 'price', or 'title'"
      • changedInput schema / properties / vendor / description
        Previous value: -"List of brand or vendor names to filter by"New value: +"List of brand or vendor names to filter by (e.g. ['Zara', 'H&M', 'Tandul'])"
    • Addedregion.get_current
    • Addedregion.list_supported
    • Addedregion.set_current
    • Changedvision.outfit.detect_pieces3 fields changed
      • changedInput schema / properties / image_base64 / description
        Previous value: -"Base64-encoded image string for outfit piece detection"New value: +"Base64-encoded image data string for outfit piece detection"
      • changedInput schema / properties / image_path / description
        Previous value: -"Local path to the outfit image file to deconstruct"New value: +"Local file system path to the outfit image file to deconstruct"
      • changedInput schema / properties / threshold / description
        Previous value: -"Confidence threshold for object detection bounding boxes (0.05 to 0.95)"New value: +"Confidence threshold for object detection bounding boxes (0.05 to 0.95, default 0.22)"
  2. 10 tool updates
    • Changedcheckout.links.get_direct_url2 fields changed
      • addedInput schema / properties / address
        Added value: +{
        +  "description": "Delivery address object to prefill directly into checkout link",
        +  "properties": {
        +    "address1": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "address2": {
        +      "type": "string"
        +    },
        +    "city": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "country": {
        +      "type": "string"
        +    },
        +    "email": {
        +      "type": "string"
        +    },
        +    "firstName": {
        +      "minLength": 1,
        +      "type": "string"
        +    },
        +    "lastName": {
        +      "type": "string"
        +    },
        +    "phone": {
        +      "type": "string"
        +    },
        +    "province": {
        +      "type": "string"
        +    },
        +    "zip": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "firstName",
        +    "address1",
        +    "city"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "checkout_url": {
        -      "description": "Direct 1-click purchase permalink (https://s.polopan.com/p/{handle}/{size_index})",
        -      "type": "string"
        -    },
        -    "handle": {
        -      "description": "Product handle",
        -      "type": "string"
        -    },
        -    "size": {
        -      "description": "Selected size",
        -      "type": "string"
        -    },
        -    "size_index": {
        -      "description": "Selected size index",
        -      "type": "number"
        -    }
        -  },
        -  "required": [
        -    "handle",
        -    "size_index",
        -    "checkout_url"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedlooks.curation.by_occasion1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "looks": {
        -      "description": "List of verified in-stock occasion looks",
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "id": {
        -            "description": "Unique look ID",
        -            "type": "string"
        -          },
        -          "image_url": {
        -            "description": "Main styled look image",
        -            "type": "string"
        -          },
        -          "occasion": {
        -            "description": "Occasion tag",
        -            "type": "string"
        -          },
        -          "products": {
        -            "description": "100% in-stock items in this outfit",
        -            "items": {
        -              "additionalProperties": false,
        -              "properties": {
        -                "handle": {
        -                  "description": "Product handle",
        -                  "type": "string"
        -                },
        -                "price": {
        -                  "description": "Price",
        -                  "type": "number"
        -                },
        -                "title": {
        -                  "description": "Product title",
        -                  "type": "string"
        -                },
        -                "url": {
        -                  "description": "Purchase link",
        -                  "type": "string"
        -                }
        -              },
        -              "required": [
        -                "handle",
        -                "title",
        -                "price",
        -                "url"
        -              ],
        -              "type": "object"
        -            },
        -            "type": "array"
        -          },
        -          "title": {
        -            "description": "Look title",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "looks"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedlooks.curation.recommend1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "handle": {
        -      "description": "Base product handle",
        -      "type": "string"
        -    },
        -    "looks": {
        -      "description": "List of recommended outfits",
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "image_url": {
        -            "description": "Look image URL",
        -            "type": "string"
        -          },
        -          "title": {
        -            "description": "Outfit title",
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "type": "array"
        -    }
        -  },
        -  "type": "object"
        -}New value: +null
    • Changedproducts.items.check_stock1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "available_sizes": {
        -      "description": "List of currently available in-stock sizes",
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "direct_checkout_url": {
        -      "description": "Verified 1-click checkout permalink",
        -      "type": "string"
        -    },
        -    "handle": {
        -      "description": "Product handle",
        -      "type": "string"
        -    },
        -    "is_in_stock": {
        -      "description": "Overall stock status",
        -      "type": "boolean"
        -    },
        -    "out_of_stock_sizes": {
        -      "description": "List of out-of-stock sizes",
        -      "items": {
        -        "type": "string"
        -      },
        -      "type": "array"
        -    },
        -    "title": {
        -      "description": "Product title",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "handle",
        -    "title",
        -    "is_in_stock",
        -    "available_sizes",
        -    "out_of_stock_sizes",
        -    "direct_checkout_url"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedproducts.items.get_by_handle1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "handle": {
        -      "description": "Product handle identifier",
        -      "type": "string"
        -    },
        -    "price": {
        -      "description": "Price",
        -      "type": "number"
        -    },
        -    "title": {
        -      "description": "Product title",
        -      "type": "string"
        -    },
        -    "url": {
        -      "description": "Verified purchase link",
        -      "type": "string"
        -    },
        -    "variants": {
        -      "description": "Variant size list",
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "in_stock": {
        -            "description": "Stock availability",
        -            "type": "boolean"
        -          },
        -          "size": {
        -            "description": "Size label",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "size",
        -          "in_stock"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "handle",
        -    "title",
        -    "price",
        -    "url"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedproducts.search.alternatives1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "budget_range": {
        -      "description": "Applied budget bracket",
        -      "type": "string"
        -    },
        -    "products": {
        -      "description": "List of visual alternatives within budget",
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "handle": {
        -            "description": "Alternative product handle",
        -            "type": "string"
        -          },
        -          "price": {
        -            "description": "Alternative product price",
        -            "type": "number"
        -          },
        -          "title": {
        -            "description": "Alternative product title",
        -            "type": "string"
        -          },
        -          "url": {
        -            "description": "Purchase link",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "handle",
        -          "title",
        -          "price",
        -          "url"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "source_handle": {
        -      "description": "Source product handle",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "budget_range",
        -    "source_handle",
        -    "products"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedproducts.search.image_upload1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "products": {
        -      "description": "Matching products",
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "handle": {
        -            "description": "Product handle",
        -            "type": "string"
        -          },
        -          "price": {
        -            "description": "Price",
        -            "type": "number"
        -          },
        -          "title": {
        -            "description": "Product title",
        -            "type": "string"
        -          },
        -          "url": {
        -            "description": "Purchase link",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "handle",
        -          "title",
        -          "price",
        -          "url"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    },
        -    "uploaded_image_url": {
        -      "description": "Temporary URL of the uploaded image",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "uploaded_image_url",
        -    "products"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedproducts.search.image_url1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "products": {
        -      "description": "List of matching fashion products",
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "handle": {
        -            "description": "Unique product handle identifier",
        -            "type": "string"
        -          },
        -          "price": {
        -            "description": "Current selling price",
        -            "type": "number"
        -          },
        -          "title": {
        -            "description": "Product name and title",
        -            "type": "string"
        -          },
        -          "url": {
        -            "description": "Verified purchase link",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "handle",
        -          "title",
        -          "price",
        -          "url"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "products"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedproducts.search.text1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "pagination": {
        -      "additionalProperties": false,
        -      "description": "Pagination metadata",
        -      "properties": {
        -        "page": {
        -          "description": "Current page number",
        -          "type": "number"
        -        },
        -        "page_size": {
        -          "description": "Number of items per page",
        -          "type": "number"
        -        },
        -        "total": {
        -          "description": "Total number of matching products",
        -          "type": "number"
        -        }
        -      },
        -      "required": [
        -        "page",
        -        "page_size"
        -      ],
        -      "type": "object"
        -    },
        -    "products": {
        -      "description": "List of matching fashion products",
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "brand": {
        -            "description": "Brand or vendor name",
        -            "type": "string"
        -          },
        -          "discount_percent": {
        -            "description": "Discount percentage",
        -            "type": "number"
        -          },
        -          "handle": {
        -            "description": "Unique product handle identifier",
        -            "type": "string"
        -          },
        -          "mrp": {
        -            "description": "Original maximum retail price",
        -            "type": "number"
        -          },
        -          "price": {
        -            "description": "Current selling price",
        -            "type": "number"
        -          },
        -          "sizes": {
        -            "description": "List of available in-stock sizes",
        -            "items": {
        -              "type": "string"
        -            },
        -            "type": "array"
        -          },
        -          "title": {
        -            "description": "Product name and title",
        -            "type": "string"
        -          },
        -          "url": {
        -            "description": "Verified purchase link",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "handle",
        -          "title",
        -          "price",
        -          "url"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "products"
        -  ],
        -  "type": "object"
        -}New value: +null
    • Changedvision.outfit.detect_pieces1 field changed
      • changedOutput schema / (root)
        Previous value: -{
        -  "$schema": "http://json-schema.org/draft-07/schema#",
        -  "additionalProperties": false,
        -  "properties": {
        -    "pieces": {
        -      "description": "List of detected fashion pieces",
        -      "items": {
        -        "additionalProperties": false,
        -        "properties": {
        -          "box": {
        -            "description": "Normalized bounding box coordinates [ymin, xmin, ymax, xmax]",
        -            "items": {
        -              "type": "number"
        -            },
        -            "type": "array"
        -          },
        -          "confidence": {
        -            "description": "Confidence score between 0.0 and 1.0",
        -            "type": "number"
        -          },
        -          "label": {
        -            "description": "Detected clothing category (e.g. Upper-body garment, Lower-body garment, Footwear, Bag)",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "label",
        -          "confidence",
        -          "box"
        -        ],
        -        "type": "object"
        -      },
        -      "type": "array"
        -    }
        -  },
        -  "required": [
        -    "pieces"
        -  ],
        -  "type": "object"
        -}New value: +null
  3. 10 tool updates
    • 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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server that enables AI shopping assistants to understand customer needs, search products using visual and semantic queries, apply metadata filters, and recommend relevant products from an inventory.
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Fashion discovery MCP server for Indian Gen Z that enables AI assistants to search and discover fashion products from Klydo's platform.
    3
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    The Vistoya MCP server gives AI agents direct access to a curated, multi-brand fashion catalog. Agents can search by structured filters, discover products through natural language, find similar items, and retrieve full product details — all over a single Streamable HTTP connection.
    8 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.