Skip to main content
Glama

Search the espresso catalog

search_catalog
Read-onlyIdempotent

Search the espresso gear this site tracks. products have a live Amazon price and, when at a genuine low, a BUY call computed from their own price history; otherwise no call. Filter by slot (the role a product plays in a setup), free-text words (brand and model names, partial words and small typos are fine), a price band, a brand, or on-sale only. Products we know but cannot price (sold direct by the maker, e.g. Niche, Lelit, Decent) come back in known_unpriced with no price and the reason: say so, quote the note, and link the url. When nothing in products matches, alternatives lists the closest tracked products with live prices and note says what was and was not found. Never tell the user the site has nothing; tell them what it has.

Input Schema

NameRequiredDescriptionDefault
slotNoRestrict to one slot. Omit to search every slot.
brandNoOnly this brand (case-insensitive; "Niche Coffee" finds Niche).
limitNoMax results. Default 12.
queryNoFree-text words to match (any word matches; names and brands rank first), e.g. "niche", "bambino plus", "hand burr", "dual boiler".
max_priceNoOnly products at or under this USD price.
min_priceNoOnly products at or over this USD price.
on_sale_onlyNoOnly products at a good price today (verdict = buy).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / brand / description
      Previous value: -"Only this brand (case-insensitive)."New value: +"Only this brand (case-insensitive; \"Niche Coffee\" finds Niche)."
    • changedInput schema / properties / query / description
      Previous value: -"Free-text words to match (any word matches), e.g. \"hand burr\", \"lever\", \"dual boiler\"."New value: +"Free-text words to match (any word matches; names and brands rank first), e.g. \"niche\", \"bambino plus\", \"hand burr\", \"dual boiler\"."
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the bar is low, yet the description adds substantial undisclosed behavior: the BUY call is derived from the product's own price history (so a null call is meaningful, not a failure), unpriced-but-known products land in `known_unpriced` with a reason, and `alternatives`/`note` backfill empty results. That is real operational context beyond the annotations.

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?

Front-loads what the tool searches and what it returns, then moves to filters and fallback behavior; every sentence carries weight. It is on the long side and the response-handling instruction ("say so, quote the note, and link the url") is arguably prompt guidance rather than tool semantics, but nothing is redundant 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?

With no output schema, the description carries the burden of explaining return shape and it does: `products` with price/BUY call, `known_unpriced` with reason, `alternatives` with `note`. For a seven-parameter, zero-required search tool this is complete enough to call and interpret 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 baseline is 3, but the description adds semantics the schema does not: `slot` is defined as "the role a product plays in a setup," and `query` is characterized as tolerant free text ("partial words and small typos are fine") rather than exact matching. It loosely references the price band and brand filters, though it does not add anything about `limit` or the price bounds beyond the schema.

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 ("Search the espresso gear this site tracks") plus the scope of the catalog, and immediately contrasts the two result shapes (live Amazon price with a computed BUY call vs. products with no call). An agent can tell this is a fuzzy multi-filter search tool, distinct from get_product, list_slots, and watch_price, 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 Guidelines4/5

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

Gives concrete guidance on filter combinations (slot, free text, price band, brand, on-sale) and strong directive handling for edge outcomes: quote the `known_unpriced` note and link the url, use `alternatives` when `products` is empty, and never tell the user the site has nothing. What is missing is explicit routing versus the siblings (e.g. when to prefer get_product for a single item or watch_price to track one).

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