MCP server for IsThereAnyDeal (ITAD) API v3 — query game prices across storefronts, all-time historical low prices, active deals, and ITAD ID lookups.
Server has 5 well-named tools with clear descriptions and complete input schemas. All tools follow verb_noun naming (search_, lookup_, get_). Descriptions are substantive (100-200 chars, within baseline 194 avg). Input schemas use proper JSON Schema with types and descriptions for all parameters. However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract structured data. No error handling guidance, no parameter constraints (enums), no pagination documentation despite tools returning lists. Missing idempotency hints for read-only operations. Parameter descriptions lack format/range constraints (e.g., country code format, minDiscount bounds).
Get top active game discounts across digital storefronts filtered by minimum discount percentage.
Get current prices and discounts across digital storefronts (Steam, GOG, Epic, Humble, Fanatical, etc.) for one or more ITAD game UUIDs.
Get all-time historical low prices across digital storefronts for one or more ITAD game UUIDs.
Lookup ITAD game metadata and internal ITAD UUID using a Steam AppID or game title.
Search IsThereAnyDeal (ITAD) for games matching a title query to get their internal ITAD UUIDs.
Output schemas completely undocumented. LLMs cannot infer response structure, field names, or types. Prevents downstream tool chaining and forces agents to guess at response format.
No error handling guidance. Errors like 'ITAD API HTTP Error 404' or missing API_KEY give agents no recovery path. Should return actionable messages: 'Game not found. Try search_games() with a partial title.'
Parameter constraints missing. 'country' has no enum or format spec (should be ISO 3166-1 alpha-2). 'minDiscount' and 'limit' lack min/max bounds. 'query' has no length limits. Invites invalid LLM inputs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Pagination not documented. Tools return lists (deals, search results) but no limit/offset/cursor parameters visible. Large result sets will blow context windows. Baseline pattern requires pagination for list tools.
lookup_game has no required parameters. Both 'steamAppId' and 'title' are optional, creating ambiguity: which takes precedence? What if both are missing? Should require at least one via schema validation.