Skip to main content
Glama

Server Details

The premier fashion & apparel Model Context Protocol server. AI bounding box outfit deconstruction, 100% in-stock occasion looks, live size stock, and 1-click checkout.

Ownership verified
Status
Healthy
Uptime
100.0% over 39 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 19 tools

Disambiguation4/5

The descriptions are unusually thorough with explicit PURPOSE & DISAMBIGUATION and WHEN NOT TO USE sections that cleanly separate the four search variants (text, image_url, image_upload, alternatives) and the three product-item tools (check_stock, get_by_handle, get_size_guide). The main overlap is looks.curation.recommend versus looks.curation.by_occasion, since recommend also accepts an occasion and thus subsumes by_occasion, which could cause misselection.

Naming Consistency4/5

The dot-namespaced convention (address.*, region.*, products.search.*, products.items.*, checkout.links.*, looks.curation.*, vision.outfit.*) is applied throughout and is largely predictable with trailing verbs. Minor deviations exist: looks.curation.by_occasion uses a prepositional form rather than a verb, and nesting depth varies across namespaces.

Tool Count4/5

At 19 tools the set is on the heavier side but each namespace earns its place: search (4), item details (3), looks curation (2), address CRUD (5), region management (3), checkout link (1), and vision (1). No tool appears redundant enough to obviously cut, though the count sits just above the ideal 3-15 band.

Completeness4/5

Coverage is broad and includes full address CRUD plus set_default, complete region management, text/image/alternative search, stock and size-guide lookups, looks curation, checkout link generation, and outfit piece detection. The only gap is cart/order lifecycle (no order tracking or cart operations), though the 1-click link model partially compensates.

Available Tools

19 tools
address.deleteDelete Saved Delivery AddressA
Destructive
Inspect

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

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.

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.

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.

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.

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 URLA
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.

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

TDQS

A4.3/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 partly covered. The description usefully adds that it is a 'read-only link generator with no persistent state modifications or charges,' auto-resolves the variant index when only a size string is given, and encodes coupon/quantity into the URL. It stops short of describing edge cases (e.g. invalid size_index, missing variant, coupon rejection), 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.

Conciseness4/5

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

The sectioned structure (purpose, when-to-use, when-not, behavior, params) is front-loaded and scannable, with the key output template stated first. The parameter section duplicates schema content, adding some length that does not earn its place, but the overall brevity is acceptable for a tool with this much conditional logic.

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, but the description compensates by specifying the generated URL format and the encoded inputs, so an agent knows what to expect back. Combined with 100% schema coverage on the input side, the definition is nearly complete; only finer handling details (auto-resolution failure, coupon application) are left implicit.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all eight parameters, and the description's 'PARAMETERS & CONSTRAINTS' section largely restates them. It adds a small amount of value by framing 'size' as user-confirmed and noting size_index is zero-based, but the nested address object is only described generically and the country parameter present in the schema is omitted from the description. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Generate the direct 1-click checkout purchase URL') and even gives the exact URL template. It explicitly distinguishes itself from browsing links by contrasting the /{handle} vs /{handle}/{size_index} forms, so an agent can separate it from sibling products.items.get_by_handle 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 Guidelines5/5

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

Provides explicit WHEN TO USE ('ONLY after the user has explicitly selected and confirmed their size') and WHEN NOT TO USE ('Do NOT provide direct checkout URLs during initial browsing, shortlisting, or if size is ambiguous') with a concrete alternative (the base link). This is precisely the routing guidance an agent needs.

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

looks.curation.by_occasionGet Looks By OccasionA
Read-only
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.

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)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare read-only/non-destructive, but the description adds real behavioral context beyond them: automatic exclusion of any look with an out-of-stock item, localization to active country/240+ regions, enrichment with purchase links and policy data, and the negative-return-days convention. This is well above the annotation baseline.

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 purpose and routing, then organized into labeled sections that scan well. It is on the long side, and the MANDATORY AGENT INSTRUCTIONS (table rendering, checkout-link timing) lean prescriptive rather than descriptive, but each section is relevant to correct invocation.

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?

No output schema exists, so the description carries the return burden and does so reasonably: it covers in-stock filtering, localization, purchase-link format, and policy data. It could say more about response structure (e.g. how looks and their constituent items are grouped), which is the remaining gap for a complex 8-parameter tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds value: it lists the valid occasion themes, interprets the gender enum ('women' or 'men'), and gives richer country examples ('US', 'United States', 'UK', 'Dubai', 'CA', 'IN') than the schema. It does not, however, explain interaction between page/page_size or mode defaults in new ways.

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

Purpose5/5

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

States a specific verb+resource ('Discover complete curated fashion looks styled for specific occasions') and enumerates concrete occasions. It explicitly contrasts itself with products.search.text (individual products) and looks.curation.recommend (seed-product-based), so an agent can distinguish it from siblings 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 Guidelines5/5

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

