Skip to main content
Glama

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

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. Changed1 schema field changed
    • changedInput schema / properties / filters / properties / merchant_slug / description
      Previous value: -"One store, the same effect as naming it in merchant."New value: +"One store: this site-wide search then reads only that store's listings, keeping filters, the cursor and the site-wide limit of 10 to 30. Naming the store in merchant instead runs that store's own search, which takes a limit of 1 to 20 and no filters or cursor."
  2. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover safety hints (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=true), but the description adds substantial context beyond them: the model-ranking pipeline, cursor expiry, landed_cost/tax caveats, commission disclosure, buyer-country behavior, and a full error-recovery map. This is rich behavioral disclosure.

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?

It is front-loaded with purpose and usage, and most sentences carry operational detail. However, the description is very long and dense, with some run-on passages that could be split or trimmed without losing agent-required information.

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?

Despite having no output schema, the description explains the return shape (products with store matches to feed get_product/create_checkout, plus a cursor), pagination, error semantics, and next steps. Given the tool’s complexity and 10 parameters, it is complete enough for correct invocation.

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, but the description adds meaning beyond the schema: it explains that merchant null searches all stores while a slug searches one, that cursor should be passed back until null, and that buyer_country/buyer_postcode affect landed_cost. It does not restate every parameter, but the added semantics are useful.

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 ("Searches every store RoboTrunk offers at once") and explicitly distinguishes this from sibling tools like get_product, check_product, check_listing, and create_checkout. An agent can tell exactly what this tool is for and what it is not for.

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 guidance ("When the person is shopping"), how to formulate the query ("send the want as a sentence, never a keyword"), when to omit merchant, when to use create_checkout, and detailed alternatives for single-product checks. It also names next steps, making routing unambiguous.

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