MCP server for Amazon shopping using Product Advertising API
This MCP server demonstrates moderate quality with a mixed profile. Tool naming follows verb_noun conventions (create-cart, add-to-cart, search-products), which is appropriate. All 6 tools have descriptions present, though most are brief and lack context about when to use them over alternatives. Input schemas are visible and mostly well-formed using Zod validation with type constraints and descriptions. However, several tools have minimal parameter documentation, output schemas are not formally documented in the code, and error handling, while present, lacks the recovery guidance pattern recommended for LLMs. The tools themselves are reasonably composed (separate cart operations vs product operations), but lack some polish around parameter relationships and user-friendly identifier handling. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are present, which is notable given several tools perform writes (create-cart, add-to-cart, checkout).
Add an item to your existing Amazon shopping cart
Proceed to Amazon checkout with your current cart
Create a new Amazon shopping cart with an item
Get detailed information about a product by ASIN
Search for products on Amazon
View your current Amazon shopping cart contents
Output schemas are not formally documented. Tool definitions show input parameters with Zod schemas, but return types are not declared in the tool registration. LLMs cannot predict what fields a tool returns, forcing inference from description text alone.
Tool descriptions are too brief (5-8 words) and lack context about when to use each tool, what it returns, and dependencies.
No tool annotations present. Tools like create-cart, add-to-cart, and checkout perform writes and should be marked with destructiveHint=true; view-cart and search-products should have readOnlyHint=true. This metadata is critical for agent reasoning about safe retries and rollback.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 69 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Error handling lacks recovery guidance. Code returns isError=true with plain text messages (e.g., 'Failed to create cart. No cart information returned.'), but does not categorize errors as retryable/user-fixable/fatal or suggest next steps for the LLM.
Parameter relationships not documented. add-to-cart requires an active cart (cartManager.hasCart() check in code) but this dependency is not mentioned in the parameter description. Similarly, checkout requires an active cart but this is not stated upfront.
search-products returns results but has no pagination limit documented. If the API returns many results, the tool should cap output and provide next_cursor or page info. Description does not state max results returned or how to iterate.
Tools accept system identifiers (ASIN) but do not accept human-friendly names. Users say 'find me a blue coffee mug' (natural language), not 'ASIN B0123456789'. While search-products bridges this, get-product-details only accepts ASIN, forcing users through a search first.