Dedicated WHEN TO USE and WHEN NOT TO USE sections name the two alternatives and the exact conditions that select them ('outfit inspiration for events' vs 'single product category' vs 'coordinating around a specific item'). Routing is explicit and leaves nothing to inference.

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

looks.curation.recommendGet Recommended OutfitsA
Read-only
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.

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)

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only declare readOnlyHint/destructiveHint, but the description adds substantial non-annotation behavior: out-of-stock filtering that guarantees 100% purchasable looks, automatic localization across 240+ regions, and enrichment of items with purchase permalinks and policy strings. These are real operational traits an agent needs and cannot get from the schema or annotations.

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

Conciseness3/5

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

The opening paragraph is excellently front-loaded, but the PARAMETERS & CONSTRAINTS block restates the schema descriptions nearly verbatim (100% coverage), which is pure redundancy, and the MANDATORY AGENT INSTRUCTIONS section is long. Structure is good via headers, but several sentences do not earn their place.

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

Completeness5/5

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

With no output schema, the description carries the burden of describing returns and does so: it names the in-stock guarantee, permalink/policy enrichment, and localization. Combined with the styling/checkout link instructions, an agent has everything needed to call and present results 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 coverage is 100%, so the baseline is 3, but the description adds genuinely new semantics: it explains that 'handle' and 'occasion' are alternate entry paths rather than combinable filters, and supplies concrete occasion examples that constrain the free-form string. The remaining param text largely mirrors the schema, capping this at 4.

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?

First sentence states a specific verb and resource ('Get complete recommended outfits') and the two entry modes (handle vs. occasion). The disambiguation section explicitly names 'products.search.alternatives' and 'looks.curation.by_occasion' and contrasts the use cases, so an agent can select this tool without opening any sibling 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?

Contains explicit WHEN TO USE (styling a selected product, occasion discovery) and WHEN NOT TO USE clauses, each routing the agent to a named alternative tool. This is about as complete as usage guidance gets.

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

products.items.check_stockCheck Live Variant Stock, Product Details & SizingA
Read-only
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.

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

TDQS

A4.2/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, and the description only restates that ('read-only and idempotent with no persistent state modifications'), which earns no extra credit. It does add genuinely non-obvious behavior: automatic numeric/IN/UK/EU size normalization and the negative-return-days formatting rule ('-7' -> 'Exchange only 7 days'), plus the returned JSON keys. Useful, but largely a restatement of the safety profile plus output-field listing for a read-only tool with no destructive or auth risk to disclose.

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

Conciseness4/5

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

Well front-loaded with clear headers and the routing decision placed early, but there is notable redundancy: the read-only/idempotent claim, the size-mapping rule, and the negative-return-days rule are each stated twice, and the MANDATORY AGENT INSTRUCTIONS partially restate the BEHAVIOR and WHEN TO USE blocks.

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?

No output schema exists, and the description compensates by naming the returned fields ('is_in_stock', 'available_sizes', 'out_of_stock_sizes', 'product_details', 'shipping_policy_text', 'return_policy_text'). For a read-only inspection tool with annotations covering safety, everything an agent needs to call it correctly is present.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters with the same examples. The description's 'PARAMETERS & CONSTRAINTS' section repeats handle, desired_size, and size_index but omits the 'country' parameter entirely, so it adds little and is actually less complete than the schema. Baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Verify) plus a precise resource (live stock, pricing, specs, sizes for a single product handle) and enumerates the concrete outputs it computes (size-availability matrix, discount percentage, checkout permalink). It explicitly distinguishes itself from 'products.items.get_by_handle' and 'checkout.links.get_direct_url', so an agent can route 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 Guidelines5/5

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

Has dedicated WHEN TO USE and WHEN NOT TO USE sections naming concrete triggers (verifying a desired size before confirming a product, generating the specs table, checking return eligibility) and explicit exclusions with the correct alternatives ('products.search.text', 'products.search.image_url'). The disambiguation block also states the condition that selects the sibling over this tool.

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

products.items.get_by_handleGet Product By HandleA
Read-only
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').

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.

TDQS

A4.3/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 non-obvious behavior beyond that: a 404 on unknown handles and enrichment of the document with verified purchase URLs, which is meaningful context for interpreting results.

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

Conciseness4/5

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

Well front-loaded with labeled sections that make scanning easy, but the DISAMBIGUATION bullets and the WHEN NOT TO USE bullets restate the same routing guidance twice, costing some efficiency.

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 usefully enumerates the return shape (metadata, variants, in-stock sizes, price, purchase link) and error behavior. The only gap is that the optional 'country' parameter's effect on results is never explained.

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 baseline is 3. The description restates the 'handle' examples that already exist in the schema and never mentions the optional 'country' parameter at all, so it adds essentially nothing beyond the structured fields.

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 and resource ('Fetch the raw product document and metadata for a single item by unique product handle') and explicitly names the two siblings it is not (check_stock, search.text). An agent can distinguish it from every other catalog tool without opening a schema.

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

