Skip to main content
Glama
Emieeel

Pokémon Champions MCP Server

by Emieeel

Pokémon Champions MCP Server

A small MCP server that gives an AI assistant accurate, up-to-date data for competitive Pokémon Champions. Hook it up to Claude (or any MCP client) and you can ask things like:

"Does my Choice Band Mega Staraptor OHKO Garchomp?" "Is Sneasler legal in Regulation M-B, and who else can run Fake Out there?" "What Fairy moves are usable this format?"

It covers damage calculation, type matchups, Pokédex and item lookups, move search, and regulation legality. Everything runs locally — normal queries never hit the network.

Setup

You'll need Node 18+. Clone the repo, then:

npm install
npm run build

That compiles everything into dist/. Quick check that it works:

npm test

Related MCP server: Pokemon Showdown MCP Server

Connecting it to your assistant

This is a standard stdio MCP server, so any MCP client can launch it — you just point it at the built dist/index.js.

  1. Grab the absolute path to the entry point (you'll paste this into your client):

    node -e "console.log(require('path').resolve('dist/index.js'))"
  2. Add it to your client's MCP config:

    {
      "mcpServers": {
        "pokemon-champions": {
          "command": "node",
          "args": ["/absolute/path/to/poke-mcp-tool/dist/index.js"]
        }
      }
    }
    • Claude Desktop — Settings → Developer → Edit Config, then merge in the block above.

    • Claude Codeclaude mcp add pokemon-champions node /absolute/path/dist/index.js.

    • Anything else — add an equivalent stdio entry (command: node, args: [path]).

  3. Restart the client. It should now list tools like calculate_damage and find_pokemon_by_move. Try asking it one of the questions up top.

Use the absolute path — the client runs from its own working directory, so a relative one won't resolve.

Hosting it online (Cloudflare Workers)

Want people to use it without installing anything — or from Claude on the web or your phone? Deploy it as a remote HTTP server and they just paste a URL. It runs on Cloudflare Workers' free tier.

Every tool is read-only over public data, so the hosted server is stateless and needs no login or API key — there's no OAuth to set up. Workers has no filesystem, so the datasets are bundled into the Worker (src/worker.ts) instead of read from disk; the local stdio server is untouched.

npm install
npx wrangler login          # one-time: authorize Wrangler with your free Cloudflare account
npm run dev:worker          # optional: test locally (real Workers runtime, no account needed)
npm run deploy:worker       # deploy — prints your public URL

The MCP endpoint is the printed URL plus /mcp (e.g. https://pokemon-champions-mcp.<you>.workers.dev/mcp); a plain GET / is a health check. Add that /mcp URL as a custom connector in Claude (Settings → Connectors; requires a paid plan, or one connector on Free) or as a remote MCP server in Cursor. Config lives in wrangler.toml.

Tools

Tool

What it answers

calculate_damage

"Does my Mystic Water Blastoise OHKO that Garchomp?" — full damage/percent range, hits-to-KO, and the human-readable calc string. Auto-fills stats/typing/ability from the Champions dex (so Mega Staraptor uses Contrary, and even Champions-only Megas like Mega Eelektross calc correctly). Handles items, weather, terrain, Tera, crits, multi-hit, and Doubles spread reduction.

type_effectiveness

The multiplier (0–4x) of an attacking type against 1–2 defending types.

get_pokemon

Base stats, typing, abilities, weight, and full movelist for a Pokémon (Mega forms accepted, e.g. Staraptor-Mega, Mega Staraptor, Mega Raichu X). Pass a regulation id to also get legality and regulation-legal moves.

get_item

Effect, how-to-obtain, and category (Hold Item / Mega Stone / Berry) for a held item, e.g. Choice Scarf, Garchompite, Lum Berry. Pass a regulation id to also check legality.

list_items

Browse the held-item catalog, optionally filtered by category or a nameContains substring (held-only by default; includeNonHeld adds tickets). Pass a regulation id to mark which items are legal.

check_legality

Whether a Pokémon — and optionally listed moves and/or held items — is legal in a regulation.

find_pokemon_by_move

"Who can run Fake Out in M-B?" — every Pokémon legal in a regulation that can learn a given move, with the move's type/category/base power. Name-tolerant (willowisp → Will-O-Wisp). Defaults to m-b.

list_legal_moves

The pool of moves usable in a regulation (everything learnable by at least one legal Pokémon), each with type, category, base power, and how many Pokémon learn it. Filter by type, category, or a nameContains substring. Defaults to m-b.

list_legal_pokemon

The regulation's legal roster, each with its dex number, typing, base stats, and abilities. Filter by type (e.g. Dragon) or a nameContains substring. The complement to list_legal_moves. Defaults to m-b.

list_regulations

Which regulations are available locally, with each one's metadata and counts.

Good to know

A few things that reflect how the format actually works, and which the tools tell you about in their output rather than hiding:

  • There are no per-move bans. A move is "legal" if a legal Pokémon can learn it, so list_legal_moves is really the pool of learnable moves — and a move with no legal learners (e.g. Spore in M-B) shows up as unusable.

  • Mega legality follows the base species. check_legality("Mega Staraptor") resolves via Staraptor, unless that specific Mega is separately excluded (M-B drops Mega Garchomp Z and Mega Lucario Z).

  • A handful of Champions-original ability effects aren't simulated. Stats, typing, and the ability name are accurate, but a brand-new ability's special mechanic may not factor into the damage number.

Refreshing the data

The server only ever reads its data files; the scrapers below are run by hand when the game changes. They pull from Serebii.

npm run scrape -- m-b      # regulation legality (roster + bans + legal items)
npm run scrape:items       # held-item catalog (effects, locations, categories)
npm run scrape:dex         # per-Pokémon stats, typing, abilities, learnsets

Pass a different id to the first one for future regulations (npm run scrape -- m-c). The scrapers are deliberately forgiving — if a page changes shape they warn and write what they found instead of crashing.

Layout

src/server.ts       the 9 MCP tools (transport-agnostic; no Node-only or filesystem code)
src/index.ts        stdio entry — mounts server.ts on stdio (the local default)
src/worker.ts       Cloudflare Workers entry — mounts server.ts on HTTP, with data bundled in
src/diskdata.ts     Node-only: reads the JSON datasets from disk and registers them (stdio)
src/calc.ts         damage formula + type effectiveness
src/dex.ts          Pokémon lookups (data/champions-dex.json; injected or disk-loaded)
src/items.ts        item lookups (data/champions-items.json; injected or disk-loaded)
src/movedex.ts      move search, regulation-scoped
src/regulations.ts  legality checks over regulations/*.json (injected or disk-loaded)
src/names.ts        Pokémon-name normalization (Mega word order, base species)
scripts/            the standalone scrapers
data/, regulations/ generated data (committed; bundled into the Worker)
test/smoke.ts       in-memory MCP client exercising every tool
wrangler.toml       Cloudflare Workers config (hosted deployment)

Available Tools

10 tools
calculate_damageCalculate battle damage (Pokémon Champions)A

Calculate the damage one Pokémon deals to another with a given move in Pokémon Champions (VGC-style, defaults to Doubles). Wraps the trusted @smogon/calc engine, so abilities (Contrary, Intimidate, ...), items, weather, terrain, Tera, crits, multi-hit, screens and Doubles spread reduction are all handled correctly. For moves whose power builds up over a battle — Rage Fist (per hit taken), Last Respects (per fainted ally) — pass moveContext so the base power scales correctly; or pin any variable-power move with moveContext.basePowerOverride. Answers questions like "does my Choice Band Staraptor-Mega OHKO that Garchomp?". Returns the damage range, percent range, hits-to-KO, and the human-readable calc string.

ParametersJSON Schema
NameRequiredDescriptionDefault
moveYesThe move the attacker uses, e.g. "Close Combat".
fieldNoBattle field/side conditions. Defaults to Doubles.
attackerYesThe attacking Pokémon and its set.
defenderYesThe defending Pokémon and its set.
moveContextNoBattle-history context for moves whose base power accumulates (Rage Fist, Last Respects), or a raw basePowerOverride for any other variable-power move.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description fully discloses behavior: it wraps the @smogon/calc engine, handles abilities/items/weather/terrain/crits/multi-hit/screens/Doubles spread, and explains moveContext for variable-power moves. It also describes the return values (damage range, percent range, hits-to-KO, calc string).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded: it starts with the main purpose, then details engine capabilities, special move handling, example usage, and outputs. Each sentence contributes meaningful information without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (nested schemas, no output schema, no annotations), the description is highly complete. It explains key mechanics, special cases, and return values, making it sufficient for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the purpose of moveContext for Rage Fist/Last Respects and basePowerOverride, plus gives a concrete usage example that clarifies parameter roles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates damage between two Pokémon with a given move, specific to Pokémon Champions. It includes an explicit example question and distinguishes itself from sibling tools like type_effectiveness and get_pokemon by focusing on damage calculation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context with the example 'does my Choice Band Staraptor-Mega OHKO that Garchomp?' indicating when to use the tool. It does not explicitly mention alternatives, but the context is clear without needing exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_legalityCheck regulation legality (Pokémon Champions)A

Check whether a Pokémon — and optionally specific moves and/or held items — is legal in a given Pokémon Champions regulation (e.g. "m-b"). Reads purely from local regulation JSON (fully offline). If the regulation file is missing, returns an error telling you to run the scraper. If the regulation has no per-move or per-item legality data, that is stated explicitly rather than guessed.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoOptional list of held-item names to check for legality, e.g. ["Life Orb"].
movesNoOptional list of move names to check for legality.
pokemonYesPokémon species name to check.
regulationYesRegulation id, e.g. "m-b".

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that the tool reads purely from local JSON (offline), returns an error if the regulation file is missing and tells to run the scraper, and explicitly states when per-move/per-item data is absent rather than guessing. This is valuable behavioral context, though it does not describe the return format or other potential side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose followed by essential edge-case caveats. Every sentence earns its place, and there is no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers important operational aspects: offline source, missing-file error, and explicit handling of absent data. It does not specify the exact return value structure, but the purpose and key edge cases are well enough described for an agent to select and invoke the tool correctly. Sibling context also helps frame its role.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with per-parameter descriptions, so the baseline is 3. The description mentions optional moves/items and gives an example regulation, but these details already appear in the schema. It does not add meaningful new semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: checking whether a Pokémon, plus optional moves/items, is legal under a given regulation, with an example ('m-b'). It distinguishes itself from sibling tools like list_legal_moves or list_legal_pokemon by focusing on a single check rather than listing all legal options.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use this tool—when you need a legality check for a specific Pokémon and optional moves/items—but it does not explicitly name alternatives or state when not to use it. It provides clear context about offline operation and error behavior, but lacks explicit comparison to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_pokemon_by_moveFind legal Pokémon that learn a move (Pokémon Champions)A

Given a move and a Pokémon Champions regulation (e.g. "m-b"), list every Pokémon that is legal in that regulation AND can learn the move. Answers "who can run Fake Out in M-B?" or "which legal mons get Spore?". Learnsets come from the Champions dex; the move's type/category/base power are included when the engine knows the move. NOTE: Champions publishes no per-move bans, so "legal move" means a legal Pokémon can learn it. Defaults to regulation "m-b".

ParametersJSON Schema
NameRequiredDescriptionDefault
moveYesMove name, e.g. "Fake Out", "Will-O-Wisp", "Spore".
regulationNoRegulation id (e.g. "m-b"). Defaults to "m-b".

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description takes on the full burden of disclosure. It explains the data source (Champions dex), that move stats are included when known, and the important caveat that Champions publishes no per-move bans. This provides meaningful insight beyond the schema, though it omits potential edge cases like unknown move/regulation handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: the first sentence states the primary action, followed by illustrative examples, data source details, an important note, and the default. Every sentence adds value and there is no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Since there is no output schema, the description must explain return values. It partially does by stating 'list every Pokémon' and noting that move stats are included, but it does not specify the exact output format (e.g., names vs. objects) or behavior for empty results/unknown values. This leaves some gaps given the absence of an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description reinforces the parameter meanings with examples and the default regulation, but does not add substantial new details beyond the schema. It does clarify the intended usage of the parameters in context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('list') and resource ('every Pokémon that is legal in that regulation AND can learn the move'). It distinguishes itself from siblings like list_legal_pokemon and list_legal_moves by combining both move and regulation filters, and provides concrete example questions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context by explaining the inputs (move and regulation) and showing example queries like 'who can run Fake Out in M-B?'. It also mentions the default regulation and clarifies the legality semantics. However, it does not explicitly contrast with alternative tools or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_itemLook up a held item (Pokémon Champions)A

Look up a single Pokémon Champions held item by name (e.g. "Choice Scarf", "Garchompite", "Sitrus Berry"): returns its in-game effect, how to obtain it, its category (Hold Item / Mega Stone / Berry), and whether it can be held in battle. Data comes from the Champions items page (Serebii). The "source" field shows whether the answer came from the Champions catalog or the @smogon/calc fallback (which lacks effect/location text). Optionally pass a regulation id (e.g. "m-b") to also get whether the item is legal there.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesItem name, e.g. "Life Orb", "Charizardite X", or "Lum Berry".
regulationNoOptional regulation id (e.g. "m-b") to also check item legality.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description fully carries the burden of behavioral disclosure. It details the returned fields (effect, obtain method, category, holdability), the data source, and importantly explains the 'source' field and the @smogon/calc fallback lacking effect/location text. It also clarifies the effect of the optional regulation parameter. This is rich, non-obvious behavioral context beyond a simple 'looks up' statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized: the first sentence states the core purpose with examples, followed by return fields, data source/fallback nuance, and optional parameter behavior. Every sentence contributes new information, and the purpose is front-loaded. No filler or redundant restatement of the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema, the description compensates by enumerating the key return components (effect, how to obtain, category, holdability, source) and the fallback behavior. It also mentions the source of the data (Serebii) and the optional regulation legality check. This is sufficient for a user to understand what the tool returns and when the output might be incomplete, making it contextually complete for a lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with descriptions for both parameters. The description adds value by providing concrete example names for 'name' and explaining what the regulation id does (e.g., 'm-b' checks legality). This goes beyond the schema's bare descriptions, enhancing practical understanding of how to use the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool looks up a single Pokemon Champions held item by name, with concrete examples (e.g., 'Choice Scarf', 'Garchompite'). This specific verb-resource pairing ('look up a single... item') distinguishes it from siblings like list_items (listing multiple) and get_pokemon (Pokemon data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It specifies a clear use case: lookup by name with optional regulation filter, which implies when to use it. It does not explicitly name alternatives or exclusions, but the distinction from a list operation is evident through 'single' and by-name lookup. The mention of the fallback source also helps set expectations, though no sibling alternatives are directly referenced.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pokemonLook up a Pokémon (Pokémon Champions)A

Look up a Pokémon by name (Mega forms accepted, e.g. "Staraptor-Mega" or "Mega Staraptor") in Pokémon Champions: returns base stats, typing, abilities, and weight. Data comes from the Champions Pokédex (Serebii) so game-original Mega Evolutions are accurate — e.g. Mega Staraptor has Contrary, which @smogon/calc gets wrong. Also returns the Pokémon's full learnable movelist ("moves"). The "source" field shows whether the answer came from the Champions dex or the @smogon/calc fallback. Optionally pass a regulation id (e.g. "m-b") to also get whether the Pokémon is legal there and its regulation-legal moves.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPokémon species name, e.g. "Garchomp", "Staraptor-Mega", or "Mega Raichu X".
regulationNoOptional regulation id (e.g. "m-b") to also check legality.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description takes on the full burden. It discloses the data source (Champions Pokédex/Serebii), the @smogon/calc fallback, the 'source' field to indicate which source was used, and the accuracy advantage for Mega evolutions. This goes beyond a bare 'lookup' and provides meaningful behavioral context, though it doesn't mention error cases or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences but packs in the main lookup purpose, return fields, an example of Mega naming, a data-source note, the source field, and the optional regulation behavior. Every sentence carries meaning, and it is front-loaded with the primary action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a lookup tool with no output schema, the description explains the key return values (stats, typing, abilities, weight, moves, source) and the optional legality data. It covers the main use cases and edge cases of Mega forms. It does not describe the exact structure of the output, but the list of fields is sufficient for an agent to understand what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying accepted naming variants for Mega forms ('Staraptor-Mega' or 'Mega Staraptor'), and explaining that the optional regulation parameter checks legality and legal moves. This goes beyond the schema's terse examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Look up a Pokémon by name,' then enumerates the returned data (base stats, typing, abilities, weight, movelist, source). It also clarifies the tool's unique scope (Champions Pokédex, Mega forms) and distinguishes it from potential siblings by mentioning the source field and optional legality check.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for basic Pokémon lookups and emphasizes Mega evolution accuracy, but does not explicitly compare to sibling tools like check_legality or list_legal_moves. It mentions an optional regulation id for legality, yet doesn't state when to prefer dedicated legality tools. Context is present but exclusions/alternatives are not explicitly addressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_itemsList held items (Pokémon Champions)A

Browse the items a Pokémon can hold in Pokémon Champions: Hold Items (Choice Scarf, Life Orb, Leftovers, ...), Mega Stones (Garchompite, Charizardite X, ...), and Berries (Sitrus, Lum, type-resist berries, ...). Each item includes its in-game effect, how to obtain it, and its category. Data is scraped from the Champions items page (Serebii). Optionally filter by category or a name substring, and pass a regulation id (e.g. "m-b") to mark which items are legal there. Answers "what berries can I hold?" or "which Mega Stones exist in Champions?".

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter to one category: "Hold Item", "Mega Stone", "Berry", or "Miscellaneous".
regulationNoOptional regulation id (e.g. "m-b") to mark each item legal/illegal there.
nameContainsNoCase-insensitive substring to filter item names, e.g. "berry" or "choice".
includeNonHeldNoInclude non-held Miscellaneous items (tickets/coupons). Defaults to false.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses the data source (Serebii scraped page), what each item includes (effect, how to obtain, category), and the optional regulation legality marking. It does not mention pagination or data freshness, but for a read-only list tool this is reasonable context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the verb and resource. Each sentence adds value: what is listed, what data each item provides, and how to filter/use regulation. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately explains the item content and filtering semantics for a read-only list tool with 4 optional parameters and no output schema. It could mention includeNonHeld explicitly in the narrative, but the schema already covers it, and the description still gives a solid overall picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds extra meaning by explaining the category filter using actual categories (Hold Items, Mega Stones, Berries) and clarifies that the regulation id marks which items are legal there, going beyond the schema's parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description opens with 'Browse the items a Pokémon can hold in Pokémon Champions' and enumerates categories (Hold Items, Mega Stones, Berries), clearly distinguishing it from sibling tools like get_item (singleton item lookup) and list_legal_moves. It also states the kinds of questions it answers, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear use cases by giving example questions like 'what berries can I hold?' and explaining optional filtering and regulation marking. However, it does not explicitly contrast with alternatives (e.g., 'for a single item, use get_item'), so no direct when-not guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_regulationsList available regulations (Pokémon Champions)A

List the Pokémon Champions regulations currently available locally (the JSON files in regulations/), with each one's metadata (name, date range, source URL, last-scraped timestamp) and counts of legal Pokémon/moves. Cheap way to know what legality data this server has before calling check_legality.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It discloses the local file-based nature, the 'cheap' operational cost, and the output structure. While it doesn't explicitly mention side effects or errors, the listing operation is clearly read-only and the description adds useful behavioral context beyond a bare list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long and immediately states the verb and resource. The first sentence packs in essential details (file location, returned metadata, counts), and the second provides usage guidance. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low complexity (no parameters, no output schema, no annotations), the description fully covers the tool's purpose, output contents, data source, and usage context. It tells the agent exactly what to expect from the response (metadata fields and counts), making it complete for a simple listing operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline score is 4. The description correctly omits parameter explanations since none exist, and the schema trivially covers all parameters. No additional semantic detail is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('List'), a clear resource ('Pokémon Champions regulations'), and adds detail about the data source ('JSON files in regulations/') and the exact contents (metadata and counts). It distinguishes itself from siblings by focusing on regulation metadata and explicitly positioning itself as a precursor to check_legality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly provides a usage context: 'Cheap way to know what legality data this server has before calling check_legality.' This tells the agent when to use the tool and names the relevant successor tool, giving clear guidance for tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

type_effectivenessType effectiveness multiplier (Pokémon Champions)A

Given an attacking type and 1 or 2 defending types, return the damage multiplier (0, 0.25, 0.5, 1, 2, or 4) and a short explanation, for Pokémon Champions. Derived from the type chart bundled in @smogon/calc. Answers "how effective is Fighting vs a Flying/Psychic Pokémon?".

ParametersJSON Schema
NameRequiredDescriptionDefault
attackingTypeYesThe move's type, e.g. "Fighting".
defendingTypesYesThe defending Pokémon's type(s), 1 or 2 entries.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses the exact output values (0, 0.25, 0.5, 1, 2, 4), the inclusion of a short explanation, the game context (Pokémon Champions), and the data source (@smogon/calc). It does not describe edge cases like duplicate defending types, but the schema's enum constraints mitigate that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each adding value: what it does, output/scope, and an example. No fluff or repetition of schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter calculator with a clear output (multiplier and explanation), the description is complete. It states the input types, output range, and gives a concrete use case, making it sufficient without an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents both parameters with enums and descriptions, covering 100% of parameters. The description adds only the example of 'Fighting' vs 'Flying/Psychic' to illustrate usage, not new semantic details beyond the schema. So baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as returning type effectiveness multipliers for Pokémon Champions, with a specific verb 'return' and the resource (attacking type vs defending types). The example question and mention of @smogon/calc distinguish it from sibling tools like calculate_damage, which likely compute actual damage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a concrete example ('Fighting vs a Flying/Psychic') that implicitly shows when to use the tool, but it does not explicitly mention alternatives or exclusion criteria. Given sibling calculate_damage, a clearer statement of 'use this for multipliers, not damage' would improve guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.1.0
    • First observedcalculate_damage
    • First observedcheck_legality
    • First observedfind_pokemon_by_move
    • First observedget_item
    • First observedget_pokemon
    • First observedlist_items
    • First observedlist_legal_moves
    • First observedlist_legal_pokemon
    • First observedlist_regulations
    • First observedtype_effectiveness

TDQS

A4.4/5.0

Scored across 10 tools

Disambiguation5/5

Each tool targets a distinct query type—damage calculation, type chart, Pokémon data, legality, items, and move/regulation lists. No two tools appear to do the same thing; even list_items vs get_item follow the standard browse/detail pattern.

Naming Consistency4/5

Most tools follow a verb_noun pattern (calculate_damage, get_pokemon, list_regulations, check_legality), but 'type_effectiveness' is a noun phrase rather than a command, and the verbs vary (list, get, check, find). Still, the naming is readable and predictable within action groups.

Tool Count5/5

With 10 tools, the server is well-scoped for its purpose, covering damage calc, type matchups, Pokémon lookup, legality, items, and regulation queries without redundancy. This falls comfortably within the ideal 3-15 range.

Completeness4/5

The tool surface covers the core workflows: damage calculation, type effectiveness, Pokémon data, legality checks, item browsing, and legal move/Pokémon lists. Minor gaps like a dedicated get_move tool are not critical because list_legal_moves and get_pokemon already provide move information.

Maintenance

ActivityStale
ResponsivenessNo issues

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

Related MCP Servers

  • F
    license
    C
    quality
    D
    maintenance
    Enables interaction with live Pokémon data through PokeAPI, providing comprehensive Pokémon information, battle calculations, moveset validation, and team analysis. Supports searching Pokémon and moves, calculating stats, checking type effectiveness, and analyzing team synergies with in-memory caching for improved performance.
    9
    -
  • A
    license
    A
    quality
    D
    maintenance
    Provides Pokemon Showdown competitive battle data to AI assistants, enabling lookup of Pokemon stats, moves, abilities, items, type matchups, and strategic information through natural language queries.
    8
    5
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides accurate Pokemon data and Gen 9 damage calculation tools including stats, moves, type effectiveness, damage calculations, and accuracy checks for Pokemon battles.
    8
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A high-precision damage calculator for Pokemon Scarlet and Violet, supporting 16-step random rolls, type effectiveness, terastal, and weather effects. Enables users to calculate damage, compare moves, search Pokemon/moves/items, and analyze KO probabilities.
    MIT