mcp-fashion
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.
- Status
- Healthy
- Uptime
- 100.0% over 20 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Tools are largely distinct, but products.items.check_stock and products.items.get_by_handle both deliver product information with overlapping details, and looks.curation.by_occasion and looks.curation.recommend share occasion-based discovery. Each has a clear primary purpose, so confusion is limited.
All tool names follow a consistent category.subcategory.action_noun pattern using lowercase snake_case, making the API predictable and easy to navigate.
With 10 tools, the server covers search, product info, look curation, checkout link generation, and vision detection without being overwhelming. Each tool serves a distinct function within the fashion e-commerce domain.
The surface covers main workflows: text/image/alternative search, stock and spec checks, look curation, and checkout links. Missing explicit cart/order management, but that may be out of scope for a browsing-focused server.
Available Tools
19 toolsaddress.deleteDelete Saved Delivery AddressDestructiveInspect
Delete a saved delivery address by ID from ~/.polopan/region.json.
| Name | Required | Description | Default |
|---|---|---|---|
| address_id | Yes | ID of the saved address to delete |
address.get_currentGet Current Delivery Address for RegionRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Optional country code (e.g. 'US', 'AE', 'GB', 'IN') to inspect addresses for. Defaults to active region country. |
address.list_savedList Saved Delivery AddressesRead-onlyInspect
List all saved customer delivery addresses stored in ~/.polopan/region.json, optionally filtered by country.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Optional country filter (ISO-2 code or natural country name) |
address.saveSave or Update Delivery AddressInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Optional existing address ID to update | |
| zip | Yes | Postal code / Zip code / PIN code | |
| city | Yes | City / Town | |
| type | No | Address label/type: 'Home', 'Work', or 'Other' | Home |
| No | Customer delivery notification email address | ||
| phone | No | Recipient contact phone number with country dialing code | |
| country | No | Destination country code or natural name. Defaults to active region country. | |
| address1 | Yes | Street address, house/flat/building name | |
| address2 | No | Apartment, suite, unit, landmark, or area | |
| lastName | No | Recipient last name | |
| province | No | State, Province, or Governorate | |
| firstName | Yes | Recipient first name | |
| is_default | No | Set this address as default for the country (default true) | |
| storage_mode | No | Storage destination: 'local' (writes to ~/.polopan/region.json) or 'stateless' (returns for chat context without disk write). Defaults to 'stateless' in cloud-hosted environments. |
address.set_defaultSet Default Delivery AddressInspect
Set an existing address as the default shipping address for its country in ~/.polopan/region.json.
| Name | Required | Description | Default |
|---|---|---|---|
| address_id | Yes | ID of the saved address to set as default |
checkout.links.get_direct_urlGet Direct Checkout URLRead-onlyInspect
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:
Produces the final, verified 1-click buy link configured with the user's selected size index, unit quantity, and pre-applied coupon code.
Distinct from browsing links: General browsing uses base link (https://s.polopan.com/p/{handle}); this tool generates size-specific purchase permalinks (https://s.polopan.com/p/{handle}/{size_index}).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Size label confirmed by the user (e.g. 'M', 'L', 'XL', '40') | |
| coupon | No | Optional discount coupon code to pre-apply in the checkout session | |
| handle | Yes | Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206') | |
| address | No | Optional ad-hoc address object to prefill | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. | |
| quantity | No | Number of units to purchase (1 to 10, default 1) | |
| address_id | No | Optional saved address ID to prefill | |
| size_index | No | Zero-based index of the chosen size variant |
looks.curation.by_occasionGet Looks By OccasionRead-onlyInspect
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:
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').
When shortlisting a look, render the product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| age | No | Target demographic age (16 to 99, default 25) | |
| mode | No | Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region. | |
| page | No | Page number for looks pagination (1-indexed) | |
| gender | No | Target gender filter: 'women' or 'men' (default: 'women') | women |
| vendor | No | Optional brand or vendor name filter array | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. | |
| occasion | No | Target occasion or vibe: 'Wedding & Reception', 'Party', 'Casual', 'Cocktail', 'Date Night', 'Club Night', 'Brunch', 'Vacation', 'Formal' | |
| page_size | No | Number of looks returned per page (1 to 100, default 10) |
looks.curation.recommendGet Recommended OutfitsRead-onlyInspect
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:
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').
When shortlisting a look, render the product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region. | |
| page | No | Page number for pagination (1-indexed) | |
| gender | No | Target gender filter: 'women' or 'men' (default: 'women') | women |
| handle | No | Product handle identifier to build coordinating outfits around (e.g. 'solid-linen-shirt') | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. | |
| occasion | No | Target occasion or aesthetic theme (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal') | |
| page_size | No | Number of outfit sets to return per page (1 to 100, default 20) |
products.items.check_stockCheck Live Variant Stock, Product Details & SizingRead-onlyInspect
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:
Always inform the user of available in-stock sizes, fast dispatch SLA, and return policy (Negative return days = 'Exchange only |X| days').
Display the product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206') | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. | |
| size_index | No | Zero-based index of the specific size variant to inspect | |
| desired_size | No | Optional size query to verify against variant inventory (e.g. 'M', 'L', 'XL', '32', '40') |
products.items.get_by_handleGet Product By HandleRead-onlyInspect
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').
| Name | Required | Description | Default |
|---|---|---|---|
| handle | Yes | Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206') | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. |
products.items.get_size_guideGet Product Size Guide & Fit RecommendationRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| unit | No | Measurement unit system for the size chart ('in' for inches, 'cm' for centimeters) | in |
| handle | Yes | Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206') | |
| user_hip | No | Optional user body hip measurement for automated fit recommendation | |
| user_unit | No | Unit for the user's input measurements ('in' or 'cm') | in |
| user_chest | No | Optional user body chest/bust measurement for automated fit recommendation | |
| user_waist | No | Optional user body waist measurement for automated fit recommendation | |
| desired_size | No | Optional specific size label to highlight or verify (e.g. 'M', 'L', 'XL', '32') |
products.search.alternativesSearch Alternatives In BudgetRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region. | |
| page | No | Pagination page number (1-indexed) | |
| limit | No | Maximum number of filtered alternative products to return in the result (1-100) | |
| handle | Yes | The unique product handle identifier to find visual alternatives for (e.g. 'solid-cotton-shirt') | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. | |
| sort_by | No | Sorting attribute for the visual matches: 'relevance', 'price', or 'title' | relevance |
| page_size | No | Number of candidate items to fetch per backend page (1-100) | |
| sort_order | No | Sort direction: 'asc' for ascending, 'desc' for descending | desc |
| personalize | No | Whether to apply personalized user ranking to the results | |
| budget_range | No | Target price bracket filter in local currency: '0-1500', '1501-3000', '3001-5000', or '5000+' | 1501-3000 |
products.search.image_uploadSearch Products By Uploaded ImageRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region. | |
| page | No | Pagination page number (1-indexed) | |
| size | No | Array of sizes to filter by | |
| gender | No | Target gender filter: 'men', 'women', or 'unisex' | |
| vendor | No | List of brand names to filter by | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. | |
| sort_by | No | Sorting criteria: 'relevance', 'price', or 'title' | relevance |
| page_size | No | Number of items to return per page (1 to 100, default 20) | |
| price_max | No | Maximum price in local currency | |
| price_min | No | Minimum price in local currency | |
| image_path | No | Local file system path to the image file (e.g. '/path/to/dress.jpg') | |
| sort_order | No | Sort order: 'asc' or 'desc' | desc |
| personalize | No | Whether to apply personalized ranking weights | |
| content_type | No | MIME type of the image, e.g. 'image/jpeg', 'image/png', 'image/webp' | image/jpeg |
| expiry_hours | No | Temporary upload URL lifetime in hours before expiration (1 to 168, default 24) | |
| image_base64 | No | Base64-encoded image data string (alternative to image_path) |
products.search.image_urlSearch Products By Image URLRead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region. | |
| page | No | Page number for pagination (1-indexed) | |
| size | No | Array of sizes to filter by (e.g. ['S', 'M', 'L']) | |
| gender | No | Target gender filter: 'men', 'women', or 'unisex' | |
| vendor | No | List of brand names to filter by | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. | |
| sort_by | No | Sorting criteria for search results: 'relevance', 'price', or 'title' | relevance |
| image_url | Yes | Publicly accessible HTTP(S) URL of the fashion image to search for visual matches | |
| page_size | No | Number of items to return per page (1 to 100, default 20) | |
| price_max | No | Maximum price in local currency | |
| price_min | No | Minimum price in local currency | |
| sort_order | No | Sort order: 'asc' for ascending, 'desc' for descending | desc |
| personalize | No | Whether to apply personalized ranking based on user style profile |
products.search.textSearch Products By TextRead-onlyInspect
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:
Always communicate available in-stock sizes, fast dispatch SLA, and return policy for each product (Negative return days = 'Exchange only |X| days').
When presenting or shortlisting products, display the product specifications table (Fabric, Pattern, Collar, Sleeves, Fit, Care).
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region. | |
| page | No | Pagination page number (1-indexed, starts at 1) | |
| size | No | Array of size labels to filter by (e.g. ['S', 'M', 'L', 'XL', '32']) | |
| query | Yes | The search query or style keyword to find fashion items (e.g. 'black leather jacket', 'floral summer midi dress') | |
| gender | No | Target gender filter: 'men', 'women', or 'unisex' | |
| vendor | No | List of brand or vendor names to filter by (e.g. ['Zara', 'H&M', 'Tandul']) | |
| country | No | Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region. | |
| sort_by | No | Sorting criteria for search results: 'relevance', 'price', or 'title' | relevance |
| page_size | No | Number of items to return per page (1 to 100, default 20) | |
| price_max | No | Maximum price in local currency | |
| price_min | No | Minimum price in local currency | |
| sort_order | No | Sort order: 'asc' for ascending, 'desc' for descending | desc |
region.get_currentGet Current Shopping Region & SettingsRead-onlyInspect
Get the currently active shopping destination country, currency code, symbol, phone code, and catalog scope mode from persistent local configuration (~/.polopan/region.json).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
region.list_supportedList & Search Supported CountriesRead-onlyInspect
Search the 240+ supported destination countries with localized currency codes, symbols, flags, phone codes, and price groups from live platform settings.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max number of countries to return (default: 20) | |
| query | No | Optional search filter by country name, ISO code, currency, or phone dialing code (e.g. 'Emirates', 'dollar', 'CAD', 'Europe') |
region.set_currentSet Current Shopping RegionInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Catalog mode: 'global' (ships to country) or 'local' (domestic store only). Defaults to 'global'. | |
| country | Yes | Target country name, alias, city, currency, or ISO-2 code (e.g. 'United States', 'US', 'UK', 'London', 'Dubai', 'UAE', 'Canada', 'India', 'Germany', 'AED', 'EUR') |
vision.outfit.detect_piecesDetect Fashion Pieces & Bounding BoxesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| image_url | No | Public HTTP(S) URL of the fashion image to deconstruct | |
| threshold | No | Confidence threshold for object detection bounding boxes (0.05 to 0.95, default 0.22) | |
| image_path | No | Local file system path to the outfit image file to deconstruct | |
| image_base64 | No | Base64-encoded image data string for outfit piece detection |
TDQS
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.
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.
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.
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.
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.
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.
19 tool updates
- Added
address.delete - Added
address.get_current - Added
address.list_saved - Added
address.save - Added
address.set_default - Changed
checkout.links.get_direct_url8 fields changed- added
Input schema / properties / addressAdded 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" +} - added
Input schema / properties / address_idAdded value: +{ + "description": "Optional saved address ID to prefill", + "type": "string" +} - added
Input schema / properties / countryAdded 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" +} - changed
Input schema / properties / coupon / descriptionPrevious value: -"Optional discount coupon code to pre-apply"New value: +"Optional discount coupon code to pre-apply in the checkout session" - changed
Input schema / properties / handle / descriptionPrevious value: -"Unique product handle identifier"New value: +"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')" - changed
Input schema / properties / quantity / descriptionPrevious value: -"Number of units to purchase (1-10)"New value: +"Number of units to purchase (1 to 10, default 1)" - changed
Input schema / properties / size / descriptionPrevious 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')" - changed
Output 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
- Changed
looks.curation.by_occasion8 fields changed- changed
Input schema / properties / age / descriptionPrevious value: -"Target demographic age"New value: +"Target demographic age (16 to 99, default 25)" - added
Input schema / properties / countryAdded 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" +} - changed
Input schema / properties / gender / descriptionPrevious value: -"Target gender filter: 'women' or 'men'"New value: +"Target gender filter: 'women' or 'men' (default: 'women')" - added
Input schema / properties / modeAdded value: +{ + "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.", + "enum": [ + "global", + "local" + ], + "type": "string" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Page number for looks pagination"New value: +"Page number for looks pagination (1-indexed)" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of looks per page"New value: +"Number of looks returned per page (1 to 100, default 10)" - changed
Input schema / properties / vendor / descriptionPrevious value: -"Optional brand filter"New value: +"Optional brand or vendor name filter array" - changed
Output 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
- Changed
looks.curation.recommend8 fields changed- added
Input schema / properties / countryAdded 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" +} - changed
Input schema / properties / gender / descriptionPrevious value: -"Target gender filter: 'women' or 'men'"New value: +"Target gender filter: 'women' or 'men' (default: 'women')" - changed
Input schema / properties / handle / descriptionPrevious value: -"Product handle to build coordinating outfits around"New value: +"Product handle identifier to build coordinating outfits around (e.g. 'solid-linen-shirt')" - added
Input schema / properties / modeAdded value: +{ + "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.", + "enum": [ + "global", + "local" + ], + "type": "string" +} - changed
Input schema / properties / occasion / descriptionPrevious 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')" - changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination"New value: +"Page number for pagination (1-indexed)" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of outfits per page"New value: +"Number of outfit sets to return per page (1 to 100, default 20)" - changed
Output 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
- Changed
products.items.check_stock5 fields changed- added
Input schema / properties / countryAdded 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" +} - changed
Input schema / properties / desired_size / descriptionPrevious 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')" - changed
Input schema / properties / handle / descriptionPrevious value: -"Unique product handle identifier"New value: +"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')" - changed
Input schema / properties / size_index / descriptionPrevious value: -"Zero-based index of the size variant"New value: +"Zero-based index of the specific size variant to inspect" - changed
Output 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
- Changed
products.items.get_by_handle3 fields changed- added
Input schema / properties / countryAdded 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" +} - changed
Input schema / properties / handle / descriptionPrevious value: -"Unique product handle identifier (e.g. 'solid-linen-shirt')"New value: +"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')" - changed
Output 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
- Added
products.items.get_size_guide - Changed
products.search.alternatives11 fields changed- changed
Input schema / properties / budget_range / descriptionPrevious value: -"Target price bracket in local currency"New value: +"Target price bracket filter in local currency: '0-1500', '1501-3000', '3001-5000', or '5000+'" - added
Input schema / properties / countryAdded 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" +} - changed
Input schema / properties / handle / descriptionPrevious 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')" - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of filtered alternatives to return"New value: +"Maximum number of filtered alternative products to return in the result (1-100)" - added
Input schema / properties / modeAdded value: +{ + "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.", + "enum": [ + "global", + "local" + ], + "type": "string" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination"New value: +"Pagination page number (1-indexed)" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of items to fetch per page"New value: +"Number of candidate items to fetch per backend page (1-100)" - changed
Input schema / properties / personalize / descriptionPrevious value: -"Whether to apply personalized ranking"New value: +"Whether to apply personalized user ranking to the results" - changed
Input schema / properties / sort_by / descriptionPrevious value: -"Sorting criteria"New value: +"Sorting attribute for the visual matches: 'relevance', 'price', or 'title'" - changed
Input schema / properties / sort_order / descriptionPrevious value: -"Sort order: 'asc' or 'desc'"New value: +"Sort direction: 'asc' for ascending, 'desc' for descending" - changed
Output 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
- Changed
products.search.image_upload17 fields changed- changed
Input schema / properties / content_type / descriptionPrevious 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'" - added
Input schema / properties / countryAdded 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" +} - changed
Input schema / properties / expiry_hours / descriptionPrevious value: -"Temporary upload URL lifetime in hours"New value: +"Temporary upload URL lifetime in hours before expiration (1 to 168, default 24)" - changed
Input schema / properties / gender / descriptionPrevious value: -"Target gender filter"New value: +"Target gender filter: 'men', 'women', or 'unisex'" - changed
Input schema / properties / image_base64 / descriptionPrevious value: -"Base64-encoded image data string"New value: +"Base64-encoded image data string (alternative to image_path)" - changed
Input schema / properties / image_path / descriptionPrevious 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')" - added
Input schema / properties / modeAdded value: +{ + "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.", + "enum": [ + "global", + "local" + ], + "type": "string" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination"New value: +"Pagination page number (1-indexed)" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of items to return per page"New value: +"Number of items to return per page (1 to 100, default 20)" - changed
Input schema / properties / personalize / descriptionPrevious value: -"Whether to personalize search ranking"New value: +"Whether to apply personalized ranking weights" - changed
Input schema / properties / price_max / descriptionPrevious value: -"Maximum price"New value: +"Maximum price in local currency" - added
Input schema / properties / price_max / minimumAdded value: +0 - changed
Input schema / properties / price_min / descriptionPrevious value: -"Minimum price"New value: +"Minimum price in local currency" - added
Input schema / properties / price_min / minimumAdded value: +0 - changed
Input schema / properties / sort_by / descriptionPrevious value: -"Sorting criteria"New value: +"Sorting criteria: 'relevance', 'price', or 'title'" - changed
Input schema / properties / vendor / descriptionPrevious value: -"List of brand names"New value: +"List of brand names to filter by" - changed
Output 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
- Changed
products.search.image_url12 fields changed- added
Input schema / properties / countryAdded 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" +} - changed
Input schema / properties / image_url / descriptionPrevious 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" - added
Input schema / properties / modeAdded value: +{ + "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.", + "enum": [ + "global", + "local" + ], + "type": "string" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination"New value: +"Page number for pagination (1-indexed)" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of items to return per page"New value: +"Number of items to return per page (1 to 100, default 20)" - changed
Input schema / properties / personalize / descriptionPrevious value: -"Whether to apply personalized ranking"New value: +"Whether to apply personalized ranking based on user style profile" - added
Input schema / properties / price_max / minimumAdded value: +0 - added
Input schema / properties / price_min / minimumAdded value: +0 - changed
Input schema / properties / size / descriptionPrevious value: -"Array of sizes to filter by"New value: +"Array of sizes to filter by (e.g. ['S', 'M', 'L'])" - changed
Input schema / properties / sort_by / descriptionPrevious value: -"Sorting criteria for search results"New value: +"Sorting criteria for search results: 'relevance', 'price', or 'title'" - changed
Input schema / properties / sort_order / descriptionPrevious value: -"Sort order: 'asc' or 'desc'"New value: +"Sort order: 'asc' for ascending, 'desc' for descending" - changed
Output 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
- Changed
products.search.text10 fields changed- added
Input schema / properties / countryAdded 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" +} - added
Input schema / properties / modeAdded value: +{ + "description": "Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region.", + "enum": [ + "global", + "local" + ], + "type": "string" +} - changed
Input schema / properties / page / descriptionPrevious value: -"Page number for pagination (starts at 1)"New value: +"Pagination page number (1-indexed, starts at 1)" - changed
Input schema / properties / page_size / descriptionPrevious value: -"Number of items to return per page (max 100)"New value: +"Number of items to return per page (1 to 100, default 20)" - added
Input schema / properties / price_max / minimumAdded value: +0 - added
Input schema / properties / price_min / minimumAdded value: +0 - changed
Input schema / properties / size / descriptionPrevious 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'])" - changed
Input schema / properties / sort_by / descriptionPrevious value: -"Sorting criteria for the search results"New value: +"Sorting criteria for search results: 'relevance', 'price', or 'title'" - changed
Input schema / properties / vendor / descriptionPrevious 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'])" - changed
Output 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
- Added
region.get_current - Added
region.list_supported - Added
region.set_current - Changed
vision.outfit.detect_pieces4 fields changed- changed
Input schema / properties / image_base64 / descriptionPrevious value: -"Base64-encoded image string for outfit piece detection"New value: +"Base64-encoded image data string for outfit piece detection" - changed
Input schema / properties / image_path / descriptionPrevious value: -"Local path to the outfit image file to deconstruct"New value: +"Local file system path to the outfit image file to deconstruct" - changed
Input schema / properties / threshold / descriptionPrevious 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)" - changed
Output 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
20 tool updates
- Removed
check_variant_availability - Added
checkout.links.get_direct_url - Removed
detect_fashion_pieces - Removed
get_direct_checkout_url - Removed
get_looks_by_occasion - Removed
get_product_by_handle - Removed
get_recommended_outfits - Added
looks.curation.by_occasion - Added
looks.curation.recommend - Added
products.items.check_stock - Added
products.items.get_by_handle - Added
products.search.alternatives - Added
products.search.image_upload - Added
products.search.image_url - Added
products.search.text - Removed
search_alternatives_in_budget - Removed
search_products_image - Removed
search_products_image_upload - Removed
search_products_text - Added
vision.outfit.detect_pieces
10 tool updates
- First observed
check_variant_availability - First observed
detect_fashion_pieces - First observed
get_direct_checkout_url - First observed
get_looks_by_occasion - First observed
get_product_by_handle - First observed
get_recommended_outfits - First observed
search_alternatives_in_budget - First observed
search_products_image - First observed
search_products_image_upload - First observed
search_products_text
Publisher details
- Operator
- Rofoso Consumer Private Limited · Publisher source
- Operator website
- https://polopan.com
- Vendor relationship
- First-party
- Documentation
- https://github.com/rofoso-com/polopan-fashion-mcp
- Trust center
- https://polopan.com/privacy-policy/
- Restrictions
- Totally free. No limit on usage
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables 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.1611 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.