Skip to main content
Glama

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.

Input Schema

NameRequiredDescriptionDefault
pageNoPage number. Increment while the response indicates another page. Vistoya results are returned first; a later page may continue with an optional external catalog after owned results are exhausted. Provider failure does not fail normal discovery.
brandNoFilter by brand name
limitNoPage size (1-20, default 12)
queryNoNatural 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.
colorsNoFilter by lowercase colors: e.g. ["black", "navy", "sage green"]
genderNoGender filter.
seasonNoSeason 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.
stylesNoStyle 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.
countryNoOptional 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.
patternNoPattern 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.
sleevesNoSleeve style filter. Soft descriptor — set ONLY when the user explicitly named the sleeve style. Do not infer from category or query.
categoryNoCategory 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".
currencyNoISO 4217 currency code for min_price/max_price (e.g. "PLN", "EUR", "GBP"). Prices are converted to USD for filtering. Omit for USD.
necklineNoNeckline filter. Soft descriptor — set ONLY when the user explicitly named the neckline. Do not infer from category or query.
occasionNoOccasion 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.
materialsNoFilter by lowercase materials: e.g. ["cotton", "silk", "leather"]
max_priceNoMaximum price (in the currency specified by "currency" param, or USD if omitted)
min_priceNoMinimum price (in the currency specified by "currency" param, or USD if omitted)
silhouetteNoSilhouette/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.
color_matchNoColor 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".any
store_domainNoFilter by store domain (e.g. "thereformation.com"). Accepts forms with protocol, www, locale subdomain, or path — they are normalized to match the registered store.
exclude_colorsNoExclude products with these colors: e.g. ["white", "beige"]
is_sustainableNoTrue when the user explicitly wants products with sustainability claims.
available_sizesNoFilter by available size labels, e.g. ["s", "m", "38"].
exclude_materialsNoExclude products with these materials: e.g. ["polyester", "nylon"]

Output Schema

