Skip to main content
Glama

search_products

[FIND] START HERE when you know what you want. Free-text search across every active RRG listing. This endpoint answers DEFINED intent, not open browse. Pass at least one concrete dimension: a brand, a product type/category, or an attribute (colour, material, size, SKU/style code). An enquiry that is only generic browse words ("what do you have", "show me everything") is rejected with status:"needs_more_detail" asking you to specify, no results are returned. To browse without intent, call list_drops instead. Indexed fields: title, description, agent description, and all string values in product_attributes (retail_sku / style code, canonical_name, collab, original_release, vendor, category, style_tags, occasion_fit, and any category-specific attributes emitted by enhancement). Accepts any of these query patterns:

  • product name or partial name

  • SKU / style code / model number (exact or partial, dash/space insensitive)

  • brand name, or brand + category (" ")

  • collaborator name(s) for collab items

  • attribute keywords from the description ("black suede", "heavyweight cotton", etc.) Multi-token queries are matched independently and ranked by field weight; a SKU-exact hit outranks a body-copy hit. Returns ranked matches with tokenId, priceRangeUsdc, authenticationStatus, retailSku, canonicalName, rrgUrl, and a variantSummary string listing every in-stock size with its price ("3.5=$1583, 4=$1899, 10.5=$770, …").

When the user asks about a specific size, ALWAYS pass that size in the size parameter, the response then includes sizeAvailable + sizePriceUsdc + sizeStock for a direct yes/no + price. For queries like "size 10.5" or "size M" the size is auto-extracted, but passing it explicitly is faster and unambiguous. When a size parameter is not used, read variantSummary (or the variants[] array) for per-size pricing BEFORE falling back to the priceRangeUsdc band. Per-size prices are exact; the band is only a floor→ceiling range.

Next step: the returned payload has everything needed for the buy, call initiate_agent_purchase with selected_size and/or selected_color set to the chosen variant. Pass selected_color whenever the listing has a colour axis (variants[].color non-null) so fulfillment ships the right finish. get_drop_details is optional (adds signed image URLs + shipping context).

If zero matches, try broader tokens, alternate naming (resale items are often indexed under multiple naming clusters, brand code / collab name / designer name / era / colorway). If still zero, call list_drops to browse.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sizeNoOptional size filter (e.g. "10.5", "M", "UK 8"). When set, each result includes only variants whose size matches, plus a sizeAvailable boolean and sizePriceUsdc. Results with sizeAvailable=false are still returned (marked unavailable) so the agent can report correctly.
limitNoMax results (default 10)
queryYesFree-text query. Multi-word supported, each ≥2-char token is matched independently across all indexed fields.
brand_slugNoOptional brand slug to scope the search. Call list_brands to see slugs.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / query / description
      Previous value: -"Free-text query. Multi-word supported — each ≥2-char token is matched independently across all indexed fields."New value: +"Free-text query. Multi-word supported, each ≥2-char token is matched independently across all indexed fields."
  2. Changed3 schema fields changed
    • changedInput schema / properties / brand_slug / description
      Previous value: -"Optional brand slug to scope the search (e.g. \"stadium-goods\")"New value: +"Optional brand slug to scope the search. Call list_brands to see slugs."
    • changedInput schema / properties / query / description
      Previous value: -"Free-text query. Multi-word is fine — each ≥2-char token is matched independently across all indexed fields. Examples: \"Jordan 1 Alaska 10.5\", \"AA3834-100\", \"Off-White Virgil Abloh\""New value: +"Free-text query. Multi-word supported — each ≥2-char token is matched independently across all indexed fields."
    • addedInput schema / properties / size
      Added value: +{
      +  "description": "Optional size filter (e.g. \"10.5\", \"M\", \"UK 8\"). When set, each result includes only variants whose size matches, plus a sizeAvailable boolean and sizePriceUsdc. Results with sizeAvailable=false are still returned (marked unavailable) so the agent can report correctly.",
      +  "type": "string"
      +}
  3. Added

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries full burden and excels: it discloses rejection behavior (status 'needs_more_detail'), indexed fields, query pattern handling, ranking logic, size-specific response fields, pricing nuances (variantSummary vs priceRangeUsdc), and even zero-match fallback guidance. This goes far beyond the schema.

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?

The description is long but front-loaded with the most critical guidance ('START HERE'), and organized into clear paragraphs with headers-like patterns. Every section earns its place given the tool's complexity, though some redundancy (e.g., repeated notes about per-size pricing) could be trimmed.

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 complex tool with no output schema, the description covers all essential aspects: return fields, size semantics, pricing interpretation, next steps, and failure recovery. It also accounts for edge cases like unavailable sizes and multi-naming clusters, making it fully self-contained for an agent to act correctly.

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

Parameters5/5

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

Although schema coverage is 100%, the description adds substantial meaning beyond the schema: it explains query pattern semantics (SKU dash/space insensitivity, brand+category), auto-extraction of size, and how to use brand_slug (calling list_brands). It also clarifies the size parameter's effect on result structure, which is not obvious from the schema alone.

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?

The description states a specific verb+resource ('Free-text search across every active RRG listing') and clearly differentiates from sibling tools by distinguishing defined intent from open browse. It also explicitly names list_drops as the alternative for browsing, making the tool's purpose unmistakable.

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?

It provides explicit when-to-use guidance ('START HERE when you know what you want'), states when not to use it (generic browse words are rejected), and names alternatives ('To browse without intent, call list_drops instead'). It also gives concrete next-step instructions for purchases, which is highly actionable.

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.