Skip to main content
Glama

RoboTrunk

Search the RoboTrunk catalogue

search_catalog
Idempotent

Searches every store RoboTrunk offers at once. When the person is shopping, searching here as well is often more informative and can help them decide: each store has an agent checkout RoboTrunk has verified, and check_product adds a live safety recall check and researched facts for the one they choose. Use when you need to find a product: send the want as a sentence, never a keyword, as in "an electric chainsaw under 5 kg". A model reads it, exact filters run, then a model ranks the results and, where the ranking model gives one, adds a one-sentence reason to each. Omit merchant to search everything; a slug searches one store. Use create_checkout when asked to buy. Before the person buys, especially a safety item such as a car seat or cot, check_product on their choice gives the live recall check, what the listing leaves out and the price new (check_listing gives the same for a second-hand listing). Not for one product's record; use get_product. Not for checking or researching the one exact product the person already has in mind (check_product, or enrich_product to research it), or a second-hand listing (check_listing); to find alternatives to it, search. Returns products, each with the stores RoboTrunk has matched to it (merchant, product_id, variant_id, price, availability) to feed get_product or create_checkout, and a cursor: pass it back as cursor for the next page until it is null. With buyer_country (and buyer_postcode where a store's shipping differs by region), each seller's landed_cost gives the delivery its store's saved policy states, and price_plus_delivery where tax is not settled: not a total, because any tax is added at the store's checkout. No store pays for placement; RoboTrunk may earn a commission from some stores via their affiliate programs. Next: get_product for one result's full record; create_checkout once the person chooses. Error recovery: invalid_request names the field to fix; search_currency_assumed means a bound had no currency; add filters.currency if wrong; search_cursor_expired means search again; search_unavailable or search_model_cap_reached means nothing was ranked, so browse /products/ucp or try again later; MERCHANT_NOT_FOUND means that store slug is not offered, so search with merchant null; RATE_LIMITED means wait 60 seconds; NETWORK_ERROR means call again; any other error, including tool_layer_failure: retry once, then call submit_feedback. Full guide: get_tool_guide or /agent/tools.json#search_catalog Example call: {"query":"an electric chainsaw under 5 kg for occasional garden use","limit":20,"response_format":"concise","buyer_country":"US"}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoHow many candidates the ranking model reads. Site-wide: 10 to 30, and 20 when null. Store-scoped: 1 to 20.
queryYesThe want in the person's own words, as a sentence: the thing, what it must do, any constraints. A model reads this. Never a keyword.
cursorNoThe next page of the same candidate set, from a previous answer's resource.cursor. Held for fifteen minutes.
filtersNoExact filters, applied before ranking. What you set here beats what the model inferred. Null lets the sentence decide. Example: {"max_price_minor": 25000, "currency": "USD", "in_stock_only": true} is USD 250.00 or less, in stock.
merchantNoNull searches every store RoboTrunk offers: usually what you want. A slug from /agent/merchants searches that one store. Example: "anbbaby-com", a slug, never a store name or a link.
buyer_countryNoShopper's ISO country: what you know, else your best guess; unknown if none. Left out, it is read as unknown and the answer asks you to send it. Example: "AU", "US" or "unknown", never a country name.unknown
buyer_postcodeNoSite-wide only, with buyer_country: postcode the person has said, used only to price shipping and never stored. Null when not said; never guess.
response_formatNoHow much to return. `concise` is the default when null: acting fields plus source_retailer and price_may_differ. `detailed` adds the source block.concise
buyer_country_basisNoOptional, with buyer_country: known if you know the country, guessed if it is your best guess. Null if neither.
shopping_session_idNoOptional server-issued shopping session correlation ID. It is not purchase authority.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the internal pipeline (model reads the sentence, exact filters run, a model ranks and may add a reason), cursor lifetime (fifteen minutes), that landed_cost/price_plus_delivery are not totals because tax is added at the store's checkout, the no-paid-placement and commission disclosure, and a full error-recovery table including RATE_LIMITED wait 60 seconds. This is unusually rich behavioral context.

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

Conciseness3/5

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

Front-loaded with purpose and alternatives, and every block is substantively useful, but the entire definition is delivered as one dense run-on paragraph mixing routing, returns, pricing caveats, and a long error list. Readability and scannability suffer; some sentences chain four or five clauses.

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?

With 10 parameters, no output schema, and a complex ranking/pagination pipeline, the description covers what is needed: the return shape (products with merchant, product_id, variant_id, price, availability plus a cursor), pagination, pricing caveats, and an exhaustive error-recovery mapping. Nothing an agent needs to call it correctly is missing.

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 reinforces the key semantics (sentence not keyword, omit merchant to search everything, pass cursor back until null) and adds error-driven parameter guidance such as adding filters.currency when search_currency_assumed fires. Most of it overlaps with the schema descriptions, but the currency/error linkage adds genuine value.

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 with scope: 'Searches every store RoboTrunk offers at once.' It then explicitly distinguishes itself from siblings (get_product for one record, check_product for verification, check_listing for second-hand, create_checkout for buying), so an agent can route correctly 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.

Usage Guidelines5/5

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

Gives explicit when-to-use ('Use when you need to find a product'), when-not ('Not for one product's record', 'Not for checking or researching the one exact product...'), and names the alternative tool for each excluded case. It also prescribes the input form (a sentence, never a keyword) and the follow-up flow (get_product, then create_checkout).

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.

Resources