BuyWhere MCP server — product catalog tools for Claude Desktop, Cursor, and other MCP-compatible agents
BuyWhere MCP has solid naming conventions (all tools start with action verbs: search_, get_, compare_) and complete input schemas with type definitions. Descriptions are present and reasonably detailed (avg ~150 chars). However, output schemas are not documented, LLMs cannot predict response structure for downstream chaining. Parameter descriptions are good but lack explicit constraints (e.g., no enum for country codes, no min/max for limit). Error handling is basic (McpError wrapping) with no recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only. Composition is clean, each tool has one responsibility and tools chain well (search_products → get_product → get_price → get_affiliate_link).
Compare 2–5 products side-by-side. Returns structured differentiators, price range, pros/cons, and a best-value recommendation — purpose-built for AI agent decision-making.
Get the click-tracked BuyWhere affiliate link for a product. Share this link with users — it logs the referral and redirects to the merchant page. Always use this instead of raw product URLs when sharing links.
List available product categories in the BuyWhere catalog. Use this to discover what categories exist before searching or filtering.
Get current prices for a product across all available merchants. Returns a ranked list of listings with price, shipping, merchant rating, and stock status. Use this to find the cheapest place to buy a specific product.
Fetch full details for a single product by its BuyWhere product ID.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting) for downstream tool chaining or data extraction. Formatters exist (formatProduct, formatListing) but their output structure is not exposed in tool definitions.
No tool annotations (readOnlyHint, idempotentHint, destructiveHint). All 6 tools are read-only and idempotent, but this is not declared. Agents cannot infer safety properties without explicit hints.
Parameter constraints not formalized. 'country' lacks enum (should be ['sg', 'my', 'id', ...]). 'limit' has default=10 but no minItems/maxItems in schema (description says 1 - 50 but schema does not enforce). 'product_ids' in compare_prices has minItems=2, maxItems=5 in description but not in schema.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Search the BuyWhere product catalog using keywords or natural language. Returns matching products with title, price, availability, merchant, and URL.
Error handling lacks recovery guidance. McpError wrapping is present but error messages do not guide LLM on next steps (e.g., 'API error 404: product not found. Try search_products() to find the correct product_id.').
Pagination not implemented. search_products returns up to 50 results but no offset/page/cursor parameters. Large result sets could exhaust context window. No total_count or next_cursor in response structure.