Amazon MCP server: product search, price history (Camelizer-style), deals tracking, and affiliate-tagged purchase links
Amazon MCP has well-structured tool definitions with consistent naming (verb_noun pattern), comprehensive parameter schemas using Zod, and clear descriptions. All 10 tools are explicitly registered with input schemas and descriptions. However, output schemas are not formally documented, responses are text-wrapped rather than structured objects. Error handling provides context but lacks recovery guidance. Parameter descriptions are solid (72 chars avg) but some lack format constraints. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Missing pagination for list_price_watches and get_price_log despite potentially large result sets.
Create a price watch for a product. When the price drops to or below the target, the watch is marked as triggered. Watches are deduplicated by (asin, marketplace, targetPrice).
Compare a product's price and availability across multiple Amazon marketplaces. Returns a table with marketplace, current price, currency, availability, and affiliate buy link for each marketplace.
Fetch today's deals for a marketplace, optionally filtered by category and minimum discount. Returns deal title, current price, list price, discount percentage, and affiliate buy link for each deal.
Price history and buy/wait analysis for an ASIN. Builds a LOCAL price history over time: each lookup records the current price, then computes lowest/highest/average and a buy-wait verdict from your own tracked data. Also makes a best-effort attempt at CamelCamelCamel (frequently Cloudflare-blocked) and merges its data when available. The more you look up a product, the richer its trend.
Retrieve the local price history log for a product, showing all recorded prices over time.
Output schemas not formally documented. Tools return text-wrapped responses instead of structured JSON objects. LLMs cannot reliably extract fields for downstream tool chaining (e.g., ASIN from search results to pass to get_product).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications in metadata. Tools like add_price_watch (WRITE), remove_price_watch (REVERSIBLE), and update_price_watch (WRITE) should declare their side effects to the protocol.
list_price_watches and get_price_log lack pagination (limit/offset, next_cursor). If a user accumulates many watches or price log entries, results could exceed context window. No total count returned.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Fetch full details for a product by ASIN: title, price, rating, features, availability, brand, breadcrumbs, plus an affiliate buy link. Also logs the price to local history.
List all active price watches. Optionally check current prices now (live scrape) and update watch status.
Remove a price watch by ID.
Search Amazon for products by keyword. Returns title, price, rating, image and an AFFILIATE purchase link (with your Associates tag) for each result.
Manually update a price watch's last-seen price and trigger status.
Error responses are generic text (e.g., 'Search failed on Amazon US: ...'). No structured error classification (retryable vs user-fixable vs fatal) or recovery guidance. LLM cannot determine if it should retry, ask user, or abandon.
compare_marketplaces description is vague ('Returns a table...'). Does not explain when to use it vs get_product on multiple marketplaces. No guidance on expected output structure or field names.