Usage Guidelines5/5

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

Provides explicit WHEN TO USE and WHEN NOT TO USE sections plus a disambiguation block routing to alternatives by condition (known handle vs. keyword search vs. live stock). 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.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.

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 BudgetA
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.

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

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnly/destructive annotations, it discloses non-obvious behavior: it auto-fetches the source product's primary image embedding, excludes the source handle from results, and returns PoloPan purchase permalinks. This is meaningful context an agent could not derive from annotations or schema.

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 summary line is front-loaded and the sections are well organized, but the PARAMETERS & CONSTRAINTS block duplicates schema content verbatim, adding length without new information.

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

Completeness5/5

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

With no output schema, the description compensates by explaining the return format (clean permalinks), the exclusion of the source item, and the localization behavior. For a 10-parameter read tool, this is complete enough to call correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all ten parameters are already documented in the schema. The description's PARAMETERS & CONSTRAINTS section largely restates the schema (enums, defaults, ranges) rather than adding new meaning, so the baseline of 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?

The description states a specific verb and resource ('find visual substitute products... for a given fashion item handle using visual image similarity') and immediately disambiguates against four named siblings. An agent can select it confidently 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 Guidelines5/5

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

Dedicated WHEN TO USE and WHEN NOT TO USE sections name the exact scenario (cheaper/higher-end substitutes for a known handle) and route the agent to alternatives ('products.search.text', 'looks.curation.recommend', 'looks.curation.by_occasion') with the condition that selects each. 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.image_uploadSearch Products By Uploaded ImageA
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.

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)

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. The description adds genuine context beyond that: the image is copied to secure temporary storage that expires after expiry_hours (default 24h), MIME types are auto-resolved, and results are enriched with verified purchase links and stock metadata. It doesn't cover failure modes (e.g. unsupported format, oversized upload), so not 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.

Conciseness4/5

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

Front-loaded and organized under clear headers, with the disambiguation placed early. However, the 'PARAMETERS & CONSTRAINTS' block largely duplicates the schema descriptions (country, expiry_hours, content_type, mode repeated near-verbatim), adding length without new information.

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

Completeness5/5

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

For a 16-parameter, zero-required tool with no output schema, the description is complete: it names the return shape (matching products with in-stock sizes, pricing, verified purchase URLs), explains localization to the active country/240+ regions, and documents every parameter group. An agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3, but the description adds real meaning the schema does not enforce: it states that one of image_path or image_base64 is required (the schema marks zero required params, so this constraint lives only here). It also clarifies country accepts currency/city aliases and the upload-expiry semantics of expiry_hours. The remaining params largely restate 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+resource ('search PoloPan catalog products using visual image similarity' from an uploaded file/base64) and explicitly disambiguates from the two closest siblings: products.search.image_url (URL vs local/base64) and vision.outfit.detect_pieces (single garment vs full outfit). An agent can pick the correct tool 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 Guidelines5/5

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

Has explicit WHEN TO USE and WHEN NOT TO USE sections that name the alternative tool for each excluded case (image_url for public URLs, products.search.text for text-only). The condition selecting this tool (local file or base64 data) is stated unambiguously.

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

products.search.image_urlSearch Products By Image URLA
Read-only
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.

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

TDQS

A4.4/5.0
Behavior4/5

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

Beyond the readOnlyHint/destructiveHint annotations, the description discloses the actual pipeline (downloads image, generates embeddings, retrieves ranked matches) and the enrichment behavior (verified purchase links, stock metadata, localization to 240+ regions). It omits rate limits or failure modes on unreachable URLs, keeping it short of 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.

Conciseness4/5

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

Front-loaded with the core purpose and well-sectioned for scanning, but there is redundancy: the purpose, disambiguation, and parameter list repeat much of the same routing information across PURPOSE, WHEN NOT TO USE, and PARAMETERS sections. Slightly longer than necessary.

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?

With no output schema, the description correctly compensates by describing the return payload (visually similar products with sizes, pricing, and verified purchase URLs including the URL pattern). For a 13-param read-only search tool, the coverage is complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 13 parameters fully; baseline is 3. The description largely restates the schema (country examples, mode semantics, sort enums) without adding format or interaction details beyond it.

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

Purpose5/5

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

States a specific verb (search), resource (catalog products), and method (visual image similarity from a URL), then explicitly distinguishes itself from three siblings by name: products.search.text, products.search.image_upload, and vision.outfit.detect_pieces. An agent can route correctly without opening any other schema.

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

