Espresso Steals
by espressosteals.com · remote · no sign-in to list tools · v1.0.0 · published by com.espressosteals
Espresso gear price history: live Amazon prices, 2+ years of daily data, BUY calls at verified lows.
4 tools: 1 change things and 3 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things1Claude Code: ask: see these tools
- Only reads3Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http catalog https://espressosteals.com/api/mcpFindings
Matches of fixed checks, with the text they matched.
- Highsearch_catalog
The description contains "Never tell the user", an instruction to keep something from the user.
What this check looks forMatched text
description: "...`note` says what was and was not found. Never tell the user the site has nothing; tell them what it..."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
4 tools
Changes things 1Claude Code: ask
watch_priceEmail the user when a product is at a good price (a verified low), or at or under a target price they name.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it 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. The first time an address is used it receives a confirmation email and the watch arms when they click it — tell the user to check their inbox. Each alert links to the product page and carries an unsubscribe link.
Annotations the server declares
- title: Watch a price by email
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 3Claude Code: allow
get_productFull detail for one product by slug: community sentiment, reference price and basis, date of the latest price observation, portafilter size (machines) or accessory size (sized acce…No findings
Why it is in this group
- The name "get_product" says "get": a word for reading.
Description, as the server wrote it Full detail for one 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. A known product with no price returns price null, the reason, and priced alternatives. An unknown slug returns did_you_mean.
Annotations the server declares
- title: Product price history and call
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_slotsThe slots an espresso setup is built from (machine, grinder, scale, tamper…), with what each is for.No findings
Why it is in this group
- The name "list_slots" says "list": a word for reading.
Description, as the server wrote it 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`.
Annotations the server declares
- title: Parts of an espresso setup
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
search_catalogSearch the espresso gear this site tracks.1 finding
Why it is in this group
- The name "search_catalog" says "search": a word for reading.
Findings
- High
The description contains "Never tell the user", an instruction to keep something from the user.
What this check looks forMatched text
description: "...`note` says what was and was not found. Never tell the user the site has nothing; tell them what it..."
Description, as the server wrote it 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.
Annotations the server declares
- title: Search the espresso catalog
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http catalog https://espressosteals.com/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__catalog__search_catalog",
"mcp__catalog__get_product",
"mcp__catalog__list_slots"
],
"ask": [
"mcp__catalog__watch_price"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as catalog. Review it before you use it.