Trusted, normalized, freshness-aware price data for AI. Provides normalized product pricing, flight offers, and decision tracking through the Model Context Protocol.
PriceMCP has 8 tools with basic schemas and descriptions, but significant gaps prevent higher scores. Tool names follow verb_noun convention (search_price, get_price, list_catalog). Descriptions exist but are brief (avg ~80 chars, below the 194-char baseline). Input schemas are present with type definitions, but parameter descriptions are sparse or missing. Output schemas are undocumented. Error handling is minimal. No tool annotations (readOnlyHint/destructiveHint). The record_decision tool (WRITE risk) lacks confirmation/dry-run pattern.
Compare prices across multiple offers for a product
Find the best offer for a product based on ranking policy
Get current best price and offers for a specific product
Get historical price observations for a product
List all products in the catalog with metadata
Record a user decision to save a product choice for watchlist tracking
Search for normalized prices across products and flights with freshness awareness
Tools 2-7 defined in Python agent files, not visible in TypeScript server source.
Output schemas undocumented. LLMs cannot infer what fields to expect from search_price, get_price, or compare_prices responses. Breaks downstream tool chaining.
record_decision is a WRITE tool with no confirmation/dry-run pattern. Agents can record decisions irreversibly without preview. Violates confirmation-request pattern.
Parameter descriptions sparse or missing. 'category' in list_catalog has no description. 'days' in get_price_history lacks range/format guidance. Violates tool-description pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2025-06-18+ | v2 |
Search for products by name or query
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints.