TCGdex MCP — multi-language open trading card game database (Pokémon TCG and more).
TCGdex MCP has well-structured tool definitions with clear naming (verb_noun pattern: search_cards, get_card, list_sets, get_set) and solid descriptions (avg 180 chars, within 10-1024 baseline). All tools have input schemas with type declarations. However, parameter descriptions are sparse, search_cards lacks descriptions for 'name' and 'limit' parameters; list_sets has empty properties. Output schemas are not documented, forcing LLMs to infer response structure. Error handling returns structured error objects but lacks recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite all tools being read-only. Response payloads are well-shaped (stripped API verbosity, include chaining IDs like card id/set id), but missing pagination guidance for potentially large result sets.
Look up a single Pokémon TCG (or other trading card game) card by its TCGdex id (e.g. "swsh3-136"). Returns full card details: category, rarity, hp, types, stage, set, illustrator, attacks, abilities, and a high-quality image URL.
Look up a single Pokémon TCG (or other trading card game) set by its TCGdex id (e.g. "swsh3"). Returns full set details: serie, release date, card counts, and the list of cards in the set.
List all Pokémon TCG (and other trading card game) sets/expansions in the TCGdex database, with id, name, and card counts. Use get_set with an id for the full set including its card list.
Search Pokémon TCG (and other trading card games) cards by name in the TCGdex card database. Returns brief matches (id, localId, name, image thumbnail). Use get_card with an id for full card details.
search_cards parameters 'name' and 'limit' lack descriptions in inputSchema. LLMs cannot infer that 'name' accepts partial matches or that 'limit' defaults to 30 with max 100.
list_sets inputSchema has empty properties object. No parameters are documented, even though the tool is discoverable. This violates the pattern that every parameter needs a description.
Output schemas are not documented anywhere. LLMs must infer response structure from descriptions alone. E.g., get_card returns 'attacks' and 'abilities' but their internal structure is not specified.
No tool annotations (readOnlyHint, idempotentHint). All four tools are read-only and idempotent, but this is not declared in the tool definitions. Agents cannot distinguish safe tools from destructive ones.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
Error responses return {error, message} but lack recovery guidance. E.g., 'Card not found' should suggest 'Try search_cards() to find the correct id.'