Search and get fashion products recommendations across multiple e-ecom stores
Searches and recommends fashion products across multiple e-commerce stores.
Captured live from the server via tools/list.
discover_products
Find fashion products using natural language and/or structured filters. Provide a `query` for semantic ranking via multimodal text+image embeddings ("oversized wool coat", "black leather jacket", "minimalist gold jewelry", "linen shirt for a beach wedding under $200") — best for open-ended discovery. Keep queries concrete: noun-led with up to one or two modifiers works best ("summer linen shirt" beats "breathable linen shirt perfect for summer"). Provide only structured filters (category, brand, colors, gender, price, etc.) for pure browse — results are recency-ranked and paginate cleanly. Combine both for filtered semantic search. At least one of query or a filter must be provided.
Example calls (notice the sparse filter population — descriptive attributes stay in `query`, not in structured fields):
- "linen wedding guest dress under $200" → {query: "linen wedding guest dress", gender: "women", max_price: 200, materials: ["linen"]}
- "wool coat under $300" → {query: "wool coat", gender: "women", max_price: 300, materials: ["wool"]}
- "browse women's black dresses $100-$300" → {gender: "women", category: "clothing/dresses", colors: ["black"], min_price: 100, max_price: 300}
- "Acne Studios outerwear" → {query: "outerwear", brand: "Acne Studios", gender: "women"}
Returns compact product cards: AI-generated summary, price, images, tags, and compact availability by color/size; variant price differences are nested under the availability dimension that determines price. For merchant description, store info, SKU-level variants, exact variant prices, and all product images, call get_product with a product ID from these results. Multi-currency prices supported (e.g. "under 200 zł" or min_price=200 + currency="PLN"); returned prices render in the requested currency when provided.
Parameters (25)
querystring
Natural language search query — be descriptive for best results. Can include price with currency symbols (e.g. "white coat under 200 zł") which will be parsed automatically. Optional: when omitted, results are filtered by the structured fields below and ranked by recency. Provide either a query, structured filters, or both.
categorystring
Category slug, e.g. "clothing", "clothing/jackets", "clothing/jackets/bomber-jackets". Accepts last-segment shortcuts when unambiguous — e.g. "loafers-and-slip-ons" resolves the same as "shoes/loafers-and-slip-ons", and "bomber-jackets" resolves the same as "clothing/jackets/bomber-jackets".
colorsarray
Filter by lowercase colors: e.g. ["black", "navy", "sage green"]
exclude_colorsarray
Exclude products with these colors: e.g. ["white", "beige"]
color_matchstring
Color matching mode. "any" (default): product has at least one of the queried colors. "exact": product has at least one image where the ONLY colors are the queried colors — use for mono-color searches like "all black".
materialsarray
Filter by lowercase materials: e.g. ["cotton", "silk", "leather"]
exclude_materialsarray
Exclude products with these materials: e.g. ["polyester", "nylon"]
genderstring
Gender filter.
occasionstring
Occasion filter. Soft descriptor — set ONLY when the user explicitly named the occasion. The `query` field already captures occasion semantically; over-specifying is the most common cause of zero-result calls.
seasonstring
Season filter. Soft descriptor — set ONLY when the user explicitly named the season. The `query` field already captures season semantically; over-specifying is the most common cause of zero-result calls.
stylesarray
Style filter (OR semantics — a product matches if any of its `styles` values is in this list). Pass a single value to filter by one style ("styles": ["minimalist"]); pass several to span a related set ("styles": ["basics", "minimalist", "preppy", "sportswear"] for a "Casual" bucket). Soft descriptor — set ONLY when the user explicitly named one or more styles. The `query` field already captures style semantically; over-specifying is the most common cause of zero-result calls.
silhouettestring
Silhouette/fit filter (e.g. fitted, slim, regular, relaxed, oversized). Soft descriptor — set ONLY when the user explicitly named the fit. The `query` field already captures silhouette semantically; over-specifying is the most common cause of zero-result calls.
patternstring
Pattern filter (e.g. solid, stripe, checked, floral). Soft descriptor — set ONLY when the user explicitly named the pattern. Default for unspecified ("solid") leaks into queries and zeros the candidate set; omit when unsure.
necklinestring
Neckline filter. Soft descriptor — set ONLY when the user explicitly named the neckline. Do not infer from category or query.
sleevesstring
Sleeve style filter. Soft descriptor — set ONLY when the user explicitly named the sleeve style. Do not infer from category or query.
available_sizesarray
Filter by available size labels, e.g. ["s", "m", "38"].
is_sustainableboolean
True when the user explicitly wants products with sustainability claims.
brandstring
Filter by brand name
min_pricenumber
Minimum price (in the currency specified by "currency" param, or USD if omitted)
max_pricenumber
Maximum price (in the currency specified by "currency" param, or USD if omitted)
currencystring
ISO 4217 currency code for min_price/max_price (e.g. "PLN", "EUR", "GBP"). Prices are converted to USD for filtering. Omit for USD.
store_domainstring
Filter by store domain (e.g. "thereformation.com"). Accepts forms with protocol, www, locale subdomain, or path — they are normalized to match the registered store.
limitinteger
Page size (1-20, default 12)
pageinteger
Page number.
countrystring
Optional shopper location as an ISO-3166-1 alpha-2 country code (e.g. "US", "GB", "DE"). Recorded for analytics and used to improve future offer geo-matching. Omit if unknown — absence preserves current behavior.
find_similar_products
Given a product ID, find similar products across the entire catalog. Useful for "more like this" recommendations or finding alternatives. Returns compact product cards, not full variant detail; call get_product for SKU-level variants, exact variant prices, merchant description, store info, and all images. Returns page and hasNextPage. Returns up to 20 results per page, paginated (max 3 pages).
Parameters (5)
product_idstringrequired
The product ID (from a previous search result)
limitinteger
Page size (1-20)
pageinteger
Page number (1-3)
currencystring
ISO 4217 currency code to render prices in (e.g. "GBP", "EUR", "USD"). Defaults to USD. Stored native prices are preferred; falls back to FX conversion when a merchant-set price isn't available.
countrystring
Optional shopper location as an ISO-3166-1 alpha-2 country code (e.g. "US", "GB", "DE"). Recorded for analytics and used to improve future offer geo-matching. Omit if unknown — absence preserves current behavior.
discover_brands
Find fashion brands using natural language, structured filters, or both. Best for queries like "Italian streetwear brands", "Scandinavian minimalist brands", "Japanese technical outerwear", "brands with avant-garde tailoring", or "brands like Rick Owens". Country adjectives ("Italian", "Scandinavian", "Nordic", "Japanese", "Iberian", "Benelux") are parsed server-side into shipping-origin filters; you don't need to translate them to ISO codes. `query` is optional — provide a query, structured filters, or both. Brand country/shipping signals are best-effort and separate from product availability.
Parameters (8)
querystring
Natural language brand search query, e.g. "Italian streetwear brands", "Scandinavian minimalist brands", "Japanese technical outerwear", or "brands like Rick Owens". Country adjectives are parsed server-side — no need to translate them into ISO codes. Optional: when omitted, results are filtered by the structured fields below.
ships_from_countrystring
Optional ISO-3166 alpha-2 country filter for best-effort store shipping origin, e.g. "IT", "US", "GB". This is not the same as brand origin.
stylestring
Optional style filter, e.g. streetwear, minimalist, elegant, avant-garde, techwear.
price_tierstring
Optional brand price-tier focus filter.
category_focusarray
Optional brand category focus filters, e.g. ["clothing", "shoes"].
gender_focusarray
Optional brand audience focus filters.
limitinteger
Maximum number of brands to return (1-20, default 8).
countrystring
Optional shopper location as an ISO-3166-1 alpha-2 country code (e.g. "US", "GB", "DE"). Recorded for analytics and used to improve future offer geo-matching. Omit if unknown — absence preserves current behavior.
find_similar_brands
Given a brand name, find similar brands using brand-profile vectors generated during product indexing. Returns up to 20 brands.
Parameters (3)
brandstringrequired
Brand name (case-insensitive), e.g. "Rick Owens".
limitinteger
countrystring
Optional shopper location as an ISO-3166-1 alpha-2 country code (e.g. "US", "GB", "DE"). Recorded for analytics and used to improve future offer geo-matching. Omit if unknown — absence preserves current behavior.
get_product
Get the detailed response for a specific product ID. Use this after discover_products or find_similar_products when you need merchant description, store info, all images, SKU-level availability variants, SKU, colorKey/size matrix, exact variant prices/compareAtPrice in the requested currency, and the direct link to purchase.
Parameters (3)
product_idstringrequired
The product ID (from a previous search result)
currencystring
ISO 4217 currency code to render prices in (e.g. "GBP", "EUR", "USD"). Defaults to USD.
countrystring
Optional shopper location as an ISO-3166-1 alpha-2 country code (e.g. "US", "GB", "DE"). Recorded for analytics and used to improve future offer geo-matching. Omit if unknown — absence preserves current behavior.
get_filters
Returns available filter values in the catalog. By default returns categoryTree plus brands, colors, materials, genders, occasions, seasons, styles, silhouettes, currencies, and price range. Use "fields" to request only specific dimensions — faster and less data. "categoryTree" is a flat DFS-ordered list of { value, label } entries; hierarchy is encoded in the value slug (e.g. "clothing/jackets/bomber-jackets"), parents appear before descendants, and every value can be passed directly to discover_products.category. Use "brand_search" to search brands by prefix instead of listing all. Pass "gender" to scope categoryTree to that gender (women/men/girls/boys); omit to see the merged union.
Parameters (5)
fieldsarray
Which filter dimensions to return. Omit for all. Example: ["categoryTree", "colors", "priceRange"]
brand_searchstring
Search brands by name (case-insensitive, prefix matches first). Only affects the brands field.
brand_pageinteger
Page number for brands (12 per page). Use with or without brand_search.
genderstring
Scope categoryTree to this gender. Omit to return the merged union across women/men/girls/boys.
countrystring
Optional shopper location as an ISO-3166-1 alpha-2 country code (e.g. "US", "GB", "DE"). Recorded for analytics and used to improve future offer geo-matching. Omit if unknown — absence preserves current behavior.
Semantic search and recommendations across fashion stores, exposed as a Model Context Protocol server. Connect any MCP-compatible AI agent (Claude, Cursor, VS Code, ChatGPT, etc.) and let it discover products, find visually similar items, and explore stores in the Vistoya marketplace.
Automatically detects and configures Claude Desktop, Claude Code, Cursor, Windsurf, and VS Code. Restart your AI client after running.
What it does
Vistoya indexes fashion products from many stores and embeds them with a vision-language model. The MCP server lets agents query that index in natural language and reason over the results.
Tools
Tool
Description
discover_products
Semantic search across all indexed stores. Accepts a natural-language query plus optional filters (category, color, gender, price, etc.) and returns ranked products.
find_similar_products
Given a product ID, return visually and semantically similar products.
discover_brands
Semantic search over brand profiles. Find brands by style, origin, or aesthetic (e.g. "Italian streetwear brands", "minimalist Scandinavian labels").
find_similar_brands
Given a brand name or key, return similar brands using brand-profile vectors.
get_product
Fetch full details for a single product by ID.
get_filters
List available filter values (categories, colors, materials, brands, …) so the agent knows what's filterable.
Manual install
Claude Desktop / Claude Code
Add to claude_desktop_config.json (or your Claude Code MCP config):