pokemon-tcg-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pokemon-tcg-mcpWhat's the current meta snapshot?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pokemon-tcg-mcp
An MCP (Model Context Protocol) server that gives Claude access to Pokémon TCG card data and competitive meta information, over stdio.
Data sources
pokemontcg.io API v2 — card database, legality data, cardmarket (EUR) and TCGplayer (USD) prices.
Limitless TCG — metagame share from major tournaments (light, cached fetch of the public
/decksstats page; Limitless' documented API only covers its online tournament platform, so there is no JSON endpoint for this table).
Tools
Tool | What it does |
| Search cards by name, raw Lucene |
| Full details for one card (by id, or exact name + optional set code): text, image URL, prices. |
| "What cards do X?" — forgiving keyword search across attack/ability/rules text, ranked by match count. |
| Validate a TCG Live decklist export: 60 cards, max 4 per name (basic energy exempt), 1 ACE SPEC max, standard legality, price estimate in EUR. |
| Current top archetypes with points/share from Limitless (or a clear "source unavailable" message). |
| EUR/USD prices for every printing of a card; cheapest standard-playable copy highlighted. |
| Parsed & resolved view of your local collection file: counts, sets, kinds, standard legality, summary totals. |
| Add cards to the collection (TCG Live line format). Ambiguous bare names change nothing and list the candidate printings. |
| Decrement/drop cards, matched against the file itself (no API). Ambiguity and over-removal are refused/clamped with notes. |
| Deterministic deck builder over your collection: evolution-line cores, starter/draw/search/switch/energy proportions, check_deck validation — and for two decks, a counter-score minimized across rebuilds. |
| Turn card identifications transcribed from photos into verified printings: quantities optional, |
| Journal a kitchen-table session (card lines + built decks) as a timestamped JSON file. Name collisions append |
| All saved sessions: name, date, card count, deck names. |
| Reload a session's lines and decks in the formats the other tools accept. |
The server also registers two MCP prompts for one-tap mobile flows:
kitchen-table (photograph cards on the table → resolve → build 1–2 decks →
save the session) and table-judge (explain what a card does from verified
data, with a play example). The vision step — reading the photos — happens in
the Claude client; this server only ever receives text lines and never
calls any LLM API.
Related MCP server: Pokemon TCG Card Search MCP
Setup
Requires Node 20+.
npm install
npm run build
npm test # unit tests (parsers, query builder, deck builder, counter-score, collection)API key (optional but recommended)
The server works without a key, at lower rate limits. Get a free key at
dev.pokemontcg.io, then export it as
POKEMONTCG_API_KEY.
Collection file (for the collection & deck-builder tools)
Your collection lives in a plain text file — same line format as TCG Live
decklist exports, one printing per line, # comments allowed, section
headers optional and ignored:
# binder, sorted 2026-07
Pokémon:
4 Slowpoke PBL 29
2 Slowbro PBL 21
2 Mega Slowbro ex PBL 22
Trainer:
4 Jacinthe POR 75
Energy:
20 Basic Psychic Energy SVE 5The path comes from POKEMON_COLLECTION_PATH (default: ./collection.txt
relative to the server's working directory). Set it alongside the API key:
claude mcp add pokemon-tcg \
--env POKEMONTCG_API_KEY=your-key-here \
--env POKEMON_COLLECTION_PATH=/absolute/path/to/collection.txt \
-- node /absolute/path/to/pokemon-tcg-mcp/dist/index.jsYou can edit the file by hand or through collection_add /
collection_remove — comments and unrelated lines are preserved. Lines that
fail to resolve on pokemontcg.io show up as warnings and are skipped by the
deck builder; they never break anything.
Add to Claude Code
claude mcp add pokemon-tcg --env POKEMONTCG_API_KEY=your-key-here -- node /absolute/path/to/pokemon-tcg-mcp/dist/index.jsAdd to Claude Desktop
claude_desktop_config.json:
{
"mcpServers": {
"pokemon-tcg": {
"command": "node",
"args": ["/absolute/path/to/pokemon-tcg-mcp/dist/index.js"],
"env": { "POKEMONTCG_API_KEY": "your-key-here" }
}
}
}How it works
The server speaks MCP over stdio: Claude launches node dist/index.js as a
child process, calls the tools above, and gets compact markdown back
(designed to be read by an LLM, not a UI — condensed card text, no giant
JSON dumps).
src/
├── index.ts server entry — registers tools, connects stdio transport
├── tools.ts the 6 original MCP tools (zod-validated inputs, markdown outputs)
├── tools-collection.ts collection_list / collection_add / collection_remove
├── tools-build.ts build_decks (rendering + acquisition suggestions)
├── tools-scan.ts resolve_scanned (kitchen-table photo workflow)
├── tools-session.ts session_save / session_list / session_load
├── prompts.ts kitchen-table + table-judge MCP prompts
├── scan.ts parser for messy scanned card lines (pure, tested)
├── scanresolve.ts scanned-line resolution: EN codes, JP sets by name, /NNN totals, name-only
├── jpsets.ts JP→EN set-code + card-name tables (plain constants, easy to extend)
├── session.ts session journal records over the Storage interface (pure, tested)
├── storage.ts Storage interface + FsStorage (SESSIONS_DIR, default ./sessions)
├── deckbuilder.ts deterministic deck engine: evolution lines, core scoring, assembly (pure, tested)
├── counterscore.ts 5-component weighted counter-score between two decks (pure, tested)
├── effects.ts text-pattern detectors: draw/search/switch/status/denial/snipe… (pure, tested)
├── collection.ts collection file parse/mutate, comment-preserving (pure, tested)
├── resolve.ts shared decklist-line → card resolution (one query per set code)
├── validate.ts shared deck rule checks (size, ≤4/name, ACE SPEC, legality)
├── tcgio.ts pokemontcg.io v2 client (cached searches, sets, card-by-id)
├── sets.ts TCG Live set code → pokemontcg.io set-id mapping (from /sets)
├── qbuilder.ts Lucene `q` builder + keyword extraction (pure, tested)
├── deck.ts TCG Live/PTCGO decklist parser (pure, tested)
├── legality.ts standard legality from regulation marks (see Design notes)
├── limitless.ts Limitless meta table (light, cached fetch — marked in code)
├── format.ts markdown/price/text-condensing helpers
├── toolutil.ts shared MCP result/guard plumbing
├── http.ts fetch with timeout, retry-with-jitter, User-Agent
└── cache.ts LRU + TTL cache with in-flight request dedupA typical check_deck call: parse the decklist → group lines by set code →
resolve each code to set ids via the cached mapping → one API query per set
ORing the card numbers → name-search fallback for anything unresolved → run
the rule checks (60 cards, ≤4 per name, ≤1 ACE SPEC, regulation-mark
legality) → render the problems list, per-card table and EUR estimate.
Example prompts
"Find all standard-legal psychic supporters that heal."
"What cards exist that prevent abilities that knock out their own user?"
"Check this decklist: … (paste a TCG Live export)"
"What's the current standard meta looking like?"
"How much does the cheapest Ethan's Ho-Oh ex cost?"
Collection & deck-builder flows:
"Add these pulls to my collection: 4 Jacinthe POR 75, 2 Slowpoke PBL 29" →
collection_add, then "what's in my collection?" →collection_list."Build me two 60-card decks from my collection that won't counter each other" →
build_decks {deck_count: 2}: two lists plus the counter-score breakdown (weakness overlap, status vs no-cure, energy denial, snipe vs bench, tempo) and a verdict — the builder rebuilds up to 5 times, swapping the worst offenders, before settling."Build one deck around Aromatisse" →
build_decks {must_include: ["Aromatisse"]}— the Spritzee/Aromatisse line is forced into the core and the rest is assembled around it."Make a 40-card home-play deck, anything I own goes" →
build_decks {deck_size: 40, format: "unrestricted"}(regulation marks ignored, copy limits still enforced, proportions scaled by 2/3)."What should I buy to round this deck out?" →
build_decks {owned_only: false, max_proxies: 5}— gap-filling cards are suggested separately with prices, never silently mixed into the list.
Kitchen-table flows (the kitchen-table prompt walks through this):
Photograph the cards on the table → the client transcribes lines like
2 Slowpoke PBL 29,Mega Slowbro ex 031/084,ヤドラン m5 029,Jacinthe→resolve_scannedverifies every printing, flags what needs a retake, and emits clean Live-format lines.collection_addthe clean lines,build_decks {deck_size: 40}for a quick game, thensession_saveso next week's session cansession_loadthe same pool."What does this card do?" (photo or name, JP or EN) → the
table-judgeprompt:resolve_scanned/get_cardfor ground truth, then a plain-language explanation with a play example.
Design notes
Standard legality is computed from regulation marks, not the API's
legalities.standardfield. The live pokemontcg.io data lags rotation in both directions (rotated reg-G cards still say "Legal"; the newest reg-J sets say "Not Legal"). The server derives the currently legal marks from the date (three newest marks after the ~April rotation; anchor G = 2023) and treats basic energy as always legal. Override withSTANDARD_REGULATION_MARKS=H,I,Jif the schedule ever changes.Set-code mapping: TCG Live codes (
PBL,POR,TWM, …) are resolved via theptcgoCodefield of/sets, fetched once and cached 24h. Deck resolution queries useset.id(the embeddedptcgoCodeon card documents is missing for several sets). Unknown codes fall back to name search and say so in the output.Deck builder is deterministic code, not LLM guesswork. Collection Pokémon are grouped into evolution lines via
evolvesFrom, scored as attacker cores (damage, energy efficiency, HP, prize liability, abilities), and the deck is assembled to hard proportions: 8+ starter basics per 60 cards (mulligan threshold), 6–10 draw supporters, 2–4 switch effects, 12–15 energy matched to the cores' attack costs — scaled by 2/3 for 40-card decks. Every built deck passes the same rule checks ascheck_deckbefore it is returned.Counter-score: for
deck_count=2, five weighted 0–10 components (weakness exploitation ×3, status vs no-cure ×2, energy denial vs expensive attacks ×2, snipe vs bench reliance ×2, tempo mismatch ×1) are computed from text patterns over the decks' own cards; the weighted average <3 is a balanced pair, 3–6 playable, >6 rebuild recommended. The builder retries up to 5 times, banning the worst offenders, and keeps the best pair seen.Scanned-card resolution never trusts what it can't verify. EN set code
number is authoritative (a disagreeing scanned name gets a warning); mapped JP sets (
m5→PBL, table injpsets.ts) are matched by name because JP collector numbers don't line up with EN numbering;031/084totals infer candidate sets from/setsprinted totals; unmapped JP codes and untranslatable JP names are reported explicitly instead of guessed. Lookups are batched (one query per set code / JP code / printed total).
Sessions are dumb JSON files in
SESSIONS_DIR(default./sessions), one per session, written through a smallStorageinterface so another backend could replace the filesystem without touching tool logic. Name collisions append-2rather than overwriting.Caching: in-memory LRU with TTL — cards/sets 24h, meta 1h. Identical concurrent requests are deduplicated.
Politeness: identifying User-Agent, 10s timeouts, a single retry with jitter on 429/5xx/timeout, bounded page fetches (never loops).
Smoke test
End-to-end acceptance scenarios through a real MCP client (needs network):
npm run build && npm run smoke # all scenarios
node scripts/smoke.mjs deck meta # a subsetLicense
Available Tools
14 toolsbuild_decksBuild decks from the collectionA
Deterministic deck builder over the local collection file: groups Pokémon into evolution-line attacker cores (evolvesFrom), assembles starters (8+ basics for 60 cards), draw supporters, search, switch and matched energy to the exact deck size, and validates with the check_deck rules. With deck_count=2 the pair is rebuilt up to 5 times to minimize a counter-score (weakness exploitation, status vs no-cure, energy denial, snipe vs bench, tempo) and the breakdown is reported.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | unrestricted = home play: regulation marks ignored, copy limits still enforced | standard |
| deck_size | No | 40-card decks (4 prizes) use guideline proportions scaled by 2/3 | |
| deck_count | No | ||
| owned_only | No | false: also suggest up to max_proxies cards to acquire | |
| max_proxies | No | ||
| must_include | No | Card names to build around, e.g. ['Aromatisse'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does this admirably, explaining the deterministic algorithm, the grouping by evolution lines, exact deck-size assembly, the counter-score minimization for deck_count=2, and validation against check_deck rules. It doesn't disclose the return format, but the core behavioral traits are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but efficient, packing a large amount of algorithmic detail into two sentences. The first sentence is long and complex, but each clause adds necessary information; a slight restructure could improve readability, but it is not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the algorithmic complexity and absence of an output schema, the description provides a remarkably complete overview: the internal strategy, constraints, validation, and optimization behavior. It stops short of describing the exact return value or structure, but the overall behavior is well specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for most parameters, and the description adds algorithmic context that enriches understanding (e.g., deck_size affects proportional scaling, deck_count triggers the rebuild-and-minimize process, owned_only controls proxy suggestions). This goes beyond the raw schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('build') and identifies the resource ('decks from the collection'), and further distinguishes itself by describing its deterministic, evolution-based approach. This clearly separates it from sibling tools like search_cards or check_deck.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use this tool: when you need a deterministic deck built from the local collection, with optional optimization for two decks. It doesn't explicitly mention alternatives, but the context is unambiguous, and the mention of 'validates with the check_deck rules' hints at a complementary relationship with check_deck.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_deckValidate a decklistA
Validate a TCG Live export decklist (lines like '4 Slowpoke PBL 29'): 60-card total, max 4 copies per name (basic energy exempt), max 1 ACE SPEC, standard legality per card, plus a cardmarket price estimate.
| Name | Required | Description | Default |
|---|---|---|---|
| decklist | Yes | Decklist text in TCG Live export format |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does list the validation checks performed, which is useful. However, it omits what happens on validation failure (e.g., error vs. report), the return format, and any permissions or side-effect details. This leaves gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose and then specifies all key validation rules. Every clause adds informative detail with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one parameter, no output schema) and the description covers purpose, input format, and validation rules. However, without an output schema, the description should explain what the tool returns (e.g., validation report, price estimate shape). This missing return-value information makes the description somewhat incomplete for an agent to fully anticipate the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, giving a baseline of 3. The description adds value by providing an example format ('4 Slowpoke PBL 29') and clarifies the input as TCG Live export format, going beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Validate a TCG Live export decklist' and details specific validation rules (60-card total, max 4 copies per name, ACE SPEC limit, standard legality, price estimate). This distinguishes it from siblings like price_check or build_decks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when an agent has a TCG Live export decklist that needs validation and a price estimate. It provides clear context but does not explicitly mention alternatives or when-not-to-use scenarios relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_addAdd cards to the collectionA
Append or increment cards in the collection file. Input: lines in TCG Live format ('4 Jacinthe POR 75'), one per line. A name without a set code is looked up; if several printings match, nothing changes and the candidates are listed. Comments in the file are preserved.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | Card lines to add, e.g. '4 Jacinthe POR 75\n2 Slowpoke PBL 29' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explains that cards are appended or incremented, that ambiguous matches lead to no changes and candidate listing, and that comments in the file are preserved. It does not cover error handling or output format, but it covers several important behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, with just two sentences. The first sentence states the core action, and the second provides essential input format and ambiguity handling. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, the description covers the input format, ambiguous lookup behavior, and comment preservation. It does not describe the success return value, but with no output schema and low complexity, this is a minor omission. Overall, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although the schema covers the only parameter 100%, the description adds crucial context: the TCG Live format, one line per card, and the behavior when a name lacks a set code. This goes beyond the schema's simple example and enriches the parameter's meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function with a specific verb+resource: 'Append or increment cards in the collection file.' It is distinct from sibling tools like collection_remove and collection_list, and the input format is given.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear this tool is for adding cards to the collection, and it provides input format and special handling for ambiguous lookups. It doesn't explicitly mention alternatives or exclusions, but the intended use is obvious given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_listList the local collectionA
Parsed & resolved view of the local collection file (env POKEMON_COLLECTION_PATH, default ./collection.txt; TCG Live line format, # comments allowed): per-line counts, sets, kinds and standard legality plus summary totals. Unresolvable lines become warnings, never errors.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden. It explains the parsing behavior, comment handling, output summary totals, and explicitly states that unresolvable lines become warnings rather than errors. This adds valuable context about failure modes and behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, packed with relevant information but every clause earns its place. It is front-loaded with the core purpose and then provides necessary configuration and output details without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is remarkably complete. It covers the source file, format, parsing rules, output content, and error handling, leaving no significant gaps for an agent to understand what the tool does and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is nothing to add beyond the empty schema, and the description appropriately focuses on the tool's behavior rather than parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool provides a parsed and resolved view of the local collection file, with specific details about the file path and output contents (counts, sets, kinds, legality). This distinguishes it from sibling tools like collection_add, collection_remove, and search_cards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context about when to use the tool—for inspecting the local collection—and specifies configuration details (env POKEMON_COLLECTION_PATH, default path, line format). However, it does not explicitly mention alternative tools or scenarios where it should not be used, so it falls short of the highest tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
collection_removeRemove cards from the collectionA
Decrement or drop cards in the collection file, matched against the file itself (no API). A bare name matching several printings in the file is ambiguous and changes nothing; over-removal clamps to zero with a note.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | Card lines to remove, e.g. '1 Slowpoke PBL 29' or '2 Jacinthe' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It explicitly notes the operation is local ('no API'), describes the clamping behavior on over-removal, and explains the do-nothing behavior for ambiguous bare names. This covers key edge cases and side effects, though it could mention whether the file is modified in-place or what happens on success.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the core action and then providing essential edge-case behavior. Every sentence contributes meaningful information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is remarkably complete. It explains the core operation, the local-only behavior, and handles ambiguity and over-removal. The sibling context further clarifies its role among collection tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with the 'lines' parameter already documented via examples. The tool description adds interpretative meaning by explaining that bare names may be ambiguous if they match multiple printings, and that over-removal clamps to zero. This goes beyond the schema's basic format description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Decrement or drop cards in the collection file,' specifying both the action (decrement/drop) and the resource (collection file). It also adds scope with 'matched against the file itself (no API),' distinguishing it from API-based tools and siblings like collection_add.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (for local collection removal) and provides important usage constraints: a bare name matching multiple printings is ambiguous and changes nothing, and over-removal clamps to zero with a note. While it doesn't explicitly name alternatives, the guidance on ambiguity effectively tells the user to specify printings to ensure successful removal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_similar_effectsFind cards by effectA
Discovery tool: describe an effect in plain words (e.g. 'heal damage from benched pokemon') and get cards whose attack/ability/rules text matches. Keywords are ORed and results ranked by match count.
| Name | Required | Description | Default |
|---|---|---|---|
| supertype | No | ||
| effect_text | Yes | Plain-language description of the effect | |
| max_results | No | ||
| standard_legal_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses useful behavioral traits: keywords are ORed and results are ranked by match count. It does not describe return format, limits, or authentication requirements, but as a read-only discovery tool the safety profile is reasonable to infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core purpose and immediately providing a usage example. Every word adds value and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, no output schema, and only one parameter meaningfully described, the description leaves return values and important filtering behavior unexplained. It captures the core use case but is incomplete for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, and the description only adds insight for effect_text with an example. The other parameters (supertype, max_results, standard_legal_only) are left undocumented, so the agent receives little guidance beyond raw defaults and enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies this as a discovery tool for finding cards by plain-language effect descriptions, complete with a concrete example. It distinguishes itself from generic card search by emphasizing 'effect in plain words' and matching attack/ability/rules text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Discovery tool' framing and plain-words example establish when this tool should be used, and the ORed/ranking detail provides helpful context. It does not explicitly mention alternatives like search_cards or state when not to use it, but the intended usage is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardGet full card detailsA
Fetch one card with full text, image URL and prices. Provide a pokemontcg.io id (e.g. 'me3-75'), or an exact name plus optional TCG Live set code (e.g. name 'Jacinthe', set 'POR').
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | pokemontcg.io card id, e.g. 'me3-75' | |
| set | No | TCG Live set code to disambiguate, e.g. 'POR' | |
| name | No | Exact card name (used when no id is given) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the return contents (full text, image URL, prices) and the two identification modes, but doesn't mention error behavior, rate limits, or what happens if both id and name are provided. It's adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, immediately front-loaded with the core action. Every clause earns its place—the first sentence states what it does, the second how to identify the card. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description names the key return fields (text, image URL, prices). For a low-complexity single-card fetch, this is sufficient. It could be more complete with a note on not-found behavior, but that's a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers each parameter individually (100% coverage), so the baseline is 3. The description adds value by explaining the logical relationship: either id OR name+set, with examples. This goes beyond the schema's flat definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Fetch one card with full text, image URL and prices,' clearly stating the verb, resource, and scope. It distinguishes from siblings like search_cards by emphasizing 'one card' and requiring an exact identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Guidance is clear about needing either an id or an exact name plus optional set code, implying that partial/incomplete identifiers belong in search tools. However, it doesn't explicitly mention alternatives or exclusions like 'use search_cards instead when you don't have an exact name or id.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meta_snapshotCompetitive meta snapshotA
Current top archetypes from Limitless TCG (limitlesstcg.com/decks) with tournament points and meta share. Returns a clear 'source unavailable' message if the live data can't be fetched — never stale guesses.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | standard | |
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds valuable behavioral context by stating it fetches live data and returns a 'source unavailable' message rather than stale guesses. It does not mention read-only nature or side effects, but for a snapshot tool this is reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and contains no fluff or repetition. Every sentence earns its place by conveying source, data content, and failure behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 params, no output schema, no annotations), the description covers purpose, data source, return contents, and failure mode. It lacks parameter details and output structure, but is otherwise sufficiently complete for an agent to use the tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the tool description does not explain the 'format' or 'max_results' parameters. Although names are intuitive, the description fails to compensate for the lack of schema descriptions, which is required when coverage is low.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides 'current top archetypes from Limitless TCG' with 'tournament points and meta share', identifying a specific verb and resource. It distinguishes itself from sibling tools like search_cards and check_deck by focusing on competitive meta data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. While sibling tools serve different functions, the description does not mention any exclusions or alternative choices, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
price_checkPrice check across printingsA
Cardmarket (EUR) and TCGplayer (USD) prices for every printing of a card, with the cheapest standard-playable version highlighted.
| Name | Required | Description | Default |
|---|---|---|---|
| set | No | Optional TCG Live set code to narrow, e.g. 'POR' | |
| name | Yes | Card name, e.g. 'Jacinthe' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of disclosing behavior. It reveals the data sources (Cardmarket/TCGplayer) and the highlight behavior, which is useful. However, it does not mention whether prices are live/cached, error handling for unknown cards, or that this is a read-only operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core function (prices for every printing) and adds key details (markets and highlight). No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter tool with no output schema, the description provides a solid understanding of what the tool does and what to expect (multiple printings with prices, highlighted cheapest standard-playable). It could mention return format or pagination, but it is sufficiently complete for typical pricing lookups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents both parameters with examples (name and set), so the description adds no additional parameter semantics. Since schema description coverage is 100%, the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides Cardmarket (EUR) and TCGplayer (USD) prices for every printing of a card, with a specific highlight for the cheapest standard-playable version. This distinguishes it from sibling tools like get_card or search_cards, which likely focus on card data or search, not pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for pricing inquiries by mentioning the sources and scope, but it does not explicitly say when to use this tool over alternatives. No exclusions or alternative tool references are given, so the suitability must be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_scannedResolve scanned cardsA
Resolve raw card identifications transcribed from photos into verified printings. Lines may be messy: 'Slowpoke PBL 29' (quantity optional), '2 Slowpoke PBL 29', 'Mega Slowbro ex 031/084' (set inferred from the printed total), Japanese set codes ('ヤドン m5 028', m5→PBL — JP numbering differs, so mapped lines match by name), or a bare name ('Jacinthe' — newest standard-legal printing preferred, alternatives listed). Returns a resolved table, unresolved lines with reasons, and clean TCG Live lines ready for collection_add, check_deck or build_decks.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | Yes | One card identification per entry, e.g. ['2 Slowpoke PBL 29', 'ヤドラン m5 029', 'Jacinthe'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does so exceptionally. It discloses key behaviors: quantity optionality, set inference from card numbers, Japanese set code mapping with numbering differences, bare-name resolution preferring newest standard-legal printings with alternatives, and return of unresolved lines with reasons. This is rich, candid behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph that is front-loaded with the purpose, then provides concrete examples and output details. Every sentence contributes value; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no output schema and no annotations, the description is remarkably complete. It covers input variations, resolution strategies, output format, and downstream integration, leaving no significant gaps for an agent to infer incorrectly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the 'lines' parameter with a description and example (100% coverage). The description adds substantial extra meaning by illustrating acceptable messy formats, edge cases like Japanese codes, and output expectations, thereby going beyond the schema's baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the tool's function: resolving messy raw card identifications from photos into verified printings. It provides concrete input examples and distinguishes itself from sibling tools like search_cards (searching) and collection_add (adding) by focusing on resolution and normalization.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong context on when to use this tool—when lines are messy, include quantities, Japanese codes, or bare names—and explains the output's downstream use with collection_add, check_deck, or build_decks. However, it does not explicitly name alternatives or state when not to use it, falling just short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cardsSearch Pokémon TCG cardsA
Search the pokemontcg.io card database. query accepts a card name or a raw Lucene query (e.g. 'supertype:trainer subtypes:supporter'). Filters are ANDed. Returns compact card summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Card name or raw Lucene q (field:value syntax passes through) | |
| types | No | Pokémon energy types, e.g. ["Psychic", "Water"] | |
| subtypes | No | e.g. ["Supporter"] or ["Item", "ACE SPEC"] | |
| supertype | No | ||
| max_results | No | ||
| text_contains | No | Phrase to find in attack, ability or rules text | |
| standard_legal_only | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses non-obvious behavior: raw Lucene passthrough, ANDed filters, and compact summaries. It stops short of describing pagination, rate limits, or sorting, but the core semantic behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with front-loaded purpose, a concrete example, and no wasted words. The structure clearly communicates the essential behavior in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description's mention of 'compact card summaries' gives some idea of the return shape but lacks field details. It covers the main query mechanics well, and for a search tool with no required parameters, this is largely complete, though pagination/error behavior is omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 57% (4/7). The description adds meaningful semantics for 'query' (name or Lucene) and filter behavior (ANDed), but does not elaborate on max_results, standard_legal_only, or supertype beyond their schema names/enum. Partial compensation for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the pokemontcg.io card database, with a specific verb ('Search') and resource, and provides query syntax details and return type. This distinguishes it from siblings like get_card (specific card retrieval) and find_similar_effects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for when to use this tool: to search cards flexibly via name or Lucene query, with filters ANDed. It doesn't explicitly exclude alternatives or mention when to prefer other tools, but the usage context is well stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_listList saved sessionsA
All saved kitchen-table sessions: name, save time, card count and deck names, newest first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of transparency. It discloses 'newest first' ordering and lists the fields returned, which implicitly suggests a read-only operation, but it doesn't explicitly state that no side effects occur, require permissions, or handle empty lists. Some behavioral detail is provided, but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence captures the resource, the returned fields, and sorting order without any filler or redundancy. Every word earns its place, making it highly efficient and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-parameter listing tool with no output schema, the description is fully complete: it names the resource, enumerates the return values, and specifies ordering. There is no missing information that an agent would need to confidently invoke this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so schema coverage is trivially 100%. The description adds value by explaining what the returned list contains (name, save time, card count, deck names), which provides context beyond the empty schema. However, with no parameters, there is little to add, so the baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'All saved kitchen-table sessions' with explicit mention of returned fields (name, save time, card count, deck names) and sort order ('newest first'). This distinguishes it from sibling tools like session_save and session_load, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance is provided, but the listing behavior is implied by the verb 'List' and the resource 'saved sessions'. Sibling tools session_save and session_load exist, yet the description doesn't clarify when to use this tool over them, such as 'use session_load to load a specific session'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_loadLoad a saved sessionA
Load a saved session by name: card lines come back in TCG Live format (paste into collection_add / check_deck / resolve tools) and decks as named decklists.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Session name as shown by session_list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It reveals what the tool returns (card lines in TCG Live format, named decklists), which is important for an agent to understand the output. It doesn't mention error behavior or side effects, but for a read-only load operation, the format disclosure is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loaded with the core purpose and followed by a useful output-format note. Every sentence earns its place with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is simple (one parameter, no output schema), the description is complete enough. It explains what the tool does and what the output looks like. Minor gaps like handling of non-existent sessions are not critical for this level of completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the 'name' parameter at 100% with 'Session name as shown by session_list'. The description adds further meaning by tying the parameter to the session_list tool, telling the agent where to obtain valid values. This goes beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Load a saved session by name', distinguishing it from siblings like session_save and session_list. It also specifies the output format (card lines in TCG Live format, decks as decklists), making the purpose fully explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by mentioning that the output is meant to be pasted into collection_add/check_deck/resolve tools, indicating when this tool is useful. It doesn't explicitly exclude alternatives, but the integration hint gives strong usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
session_saveSave a kitchen-table sessionA
Save the session's card lines (TCG Live format) and optionally the built decks as a timestamped JSON record. Name defaults to today's date; a name collision appends -2 rather than overwriting.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Session name (default: today's ISO date, e.g. 2026-07-20) | |
| decks | No | Decks built this session, e.g. from build_decks output | |
| lines | Yes | Card lines in TCG Live format, e.g. ['2 Slowpoke PBL 29', '1 Jacinthe POR 75'] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses key behavioral details: the name defaults to today's date, and a name collision appends -2 rather than overwriting. This is valuable context beyond a simple save statement, though return values and failure modes are not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence states the action and optionality, the second covers naming defaults and collision handling. It is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core functionality, the required parameter, default behavior, and an edge case. However, with no output schema, it omits any mention of return value or storage location, which is a minor gap for a write operation. Overall, it is largely complete for the tool's moderate complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, as each parameter has a description. The description restates the TCG Live format for lines and mentions decks are optional, but it adds no new semantics beyond the schema. The default name behavior is also already documented in the schema, so this matches the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Save' to indicate persisting session card lines and optionally built decks as a timestamped JSON record. It clearly identifies the resource and output format, distinguishing it from sibling tools like session_load and session_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for saving session data, but it does not explicitly contrast it with alternatives like session_load or session_list. No exclusions or when-not-to-use scenarios are provided, yet the primary use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: card search vs. single-card fetch vs. effect search, collection management operations are clearly separate, and session tools are distinct. Even the two search tools (search_cards and find_similar_effects) have clearly differentiated purposes and inputs.
The naming is split between verb-first (search_cards, get_card, check_deck, price_check, build_decks, resolve_scanned) and noun-first (collection_list, collection_add, session_list, session_save) patterns, with a few oddities like meta_snapshot and find_similar_effects. It's readable but not consistently predictable.
14 tools is a solid, well-scoped count for a Pokemon TCG server covering card lookup, collection management, deck validation/building, meta info, and session persistence. Every tool earns its place with no obvious bloat.
The surface covers card discovery, detailed lookup, collection CRUD, deck validation/building, price checking, meta snapshots, and session persistence. Minor gaps exist—most notably no session delete or update—but agents can work around them, and the core workflows are well covered.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server giving Claude AI access to 22+ NYC public-record databases for real estate due diligence
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that allows Claude to interact with Discord by providing tools for sending/reading messages and managing server resources through Discord's API.19348MIT
- AlicenseCqualityDmaintenanceA Model Context Protocol server that allows Claude to search and display Pokemon Trading Card Game cards with filtering by attributes like name, type, legality, and statistics.21612ISC
- FlicenseNot gradedqualityDmaintenanceAn MCP server that provides standardized access to Pokemon data, allowing users to search, compare, and retrieve detailed information about Pokemon through natural language tools.5
- FlicenseNot gradedqualityDmaintenanceAn MCP server that integrates with the official Clash Royale API to provide real-time data on players, clans, cards, and tournaments. It enables users to query battle logs, chest cycles, and global rankings directly through Claude Desktop or Claude Code.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mopheadpersona/pokemon-tcg-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server