NameRequiredDescriptionDefault
pageYes
productsYes
marketUrlYes
hasNextPageYes
externalCatalogStatusNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed19 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedInput schema / properties / page / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / page / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / page / minimum
      Added value: +-9007199254740991
    • removedOutput schema / properties / products / items / properties / availability / properties / color / items / properties / compareAtPriceRange / $ref
      Removed value: -"#/properties/products/items/properties/availability/properties/color/items/properties/priceRange"
    • addedOutput schema / properties / products / items / properties / availability / properties / color / items / properties / compareAtPriceRange / additionalProperties
      Added value: +false
    • addedOutput schema / properties / products / items / properties / availability / properties / color / items / properties / compareAtPriceRange / properties
      Added value: +{
      +  "currency": {
      +    "type": "string"
      +  },
      +  "max": {
      +    "type": "number"
      +  },
      +  "min": {
      +    "type": "number"
      +  }
      +}
    • addedOutput schema / properties / products / items / properties / availability / properties / color / items / properties / compareAtPriceRange / required
      Added value: +[
      +  "min",
      +  "max",
      +  "currency"
      +]
    • addedOutput schema / properties / products / items / properties / availability / properties / color / items / properties / compareAtPriceRange / type
      Added value: +"object"
    • removedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / compareAtPriceRange / $ref
      Removed value: -"#/properties/products/items/properties/availability/properties/color/items/properties/priceRange"
    • addedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / compareAtPriceRange / additionalProperties
      Added value: +false
    • addedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / compareAtPriceRange / properties
      Added value: +{
      +  "currency": {
      +    "type": "string"
      +  },
      +  "max": {
      +    "type": "number"
      +  },
      +  "min": {
      +    "type": "number"
      +  }
      +}
    • addedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / compareAtPriceRange / required
      Added value: +[
      +  "min",
      +  "max",
      +  "currency"
      +]
    • addedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / compareAtPriceRange / type
      Added value: +"object"
    • removedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / priceRange / $ref
      Removed value: -"#/properties/products/items/properties/availability/properties/color/items/properties/priceRange"
    • addedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / priceRange / additionalProperties
      Added value: +false
    • addedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / priceRange / properties
      Added value: +{
      +  "currency": {
      +    "type": "string"
      +  },
      +  "max": {
      +    "type": "number"
      +  },
      +  "min": {
      +    "type": "number"
      +  }
      +}
    • addedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / priceRange / required
      Added value: +[
      +  "min",
      +  "max",
      +  "currency"
      +]
    • addedOutput schema / properties / products / items / properties / availability / properties / sizes / items / properties / priceRange / type
      Added value: +"object"
  2. Changed1 schema field changed
    • changedInput schema / properties / styles / items / enum
      Previous value: -[
      -  "minimalist",
      -  "streetwear",
      -  "elegant",
      -  "avant-garde",
      -  "grunge",
      -  "vintage",
      -  "y2k",
      -  "techwear",
      -  "workwear",
      -  "preppy",
      -  "punk",
      -  "sportswear",
      -  "coquette",
      -  "quiet-luxury",
      -  "old-money",
      -  "gorpcore",
      -  "goth",
      -  "basics",
      -  "boho",
      -  "glam",
      -  "edgy",
      -  "classic",
      -  "western"
      -]New value: +[
      +  "minimalist",
      +  "streetwear",
      +  "elegant",
      +  "avant-garde",
      +  "grunge",
      +  "vintage",
      +  "y2k",
      +  "techwear",
      +  "workwear",
      +  "preppy",
      +  "punk",
      +  "sportswear",
      +  "coquette",
      +  "quiet-luxury",
      +  "old-money",
      +  "gorpcore",
      +  "goth",
      +  "basics",
      +  "boho",
      +  "glam",
      +  "classic",
      +  "western"
      +]
  3. Changed2 schema fields changed
    • changedInput schema / properties / page / description
      Previous value: -"Page number."New value: +"Page number. Increment while the response indicates another page. Vistoya results are returned first; a later page may continue with an optional external catalog after owned results are exhausted. Provider failure does not fail normal discovery."
    • addedOutput schema / properties / externalCatalogStatus
      Added value: +{
      +  "enum": [
      +    "temporarily_unavailable",
      +    "continuation_expired"
      +  ],
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • addedInput schema / properties / country
      Added value: +{
      +  "description": "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.",
      +  "pattern": "^[A-Za-z]{2}$",
      +  "type": "string"
      +}
  5. Changed9 schema fields changed
    • changedInput schema / properties / gender / description
      Previous value: -"Gender filter"New value: +"Gender filter."
    • changedInput schema / properties / neckline / description
      Previous value: -"Neckline filter"New value: +"Neckline filter. Soft descriptor — set ONLY when the user explicitly named the neckline. Do not infer from category or query."
    • changedInput schema / properties / occasion / description
      Previous value: -"Occasion filter"New value: +"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."
    • changedInput schema / properties / pattern / description
      Previous value: -"Pattern filter (e.g. solid, stripe, checked, floral)"New value: +"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."
    • changedInput schema / properties / season / description
      Previous value: -"Season filter"New value: +"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."
    • changedInput schema / properties / silhouette / description
      Previous value: -"Silhouette/fit filter (e.g. fitted, slim, regular, relaxed, oversized)"New value: +"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."
    • changedInput schema / properties / sleeves / description
      Previous value: -"Sleeve style filter"New value: +"Sleeve style filter. Soft descriptor — set ONLY when the user explicitly named the sleeve style. Do not infer from category or query."
    • removedInput schema / properties / style
      Removed value: -{
      -  "description": "Style filter (e.g. minimalist, streetwear, elegant, y2k, techwear)",
      -  "enum": [
      -    "minimalist",
      -    "streetwear",
      -    "elegant",
      -    "avant-garde",
      -    "grunge",
      -    "vintage",
      -    "y2k",
      -    "techwear",
      -    "workwear",
      -    "preppy",
      -    "punk",
      -    "sportswear",
      -    "coquette",
      -    "quiet-luxury",
      -    "old-money",
      -    "gorpcore",
      -    "goth",
      -    "basics",
      -    "boho",
      -    "glam",
      -    "edgy",
      -    "classic",
      -    "western"
      -  ],
      -  "type": "string"
      -}
    • changedInput schema / properties / styles / description
      Previous value: -"Multi-style filter (OR). A product matches if any of its `styles` values is in this list. Use instead of `style` to span a related set, e.g. [\"basics\",\"minimalist\",\"preppy\",\"sportswear\"] for a \"Casual\" bucket. Combined with `style` if both are provided."New value: +"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."
  6. Changed4 schema fields changed
    • changedInput schema / properties / limit / default
      Previous value: -10New value: +12
    • changedInput schema / properties / limit / description
      Previous value: -"Page size (1-10, default 10)"New value: +"Page size (1-20, default 12)"
    • changedInput schema / properties / limit / maximum
      Previous value: -10New value: +20
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "hasNextPage": {
      +      "type": "boolean"
      +    },
      +    "marketUrl": {
      +      "type": "string"
      +    },
      +    "page": {
      +      "type": "integer"
      +    },
      +    "products": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "availability": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "color": {
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "availableSizes": {
      +                      "items": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "inStock": {
      +                            "type": "boolean"
      +                          },
      +                          "label": {
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "label",
      +                          "inStock"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "color": {
      +                      "type": "string"
      +                    },
      +                    "colorKey": {
      +                      "type": "string"
      +                    },
      +                    "compareAtPrice": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "compareAtPriceRange": {
      +                      "$ref": "#/properties/products/items/properties/availability/properties/color/items/properties/priceRange"
      +                    },
      +                    "currency": {
      +                      "type": "string"
      +                    },
      +                    "imageUrls": {
      +                      "items": {
      +                        "type": "string"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "inStock": {
      +                      "type": "boolean"
      +                    },
      +                    "label": {
      +                      "type": "string"
      +                    },
      +                    "price": {
      +                      "type": "number"
      +                    },
      +                    "priceRange": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "currency": {
      +                          "type": "string"
      +                        },
      +                        "max": {
      +                          "type": "number"
      +                        },
      +                        "min": {
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "min",
      +                        "max",
      +                        "currency"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  },
      +                  "required": [
      +                    "colorKey",
      +                    "color",
      +                    "label",
      +                    "availableSizes"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "dimensions": {
      +                "items": {
      +                  "enum": [
      +                    "color",
      +                    "size"
      +                  ],
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "sizes": {
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "compareAtPrice": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "compareAtPriceRange": {
      +                      "$ref": "#/properties/products/items/properties/availability/properties/color/items/properties/priceRange"
      +                    },
      +                    "currency": {
      +                      "type": "string"
      +                    },
      +                    "inStock": {
      +                      "type": "boolean"
      +                    },
      +                    "label": {
      +                      "type": "string"
      +                    },
      +                    "price": {
      +                      "type": "number"
      +                    },
      +                    "priceRange": {
      +                      "$ref": "#/properties/products/items/properties/availability/properties/color/items/properties/priceRange"
      +                    }
      +                  },
      +                  "required": [
      +                    "label",
      +                    "inStock"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "variants": {
      +                "items": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "colorKey": {
      +                      "type": "string"
      +                    },
      +                    "compareAtPrice": {
      +                      "type": [
      +                        "number",
      +                        "null"
      +                      ]
      +                    },
      +                    "currency": {
      +                      "type": "string"
      +                    },
      +                    "imageUrl": {
      +                      "type": "string"
      +                    },
      +                    "inStock": {
      +                      "type": "boolean"
      +                    },
      +                    "price": {
      +                      "type": "number"
      +                    },
      +                    "size": {
      +                      "type": "string"
      +                    },
      +                    "sku": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "inStock"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "dimensions",
      +              "color",
      +              "sizes"
      +            ],
      +            "type": "object"
      +          },
      +          "brand": {
      +            "type": "string"
      +          },
      +          "compareAtPrice": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "currency": {
      +            "type": "string"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "images": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "inStock": {
      +            "type": "boolean"
      +          },
      +          "price": {
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "productUrl": {
      +            "type": "string"
      +          },
      +          "summary": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "title",
      +          "price",
      +          "currency",
      +          "availability"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "products",
      +    "page",
      +    "hasNextPage",
      +    "marketUrl"
      +  ],
      +  "type": "object"
      +}
  7. Changed1 schema field changed
    • changedInput schema / properties / store_domain / description
      Previous value: -"Filter by store domain (e.g. \"thereformation.com\")."New value: +"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."
  8. Changed2 schema fields changed
    • changedInput schema / properties / page / description
      Previous value: -"Page number (1-4). Results are ranked by relevance, so later pages contain weaker matches — refine the query rather than paging deep."New value: +"Page number."
    • removedInput schema / properties / page / maximum
      Removed value: -4
  9. Changed3 schema fields changed
    • changedInput schema / properties / query / description
      Previous value: -"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."New value: +"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."
    • removedInput schema / properties / query / minLength
      Removed value: -1
    • removedInput schema / required
      Removed value: -[
      -  "query"
      -]
  10. Changed2 schema fields changed
    • changedInput schema / properties / style / enum
      Previous value: -[
      -  "minimalist",
      -  "streetwear",
      -  "elegant",
      -  "avant-garde",
      -  "grunge",
      -  "vintage",
      -  "y2k",
      -  "techwear",
      -  "workwear",
      -  "dark-academia",
      -  "preppy",
      -  "punk",
      -  "sportswear",
      -  "coquette",
      -  "quiet-luxury",
      -  "old-money",
      -  "gorpcore",
      -  "goth",
      -  "basics"
      -]New value: +[
      +  "minimalist",
      +  "streetwear",
      +  "elegant",
      +  "avant-garde",
      +  "grunge",
      +  "vintage",
      +  "y2k",
      +  "techwear",
      +  "workwear",
      +  "preppy",
      +  "punk",
      +  "sportswear",
      +  "coquette",
      +  "quiet-luxury",
      +  "old-money",
      +  "gorpcore",
      +  "goth",
      +  "basics",
      +  "boho",
      +  "glam",
      +  "edgy",
      +  "classic",
      +  "western"
      +]
    • changedInput schema / properties / styles / items / enum
      Previous value: -[
      -  "minimalist",
      -  "streetwear",
      -  "elegant",
      -  "avant-garde",
      -  "grunge",
      -  "vintage",
      -  "y2k",
      -  "techwear",
      -  "workwear",
      -  "dark-academia",
      -  "preppy",
      -  "punk",
      -  "sportswear",
      -  "coquette",
      -  "quiet-luxury",
      -  "old-money",
      -  "gorpcore",
      -  "goth",
      -  "basics"
      -]New value: +[
      +  "minimalist",
      +  "streetwear",
      +  "elegant",
      +  "avant-garde",
      +  "grunge",
      +  "vintage",
      +  "y2k",
      +  "techwear",
      +  "workwear",
      +  "preppy",
      +  "punk",
      +  "sportswear",
      +  "coquette",
      +  "quiet-luxury",
      +  "old-money",
      +  "gorpcore",
      +  "goth",
      +  "basics",
      +  "boho",
      +  "glam",
      +  "edgy",
      +  "classic",
      +  "western"
      +]
  11. Changed3 schema fields changed
    • changedInput schema / properties / gender / enum
      Previous value: -[
      -  "women",
      -  "men",
      -  "unisex",
      -  "kids"
      -]New value: +[
      +  "women",
      +  "men",
      +  "unisex",
      +  "boys",
      +  "girls"
      +]
    • changedInput schema / properties / store_domain / description
      Previous value: -"Filter by store domain (use list_stores to get domains)"New value: +"Filter by store domain (e.g. \"thereformation.com\")."
    • addedInput schema / properties / styles
      Added value: +{
      +  "description": "Multi-style filter (OR). A product matches if any of its `styles` values is in this list. Use instead of `style` to span a related set, e.g. [\"basics\",\"minimalist\",\"preppy\",\"sportswear\"] for a \"Casual\" bucket. Combined with `style` if both are provided.",
      +  "items": {
      +    "enum": [
      +      "minimalist",
      +      "streetwear",
      +      "elegant",
      +      "avant-garde",
      +      "grunge",
      +      "vintage",
      +      "y2k",
      +      "techwear",
      +      "workwear",
      +      "dark-academia",
      +      "preppy",
      +      "punk",
      +      "sportswear",
      +      "coquette",
      +      "quiet-luxury",
      +      "old-money",
      +      "gorpcore",
      +      "goth",
      +      "basics"
      +    ],
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
  12. Changed1 schema field changed
    • changedInput schema / properties / category / description
      Previous value: -"Category slug from get_filters.taxonomyTree (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\"."New value: +"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\"."
  13. Changed12 schema fields changed
    • addedInput schema / properties / available_sizes
      Added value: +{
      +  "description": "Filter by available size labels, e.g. [\"s\", \"m\", \"38\"].",
      +  "items": {
      +    "maxLength": 200,
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "type": "array"
      +}
    • changedInput schema / properties / category / description
      Previous value: -"Product category. Can be a DB category (apparel, footwear, accessories, bags, jewelry, swimwear, outerwear, intimates, lifestyle) OR a virtual-category slug (bomber-jackets, puffer-jackets, biker-jackets, varsity-jackets, quilted-jackets, windbreakers, denim-jackets, leather-jackets, trench-coats, parkas, peacoats, wool-coats, wrap-dresses, slip-dresses, bodycon-dresses, shirt-dresses, cargo-pants, chinos, sweatpants, pencil-skirts, pleated-skirts, cashmere-sweaters, cable-knit-sweaters, chelsea-boots, combat-boots, cowboy-boots, knee-high-boots, hiking-boots, stiletto-heels, platform-heels, kitten-heels, ballet-flats, penny-loafers, chunky-sneakers, high-top-sneakers, saddle-bags, camera-bags, baguette-bags, hobo-bags, envelope-clutches, mini-backpacks, bucket-hats, baseball-caps, fedoras, beanies, berets, signet-rings, stacking-rings, statement-rings, tennis-bracelets, chandelier-earrings) — virtual categories are curated landing pages that expand to a predefined subcategory + variant/material predicate (e.g. \"bomber-jackets\" → jackets with a bomber shape)."New value: +"Category slug from get_filters.taxonomyTree (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\"."
    • removedInput schema / properties / category / enum
      Removed value: -[
      -  "apparel",
      -  "footwear",
      -  "accessories",
      -  "bags",
      -  "jewelry",
      -  "swimwear",
      -  "outerwear",
      -  "intimates",
      -  "lifestyle",
      -  "bomber-jackets",
      -  "puffer-jackets",
      -  "biker-jackets",
      -  "varsity-jackets",
      -  "quilted-jackets",
      -  "windbreakers",
      -  "denim-jackets",
      -  "leather-jackets",
      -  "trench-coats",
      -  "parkas",
      -  "peacoats",
      -  "wool-coats",
      -  "wrap-dresses",
      -  "slip-dresses",
      -  "bodycon-dresses",
      -  "shirt-dresses",
      -  "cargo-pants",
      -  "chinos",
      -  "sweatpants",
      -  "pencil-skirts",
      -  "pleated-skirts",
      -  "cashmere-sweaters",
      -  "cable-knit-sweaters",
      -  "chelsea-boots",
      -  "combat-boots",
      -  "cowboy-boots",
      -  "knee-high-boots",
      -  "hiking-boots",
      -  "stiletto-heels",
      -  "platform-heels",
      -  "kitten-heels",
      -  "ballet-flats",
      -  "penny-loafers",
      -  "chunky-sneakers",
      -  "high-top-sneakers",
      -  "saddle-bags",
      -  "camera-bags",
      -  "baguette-bags",
      -  "hobo-bags",
      -  "envelope-clutches",
      -  "mini-backpacks",
      -  "bucket-hats",
      -  "baseball-caps",
      -  "fedoras",
      -  "beanies",
      -  "berets",
      -  "signet-rings",
      -  "stacking-rings",
      -  "statement-rings",
      -  "tennis-bracelets",
      -  "chandelier-earrings"
      -]
    • addedInput schema / properties / category / maxLength
      Added value: +200
    • addedInput schema / properties / is_sustainable
      Added value: +{
      +  "description": "True when the user explicitly wants products with sustainability claims.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / limit / description
      Previous value: -"Max results (1-30, default 10)"New value: +"Page size (1-10, default 10)"
    • changedInput schema / properties / limit / maximum
      Previous value: -30New value: +10
    • addedInput schema / properties / neckline
      Added value: +{
      +  "description": "Neckline filter",
      +  "enum": [
      +    "v-neck",
      +    "crewneck",
      +    "scoop",
      +    "square",
      +    "halter",
      +    "off-shoulder",
      +    "one-shoulder",
      +    "sweetheart",
      +    "turtleneck",
      +    "mock-neck",
      +    "boat-neck",
      +    "cowl",
      +    "asymmetric",
      +    "plunge",
      +    "high-neck",
      +    "collared",
      +    "strapless"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / page
      Added value: +{
      +  "default": 1,
      +  "description": "Page number (1-4). Results are ranked by relevance, so later pages contain weaker matches — refine the query rather than paging deep.",
      +  "maximum": 4,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / sleeves
      Added value: +{
      +  "description": "Sleeve style filter",
      +  "enum": [
      +    "sleeveless",
      +    "short-sleeve",
      +    "long-sleeve",
      +    "three-quarter",
      +    "cap-sleeve",
      +    "puff",
      +    "balloon",
      +    "bishop",
      +    "bell",
      +    "dolman"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / style / enum
      Previous value: -[
      -  "minimalist",
      -  "streetwear",
      -  "elegant",
      -  "avant-garde",
      -  "grunge",
      -  "vintage",
      -  "y2k",
      -  "techwear",
      -  "workwear",
      -  "normcore",
      -  "dark-academia",
      -  "preppy",
      -  "punk",
      -  "sportswear",
      -  "coquette",
      -  "quiet-luxury",
      -  "old-money",
      -  "gorpcore",
      -  "goth"
      -]New value: +[
      +  "minimalist",
      +  "streetwear",
      +  "elegant",
      +  "avant-garde",
      +  "grunge",
      +  "vintage",
      +  "y2k",
      +  "techwear",
      +  "workwear",
      +  "dark-academia",
      +  "preppy",
      +  "punk",
      +  "sportswear",
      +  "coquette",
      +  "quiet-luxury",
      +  "old-money",
      +  "gorpcore",
      +  "goth",
      +  "basics"
      +]
    • removedInput schema / properties / subcategory
      Removed value: -{
      -  "description": "Lowercase subcategory: e.g. dresses, sneakers, crossbody bags, earrings",
      -  "maxLength": 200,
      -  "type": "string"
      -}
  14. Changed4 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Product category"New value: +"Product category. Can be a DB category (apparel, footwear, accessories, bags, jewelry, swimwear, outerwear, intimates, lifestyle) OR a virtual-category slug (bomber-jackets, puffer-jackets, biker-jackets, varsity-jackets, quilted-jackets, windbreakers, denim-jackets, leather-jackets, trench-coats, parkas, peacoats, wool-coats, wrap-dresses, slip-dresses, bodycon-dresses, shirt-dresses, cargo-pants, chinos, sweatpants, pencil-skirts, pleated-skirts, cashmere-sweaters, cable-knit-sweaters, chelsea-boots, combat-boots, cowboy-boots, knee-high-boots, hiking-boots, stiletto-heels, platform-heels, kitten-heels, ballet-flats, penny-loafers, chunky-sneakers, high-top-sneakers, saddle-bags, camera-bags, baguette-bags, hobo-bags, envelope-clutches, mini-backpacks, bucket-hats, baseball-caps, fedoras, beanies, berets, signet-rings, stacking-rings, statement-rings, tennis-bracelets, chandelier-earrings) — virtual categories are curated landing pages that expand to a predefined subcategory + variant/material predicate (e.g. \"bomber-jackets\" → jackets with a bomber shape)."
    • changedInput schema / properties / category / enum
      Previous value: -[
      -  "apparel",
      -  "footwear",
      -  "accessories",
      -  "bags",
      -  "jewelry",
      -  "swimwear",
      -  "outerwear",
      -  "intimates",
      -  "home"
      -]New value: +[
      +  "apparel",
      +  "footwear",
      +  "accessories",
      +  "bags",
      +  "jewelry",
      +  "swimwear",
      +  "outerwear",
      +  "intimates",
      +  "lifestyle",
      +  "bomber-jackets",
      +  "puffer-jackets",
      +  "biker-jackets",
      +  "varsity-jackets",
      +  "quilted-jackets",
      +  "windbreakers",
      +  "denim-jackets",
      +  "leather-jackets",
      +  "trench-coats",
      +  "parkas",
      +  "peacoats",
      +  "wool-coats",
      +  "wrap-dresses",
      +  "slip-dresses",
      +  "bodycon-dresses",
      +  "shirt-dresses",
      +  "cargo-pants",
      +  "chinos",
      +  "sweatpants",
      +  "pencil-skirts",
      +  "pleated-skirts",
      +  "cashmere-sweaters",
      +  "cable-knit-sweaters",
      +  "chelsea-boots",
      +  "combat-boots",
      +  "cowboy-boots",
      +  "knee-high-boots",
      +  "hiking-boots",
      +  "stiletto-heels",
      +  "platform-heels",
      +  "kitten-heels",
      +  "ballet-flats",
      +  "penny-loafers",
      +  "chunky-sneakers",
      +  "high-top-sneakers",
      +  "saddle-bags",
      +  "camera-bags",
      +  "baguette-bags",
      +  "hobo-bags",
      +  "envelope-clutches",
      +  "mini-backpacks",
      +  "bucket-hats",
      +  "baseball-caps",
      +  "fedoras",
      +  "beanies",
      +  "berets",
      +  "signet-rings",
      +  "stacking-rings",
      +  "statement-rings",
      +  "tennis-bracelets",
      +  "chandelier-earrings"
      +]
    • changedInput schema / properties / max_price / minimum
      Previous value: -0New value: +0.01
    • changedInput schema / properties / min_price / minimum
      Previous value: -0New value: +0.01
  15. Changed2 schema fields changed
    • changedInput schema / properties / occasion / enum
      Previous value: -[
      -  "casual",
      -  "formal",
      -  "business",
      -  "party",
      -  "outdoor"
      -]New value: +[
      +  "casual",
      +  "formal",
      +  "business",
      +  "party",
      +  "outdoor",
      +  "beach"
      +]
    • changedInput schema / properties / style / enum
      Previous value: -[
      -  "minimalist",
      -  "streetwear",
      -  "elegant",
      -  "avant-garde",
      -  "grunge",
      -  "vintage",
      -  "y2k",
      -  "techwear",
      -  "workwear",
      -  "normcore",
      -  "dark-academia",
      -  "preppy",
      -  "punk",
      -  "sportswear",
      -  "coquette"
      -]New value: +[
      +  "minimalist",
      +  "streetwear",
      +  "elegant",
      +  "avant-garde",
      +  "grunge",
      +  "vintage",
      +  "y2k",
      +  "techwear",
      +  "workwear",
      +  "normcore",
      +  "dark-academia",
      +  "preppy",
      +  "punk",
      +  "sportswear",
      +  "coquette",
      +  "quiet-luxury",
      +  "old-money",
      +  "gorpcore",
      +  "goth"
      +]
  16. Changed2 schema fields changed
    • changedInput schema / properties / category / enum
      Previous value: -[
      -  "apparel",
      -  "footwear",
      -  "accessories",
      -  "bags",
      -  "jewelry",
      -  "beauty",
      -  "swimwear",
      -  "activewear",
      -  "outerwear",
      -  "intimates",
      -  "home"
      -]New value: +[
      +  "apparel",
      +  "footwear",
      +  "accessories",
      +  "bags",
      +  "jewelry",
      +  "swimwear",
      +  "outerwear",
      +  "intimates",
      +  "home"
      +]
    • changedInput schema / properties / style / enum
      Previous value: -[
      -  "minimalist",
      -  "casual",
      -  "streetwear",
      -  "elegant",
      -  "avant-garde",
      -  "grunge",
      -  "vintage",
      -  "y2k",
      -  "techwear",
      -  "workwear",
      -  "normcore",
      -  "dark-academia",
      -  "preppy",
      -  "punk",
      -  "sportswear",
      -  "coquette"
      -]New value: +[
      +  "minimalist",
      +  "streetwear",
      +  "elegant",
      +  "avant-garde",
      +  "grunge",
      +  "vintage",
      +  "y2k",
      +  "techwear",
      +  "workwear",
      +  "normcore",
      +  "dark-academia",
      +  "preppy",
      +  "punk",
      +  "sportswear",
      +  "coquette"
      +]
  17. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Goes well past the annotations by disclosing ranking semantics (semantic for query, recency for filter-only), pagination behavior, multi-currency conversion for price filters, and that results are compact cards with nested variant price differences. It even discloses a side effect not visible in annotations — the `country` value is recorded for analytics — which is consistent with readOnlyHint=false rather than contradicting it.

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

Conciseness4/5

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

Front-loaded with the core purpose and mode selection, then examples, then return shape, then the escalation path to get_product — a logical progression with no filler sentences. It is on the long side for a tool description, but the length is driven by genuinely decision-relevant content rather than restatement.

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

Completeness5/5

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

For a 25-parameter discovery tool this covers everything an agent needs: mode selection, query phrasing guidance, filter sparsity warnings, currency handling, result shape, and where to go for deeper product data. An output schema exists, yet the description still usefully summarizes the compact card contents and the nested variant pricing, which is the non-obvious part.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns above that by teaching the non-obvious population strategy — keep descriptive attributes in `query` and populate structured filters sparsely — and by giving four worked natural-language-to-parameter mappings. It does not walk through the 25 individual fields, but the schema already does that adequately.

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

Purpose5/5

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

States a specific verb and resource ("Find fashion products") and immediately distinguishes the three modes of operation: semantic query, pure structured browse, and combined filtered semantic search. It also separates itself from the sibling get_product by naming it as the tool for merchant descriptions, SKU-level variants, and full image sets.

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

Usage Guidelines5/5

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

Explicitly says when to use query (open-ended discovery), when to use filters only (pure browse, recency-ranked), when to combine both, and the hard precondition that at least one of query or a filter must be supplied. It also routes detail-seeking agents to get_product with a product ID, which is exactly the sibling-disambiguation an agent needs.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.