Skip to main content
Glama

AirShelf Catalog

Discover and verify products for a need

find_products
Read-only

Discover candidate products for a buyer need. Takes a need in natural language (e.g. "best value home espresso machine", market "TH"), checks the verified catalog first, then uses live web discovery only when the catalog has no candidates. Returns up to 3 candidates with explicit fit accounting.

find_products is the quick candidate-list tool; research_shopping is the full verified-research job. For a specific brand+model, search_catalog is cheaper and returns the same live-lookup block on a miss.

Response fields: • candidates[].verification — "catalog-candidate" for a catalog starting point whose fit still needs checking, or "live-unverified" for a live page read during this run. • candidates[].status — "resolved" means both identity and the parsed buyer constraints were supported by the cited page; "abstain" means identity or need fit could not be established. Inspect constraint_check for matched, conflicting, and unverified requirements. • candidates[].constraint_check.receipts maps each receipt-backed matched requirement to its supporting source URL and trust label. • Candidates come from current web-search results, so they are a sample of what the market offers rather than a ranking. • status at the top level — "no_match" means discovery ran but no candidate was confirmed as satisfying the need; "disabled", "rate_limited", or "unavailable" means no discovery ran.

• live_discovery.status="unavailable" means receipted catalog candidates were returned while live discovery was unavailable.

Optional market (ISO 3166-1 alpha-2) biases discovery and marketplace checks toward seller pages serving that country and scopes the lookup cache. "Available in " means the seller page serves that market, not that stock is guaranteed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
maxNoMax candidates to verify (each costs a live lookup; capped at 3).
needYesThe buyer need in natural language, e.g. "quiet mechanical keyboard for open office" or "best value home espresso machine".
marketNoBuyer market as ISO 3166-1 alpha-2 country code (e.g. "TH"). Biases discovery and marketplace checks toward seller pages serving that country and scopes the cache; availability is not a stock guarantee.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
needNo
errorNo
marketNo
reasonNo
statusNo
took_msNo
guidanceNo
candidatesYes
verificationNo
live_discoveryNo
serp_consideredNo

TDQS

A5/5.0
Behavior5/5

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

Even with readOnlyHint and openWorldHint annotations, the description discloses additional behaviors: it prioritizes catalog over live discovery, explains statuses (top-level and per-candidate), clarifies that the list is a sample, and defines 'available' relative to market. It also describes cache scoping and the meaning of statuses like 'unavailable'. No contradiction with annotations.

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

Conciseness5/5

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

The description is organized with bullet points and front-loads the core purpose. Every sentence adds value, distinguishing behavior, outcomes, and statuses. No redundancy or filler.

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?

Given the tool's complexity (multiple statuses, fallback behavior, cache scoping), the description fully covers operational details: explains catalog-first strategy, live discovery fallback, result fields, and failure modes. The output schema likely covers return structure, but the description adds necessary context.

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?

Despite 100% schema coverage, the description adds meaningful semantics: it explains how `market` biases discovery and scopes cache, and clarifies that availability is not a stock guarantee. It also elaborates on `need` with examples and the max of 3 candidates (implied). This goes beyond the schema's field 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 clearly states this tool 'List ALL candidates' and explicitly differentiates it from siblings: it is the 'quick candidate-list tool' while research_shopping is a 'full job' and search_catalog handles specific brand+model. The verb 'list' and resource 'candidates' are specific and unambiguous.

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?

The description provides explicit guidance on when to use this tool versus alternatives: it is for natural-language needs, checks the catalog first, and only falls back to live discovery if necessary. It also directs users to search_catalog for specific models and to research_shopping for deeper research.

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