Skip to main content
Glama

AirShelf Catalog

Research a considered purchase

research_shopping

research_shopping is the full verified-research job; find_products is the quick candidate-list tool. It runs as a background job and returns status "running" with a research ID while the minutes-long research continues; the same research ID returns the run on later polls until completion. Unsafe medical, legal, financial-advice, and professional-service asks return status "refused" before any work is queued. Completed runs return a researched recommendation with per-claim source receipts, or an explicit refusal when evidence is insufficient. Missing decision details return clarification questions before research starts. market biases discovery and marketplace checks toward seller pages serving that country; "available in " means the seller page serves that market, not that stock is guaranteed. Example answer keys include {"budget":"500 USD","market":"US","category":"espresso machine"}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
needNoBuyer need in natural language. Required when starting a new research run.
marketNoBuyer market as an ISO 3166-1 alpha-2 country code. Biases discovery and marketplace checks toward seller pages serving that country; availability is not a stock guarantee.
answersNoAnswers to clarification questions. Set accept_defaults:true to accept budget and market defaults; it does not waive product type, use case, or must-have requirements.
personaNoResearch persona; b2b produces a quotation/RFQ pack.
research_idNoExisting research run identifier to read instead of starting a new run.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
stageNo
reasonNo
statusYes
dossierNo
outcomeNo
questionsNo
eta_secondsNo
research_idNo
stage_countersNo
elapsed_secondsNo
accepted_defaultsNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations are minimal (readOnlyHint=false, openWorldHint=true, destructiveHint=false), so the description carries the burden of behavioral disclosure. It rises to the occasion: async execution and polling with research_id, 'refused' status for unsafe requests before work is queued, clarification flow for missing decision details, and the market semantic ('available in <market>' does not imply stock guarantee). All credit beyond what annotations provide.

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 (~140 words) but each clause earns its place. It front-loads the most important info first (purpose and sibling distinction), then lifecycle, then safety refusals, then market nuance, and closes with an example. It forms a single dense paragraph that could benefit from a line break or two, but it's appropriately scoped for the tool's complexity.

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

Completeness4/5

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

For a tool with this much complexity (async background jobs, polling, safety refusals, clarification flows, market nuance, personas), the description covers the critical call paths thoroughly. The output schema handles return-value documentation. The main gap is not addressing the other siblings (compare_products, get_product, etc.) or edge cases like timeout/error states, but what's here is cohesive and complete enough to call correctly.

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 schema already documents each parameter. The description adds genuinely useful semantics on top: the market parameter biases discovery but not stock, research_id enables polling for the async run, and the example answer key ({'budget': '500 USD', 'market': 'US', 'category': 'espresso machine'}) clarifies the answers object shape. Valuable, though some of this is also in the schema's descriptions.

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 the specific function: 'research_shopping is the full verified-research job', and immediately distinguishes its scope from sibling find_products, calling it the 'quick candidate-list tool'. It also specifies the resource (considered purchase) and the output (verified research with per-claim receipts). An agent can unambiguously tell this from the alternatives.

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

Usage Guidelines4/5

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

The description explicitly contrasts with find_products (quick candidate lists vs. full research), which is the single most likely point of confusion, and outlines the polling lifecycle (running → poll with research_id). However, it doesn't address the other six siblings or give an explicit 'use this when...' rule beyond the find_products dichotomy, so some routing decisions are left to inference.

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.

TDQS

A4.1/5.0
Disambiguation2/5

The set contains at least two genuinely confusable pairs: find_products vs research_shopping (explicitly cross-referencing each other in their own descriptions, with near-synonymous purposes of discovering products), and get_product vs explain_product vs compare_products, all of which return product records with prices and specs. The descriptions go to great lengths to disambiguate, which flags the very real boundary problem — an agent would struggle to pick correctly without reading thousands of characters.

Naming Consistency4/5

All eight names follow a clear verb_noun snake_case pattern (compare_products, get_product, search_catalog, request_quote, research_shopping). Minor deviations: singular/plural inconsistency across pairs (get_product vs compare_products), and research_shopping reads as a noun phrase rather than verb+object. Otherwise, predictable and clean.

Tool Count5/5

Eight tools is right in the sweet spot for a research/quoting workflow, and each earns its place: search, find, get, compare, explain, merchants, quote, and the heavy research job. The surface is neither bloated with near-duplicate operations nor so thin that the server feels like a stub.

Completeness4/5

The buyer-to-quote lifecycle is covered end to end: discovery (search_catalog, find_products), deep verification (get_product, explain_product, tier3 live lookup), comparison, merchant lookup, and a double opt-in request_quote flow that closes the loop. Minor gaps: no way to list prior quotes placed or track a quote's status after the initial response, and no explicit search-catalog pagination control, but agents can work around these.

Resources