MCP Server

Pokemon TCG Pocket Catalog

app.hologallery.pocket/pokemon-tcg-pocket-catalog
Gaming Public & reachable MCP 2025-11-25

What this MCP does

Searches and describes Pokémon TCG Pocket cards, sets, packs, and printings, and evaluates or simulates legal decks.

catalog_info
Catalog info
Catalog metadata: game version, schema version, card/printing/set/pack counts, and supported locales. Quote the game version alongside any simulation result so the evidence stays pinned to the data it was computed from.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
evaluate_deck
Evaluate deck
Check a 20-card Pokémon TCG Pocket deck against the game's rules (exactly 20 cards, at most 2 copies of a card, at least one Basic Pokémon) and return build advice: missing evolution lines, energy-type spread, Pokémon/Trainer balance, missing staple Trainers, and known card synergies. Takes gameplay card ids, not printing ids.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['cards'], 'properties': {'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['gameplayCardId', 'count'], 'properties': {'count': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Copies in the deck.'}, 'gameplayCardId': {'type': 'string', 'description': "Gameplay card id, e.g. 'PK_000360'."}}}, 'maxItems': 20, 'minItems': 1, 'description': 'The deck list, one entry per distinct card.'}, 'locale': {'type': 'string', 'description': 'Locale for card names in messages.'}}}
get_card
Get card
Get one Pokémon TCG Pocket card's available catalog data: HP, attacks with energy costs and damage, abilities, weakness, retreat cost, evolution, artist, rarity, and artwork. Trainer cards return their rules text and subtype instead of attacks. Accepts either a printing id like 'A1-001' or a gameplay card id like 'PK_000010'.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "Printing id ('A1-001') or gameplay card id ('PK_000010')."}, 'locale': {'type': 'string', 'description': "Locale for names and text. Defaults to 'en'."}}}
list_locales
List locales
List every locale code the catalog has translations for. Pass one as 'locale' to any other tool for localized card, set, and pack names.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
list_packs
List packs
List every Pokémon TCG Pocket booster pack with its id, parent set id, and localized name. Pack ids identify where a printing can be pulled.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'locale': {'type': 'string', 'description': "Locale for pack names. Defaults to 'en'."}}}
list_printings
List printings
List every printing of one card across all sets: printing id, set, collector number, rarity, artist, and canonical page URL. Accepts either a printing id like 'A1-001' or a gameplay card id like 'PK_000010'. get_card only returns the first printing; use this when the question is about reprints, alt arts, or pull sources.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': "Printing id ('A1-001') or gameplay card id ('PK_000010')."}, 'locale': {'type': 'string', 'description': "Locale for names. Defaults to 'en'."}}}
list_sets
List sets
List every Pokémon TCG Pocket set with its id and localized name. Use the ids to filter search_cards by set.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'locale': {'type': 'string', 'description': "Locale for set names. Defaults to 'en'."}}}
search_cards
Search cards
Search the Pokémon TCG Pocket card catalog by name, attack, ability, artist, or id, with optional filters for set, energy type, stage, card kind, rarity, Trainer subtype, HP range, weakness, and retreat cost. Returns up to 20 summarized cards plus the total number of matches.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'set': {'type': 'string', 'description': "Set id, e.g. 'A1', 'A2b', 'PROMO-A'."}, 'kind': {'enum': ['pokemon', 'trainer'], 'type': 'string'}, 'page': {'type': 'integer', 'maximum': 1000, 'minimum': 1, 'description': '1-based page number. Defaults to 1.'}, 'hpMax': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Maximum HP (Pokémon only).'}, 'hpMin': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Minimum HP (Pokémon only).'}, 'query': {'type': 'string', 'description': 'Free text: card name, attack or ability text, artist, or card id.'}, 'stage': {'enum': ['basic', 'stage-1', 'stage-2'], 'type': 'string'}, 'energy': {'enum': ['grass', 'fire', 'water', 'lightning', 'psychic', 'fighting', 'darkness', 'metal', 'dragon', 'colorless'], 'type': 'string', 'description': 'Energy type of the Pokémon.'}, 'locale': {'type': 'string', 'description': "Locale for card names, e.g. 'en', 'ja_JP', 'fr_FR'. Defaults to 'en'."}, 'rarity': {'type': 'string', 'description': "Rarity code, e.g. 'diamond-1', 'star-2', 'crown'."}, 'weakness': {'enum': ['grass', 'fire', 'water', 'lightning', 'psychic', 'fighting', 'darkness', 'metal', 'dragon', 'colorless'], 'type': 'string', 'description': 'Weakness energy type of the Pokémon.'}, 'retreatMax': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Maximum retreat cost (Pokémon only).'}, 'trainerType': {'enum': ['item', 'supporter', 'tool', 'fossil', 'stadium'], 'type': 'string', 'description': 'Trainer subtype: item, supporter, tool, fossil, or stadium.'}}}
simulate_matchup
Simulate matchup
Run two legal 20-card Pokémon TCG Pocket decks through the Battle Lab rules engine using deterministic heuristic AI. Returns wins, draws, failures, average turns/actions, and a short sample game log. This measures the built-in AI policy, not human skill or competitive win probability.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deckA', 'deckB'], 'properties': {'seed': {'type': 'integer', 'maximum': 2147483647, 'minimum': 0, 'description': 'Base random seed. Reusing the same inputs and seed reproduces the result.'}, 'deckA': {'type': 'object', 'required': ['cards', 'energyTypes'], 'properties': {'name': {'type': 'string', 'maxLength': 80, 'description': 'A short label used in the result.'}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['gameplayCardId', 'count'], 'properties': {'count': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Copies in the deck.'}, 'gameplayCardId': {'type': 'string', 'description': "Gameplay card id, e.g. 'PK_000360'."}}}, 'maxItems': 20, 'minItems': 1, 'description': 'Exactly 20 total cards, with no more than two copies of one gameplay card.'}, 'energyTypes': {'type': 'array', 'items': {'enum': ['grass', 'fire', 'water', 'lightning', 'psychic', 'fighting', 'darkness', 'metal', 'dragon', 'colorless'], 'type': 'string'}, 'maxItems': 3, 'minItems': 1, 'description': 'Energy Zone types configured for this deck.'}}, 'description': 'First deck to compare.'}, 'deckB': {'type': 'object', 'required': ['cards', 'energyTypes'], 'properties': {'name': {'type': 'string', 'maxLength': 80, 'description': 'A short label used in the result.'}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['gameplayCardId', 'count'], 'properties': {'count': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Copies in the deck.'}, 'gameplayCardId': {'type': 'string', 'description': "Gameplay card id, e.g. 'PK_000360'."}}}, 'maxItems': 20, 'minItems': 1, 'description': 'Exactly 20 total cards, with no more than two copies of one gameplay card.'}, 'energyTypes': {'type': 'array', 'items': {'enum': ['grass', 'fire', 'water', 'lightning', 'psychic', 'fighting', 'darkness', 'metal', 'dragon', 'colorless'], 'type': 'string'}, 'maxItems': 3, 'minItems': 1, 'description': 'Energy Zone types configured for this deck.'}}, 'description': 'Second deck to compare.'}, 'games': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Number of simulated games. Defaults to 20; maximum 50.'}, 'locale': {'type': 'string', 'description': "Locale for card names in the sample log. Defaults to 'en'."}}}
suggest_deck
Suggest deck
Build a complete, legal 20-card Pokémon TCG Pocket deck around a chosen card. Returns a named archetype, why it works, limitations, and the full card list with copy counts. Trainer targets produce a legal baseline with an explicit effect-data limitation. Give either a card name to search for or a gameplay card id.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'query': {'type': 'string', 'description': "Card name to build around, e.g. 'Charizard ex'."}, 'cardId': {'type': 'string', 'description': "Gameplay card id, e.g. 'PK_000960'."}, 'locale': {'type': 'string', 'description': "Locale for card names. Defaults to 'en'."}}}
trial_deck
Trial deck
Solo-trial one legal 20-card Pokémon TCG Pocket deck: opening-hand consistency (Basics per opener, Trainer density, how often each card shows up across sampled hands) plus mirror self-play with the deck on both seats (closing speed and first-player bias). Use this to tune a single deck; use simulate_matchup to compare two decks. Takes gameplay card ids, not printing ids.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['deck'], 'properties': {'deck': {'type': 'object', 'required': ['cards', 'energyTypes'], 'properties': {'name': {'type': 'string', 'maxLength': 80, 'description': 'A short label used in the result.'}, 'cards': {'type': 'array', 'items': {'type': 'object', 'required': ['gameplayCardId', 'count'], 'properties': {'count': {'type': 'integer', 'maximum': 20, 'minimum': 1, 'description': 'Copies in the deck.'}, 'gameplayCardId': {'type': 'string', 'description': "Gameplay card id, e.g. 'PK_000360'."}}}, 'maxItems': 20, 'minItems': 1, 'description': 'Exactly 20 total cards, with no more than two copies of one gameplay card.'}, 'energyTypes': {'type': 'array', 'items': {'enum': ['grass', 'fire', 'water', 'lightning', 'psychic', 'fighting', 'darkness', 'metal', 'dragon', 'colorless'], 'type': 'string'}, 'maxItems': 3, 'minItems': 1, 'description': 'Energy Zone types configured for this deck.'}}, 'description': 'The deck to trial.'}, 'seed': {'type': 'integer', 'maximum': 2147483647, 'minimum': 0, 'description': 'Base random seed. Reusing the same inputs and seed reproduces the result.'}, 'games': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Mirror self-play games. Defaults to 10; maximum 50.'}, 'hands': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Opening hands to sample. Defaults to 50; maximum 200.'}, 'locale': {'type': 'string', 'description': "Locale for card names. Defaults to 'en'."}}}
Added
trial_deck
Sept. 17, 2026, 7:57 a.m.
Added
simulate_matchup
Sept. 17, 2026, 7:57 a.m.
Added
suggest_deck
Sept. 17, 2026, 7:57 a.m.
Added
evaluate_deck
Sept. 17, 2026, 7:57 a.m.
Added
list_printings
Sept. 17, 2026, 7:57 a.m.
Added
catalog_info
Sept. 17, 2026, 7:57 a.m.
Added
list_locales
Sept. 17, 2026, 7:57 a.m.
Added
list_packs
Sept. 17, 2026, 7:57 a.m.
Added
list_sets
Sept. 17, 2026, 7:57 a.m.
Added
get_card
Sept. 17, 2026, 7:57 a.m.
Added
search_cards
Sept. 17, 2026, 7:57 a.m.