Usage Guidelines5/5

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

Provides dedicated WHEN TO USE and WHEN NOT TO USE sections with concrete conditions and named alternatives for each exclusion (local/base64 images -> image_upload, text queries -> search.text, multi-garment segmentation -> detect_pieces). 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.textSearch Products By TextA
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.

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

TDQS

A4.3/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, and the description partly repeats that ('Read-only and idempotent'). Beyond that it adds real non-obvious behavior: automatic sanitization and enrichment of records, computed in-stock size lists, human-readable shipping/return policy strings, verified permalink construction, and the negative-return-days convention. It stops short of describing pagination limits or failure behavior, so a 4 rather than 5.

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

Conciseness3/5

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

The purpose is front-loaded and the header structure is easy to scan, but the text is long and has real redundancy: the 'Distinct from products.search.image_url / alternatives / looks.curation.by_occasion' bullets in PURPOSE & DISAMBIGUATION are repeated almost verbatim in WHEN NOT TO USE. The MANDATORY AGENT INSTRUCTIONS section is presentation policy rather than tool-selection information.

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

Completeness5/5

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

With 12 parameters, no output schema, and no nested objects, the description compensates fully: it enumerates the return payload (in-stock sizes, specs table fields, shipping/return policies, discounted pricing, permalink format) and specifies the base-link vs. checkout-link rule. Nothing an agent needs to call or present results from this tool 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%, so the schema already documents all 12 parameters with enums, defaults, and examples. The PARAMETERS & CONSTRAINTS section largely restates the schema (mode, page, page_size, sort_by, sort_order, gender, size, price_min/max, vendor) with only marginal added nuance. Baseline 3 is appropriate when the schema does the heavy lifting.

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 first sentence names a specific verb (search), resource (PoloPan catalog products), and scope (text keyword query with optional multi-attribute filters). The disambiguation section explicitly names three siblings (products.search.image_url/image_upload, products.search.alternatives, looks.curation.by_occasion) and states how this tool differs from each.

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?

There are dedicated WHEN TO USE and WHEN NOT TO USE sections with concrete trigger examples ('black leather jacket', 'men linen shirts') and explicit routing rules to named alternatives for image input, substitute-finding, and outfit curation. An agent has no inference left to do.

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

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

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.

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.

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.

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_url8 fields changed
      • addedInput schema / properties / address
        Added value: +{
        +  "description": "Optional ad-hoc address object to prefill",
        +  "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": {
        +      "minLength": 1,
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "firstName",
        +    "address1",
        +    "city",
        +    "zip"
        +  ],
        +  "type": "object"
        +}
      • 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')"
      • 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_occasion8 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"
      • 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.recommend8 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)"
      • 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_stock5 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"
      • 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_handle3 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')"
      • 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
    • Addedproducts.items.get_size_guide
    • Changedproducts.search.alternatives11 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"
      • 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_upload17 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"
      • 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_url12 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"
      • 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.text10 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'])"
      • 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
    • Addedregion.get_current
    • Addedregion.list_supported
    • Addedregion.set_current
    • Changedvision.outfit.detect_pieces4 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)"
      • 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
  2. 20 tool updates
    • Removedcheck_variant_availability
    • Addedcheckout.links.get_direct_url
    • Removeddetect_fashion_pieces
    • Removedget_direct_checkout_url
    • Removedget_looks_by_occasion
    • Removedget_product_by_handle
    • Removedget_recommended_outfits
    • Addedlooks.curation.by_occasion
    • Addedlooks.curation.recommend
    • Addedproducts.items.check_stock
    • Addedproducts.items.get_by_handle
    • Addedproducts.search.alternatives
    • Addedproducts.search.image_upload
    • Addedproducts.search.image_url
    • Addedproducts.search.text
    • Removedsearch_alternatives_in_budget
    • Removedsearch_products_image
    • Removedsearch_products_image_upload
    • Removedsearch_products_text
    • Addedvision.outfit.detect_pieces
  3. 10 tool updates
    • First observedcheck_variant_availability
    • First observeddetect_fashion_pieces
    • First observedget_direct_checkout_url
    • First observedget_looks_by_occasion
    • First observedget_product_by_handle
    • First observedget_recommended_outfits
    • First observedsearch_alternatives_in_budget
    • First observedsearch_products_image
    • First observedsearch_products_image_upload
    • First observedsearch_products_text

Publisher details

Operator
Rofoso Consumer Private Limited · Publisher source
Operator website
https://polopan.com
Vendor relationship
First-party
Restrictions
Totally free. No limit on usage

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Remote MCP server that lets AI assistants read tracked competitive intelligence — competitor news, reviews, website changes, social posts and ads — and act on it by managing projects, competitors, battle cards, reports and canvases. Every answer carries a source and a date, and write actions only publish when explicitly shared.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    23 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources