io. github. vistoya/ market
by vistoya · remote · no sign-in to list tools · v1.0.0 · published by GitHub user vistoya
Search and get fashion products recommendations across multiple e-ecom stores
6 tools: 6 change things.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things6Claude Code: ask: see these tools
- Only reads0Claude Code: allow
6 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http market https://api.vistoya.com/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "discover_products" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "find": a word for reading.
The server marks "find_similar_products" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "find_similar_products" says "find": a word for reading.
- Warndiscover_brands
The server marks "discover_brands" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "find": a word for reading.
The server marks "find_similar_brands" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "find_similar_brands" says "find": a word for reading.
- Warnget_product
The server marks "get_product" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "get_product" says "get": a word for reading.
- Warnget_filters
The server marks "get_filters" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "get_filters" says "get": a word for reading.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
6 tools
Changes things 6Claude Code: ask
discover_brandsFind fashion brands using natural language, structured filters, or both.1 finding
Why it is in this group
- The description's first verb is "find": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "discover_brands" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "find": a word for reading.
Description, as the server wrote it 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 qualified similarity such as "brands like Rick Owens for technical outerwear". For a plain "brands like X" request, use find_similar_brands. 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.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
discover_productsFind fashion products using natural language and/or structured filters.1 finding
Why it is in this group
- The description's first verb is "find": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "discover_products" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The description's first verb is "find": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
find_similar_brandsGiven an active catalog brand name or merged alias, find similar brands using brand-profile vectors generated during product indexing.1 finding
Why it is in this group
- The name "find_similar_brands" says "find": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "find_similar_brands" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "find_similar_brands" says "find": a word for reading.
Description, as the server wrote it Given an active catalog brand name or merged alias, find similar brands using brand-profile vectors generated during product indexing. Unknown or ambiguous seeds return no brands. Returns up to 20 brands.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
find_similar_productsGiven a product ID, find similar products across the entire catalog.1 finding
Why it is in this group
- The name "find_similar_products" says "find": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "find_similar_products" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "find_similar_products" says "find": a word for reading.
Description, as the server wrote it 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).
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
get_filtersReturns available filter values in the catalog.1 finding
Why it is in this group
- The name "get_filters" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "get_filters" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "get_filters" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
get_productGet the detailed response for a specific product ID.1 finding
Why it is in this group
- The name "get_product" says "get": a word for reading.
- The server marks it as not read-only (readOnlyHint: false).
Findings
- Warn
The server marks "get_product" as not read-only (readOnlyHint: false), and its words say it reads.
What this check looks forMatched text
annotations: {"readOnlyHint":false,"destructiveHint":false,"openWorldHint":false}; The name "get_product" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- readOnlyHint: false
- openWorldHint: false
- destructiveHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged private-data or untrusted-input or outbound.
- Reads private data0
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write0
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http market https://api.vistoya.com/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [],
"ask": [
"mcp__market__discover_products",
"mcp__market__find_similar_products",
"mcp__market__discover_brands",
"mcp__market__find_similar_brands",
"mcp__market__get_product",
"mcp__market__get_filters"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as market. Review it before you use it.
