Vitrine: Trending Fashion, Luxury, Sneakers & Design
Server Details
Trend-ranked fashion, accessories and interior design for shopping agents. Taste-matched. Free key.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 10 tools
Each tool targets a distinct intent (keyword search, trend browsing, item-based similarity, outfit/room completion, brand lookup, brand similarity, size conversion, vocabulary), and the descriptions explicitly route the agent between lookalikes ('use search when the shopper has a specific need, trending when there is none, find_similar to vary an item you have'). The item-vs-brand pairs (find_similar/similar_brands, trending/trending_brands) are separated by explicit subject matter rather than leaving boundaries implicit.
Most names follow a noun or verb_noun shape (get_item, find_similar, search_brands, complete_the_look, convert_size), but there are deviations: a bare 'search' and 'vocabulary' alongside gerund-style 'trending', and the modifier placement flips between find_similar/similar_brands. The sibling patterns are still predictable enough that an agent can guess related names.
Ten tools is squarely in the well-scoped range, with each one earning a place: four discovery paths, two brand tools, one outfit builder, one size utility and one vocabulary helper. Nothing looks redundant or bolted on.
The discovery lifecycle is well covered (vocabulary → search/trending → get_item → find_similar/complete_the_look → brand tools → convert_size → outbound_url to the retailer for checkout). Minor gaps remain: no pagination on search results and no single-brand detail endpoint beyond search_brands/similar_brands output, so deep brand or catalog browsing is a dead end.
Available Tools
10 toolscomplete_the_lookComplete the lookARead-onlyIdempotentInspect
Build around one item (by id from an earlier result). For fashion it returns one piece per missing slot of an outfit (layer, top, bottom, shoes, bag, accessory; a dress skips top and bottom); for an interior piece it returns the other objects of a room (lamp, vase, table, textiles). Pieces are chosen for shared style, color harmony, shared occasion, season and a similar price tier, and never from the item's own slot. Use it for 'what goes with this', 'style this' or 'finish the room'; use find_similar for alternatives to the item itself. Filters apply to every added piece (for example max_price per piece, size or ship_to). Returns {anchor, kind, count, pieces}, each piece with a slot label and, with a key, a 'why'. An unknown id returns an error result. Read-only. Without a key, results are capped at 5 and omit trend data and match reasons; a free key (POST https://vitrine.fashion/v1/keys, sent as 'Authorization: Bearer ') unlocks them. Rate limits: 10 calls a minute anonymous, 60 with a key.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The item to build around, from an earlier result. | |
| agent | No | ||
| filters | No | Hard filters. Applied before ranking; an item that fails any of them is never returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| meta | Yes | |
| count | Yes | |
| anchor | Yes | |
| pieces | Yes | |
| query_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds plenty beyond that: unknown id produces an error result, keyless calls are capped at 5 and omit trend data and match reasons, how to obtain and send a key, and exact rate limits. The only redundancy is the terse 'Read-only' restatement of readOnlyHint; richer detail like whether the cap is truncation vs. ranking limit is left implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: item, what comes back, selection logic, when to use, filters, response shape, then operational caveats. Every sentence carries information, though the single unbroken paragraph of roughly a dozen clauses would be easier to scan with any structural break, and the stale 'Read-only' duplicates an annotation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite nested filter objects and an optional agent block, the description covers the identity of the anchor, the ranking rationale, the response envelope, the error case, and the key/rate-limit constraints. With an output schema present it does not need to enumerate every field, and nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is moderate (67%), and the description clarifies the crucial semantics that filters apply to every added piece rather than the anchor, calling out max_price as per piece plus size and ship_to. It does not explain the tier enum, gender_exact behavior, or the agent object, but the schema already documents those inline, so the added meaning is well targeted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a concrete task (build an outfit/room around a given item id) and immediately specifies the two output shapes — missing outfit slots for fashion, complementary room objects for interior — including the dress exception. It also explicitly contrasts itself with the sibling find_similar, so an agent can separate the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger phrases ('what goes with this', 'style this', 'finish the room') and names the alternative tool plus the condition that selects it ('use find_similar for alternatives to the item itself'). It also states the id must come from an earlier result, which prevents a common misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_sizeConvert a sizeARead-onlyIdempotentInspect
Convert a size between systems so the shopper orders the right one: women's clothing (letter, US, UK, EU, FR, IT, DE), men's tailoring (letter, US, UK, EU, IT), women's and men's shoes (EU, US, UK, European luxury convention), athletic sneakers (US_M, US_W, UK, EU, CM), rings (US, UK, EU, millimetres) and jeans waist. Use it whenever the shopper's size and the item's sizes are in different systems, before recommending a size. Returns every equivalent, a note on the convention used, and 'approximate' or 'ambiguous' when the size is between or spans rows. The brand's own chart always wins. No key needed; read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | What is being sized. | |
| size | Yes | The size as printed, e.g. '38', 'M', '7.5', 'L' (UK ring), '28' (jeans waist). | |
| system | Yes | The system the size is in, e.g. EU, US, UK, IT, FR, letter, US_W, US_M, waist_in. |
Output Schema
| Name | Required | Description |
|---|---|---|
| from | No | |
| kind | Yes | |
| note | Yes | |
| label | No | |
| ambiguous | No | |
| approximate | No | |
| equivalents | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, and the description reinforces this with "No key needed; read-only." Beyond that it adds real behavioral context the annotations cannot: results carry a note on the convention used and are flagged "approximate" or "ambiguous" when a size falls between or spans rows, which tells the agent how to hedge its recommendation. The only shortfall is that it leans on the output schema for the actual result shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The trigger condition and the conversion scope are front-loaded, and the long enumeration sentence earns its length by covering genuinely distinct size families. It is dense and would benefit from breaking that one sentence into a short list, but no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter, read-only lookup with full schema coverage, an output schema, and complete annotations, the description supplies everything an agent needs: which kinds and systems pair, when to invoke it, how to interpret ambiguous results, and how to defer to brand charts. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline would be 3, but the description adds meaning the schema does not: it maps each `kind` value to the specific systems valid for it (e.g. jeans waist vs. rings in millimetres vs. sneakers with US_M/US_W/CM), which constrains `system` per `kind` in a way the free-text schema field cannot. It also gives concrete size examples matching the schema's format hints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ("Convert a size between systems") and then enumerates every supported size family and the systems each accepts, so an agent can immediately tell this apart from sibling tools like get_item or vocabulary. The goal statement ("so the shopper orders the right one") also anchors the purpose in the shopping flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the exact triggering condition ("whenever the shopper's size and the item's sizes are in different systems") and the sequencing constraint ("before recommending a size"), plus a precedence rule that the brand's own chart always wins. There is no sibling tool performing conversion, so no alternative needs naming, and the guidance leaves nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similarFind similar itemsARead-onlyIdempotentInspect
Find alternatives to one item (by id from an earlier result): pieces close in style, the same product type first. Use it for 'something like this but cheaper' (filters.max_price), 'but in stock' (filters.availability) or a different color. The source item is never included. Returns {anchor, count, results} in the search result shape, each with a 'why' naming the shared style. An unknown id returns an error result; an empty list means no alternative passes the filters. Read-only. Without a key, results are capped at 5 and omit trend data and match reasons; a free key (POST https://vitrine.fashion/v1/keys, sent as 'Authorization: Bearer ') unlocks them. Rate limits: 10 calls a minute anonymous, 60 with a key.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The item to find alternatives for. | |
| agent | No | ||
| limit | No | 5 to 20. Anonymous callers get 5. | |
| filters | No | Hard filters. Applied before ranking; an item that fails any of them is never returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| count | Yes | |
| anchor | No | |
| results | Yes | |
| query_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent, yet the description adds substantial behavior: the source item is never included, an unknown id yields an error result, an empty list has a specific meaning, and anonymous calls are capped at 5 while omitting trend data and match reasons. It even documents the free key endpoint, auth header format, and per-minute rate limits for anonymous vs keyed callers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and use cases, then return shape, error semantics, and auth/rate-limit caveats in a logical order with zero filler. It is dense and multi-clause, but nearly every sentence carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even though an output schema exists, the description sketches the return envelope ({anchor, count, results}) and the 'why' field, plus degradation without a key. For a filtered similarity search with nested objects, that covers everything an agent needs to invoke and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the schema does much of the work, but the description still adds value by clarifying that the id must come from an earlier result and by naming the filters that matter for the common shopping intents. The agent and limit parameters are left entirely to the schema, which keeps this below a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find alternatives to one item') and pins the input to 'id from an earlier result', which cleanly separates it from search and get_item. The scoping phrase 'pieces close in style, the same product type first' tells the agent exactly what kind of result set to expect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete when-to-use triggers mapped to specific filters ('something like this but cheaper' → filters.max_price, 'but in stock' → filters.availability, or a different color). It does not explicitly say when to prefer a sibling like search instead, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_itemItem detailsARead-onlyIdempotentInspect
Get the full record for one item, using an id from a search, trending or find_similar result. Use it before recommending a piece, to check sizes, materials, colors, shipping regions and seller. With a key it adds silhouette, occasion, season and trend data. Returns {item, meta}. An unknown id returns an error result telling you to search again. Read-only. Without a key, results are capped at 5 and omit trend data and match reasons; a free key (POST https://vitrine.fashion/v1/keys, sent as 'Authorization: Bearer ') unlocks them. Rate limits: 10 calls a minute anonymous, 60 with a key. With a key, each item also carries trend_reason (why it has its trend status), trend_sources (the signals behind it: source, url, signal type, date, contribution; [] when the status comes from curation alone) and trend_review (when the status last changed and whether a human reviewer approved it).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Item id from a search, trending or find_similar result. | |
| agent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| item | Yes | |
| meta | Yes | |
| query_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses the anonymous result cap of 5 items, which fields are withheld without a key, how to obtain a key and pass it, and the exact rate limits (10/min anonymous, 60/min keyed). It also states the failure mode for an unknown id ('returns an error result telling you to search again').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentences are tightly front-loaded and earn their place, but the final sentence spends ~60 words enumerating trend_reason, trend_sources and trend_review fields, which duplicates the existing output schema. Rate limits and auth could also be compressed into one clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-record lookup with an output schema present, everything an agent needs is covered: valid id provenance, expected envelope {item, meta}, auth path, quotas, gated fields and error behavior. Nothing material is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% and the required 'id' parameter is already documented identically in the schema; the description repeats rather than extends it. The only added meaning is auth-related (Bearer key), which is not a parameter, and the optional 'agent' object is never discussed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the full record for one item') and immediately scopes the input to ids from search, trending or find_similar, which separates it from those lookup siblings. An agent can distinguish it from search/trending without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete when-to-use condition ('before recommending a piece, to check sizes, materials, colors, shipping regions and seller') and points to the sibling tools that produce valid ids. It stops short of an explicit when-not or a named alternative for the case where the agent has no id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchSearch the indexARead-onlyIdempotentInspect
Find fashion, accessories or interior pieces for a shopper's request. Use this first for any need stated in words ('a quiet luxury bag for work under $1,000'); use trending when there is no specific need, and find_similar to vary an item you already have. Hard filters (category, gender, tier, price, colors, size, brand, availability, ship_to) exclude items outright; filters.gender 'men' or 'women' also keeps unisex pieces unless gender_exact is true. Words like "men's" or "for her" in the query only rerank, like the optional taste_profile. Returns 5 to 20 items ranked by text match, taste and trend, each with price, availability, image, trend status, a one-line 'why' and an outbound_url to the retailer, where checkout happens. No pagination; an empty list means nothing fits, so loosen filters. Read-only. Without a key, results are capped at 5 and omit trend data and match reasons; a free key (POST https://vitrine.fashion/v1/keys, sent as 'Authorization: Bearer ') unlocks them. Rate limits: 10 calls a minute anonymous, 60 with a key. With a key, each item also carries trend_reason (why it has its trend status), trend_sources (the signals behind it: source, url, signal type, date, contribution; [] when the status comes from curation alone) and trend_review (when the status last changed and whether a human reviewer approved it).
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No | ||
| limit | No | Maximum results, 5 to 20. Anonymous callers get 5. No pagination. | |
| query | No | Free text, e.g. 'relaxed linen trousers for a summer trip'. Max 300 characters. | |
| filters | No | Hard filters. Applied before ranking; an item that fails any of them is never returned. | |
| taste_profile | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| count | Yes | |
| results | Yes | |
| query_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description discloses authentication limits, rate limits, anonymous-result caps, omitted trend data and match reasons, and where checkout happens. It also explains that hard filters exclude while query wording and taste_profile only rerank, which is behavior an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loads the decision rule and then organizes filters, ranking, return behavior, authentication and rate limits in a useful order. A few statements repeat structured annotations or schema details, such as read-only and no pagination, but the density is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the nested filters and taste_profile schema, the presence of an output schema, and the authentication differences, the description is complete enough for correct invocation. It explains return shape, missing behavior, key-gated fields and failure handling without needing to restate every schema field.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the schema, especially that category, gender, tier, price, colors, size, brand, availability and ship_to are hard exclusions, and that gender includes unisex unless gender_exact is true. It covers the most important fields, though it does not mention the optional agent identity fields and leaves some nested taste_profile details to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource, finding fashion, accessories or interior pieces for a shopper request. It explicitly distinguishes this tool from trending and find_similar, so an agent can identify the correct sibling without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing guidance: use this first for needs stated in words, use trending when there is no specific need, and use find_similar to vary an existing item. It also says what empty results mean and instructs to loosen filters rather than paginate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_brandsSearch brandsARead-onlyIdempotentInspect
Find brands in the index by name (case and accents ignored, partial names work) or by a style word such as 'y2k' or 'quiet luxury', optionally within a category or catalog tier. Returns brands with item count, main tier, categories, price range and, with a key, trend status, trend score and top style tags. An empty query lists brands with the most items first.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Catalog tier, see the vocabulary tool. | |
| agent | No | ||
| limit | No | 5 to 20. Anonymous callers get 5. | |
| query | No | Brand name or part of it ('loewe', 'acne'), or a style word ('y2k', 'gorpcore'). Empty lists every brand, most items first. | |
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| count | Yes | |
| results | Yes | |
| query_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, and the description goes beyond them by disclosing matching behavior (case- and accent-insensitive, partial matches) and a tiered response: trend status, trend score and top style tags only when a key is supplied. That key-gated data difference is exactly the kind of behavioral detail annotations cannot convey. It says nothing about error or empty-result behavior beyond the empty-query ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the matching modes before scoping options and return contents. Every clause carries information an agent would otherwise have to infer from the schema, and nothing is repeated verbatim from structured fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All five parameters are optional and the description covers the one that carries the semantics, while an output schema exists so the return-value summary is a convenience rather than a necessity. For a read-only search with a rich schema and annotations, the only real omission is guidance that agent is optional self-identification and that limit is capped for anonymous callers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%, so the schema already documents tier, agent and limit reasonably well, including the 5-20 range and the anonymous-caller cap. The description meaningfully deepens the query parameter (accent/case handling, partial names, style-word matching, empty-string behavior) but adds nothing about agent, limit, or the tier vocabulary beyond "optionally within a category or catalog tier".
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Find brands in the index") plus the two match modes (name or style word) and the scoping options (category, catalog tier). The result fields are enumerated, so an agent knows what comes back. It stops short of naming siblings like similar_brands or trending_brands, so differentiation is inferred from the phrasing rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operative context: use a name fragment for brand lookup, a style word for discovery, and an empty query to list everything ranked by item count. It does not exclude or route to alternatives such as similar_brands or trending_brands when those would be the better choice, so no explicit when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
similar_brandsSimilar brandsARead-onlyIdempotentInspect
Brands close to a given brand (exact name, e.g. 'The Row'): similar style tags, categories, price level and catalog tier, each with a short reason. Optionally only brands with pieces in a category or tier. Unknown brand names return an error; find names with search_brands.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Only return brands with pieces in this catalog tier. | |
| agent | No | ||
| brand | Yes | Exact brand name from search_brands or any result, e.g. 'The Row'. Case and accents are ignored. | |
| limit | No | 5 to 20. Anonymous callers get 5. | |
| category | No | Only return brands with pieces in this category. |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| count | Yes | |
| anchor | No | |
| results | Yes | |
| query_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description does add non-obvious behavior: unknown brand names produce an error, and each result carries a short reason. It does not say how results are ordered or how the reason text is generated, which is modest added value on top of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with the core purpose front-loaded, followed by optional filters and then the error/routing note. The parenthetical examples are compact and useful; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't describe return shape, yet it still mentions the per-result reason. It covers the required input, error behavior and optional filters. Minor omissions such as result ordering or how limit interacts with anonymous callers are acceptable at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, so the schema already documents brand, tier, category, limit and agent. The description reinforces the exact-name semantics and case/accent insensitivity of brand, and restates the meaning of the tier/category filters. It adds marginal detail rather than new syntax, which fits given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names the resource (brands similar to a given brand) and states what similarity is based on: style tags, categories, price level and catalog tier, plus a per-result reason. This is enough to distinguish it from search_brands (name lookup) and find_similar (item-level similarity).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear prerequisites and routing: the brand argument must be an exact name, and search_brands is named for resolving unknown names, with an error reported for unknown brands. It also explains when to use the optional category/tier filters. The one gap is that it doesn't contrast with its sibling find_similar, which also performs similarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trendingWhat is trendingARead-onlyIdempotentInspect
List what is hot or rising right now, ranked by trend score (0 to 100), optionally within one category (fashion, accessories, interior), tier or gender (men and women include unisex pieces). Use it for open questions like 'what's trending in bags' or 'in menswear'; use search when the shopper has a specific need. 'hot' means confirmed by demand data, 'rising' means early momentum not yet confirmed. Returns 5 to 20 items in the same shape as search, plus meta.updated_at. Read-only. Without a key, results are capped at 5 and omit trend data and match reasons; a free key (POST https://vitrine.fashion/v1/keys, sent as 'Authorization: Bearer ') unlocks them. Rate limits: 10 calls a minute anonymous, 60 with a key. With a key, each item also carries trend_reason (why it has its trend status), trend_sources (the signals behind it: source, url, signal type, date, contribution; [] when the status comes from curation alone) and trend_review (when the status last changed and whether a human reviewer approved it).
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | ||
| agent | No | ||
| limit | No | 5 to 20. Anonymous callers get 5. | |
| gender | No | Department. 'men' returns men's and unisex pieces, 'women' returns women's and unisex pieces, 'unisex' returns unisex pieces only. | |
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| count | Yes | |
| results | Yes | |
| query_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, non-destructive), but the description adds substantial behavioral context beyond them: anonymous results capped at 5 with trend data and match reasons withheld, rate limits of 10/min anonymous vs 60/min keyed, the exact key acquisition endpoint and header format, and the three extra per-item fields (trend_reason, trend_sources, trend_review) unlocked by a key. The one redundancy is restating 'Read-only', which is already in annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and routing before credentials and rate limits, and nearly every clause carries decision-relevant information. It is dense to the point of being a run-on in the key/rate-limit sentence, but trimming it would cost an agent real operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Return shape is delegated appropriately ('same shape as search, plus meta.updated_at') and an output schema exists, so values needn't be re-explained. Combined with auth, quota, and the category/gender semantics, an agent has everything needed to call this correctly on the first attempt.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, so the description carries real weight: it clarifies that 'men' and 'women' include unisex pieces and lists the category values (fashion, accessories, interior). It does not explain the `tier` enum values (luxury_anchor, trend_brand, streetwear, etc.) or the `agent` block semantics, leaving half the parameters to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List what is hot or rising right now, ranked by trend score 0 to 100') and immediately scopes the optional filters (category, tier, gender). It also distinguishes itself from the sibling `search` by naming the exact condition that selects each ('open questions ... use search when the shopper has a specific need').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use routing against `search` with example phrasings ('what's trending in bags', 'in menswear'). It also defines the two ambiguous terms an agent would otherwise guess at: 'hot' means confirmed by demand data, 'rising' means early momentum not yet confirmed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trending_brandsTrending brandsARead-onlyIdempotentInspect
Hot and rising brands right now, ranked by brand trend status and score, optionally within a category or tier. Uses Vitrine's reviewed brand-level trend signals where a brand has them, otherwise aggregates its item trend scores; each result's trend_source says which (brand_signal or item_aggregate).
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | ||
| agent | No | ||
| limit | No | 5 to 20. Anonymous callers get 5. | |
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| count | Yes | |
| results | Yes | |
| query_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe, read-only, idempotent profile, so the description is free to add the genuinely useful behavioral detail: the two-score methodology (reviewed brand-level signals vs. item aggregates) and the trend_source field that exposes which was used. That is real context an agent could not get from annotations or schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The identity of the tool and its ranking come first, and the methodology and trend_source explanation follows as supporting detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover safety. The description fills the remaining high-value gaps — ranking basis, filtering dimensions, and score provenance — with only limit and agent behavior left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 25% schema description coverage across four parameters, the description partially compensates by explaining that category and tier are optional scoping filters. It says nothing about the limit parameter or the agent self-identification object, leaving the anonymous 5-result cap and agent metadata meanings to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource (brands) and a specific ranking basis (brand trend status and score), plus the optional category/tier scoping. It does not explicitly name sibling tools like trending or search_brands, so an agent must infer the brand-vs-item distinction rather than being told.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no alternative is named. An agent reading only this description cannot tell under what circumstances to prefer trending_brands over trending, search_brands, or similar_brands.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vocabularyFilter vocabularyARead-onlyIdempotentInspect
The exact controlled values agents should use in filters and taste profiles, read from the live catalog with item counts: categories, catalog tiers, price tiers with their price bands, availability, trend statuses with meanings, style tags, silhouettes, occasions, seasons, colors, materials, sizes, conditions and ship-to regions, plus every filter field name with its type. No arguments. Cacheable: call it once per session, before building filters.
| Name | Required | Description | Default |
|---|---|---|---|
| agent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| meta | Yes | |
| values | Yes | |
| filters | Yes | |
| items_indexed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description goes beyond them by disclosing that values are 'read from the live catalog with item counts' (freshness and richness of the payload) and that the result is cacheable for the session — real behavioral context. It stops short of describing payload shape or size, but an output schema exists to carry that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the caching instruction bracket the description, so it is front-loaded and closes with the actionable rule. The long enumeration of vocabularies earns most of its length by telling the agent what it will receive, though it could be trimmed slightly without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-required-argument lookup with a full output schema and complete annotations, the description covers what it returns, why to call it, and caching strategy — enough to invoke it correctly. The only omission is any mention of the optional agent identification block, which is minor given the tool works without it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is reported at 0%, so the description would normally need to compensate for the single optional 'agent' parameter. It instead says 'No arguments', which is functionally true for required inputs but never mentions the optional self-identification object, whose purpose (better ranking) lives only in the schema. Adequate to drive a correct zero-argument call, but it does not add meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and payload: 'the exact controlled values agents should use in filters and taste profiles', then enumerates the vocabularies (categories, price tiers with bands, trend statuses with meanings, sizes, conditions, ship-to regions) plus 'every filter field name with its type'. This clearly separates it from siblings like search or trending, which consume these values rather than define them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use and how-often: 'call it once per session, before building filters', and explicitly excludes the need for inputs with 'No arguments'. An agent knows both the trigger point and the call cadence without inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- Changed
complete_the_look3 fields changed- added
Input schema / properties / filters / properties / genderAdded value: +{ + "anyOf": [ + { + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Department: women, men or unisex. 'men' returns men's and unisex pieces, 'women' returns women's and unisex pieces, 'unisex' returns unisex pieces only. Set gender_exact to true to drop the unisex pieces." +} - added
Input schema / properties / filters / properties / gender_exactAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "With gender, true matches that department only, without unisex pieces." +} - added
Output schema / properties / pieces / items / properties / genderAdded value: +{ + "description": "Department. Accessories and interior are usually unisex.", + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" +}
- Changed
find_similar3 fields changed- added
Input schema / properties / filters / properties / genderAdded value: +{ + "anyOf": [ + { + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Department: women, men or unisex. 'men' returns men's and unisex pieces, 'women' returns women's and unisex pieces, 'unisex' returns unisex pieces only. Set gender_exact to true to drop the unisex pieces." +} - added
Input schema / properties / filters / properties / gender_exactAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "With gender, true matches that department only, without unisex pieces." +} - added
Output schema / properties / results / items / properties / genderAdded value: +{ + "description": "Department. Accessories and interior are usually unisex.", + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" +}
- Changed
get_item1 field changed- added
Output schema / properties / item / properties / genderAdded value: +{ + "description": "Department. Accessories and interior are usually unisex.", + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" +}
- Changed
search4 fields changed- added
Input schema / properties / filters / properties / genderAdded value: +{ + "anyOf": [ + { + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Department: women, men or unisex. 'men' returns men's and unisex pieces, 'women' returns women's and unisex pieces, 'unisex' returns unisex pieces only. Set gender_exact to true to drop the unisex pieces." +} - added
Input schema / properties / filters / properties / gender_exactAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "With gender, true matches that department only, without unisex pieces." +} - changed
Input schema / properties / taste_profile / anyOfPrevious value: -[ - { - "additionalProperties": false, - "description": "Soft preferences from the shopper's agent. Used for ranking, never for exclusion.\nDescribe taste only: no names, emails or other personal data.", - "properties": { - "avoided_colors": { - "items": { - "maxLength": 40, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "type": "array" - }, - "preferred_colors": { - "items": { - "maxLength": 40, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "type": "array" - }, - "price_comfort": { - "anyOf": [ - { - "properties": { - "max": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "default": null - }, - "min": { - "anyOf": [ - { - "minimum": 0, - "type": "number" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null - }, - "style_tags": { - "description": "e.g. minimal, tailored, relaxed, vintage", - "items": { - "maxLength": 40, - "minLength": 1, - "type": "string" - }, - "maxItems": 20, - "type": "array" - } - }, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "description": "Soft preferences from the shopper's agent. Used for ranking, never for exclusion.\nDescribe taste only: no names, emails or other personal data.", + "properties": { + "avoided_colors": { + "items": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + "gender": { + "anyOf": [ + { + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Soft department preference (women, men, unisex): ranks that department and unisex pieces first, never excludes. Use filters.gender to exclude." + }, + "preferred_colors": { + "items": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "type": "array" + }, + "price_comfort": { + "anyOf": [ + { + "properties": { + "max": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + }, + "min": { + "anyOf": [ + { + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null + } + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null + }, + "style_tags": { + "description": "e.g. minimal, tailored, relaxed, vintage", + "items": { + "maxLength": 40, + "minLength": 1, + "type": "string" + }, + "maxItems": 20, + "type": "array" + } + }, + "type": "object" + }, + { + "type": "null" + } +] - added
Output schema / properties / results / items / properties / genderAdded value: +{ + "description": "Department. Accessories and interior are usually unisex.", + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" +}
- Changed
trending2 fields changed- added
Input schema / properties / genderAdded value: +{ + "anyOf": [ + { + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Department. 'men' returns men's and unisex pieces, 'women' returns women's and unisex pieces, 'unisex' returns unisex pieces only." +} - added
Output schema / properties / results / items / properties / genderAdded value: +{ + "description": "Department. Accessories and interior are usually unisex.", + "enum": [ + "women", + "men", + "unisex" + ], + "type": "string" +}
5 tool updates
- Changed
convert_size1 field changed- removed
Input schema / properties / agentRemoved value: -{ - "anyOf": [ - { - "description": "Optional self-identification. Identified callers help us rank better; keys make it reliable.", - "properties": { - "locale": { - "anyOf": [ - { - "maxLength": 16, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "e.g. 'en-GB'" - }, - "name": { - "anyOf": [ - { - "maxLength": 80, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "e.g. 'acme-shopper'" - }, - "platform": { - "anyOf": [ - { - "maxLength": 80, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Platform or developer" - }, - "session_id": { - "anyOf": [ - { - "maxLength": 64, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "description": "Your own opaque id linking calls in one shopping session. Never a user id." - }, - "version": { - "anyOf": [ - { - "maxLength": 40, - "type": "string" - }, - { - "type": "null" - } - ], - "default": null - } - }, - "type": "object" - }, - { - "type": "null" - } - ], - "default": null -}
- Added
search_brands - Added
similar_brands - Added
trending_brands - Added
vocabulary
6 tool updates
- Added
complete_the_look - Added
convert_size - Changed
find_similar1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "anchor": { + "properties": { + "brand": { + "type": "string" + }, + "id": { + "type": "string" + }, + "title": { + "type": "string" + } + }, + "type": "object" + }, + "count": { + "type": "integer" + }, + "meta": { + "properties": { + "access": { + "enum": [ + "full", + "basic" + ], + "type": "string" + }, + "terms": { + "type": "string" + }, + "upgrade": { + "type": "string" + } + }, + "type": "object" + }, + "query_id": { + "type": "integer" + }, + "results": { + "items": { + "properties": { + "availability": { + "enum": [ + "in_stock", + "low_stock", + "preorder", + "out_of_stock" + ], + "type": "string" + }, + "brand": { + "type": "string" + }, + "category": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_url": { + "type": [ + "string", + "null" + ] + }, + "outbound_url": { + "description": "Tracked link to the retailer's product page. Checkout happens there.", + "type": "string" + }, + "price": { + "type": "number" + }, + "title": { + "type": "string" + }, + "trend_score": { + "description": "0 to 100. With a key.", + "type": "integer" + }, + "trend_status": { + "description": "With a key.", + "enum": [ + "hot", + "rising", + "steady", + "fading" + ], + "type": "string" + }, + "why": { + "description": "One-line reason it matches. With a key.", + "type": "string" + } + }, + "required": [ + "id", + "title", + "brand", + "price", + "currency", + "availability", + "outbound_url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "count", + "results", + "meta" + ], + "type": "object" +}
- Changed
get_item1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "item": { + "properties": { + "availability": { + "enum": [ + "in_stock", + "low_stock", + "preorder", + "out_of_stock" + ], + "type": "string" + }, + "brand": { + "type": "string" + }, + "category": { + "type": "string" + }, + "colors": { + "items": { + "type": "string" + }, + "type": "array" + }, + "currency": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_url": { + "type": [ + "string", + "null" + ] + }, + "materials": { + "items": { + "type": "string" + }, + "type": "array" + }, + "outbound_url": { + "description": "Tracked link to the retailer's product page. Checkout happens there.", + "type": "string" + }, + "price": { + "type": "number" + }, + "ship_to": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sizes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "sold_by": { + "type": "string" + }, + "title": { + "type": "string" + }, + "trend_score": { + "description": "0 to 100. With a key.", + "type": "integer" + }, + "trend_status": { + "description": "With a key.", + "enum": [ + "hot", + "rising", + "steady", + "fading" + ], + "type": "string" + }, + "why": { + "description": "One-line reason it matches. With a key.", + "type": "string" + } + }, + "required": [ + "id", + "title", + "brand", + "price", + "currency", + "availability", + "outbound_url" + ], + "type": "object" + }, + "meta": { + "properties": { + "access": { + "enum": [ + "full", + "basic" + ], + "type": "string" + }, + "terms": { + "type": "string" + }, + "upgrade": { + "type": "string" + } + }, + "type": "object" + }, + "query_id": { + "type": "integer" + } + }, + "required": [ + "item", + "meta" + ], + "type": "object" +}
- Changed
search1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "count": { + "type": "integer" + }, + "meta": { + "properties": { + "access": { + "enum": [ + "full", + "basic" + ], + "type": "string" + }, + "terms": { + "type": "string" + }, + "upgrade": { + "type": "string" + } + }, + "type": "object" + }, + "query_id": { + "type": "integer" + }, + "results": { + "items": { + "properties": { + "availability": { + "enum": [ + "in_stock", + "low_stock", + "preorder", + "out_of_stock" + ], + "type": "string" + }, + "brand": { + "type": "string" + }, + "category": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_url": { + "type": [ + "string", + "null" + ] + }, + "outbound_url": { + "description": "Tracked link to the retailer's product page. Checkout happens there.", + "type": "string" + }, + "price": { + "type": "number" + }, + "title": { + "type": "string" + }, + "trend_score": { + "description": "0 to 100. With a key.", + "type": "integer" + }, + "trend_status": { + "description": "With a key.", + "enum": [ + "hot", + "rising", + "steady", + "fading" + ], + "type": "string" + }, + "why": { + "description": "One-line reason it matches. With a key.", + "type": "string" + } + }, + "required": [ + "id", + "title", + "brand", + "price", + "currency", + "availability", + "outbound_url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "count", + "results", + "meta" + ], + "type": "object" +}
- Changed
trending1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "count": { + "type": "integer" + }, + "meta": { + "properties": { + "access": { + "enum": [ + "full", + "basic" + ], + "type": "string" + }, + "terms": { + "type": "string" + }, + "upgrade": { + "type": "string" + } + }, + "type": "object" + }, + "query_id": { + "type": "integer" + }, + "results": { + "items": { + "properties": { + "availability": { + "enum": [ + "in_stock", + "low_stock", + "preorder", + "out_of_stock" + ], + "type": "string" + }, + "brand": { + "type": "string" + }, + "category": { + "type": "string" + }, + "currency": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_url": { + "type": [ + "string", + "null" + ] + }, + "outbound_url": { + "description": "Tracked link to the retailer's product page. Checkout happens there.", + "type": "string" + }, + "price": { + "type": "number" + }, + "title": { + "type": "string" + }, + "trend_score": { + "description": "0 to 100. With a key.", + "type": "integer" + }, + "trend_status": { + "description": "With a key.", + "enum": [ + "hot", + "rising", + "steady", + "fading" + ], + "type": "string" + }, + "why": { + "description": "One-line reason it matches. With a key.", + "type": "string" + } + }, + "required": [ + "id", + "title", + "brand", + "price", + "currency", + "availability", + "outbound_url" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "count", + "results", + "meta" + ], + "type": "object" +}
4 tool updates
- First observed
find_similar - First observed
get_item - First observed
search - First observed
trending
Related MCP Connectors
Consumer demand signals across search, shopping and social. Free key at trendsapi.ai
Natural-language fashion search and complete outfits from real shop pieces. Anonymous, read-only.
Product and category demand signals across Amazon and social. Free key at trendsapi.ai
Spot keyword demand rising or fading across search and social. Free key at trendsapi.ai
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to deconstruct outfit photos into clothing pieces, discover 100% in-stock occasion looks, verify live size and fabric availability, and generate direct one-click checkout links.166 npm1MIT
- AlicenseBqualityCmaintenanceEnables AI agents to generate studio-grade fashion photography and 4K motion-captured video, perform garment try-ons and background edits, and export creative assets to commerce, productivity, and social platforms.28MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to resolve and search taste entities and tags, get recommendations, demographics, and taste analysis, and run an audience-finding agent that turns a creative work description into audience affinities, local places, and a ready-to-use pitch.MIT
- AlicenseNot gradedqualityCmaintenanceEnables clients to look up dress-code meanings, generate five-piece outfit formulas for an occasion and weather, explore tested clothing colour combinations, and find relevant style guides through a free read-only MCP endpoint.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.