{"serverId":"mcp-registry/io.github.rofoso-com/mcp","tools":[{"name":"address.delete","fixed":{"name":"address_delete","description":"Delete a saved delivery address by ID from ~/.polopan/region.json.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address_id"],"properties":{"address_id":{"type":"string","minLength":1,"description":"ID of the saved address to delete"}}},"annotations":{"audience":["user","assistant"],"priority":0.7,"readOnlyHint":false,"destructiveHint":true},"title":"Delete Saved Delivery Address"},"changes":[{"kind":"name","detail":"Renamed \"address.delete\" → \"address_delete\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":92,"tokensAfter":92},{"name":"address.get_current","fixed":{"name":"address_get_current","description":"Get the default delivery/shipping address saved for the currently active region from local configuration (~/.polopan/region.json).\n\nWHEN TO USE (CRITICAL ANTI-SHORTCIRCUIT RULE):\n- ALWAYS call this BEFORE generating 1-click checkout links to check if the user already has a saved delivery address for their destination country.\n- 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 &","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"country":{"type":"string","description":"Optional country code (e.g. 'US', 'AE', 'GB', 'IN') to inspect addresses for. Defaults to active region country."}}},"annotations":{"audience":["user","assistant"],"priority":0.9,"readOnlyHint":true,"destructiveHint":false},"title":"Get Current Delivery Address for Region"},"changes":[{"kind":"name","detail":"Renamed \"address.get_current\" → \"address_get_current\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":225,"tokensAfter":225},{"name":"address.list_saved","fixed":{"name":"address_list_saved","description":"List all saved customer delivery addresses stored in ~/.polopan/region.json, optionally filtered by country.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"country":{"type":"string","description":"Optional country filter (ISO-2 code or natural country name)"}}},"annotations":{"audience":["user","assistant"],"priority":0.8,"readOnlyHint":true,"destructiveHint":false},"title":"List Saved Delivery Addresses"},"changes":[{"kind":"name","detail":"Renamed \"address.list_saved\" → \"address_list_saved\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":100,"tokensAfter":100},{"name":"address.save","fixed":{"name":"address_save","description":"Save a customer delivery shipping address mapped to the active region in ~/.polopan/region.json.\n\nMatches Flutter app (newapp) address schema: firstName, lastName, address1, address2, city, province, zip, country, phone, email, type.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["firstName","address1","city","zip"],"properties":{"id":{"type":"string","description":"Optional existing address ID to update"},"zip":{"type":"string","minLength":1,"description":"Postal code / Zip code / PIN code"},"city":{"type":"string","minLength":1,"description":"City / Town"},"type":{"enum":["Home","Work","Other"],"type":"string","default":"Home","description":"Address label/type: 'Home', 'Work', or 'Other'"},"email":{"type":"string","description":"Customer delivery notification email address"},"phone":{"type":"string","description":"Recipient contact phone number with country dialing code"},"country":{"type":"string","description":"Destination country code or natural name. Defaults to active region country."},"address1":{"type":"string","minLength":1,"description":"Street address, house/flat/building name"},"address2":{"type":"string","description":"Apartment, suite, unit, landmark, or area"},"lastName":{"type":"string","description":"Recipient last name"},"province":{"type":"string","description":"State, Province, or Governorate"},"firstName":{"type":"string","minLength":1,"description":"Recipient first name"},"is_default":{"type":"boolean","default":true,"description":"Set this address as default for the country (default true)"},"storage_mode":{"enum":["local","stateless"],"type":"string","description":"Storage destination: 'local' (writes to ~/.polopan/region.json) or 'stateless' (returns for chat context without disk write). Defaults to 'stateless' in cloud-hosted environments."}}},"annotations":{"audience":["user","assistant"],"priority":0.9,"readOnlyHint":false,"destructiveHint":false},"title":"Save or Update Delivery Address"},"changes":[{"kind":"name","detail":"Renamed \"address.save\" → \"address_save\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":525,"tokensAfter":525},{"name":"address.set_default","fixed":{"name":"address_set_default","description":"Set an existing address as the default shipping address for its country in ~/.polopan/region.json.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["address_id"],"properties":{"address_id":{"type":"string","minLength":1,"description":"ID of the saved address to set as default"}}},"annotations":{"audience":["user","assistant"],"priority":0.7,"readOnlyHint":false,"destructiveHint":false},"title":"Set Default Delivery Address"},"changes":[{"kind":"name","detail":"Renamed \"address.set_default\" → \"address_set_default\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":104,"tokensAfter":104},{"name":"checkout.links.get_direct_url","fixed":{"name":"checkout_links_get_direct_url","description":"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}).\n\nPURPOSE & DISAMBIGUATION:\n- Produces the final, verified 1-click buy link configured with the user's selected size index, unit quantity, and pre-applied coupon code.\n- 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/{h","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["handle"],"properties":{"size":{"type":"string","description":"Size label confirmed by the user (e.g. 'M', 'L', 'XL', '40')"},"coupon":{"type":"string","description":"Optional discount coupon code to pre-apply in the checkout session"},"handle":{"type":"string","minLength":1,"description":"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')"},"address":{"type":"object","required":["firstName","address1","city","zip"],"properties":{"zip":{"type":"string","minLength":1},"city":{"type":"string","minLength":1},"email":{"type":"string"},"phone":{"type":"string"},"country":{"type":"string"},"address1":{"type":"string","minLength":1},"address2":{"type":"string"},"lastName":{"type":"string"},"province":{"type":"string"},"firstName":{"type":"string","minLength":1}},"description":"Optional ad-hoc address object to prefill"},"country":{"type":"string","description":"Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region."},"quantity":{"type":"integer","default":1,"maximum":10,"minimum":1,"description":"Number of units to purchase (1 to 10, default 1)"},"address_id":{"type":"string","description":"Optional saved address ID to prefill"},"size_index":{"type":"integer","maximum":9007199254740991,"minimum":0,"description":"Zero-based index of the chosen size variant"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Get Direct Checkout URL"},"changes":[{"kind":"name","detail":"Renamed \"checkout.links.get_direct_url\" → \"checkout_links_get_direct_url\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":567,"tokensAfter":567},{"name":"looks.curation.by_occasion","fixed":{"name":"looks_curation_by_occasion","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Curates multi-item aesthetic outfits tailored to specific social events, vibes, and demographics.\n-","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"age":{"type":"integer","default":25,"maximum":99,"minimum":16,"description":"Target demographic age (16 to 99, default 25)"},"mode":{"enum":["global","local"],"type":"string","description":"Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region."},"page":{"type":"integer","default":1,"maximum":1000,"minimum":1,"description":"Page number for looks pagination (1-indexed)"},"gender":{"enum":["women","men","female","male"],"type":"string","default":"women","description":"Target gender filter: 'women' or 'men' (default: 'women')"},"vendor":{"type":"array","items":{"type":"string"},"description":"Optional brand or vendor name filter array"},"country":{"type":"string","description":"Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region."},"occasion":{"type":"string","description":"Target occasion or vibe: 'Wedding & Reception', 'Party', 'Casual', 'Cocktail', 'Date Night', 'Club Night', 'Brunch', 'Vacation', 'Formal'"},"page_size":{"type":"integer","default":10,"maximum":100,"minimum":1,"description":"Number of looks returned per page (1 to 100, default 10)"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Get Looks By Occasion"},"changes":[{"kind":"name","detail":"Renamed \"looks.curation.by_occasion\" → \"looks_curation_by_occasion\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":517,"tokensAfter":517},{"name":"looks.curation.recommend","fixed":{"name":"looks_curation_recommend","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Generates harmonized outfits coordinated around a seed produc","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"mode":{"enum":["global","local"],"type":"string","description":"Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region."},"page":{"type":"integer","default":1,"maximum":1000,"minimum":1,"description":"Page number for pagination (1-indexed)"},"gender":{"enum":["women","men","female","male"],"type":"string","default":"women","description":"Target gender filter: 'women' or 'men' (default: 'women')"},"handle":{"type":"string","description":"Product handle identifier to build coordinating outfits around (e.g. 'solid-linen-shirt')"},"country":{"type":"string","description":"Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region."},"occasion":{"type":"string","description":"Target occasion or aesthetic theme (e.g. 'Wedding & Reception', 'Party', 'Cocktail', 'Date Night', 'Formal')"},"page_size":{"type":"integer","default":20,"maximum":100,"minimum":1,"description":"Number of outfit sets to return per page (1 to 100, default 20)"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Get Recommended Outfits"},"changes":[{"kind":"name","detail":"Renamed \"looks.curation.recommend\" → \"looks_curation_recommend\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":479,"tokensAfter":479},{"name":"products.items.check_stock","fixed":{"name":"products_items_check_stock","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Real-time inventory and metadata inspection tool for a single product.\n- Computes the full size-availability matrix, active pricing, discount percentage, specifications dictionary, and resolves the 1-click checkout permalink fo","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["handle"],"properties":{"handle":{"type":"string","minLength":1,"description":"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')"},"country":{"type":"string","description":"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":{"type":"integer","maximum":9007199254740991,"minimum":0,"description":"Zero-based index of the specific size variant to inspect"},"desired_size":{"type":"string","description":"Optional size query to verify against variant inventory (e.g. 'M', 'L', 'XL', '32', '40')"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Check Live Variant Stock, Product Details & Sizing"},"changes":[{"kind":"name","detail":"Renamed \"products.items.check_stock\" → \"products_items_check_stock\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":356,"tokensAfter":356},{"name":"products.items.get_by_handle","fixed":{"name":"products_items_get_by_handle","description":"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}).\n\nPURPOSE & DISAMBIGUATION:\n- Retrieves the full catalog record for a specific product handle.\n- 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","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["handle"],"properties":{"handle":{"type":"string","minLength":1,"description":"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')"},"country":{"type":"string","description":"Country name, city, currency, or 2-letter ISO code (e.g. 'US', 'United States', 'UK', 'Dubai', 'CA', 'IN'). Defaults to active saved region."}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Get Product By Handle"},"changes":[{"kind":"name","detail":"Renamed \"products.items.get_by_handle\" → \"products_items_get_by_handle\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":278,"tokensAfter":278},{"name":"products.items.get_size_guide","fixed":{"name":"products_items_get_size_guide","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Dedicated size guide and fit consultancy tool for apparel and footwear.\n- Computes dimensional measurements across sizes, supports metric (cm) <-> imperial (in) unit conversions, and maps international/brand scales.\n- If user body me","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["handle"],"properties":{"unit":{"enum":["in","cm"],"type":"string","default":"in","description":"Measurement unit system for the size chart ('in' for inches, 'cm' for centimeters)"},"handle":{"type":"string","minLength":1,"description":"Unique product handle identifier (e.g. 'solid-linen-shirt', 'shopify_11206')"},"user_hip":{"type":"number","description":"Optional user body hip measurement for automated fit recommendation"},"user_unit":{"enum":["in","cm"],"type":"string","default":"in","description":"Unit for the user's input measurements ('in' or 'cm')"},"user_chest":{"type":"number","description":"Optional user body chest/bust measurement for automated fit recommendation"},"user_waist":{"type":"number","description":"Optional user body waist measurement for automated fit recommendation"},"desired_size":{"type":"string","description":"Optional specific size label to highlight or verify (e.g. 'M', 'L', 'XL', '32')"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Get Product Size Guide & Fit Recommendation"},"changes":[{"kind":"name","detail":"Renamed \"products.items.get_size_guide\" → \"products_items_get_size_guide\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":442,"tokensAfter":442},{"name":"products.search.alternatives","fixed":{"name":"products_search_alternatives","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Retrieves catalog items visually similar to an existing product (e.g. finding similar shirts or jackets) constrained to a target budget tier.\n- Distinct from 'products.search.text': Use this tool when substituting a specific known item by handle, NOT for free-text search ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["handle"],"properties":{"mode":{"enum":["global","local"],"type":"string","description":"Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region."},"page":{"type":"integer","default":1,"maximum":1000,"minimum":1,"description":"Pagination page number (1-indexed)"},"limit":{"type":"integer","default":6,"maximum":100,"minimum":1,"description":"Maximum number of filtered alternative products to return in the result (1-100)"},"handle":{"type":"string","minLength":1,"description":"The unique product handle identifier to find visual alternatives for (e.g. 'solid-cotton-shirt')"},"country":{"type":"string","description":"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":{"enum":["relevance","price","title"],"type":"string","default":"relevance","description":"Sorting attribute for the visual matches: 'relevance', 'price', or 'title'"},"page_size":{"type":"integer","default":8,"maximum":100,"minimum":1,"description":"Number of candidate items to fetch per backend page (1-100)"},"sort_order":{"enum":["asc","desc"],"type":"string","default":"desc","description":"Sort direction: 'asc' for ascending, 'desc' for descending"},"personalize":{"type":"boolean","default":false,"description":"Whether to apply personalized user ranking to the results"},"budget_range":{"enum":["0-1500","1501-3000","3001-5000","5000+"],"type":"string","default":"1501-3000","description":"Target price bracket filter in local currency: '0-1500', '1501-3000', '3001-5000', or '5000+'"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Search Alternatives In Budget"},"changes":[{"kind":"name","detail":"Renamed \"products.search.alternatives\" → \"products_search_alternatives\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":632,"tokensAfter":632},{"name":"products.search.image_upload","fixed":{"name":"products_search_image_upload","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Performs reverse visual search by uploading a local or base64-encoded image to secure temporary storage, then querying visual embeddings.\n- Distinct from 'produ","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"mode":{"enum":["global","local"],"type":"string","description":"Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region."},"page":{"type":"integer","default":1,"maximum":1000,"minimum":1,"description":"Pagination page number (1-indexed)"},"size":{"type":"array","items":{"type":"string"},"description":"Array of sizes to filter by"},"gender":{"type":"string","description":"Target gender filter: 'men', 'women', or 'unisex'"},"vendor":{"type":"array","items":{"type":"string"},"description":"List of brand names to filter by"},"country":{"type":"string","description":"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":{"enum":["relevance","price","title"],"type":"string","default":"relevance","description":"Sorting criteria: 'relevance', 'price', or 'title'"},"page_size":{"type":"integer","default":20,"maximum":100,"minimum":1,"description":"Number of items to return per page (1 to 100, default 20)"},"price_max":{"type":"number","minimum":0,"description":"Maximum price in local currency"},"price_min":{"type":"number","minimum":0,"description":"Minimum price in local currency"},"image_path":{"type":"string","minLength":1,"description":"Local file system path to the image file (e.g. '/path/to/dress.jpg')"},"sort_order":{"enum":["asc","desc"],"type":"string","default":"desc","description":"Sort order: 'asc' or 'desc'"},"personalize":{"type":"boolean","default":false,"description":"Whether to apply personalized ranking weights"},"content_type":{"type":"string","default":"image/jpeg","description":"MIME type of the image, e.g. 'image/jpeg', 'image/png', 'image/webp'"},"expiry_hours":{"type":"integer","default":24,"maximum":168,"minimum":1,"description":"Temporary upload URL lifetime in hours before expiration (1 to 168, default 24)"},"image_base64":{"type":"string","minLength":1,"description":"Base64-encoded image data string (alternative to image_path)"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Search Products By Uploaded Image"},"changes":[{"kind":"name","detail":"Renamed \"products.search.image_upload\" → \"products_search_image_upload\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":746,"tokensAfter":746},{"name":"products.search.image_url","fixed":{"name":"products_search_image_url","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Performs reverse visual search using computer-vision embeddings for a remote image URL.\n- Distinct from 'products.search.text': Use thi","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["image_url"],"properties":{"mode":{"enum":["global","local"],"type":"string","description":"Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region."},"page":{"type":"integer","default":1,"maximum":1000,"minimum":1,"description":"Page number for pagination (1-indexed)"},"size":{"type":"array","items":{"type":"string"},"description":"Array of sizes to filter by (e.g. ['S', 'M', 'L'])"},"gender":{"type":"string","description":"Target gender filter: 'men', 'women', or 'unisex'"},"vendor":{"type":"array","items":{"type":"string"},"description":"List of brand names to filter by"},"country":{"type":"string","description":"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":{"enum":["relevance","price","title"],"type":"string","default":"relevance","description":"Sorting criteria for search results: 'relevance', 'price', or 'title'"},"image_url":{"type":"string","format":"uri","description":"Publicly accessible HTTP(S) URL of the fashion image to search for visual matches"},"page_size":{"type":"integer","default":20,"maximum":100,"minimum":1,"description":"Number of items to return per page (1 to 100, default 20)"},"price_max":{"type":"number","minimum":0,"description":"Maximum price in local currency"},"price_min":{"type":"number","minimum":0,"description":"Minimum price in local currency"},"sort_order":{"enum":["asc","desc"],"type":"string","default":"desc","description":"Sort order: 'asc' for ascending, 'desc' for descending"},"personalize":{"type":"boolean","default":false,"description":"Whether to apply personalized ranking based on user style profile"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Search Products By Image URL"},"changes":[{"kind":"name","detail":"Renamed \"products.search.image_url\" → \"products_search_image_url\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":661,"tokensAfter":661},{"name":"products.search.text","fixed":{"name":"products_search_text","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Primary text-based catalog search tool for fashion discovery across apparel, footwear, and accessories.\n- Di","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["query"],"properties":{"mode":{"enum":["global","local"],"type":"string","description":"Catalog mode: 'global' (ships to country) or 'local' (domestic only). Defaults to active saved region."},"page":{"type":"integer","default":1,"maximum":1000,"minimum":1,"description":"Pagination page number (1-indexed, starts at 1)"},"size":{"type":"array","items":{"type":"string"},"description":"Array of size labels to filter by (e.g. ['S', 'M', 'L', 'XL', '32'])"},"query":{"type":"string","minLength":1,"description":"The search query or style keyword to find fashion items (e.g. 'black leather jacket', 'floral summer midi dress')"},"gender":{"type":"string","description":"Target gender filter: 'men', 'women', or 'unisex'"},"vendor":{"type":"array","items":{"type":"string"},"description":"List of brand or vendor names to filter by (e.g. ['Zara', 'H&M', 'Tandul'])"},"country":{"type":"string","description":"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":{"enum":["relevance","price","title"],"type":"string","default":"relevance","description":"Sorting criteria for search results: 'relevance', 'price', or 'title'"},"page_size":{"type":"integer","default":20,"maximum":100,"minimum":1,"description":"Number of items to return per page (1 to 100, default 20)"},"price_max":{"type":"number","minimum":0,"description":"Maximum price in local currency"},"price_min":{"type":"number","minimum":0,"description":"Minimum price in local currency"},"sort_order":{"enum":["asc","desc"],"type":"string","default":"desc","description":"Sort order: 'asc' for ascending, 'desc' for descending"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Search Products By Text"},"changes":[{"kind":"name","detail":"Renamed \"products.search.text\" → \"products_search_text\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":649,"tokensAfter":649},{"name":"region.get_current","fixed":{"name":"region_get_current","description":"Get the currently active shopping destination country, currency code, symbol, phone code, and catalog scope mode from persistent local configuration (~/.polopan/region.json).","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"audience":["user","assistant"],"priority":0.9,"readOnlyHint":true,"destructiveHint":false},"title":"Get Current Shopping Region & Settings"},"changes":[{"kind":"name","detail":"Renamed \"region.get_current\" → \"region_get_current\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":89,"tokensAfter":89},{"name":"region.list_supported","fixed":{"name":"region_list_supported","description":"Search the 240+ supported destination countries with localized currency codes, symbols, flags, phone codes, and price groups from live platform settings.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"limit":{"type":"integer","default":20,"maximum":250,"minimum":1,"description":"Max number of countries to return (default: 20)"},"query":{"type":"string","description":"Optional search filter by country name, ISO code, currency, or phone dialing code (e.g. 'Emirates', 'dollar', 'CAD', 'Europe')"}}},"annotations":{"audience":["user","assistant"],"priority":0.8,"readOnlyHint":true,"destructiveHint":false},"title":"List & Search Supported Countries"},"changes":[{"kind":"name","detail":"Renamed \"region.list_supported\" → \"region_list_supported\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":167,"tokensAfter":167},{"name":"region.set_current","fixed":{"name":"region_set_current","description":"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.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["country"],"properties":{"mode":{"enum":["global","local"],"type":"string","description":"Catalog mode: 'global' (ships to country) or 'local' (domestic store only). Defaults to 'global'."},"country":{"type":"string","minLength":1,"description":"Target country name, alias, city, currency, or ISO-2 code (e.g. 'United States', 'US', 'UK', 'London', 'Dubai', 'UAE', 'Canada', 'India', 'Germany', 'AED', 'EUR')"}}},"annotations":{"audience":["user","assistant"],"priority":0.9,"readOnlyHint":false,"destructiveHint":false},"title":"Set Current Shopping Region"},"changes":[{"kind":"name","detail":"Renamed \"region.set_current\" → \"region_set_current\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":249,"tokensAfter":249},{"name":"vision.outfit.detect_pieces","fixed":{"name":"vision_outfit_detect_pieces","description":"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.\n\nPURPOSE & DISAMBIGUATION:\n- Computer-vision object detection tool designed to analyze multi-item outfit photographs and isolate individual garments with their spatial coordinates.\n- Distinct from 'products.search.image_url' / 'products.search.image_upload': Use this t","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"image_url":{"type":"string","format":"uri","description":"Public HTTP(S) URL of the fashion image to deconstruct"},"threshold":{"type":"number","default":0.22,"maximum":0.95,"minimum":0.05,"description":"Confidence threshold for object detection bounding boxes (0.05 to 0.95, default 0.22)"},"image_path":{"type":"string","minLength":1,"description":"Local file system path to the outfit image file to deconstruct"},"image_base64":{"type":"string","minLength":1,"description":"Base64-encoded image data string for outfit piece detection"}}},"annotations":{"audience":["user","assistant"],"priority":1,"readOnlyHint":true,"destructiveHint":false},"title":"Detect Fashion Pieces & Bounding Boxes"},"changes":[{"kind":"name","detail":"Renamed \"vision.outfit.detect_pieces\" → \"vision_outfit_detect_pieces\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":333,"tokensAfter":333}],"toolsChanged":19,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}