MCP server for the Canopy API, providing access to Amazon product data including pricing, reviews, stock levels, and search functionality across multiple Amazon marketplaces
Canopy API MCP demonstrates solid overall quality with consistent naming, clear descriptions, and well-structured input schemas. All 13 tools follow verb_noun naming conventions (all starting with 'get_'). Descriptions are substantive (ranging 80-230 chars, within the 10-1024 baseline). Input parameters consistently include type definitions and descriptions. However, the server lacks documented output schemas, critical for helping LLMs understand what data they receive and plan downstream calls. All tools are read-only Amazon product lookup operations, so error handling is relatively simple, but there's no explicit guidance on recovery paths. Tool composition is sound: each tool has one responsibility, parameter naming is consistent (asin, gtin, domain are reused), and parameter descriptions explain constraints (e.g., domain enum with 14 marketplaces). The 'xmcp' framework with Cloudflare Workers suggests HTTP transport and stateless design. No evidence of secrets exposed as parameters. Main gaps: undocumented output schemas and lack of error-handling patterns.
Look up the ASIN for an Amazon product by its GTIN (ISBN, UPC or EAN code).
Get detailed information about an Amazon author including their books.
Get autocomplete suggestions for Amazon search terms.
Get the list of Amazon best seller categories. Useful for discovering categoryIds to pass to get_amazon_bestsellers.
Get Amazon best-selling products for a category. Provide either categoryId or url.
Get the root level Amazon product category taxonomy.
No documented output schemas. Tool definitions include input schemas but LLMs cannot see what fields, types, and structure each tool returns. This prevents LLMs from planning subsequent tool calls or extracting relevant data from responses.
Pagination handling unclear. Several tools accept 'page' or 'limit' parameters, but descriptions do not specify whether limits are enforced, what the default page size is, or whether a total count is returned. Best-seller and deals tools mention '20-50 results typically available' but don't commit to specific behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | A | 82 | 2025-06-18+ | v2 |
| 2026-03-09 | F | 34 | - | v1 |
Get detailed information about a specific Amazon category including products and subcategories.
Retrieve current deals from Amazon. Returns a paginated list of products currently on deal, including deal-specific information like discount percentages and deal badges.
Look up the GTIN (ISBN, UPC or EAN code) for an Amazon product by its ASIN.
Get the list of seller offers (and Buy Box info) for an Amazon product by ASIN, URL, or GTIN.
Fetch sales estimates for an Amazon product by ASIN, URL, or GTIN.
Fetch stock level estimates for an Amazon product by ASIN, URL, or GTIN.
Fetch the top customer reviews for an Amazon product by ASIN, URL, or GTIN. Each review includes the title, body, star rating, helpful votes, verified-purchase flag, reviewer, and any review images or videos.
No error-handling guidance. Tool descriptions do not explain what happens on invalid input (e.g., invalid domain, malformed ASIN), whether errors are retryable, or what the LLM should do next. A 'User not found' scenario should suggest an alternative lookup path.
Parameter relationships undocumented. Some tools accept multiple optional identifiers (e.g., get_amazon_product_offers accepts asin, url, and gtin). Descriptions do not clarify whether exactly one is required, which is preferred, or what happens if multiple are provided.
No chain-enabling response data. Tool descriptions do not specify what fields are returned in responses (e.g., does get_amazon_bestsellers return asin, title, price, rating? Can those fields be passed directly to get_amazon_product_offers?). Without visibility into response structure, LLMs cannot plan multi-step workflows.