Espresso Steals
Server Details
Espresso gear price history: live Amazon prices, 2+ years of daily data, BUY calls at verified lows.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct role: get_product is a single-item detail lookup by slug, search_catalog is filtered browsing, list_slots is taxonomy enumeration, and watch_price manages alerts. There is no meaningful overlap in purpose, so an agent can select confidently.
All four tools follow a clean verb_noun snake_case pattern (get_product, list_slots, search_catalog, watch_price). The convention is applied uniformly with no deviations.
Four tools are well-scoped for a focused espresso gear price-tracking site: browse, detail, taxonomy, and alerting. Each tool earns its place and nothing feels padded or redundant.
The core lifecycle of discover -> inspect -> watch is covered, and watch_price supports create/update. However there is no way to list or delete a user's existing watches, a minor gap agents must work around.
Available Tools
4 toolsget_productProduct price history and callARead-onlyIdempotentInspect
Full detail for one tracked product by slug: community sentiment, reference price and basis, date of the latest price observation, portafilter size (machines) or accessory size (sized accessories), superautomatic / manual-lever / hand-grinder flags, product URL and Amazon link.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | A slug from search_catalog. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior, so the description need not repeat safety. It does add the fact that this returns 'full detail' for a tracked product and lists the returned fields, which is useful context beyond annotations, but it omits any behavioral notes like caching or error handling. With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently lists the returned fields. It is dense but not bloated; every phrase earns its place by specifying a distinct piece of returned data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only lookup tool with full schema coverage and annotations, the description is nearly complete: it tells what the tool returns and implies it retrieves a single product by slug. It falls short only by not clarifying how this differs from search_catalog or when to prefer it, but that is minor given the simple contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% – the single 'slug' parameter is fully described in the schema, including its origin from search_catalog. The description adds no parameter details beyond what the schema provides, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (retrieves) and resource (one tracked product), and then enumerates the exact fields returned: sentiment, price, date, size, flags, URLs. This is precise enough that an agent immediately knows what it gets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus siblings like search_catalog (for finding slugs) or watch_price (for setting alerts). The schema hints 'slug from search_catalog', but the description itself gives no usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_slotsParts of an espresso setupARead-onlyIdempotentInspect
The slots an espresso setup is built from (machine, grinder, scale, tamper…), with what each is for. Use the ids as search_catalog's slot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world. The description adds that each slot includes 'what each is for', clarifying the return content, but does not cover pagination, format, or any edge behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the resource definition and followed by the actionable usage note. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only list tool with rich annotations and no output schema, the description covers what is returned and how to use it. It could specify the return structure (e.g., list of objects with id and description) but is otherwise sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline of 4 applies. The description references search_catalog's `slot` parameter, which is useful context for the agent's next call but not a description of this tool's own inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (espresso setup slots) and its scope (machine, grinder, scale, tamper…) with what each is for. It implies a list operation and links to search_catalog's `slot` parameter, but does not explicitly state the verb or distinguish itself from siblings like get_product or watch_price beyond that link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It instructs the agent to use the returned ids as search_catalog's `slot`, giving a clear primary use case. It offers no explicit exclusions or comparisons to sibling tools, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_catalogSearch the espresso catalogARead-onlyIdempotentInspect
Search the espresso gear this site tracks (every result has a live Amazon price and, when it is at a genuine low, a BUY call computed from its own price history; otherwise no call). Filter by slot (the role a product plays in a setup), free-text words matched against name/brand/notes, a price band, a brand, or on-sale only. Returns up to limit products with price, verdict and a one-line note. Call it more than once with different filters; broaden if a search returns nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | No | Restrict to one slot. Omit to search every slot. | |
| brand | No | Only this brand (case-insensitive). | |
| limit | No | Max results. Default 12. | |
| query | No | Free-text words to match (any word matches), e.g. "hand burr", "lever", "dual boiler". | |
| max_price | No | Only products at or under this USD price. | |
| min_price | No | Only products at or over this USD price. | |
| on_sale_only | No | Only products at a good price today (verdict = buy). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's added value is the result semantics: a live Amazon price per item and a BUY call only when the price is a genuine low against its own history, otherwise none. That is meaningful domain behavior beyond the annotations. It stops short of stating result ordering or empty-result behavior beyond "broaden".
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads what the tool searches and what a result carries, then lists filters compactly. The parenthetical about the BUY call is long and slightly interrupts the flow, but every sentence carries information and nothing is redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the burden of describing returns (up to limit products with price, verdict and a one-line note) and does so adequately. Missing pieces are result ordering/relevance ranking and any indication of how many filters combine, which an agent might want for a 7-parameter search.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 genuine meaning: it glosses "slot" as "the role a product plays in a setup" and specifies that free-text matches name/brand/notes, which the schema does not say. It also frames the price parameters as a band and confirms on-sale maps to verdict=buy, closing the gap between the enum-ish naming and actual behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Search the espresso gear this site tracks") and immediately scopes what a result contains. It is clearly distinguishable from siblings get_product (single lookup), list_slots (enumeration) and watch_price (subscription), so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs iterative use ("Call it more than once with different filters; broaden if a search returns nothing"), which is real operational guidance for a filter-heavy search tool. It does not, however, name when to prefer get_product or list_slots instead, so the sibling boundary is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_priceWatch a price by emailAIdempotentInspect
Email the user when a product is at a good price (a verified low), or at or under a target price they name. Use after search_catalog/get_product when the user wants to be told when to buy. Ask the user for their email; never invent or reuse one. One watch per email per product; calling again updates the target. Each alert links to the product page and carries an unsubscribe link.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | A slug from search_catalog or get_product. | |
| Yes | The user's email address, given by the user in this conversation. | ||
| target_price | No | Optional USD price to alert at or under. Omit to alert on the next verified low. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, idempotentHint=true and destructiveHint=false. The description adds real behavior: an email is actually sent on trigger, duplicate handling ("one watch per email per product; calling again updates the target" — the semantic behind idempotentHint), and alert payload (product link + unsubscribe). It doesn't cover delivery timing, rate limits, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences, front-loaded with the trigger and the usage condition, then the duplicate/update semantics, then the alert contents. Every sentence carries distinct information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by describing what the alert contains (product page link, unsubscribe link) and what re-calling does. It omits what a successful call returns to the agent (confirmation/ID), which is the only meaningful gap for a 3-parameter mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents slug, email and target_price, including the omit-to-use-verified-low behavior. The description reinforces email provenance ("never invent or reuse one") but adds no new syntactic or format detail beyond the schema — baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ("Email the user when a product is at a good price... or at or under a target price") with the trigger condition spelled out. It also names the sibling tools (search_catalog/get_product) as prerequisites, so the agent can place it in the workflow without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use after search_catalog/get_product when the user wants to be told when to buy" gives explicit sequencing and intent, and "Ask the user for their email; never invent or reuse one" is a concrete precondition. It stops short of naming when NOT to use it (e.g. one-off price checks), so it is not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
get_product - First observed
list_slots - First observed
search_catalog - First observed
watch_price
Related MCP Connectors
Price comparison across partner retailers. Read-only, 90-day history, disclosed affiliate.
Search 86 US retailers — 260M+ products with real-time pricing, stock, and price history.
Curated, human-reviewed deal feed for AI agents — live deal search + price watches. No auth.
Real-time Amazon prices, product search, 90-day history, AI forecasts, and price drop alerts.
Related MCP Servers
- AlicenseAqualityCmaintenanceLive Amazon marketplace data for AI agents: product details, prices, reviews, keyword search, best-sellers, deals, offers and stock, and seller profiles across 20 marketplaces.12MIT
- FlicenseNot gradedqualityCmaintenanceMonitors and analyzes product prices across major e-commerce platforms (Taobao, JD, PDD, 1688, Amazon) with tools for price alerts, competitor comparison, market trends, and deal detection.-

Easyparserofficial
AlicenseAqualityBmaintenanceReal-time, structured Amazon data for AI agents across 21 marketplaces: product details, seller offers, search results, 12-month sales history, Best Sellers Rank, package dimensions, and seller intelligence. 16 tools including free bulk-job monitoring and account usage tracking, available as a hosted endpoint or via npx.1728 npmMIT
idealo MCP Serverofficial
AlicenseNot gradedqualityFmaintenanceEnables product search, price comparison, and price history analysis across 6 European marketplaces (DE, AT, GB, FR, IT, ES).19MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.