pokeapi-mcp-server
Server Details
Look up Pokémon, moves, abilities, items, natures, and type matchups from PokéAPI v2.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- cyanheads/pokeapi-mcp-server
- GitHub Stars
- 1
- Server Listing
- @cyanheads/pokeapi-mcp-server
Available Tools
7 toolspokeapi_find_pokemonFind PokémonARead-onlyIdempotentInspect
Filter Pokémon by generation, type, regional pokédex, or egg group. Returns names and Pokédex numbers suitable for follow-up pokeapi_get_pokemon calls. All filters are optional and combined with AND logic; query adds strict token matching on name. When no category filter is provided alongside query, returns an empty result — at least one categorical filter is required.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type name (e.g. "fire", "psychic"). Filters to Pokémon of this type. | |
| limit | No | Maximum results to return. Positive integer; defaults to 50. | |
| query | No | Strict token match on name. "chu" matches "pikachu" and "raichu". Case-insensitive. | |
| offset | No | Offset into the filtered result set for pagination. Non-negative integer; defaults to 0. | |
| pokedex | No | Regional pokédex name (e.g. "kanto", "hoenn", "galar"). Filters to entries in that dex. | |
| egg_group | No | Egg group name (e.g. "monster", "fairy", "dragon"). Filters to Pokémon in this egg group. | |
| generation | No | Generation name (e.g. "generation-i", "generation-iii"). Filters to Pokémon introduced in this generation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of results in this response. |
| notice | No | Guidance when no Pokémon matched the filters. |
| pokemon | No | Matching Pokémon entries. |
| totalCount | No | Total matching Pokémon before limit/offset. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnlyHint=true and idempotentHint=true, so the safe-read nature is established. The description adds substantial behavior beyond that: AND-combination of filters, strict token matching semantics for query, and the crucial edge case that a query without any categorical filter returns an empty result. These are exactly the non-obvious behaviors an agent must know to call the tool correctly.
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?
Four sentences with no filler; the core purpose is front-loaded and the critical behavioral details (AND logic, empty-result edge case) follow in order of importance. Every sentence carries information that isn't in the schema. Slightly denser than strictly necessary, but nothing is wasted.
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 multi-filter search tool with an output schema present, the description is near-complete: it covers the filter surface, output contents, query semantics, and the required-filter edge case. Pagination is already documented in the schema via offset/limit descriptions, so nothing critical is missing. Only minor explicit alternative-routing guidance would push it to a 5.
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%, so the baseline is 3. The description adds value above the schema by explaining that filters combine with AND logic and that at least one categorical filter is required when using query — semantic constraints the schema's per-property descriptions do not convey. It also groups the filter parameters into named categories, aiding comprehension.
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?
States a specific verb (filter) + resource (Pokémon) and enumerates the exact filter dimensions (generation, type, regional pokédex, egg group). Explicitly distinguishes itself from the sibling get_* tools by noting it returns names and Pokédex numbers for follow-up pokeapi_get_pokemon calls — an agent can tell this is the search tool versus the ID-retrieval tools without inspecting schemas.
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?
Provides clear context for when to use: 'Returns names and Pokédex numbers suitable for follow-up pokeapi_get_pokemon calls' signals a search-then-fetch workflow and implicitly contrasts with the sibling get_tools. It does not explicitly state the exclusion condition (e.g., 'use pokeapi_get_pokemon when you already know the name/ID'), so the routing guidance is good but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pokeapi_get_abilityGet AbilityARead-onlyIdempotentInspect
Get ability details by name or numeric ID — full English effect text, short effect text, generation introduced, and the list of Pokémon that have the ability (including hidden-ability flag and slot). Ability names are returned by pokeapi_get_pokemon in the abilities array.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Ability name in lowercase hyphenated form (e.g. "overgrow", "speed-boost") or numeric ID as a string. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Ability ID. |
| name | No | Ability name in hyphenated lowercase. |
| error | No | Present when the call failed. Absent on success. |
| pokemon | No | Pokémon that have this ability. |
| effectText | No | Full English effect description. Null when unavailable. |
| generation | No | Generation in which the ability was introduced. |
| shortEffectText | No | Short English effect summary. Null when unavailable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description aligns with them — no contradiction. The description adds value beyond annotations by disclosing that results are English-only, distinguishing full vs. short effect text, and revealing the hidden-ability flag/slot structure in the returned ability record. It doesn't cover error behavior, but the annotation safety profile lowers that burden.
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 tightly written sentences with zero waste: the first packs purpose plus the full return-value inventory, the second adds the cross-tool sourcing hint. The most decision-relevant information (what it returns, how to address it) is front-loaded.
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 an output schema present to cover return shapes, the description supplies everything an agent needs to select and call the tool: the lookup identifier format, the source of valid names, and the contents of the response. For a single-parameter read-only API tool with full annotation coverage, nothing material is missing.
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%, so the parameter format (lowercase hyphenated name or numeric ID) is already documented. The description adds real value by explaining where valid identifiers come from (the abilities array of pokeapi_get_pokemon) and confirming both lookup routes (by name or numeric ID), which goes beyond the bare schema 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+resource ('Get ability details') and enumerates the exact data returned: full and short English effect text, generation introduced, and the Pokémon list with hidden-ability flag and slot. Among siblings that target distinct resources (items, moves, natures, Pokémon, type matchups), the purpose is unmistakable.
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 the key workflow linkage: 'Ability names are returned by pokeapi_get_pokemon in the abilities array,' telling an agent exactly where to source valid identifiers before calling this tool. It lacks explicit when-not-to-use phrasing or named exclusions, but the resource distinction among siblings makes the usage context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pokeapi_get_itemGet ItemARead-onlyIdempotentInspect
Get item details by name or numeric ID — effect text, category, in-game cost, fling power, item attributes (holdable, consumable, etc.), sprite URL, and Pokémon that commonly hold it.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Item name in lowercase hyphenated form (e.g. "choice-specs", "leftovers") or numeric ID as a string. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Item ID. |
| cost | No | Purchase cost in Pokédollars. 0 means not sold in shops. |
| name | No | Item name in hyphenated lowercase. |
| error | No | Present when the call failed. Absent on success. |
| category | No | Item category (e.g. "held-items", "medicine"). |
| spriteUrl | No | Item sprite URL. Null when no sprite is available. |
| attributes | No | Item attributes (e.g. "holdable", "consumable", "usable-in-battle"). |
| effectText | No | Full English effect description. Null when unavailable. |
| flingPower | No | Fling move base power when this item is flung. Null if not throwable. |
| heldByPokemon | No | Pokémon that commonly hold this item in the wild. |
| shortEffectText | No | Short English effect summary. Null when unavailable. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the safety profile is covered. The description adds value by specifying what data is returned (effect text, category, cost, fling power, attributes, sprite URL, holding Pokémon), providing useful behavioral context beyond the annotations. No contradictions with annotations.
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, front-loaded sentence that immediately states the action and resource, then lists the returned fields. There is zero wordiness—every word earns its place. Ideal conciseness.
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 single-parameter fetch tool with an output schema and annotations covering safety, the description is fully sufficient. It communicates the core behavior and return content clearly. Nothing an agent needs to call it correctly is missing.
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 100%—the parameter is fully documented in the schema, including the lowercase hyphenated format and numeric ID option. The description repeats this information without adding new meaning, so the baseline of 3 applies. It is consistent but not additive.
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 fetches item details by name or numeric ID and enumerates the specific data returned (effect text, category, cost, etc.). This is a specific verb-resource pair that distinguishes it from sibling tools like pokeapi_get_pokemon or pokeapi_get_ability, which target different resources.
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 purpose is so resource-specific that usage is unambiguous—agents will naturally select this for item queries. However, the description offers no explicit guidance on when to use this tool over alternatives or when not to use it, relying on the clear naming convention. This matches 'clear context, no exclusions'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pokeapi_get_moveGet MoveARead-onlyIdempotentInspect
Get move details by name or numeric ID — type, damage class, power, accuracy, PP, priority, target, stat changes, status-effect chance, and full English effect text. Set include_learners=true to include the list of Pokémon that can learn the move. Move names are available from pokeapi_get_pokemon when include_moves=true.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Move name in lowercase hyphenated form (e.g. "flamethrower", "close-combat") or numeric ID as a string. | |
| include_learners | No | Include the list of Pokémon that can learn this move. Defaults to false as the list can be large. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Move ID. |
| pp | No | Base PP. Null when unavailable. |
| name | No | Move name in hyphenated lowercase. |
| type | No | Elemental type (e.g. "fire"). |
| error | No | Present when the call failed. Absent on success. |
| power | No | Base power. Null for status moves. |
| target | No | Target selection (e.g. "selected-pokemon", "all-opponents"). |
| accuracy | No | Accuracy percentage (0–100). Null for moves that always hit. |
| priority | No | Priority bracket (positive = higher priority, negative = lower). |
| effectText | No | Full English effect description. Null when unavailable. |
| damageClass | No | Damage class: physical, special, or status. Null when unavailable. |
| statChanges | No | Stat stage changes caused by this move. |
| effectChance | No | Secondary effect chance percentage. Null when not applicable. |
| shortEffectText | No | Short English effect summary. Null when unavailable. |
| learnedByPokemon | No | Pokémon names that can learn this move (populated when include_learners=true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, openWorldHint). The description adds valuable behavioral context beyond annotations: the performance warning that include_learners defaults to false because the list can be large, and clarifies that the tool returns full English effect text. No contradiction.
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?
Three dense sentences: the first front-loads the primary function and returned fields, the second explains the optional flag with a rationale, and the third gives a sourcing hint. No redundancy or 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?
Given a simple identifier-only query, an output schema that documents return values, and annotations for safety, the description covers purpose, parameter behavior, and identifier sourcing. An agent has everything needed to call it correctly.
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 100% and both parameters are well-documented (identifier format, include_learners default). The description adds no new meaning beyond reinforcing the identifier format and the include_learners behavior, so baseline 3 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?
States a clear verb-resource pair (get move details) and enumerates the specific fields returned (type, damage class, power, accuracy, etc.). It also differentiates from siblings by noting that move names can be obtained from pokeapi_get_pokemon, so the agent knows this is the dedicated move-detail getter.
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?
Implicitly states when to use: to fetch details for a specific move. It also directs the agent to pokeapi_get_pokemon as the source of move names, aiding workflow. Lacks an explicit 'use X instead' or when-not statement, but the resource distinction from sibling get_* tools is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pokeapi_get_natureGet NatureARead-onlyIdempotentInspect
Get nature details — the stat boosted (+10%), stat reduced (-10%), and preferred/disliked berry flavors. Omit the identifier to list all 25 natures at once. Natures are critical for competitive team-building: every non-neutral nature modifies two stats by ±10%.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | No | Nature name (e.g. "modest", "jolly") or ID 1–25 as a string. Omit to list all 25 natures. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| natures | No | One or all 25 natures depending on whether identifier was provided. |
| isListAll | No | True when all 25 natures are returned (no identifier provided). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the description doesn't need to restate safety. It adds the list-all behavior and the stat modification percentages, but these are largely covered by the schema description ('Omit to list all 25 natures'). The description adds minimal behavioral context beyond annotations; no contradictions.
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 concise and front-loaded with the core purpose, followed by the list behavior and a domain note. The third sentence about competitive team-building is somewhat tangential but short; overall it avoids unnecessary detail.
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 retrieval tool with one optional parameter, a read-only annotation, and an output schema, the description covers the essential behaviors (single retrieval vs. list) and the value of the data. It doesn't describe the output format, but the output schema already handles that, so nothing critical is missing.
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% and the schema description fully explains the identifier parameter, including the omit-to-list behavior. The description repeats and elaborates slightly on the stat effects, but adds no new semantic guidance for parameter selection or formatting beyond what the schema already provides.
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?
States a clear action (get nature details) and specifies exactly what those details are (stat boost/reduction percentages and berry flavors). The sibling tools are for other entities (pokemon, abilities, etc.), so there is no ambiguity about what this tool retrieves.
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 explains when to omit the identifier (to list all natures) and provides context about natures being critical for team-building. It doesn't explicitly list alternatives or when not to use it, but the sibling names and the description's specificity make the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pokeapi_get_pokemonGet PokémonARead-onlyIdempotentInspect
Get a fully denormalized Pokémon dossier in a single call — base stats, types, abilities (with full English effect text), height/weight, resolved evolution chain, sprite URLs including official artwork, species flavor text, variety list, capture rate, growth rate, gender rate, legendary/mythical flags, egg groups, and (optionally) a summarized learnable-move list. Accepts a name (lowercase, hyphens for spaces, e.g. "bulbasaur", "mr-mime") or Pokédex number. Set include_moves=true to include the move summary (large); defaults to false. Use game_version to select flavor text from a specific game (e.g. "sword", "red"); falls back to the most recent English entry when the version is not found. Use pokeapi_find_pokemon to discover Pokémon by type, generation, or egg group before calling this tool.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | Pokémon name (lowercase hyphenated, e.g. "bulbasaur", "mr-mime") or Pokédex number as a string (e.g. "1", "25"). | |
| game_version | No | PokéAPI version name to filter flavor text (e.g. "sword", "red", "scarlet"). Falls back to the most recent English entry when the version is not found. | |
| include_moves | No | Include the full learnable-move summary. Defaults to false because the list is large (100–200+ moves). |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | National Pokédex number. |
| name | No | Canonical Pokémon name in hyphenated lowercase. |
| error | No | Present when the call failed. Absent on success. |
| genus | No | English genus (e.g. "Seed Pokémon"). Null when unavailable. |
| moves | No | Learnable moves (populated when include_moves=true, empty otherwise). |
| stats | No | Base stats. |
| types | No | Type names ordered by slot (e.g. ["fire", "flying"]). |
| sprites | No | Sprite URLs. |
| heightDm | No | Height in decimetres. |
| weightHg | No | Weight in hectograms. |
| abilities | No | Abilities with full effect text. |
| eggGroups | No | Egg group names. |
| moveCount | No | Total number of learnable moves regardless of include_moves. |
| varieties | No | All forms and variants of this species. |
| genderRate | No | Gender ratio: -1 genderless, 0 always male, 8 always female, 1–7 fraction (eighths) female. |
| generation | No | Generation introduced (e.g. "generation-i"). |
| growthRate | No | Growth rate name (e.g. "medium-slow"). |
| isMythical | No | True for mythical Pokémon. |
| captureRate | No | Base capture rate (0–255). |
| isLegendary | No | True for legendary Pokémon. |
| evolutionChain | No | Evolution tree rooted at the base species. |
| speciesFlavorText | No | Flavor text from the selected (or most recent) game version. Null when none available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so the description builds on that by adding behavioral details: 'fully denormalized' output, the fallback to the most recent English entry when a game version is missing, and the size rationale for include_moves. No contradiction, though it doesn't mention error handling—not required given annotations.
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 dense paragraph, but every sentence is informative. It front-loads the main purpose and then covers parameters and alternatives. Could be broken into bullet points for readability, but it's not wasteful or tangential.
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 complexity, an existing output schema, and rich annotations, the description covers the core functionality, parameter guidance, and the pointer to the sibling discovery tool. It doesn't explicitly address error cases or limits, but those are not critical for an agent to call the tool correctly, especially with the output schema present.
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%, so baseline is 3, but the description adds real value: it specifies the identifier format with examples ('bulbasaur', 'mr-mime'), explains the default for include_moves and its large size, and clarifies game_version fallback behavior. This exceeds what the schema alone provides.
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 a specific verb ('Get') and resource ('Pokémon') while enumerating the returned data fields in detail. It explicitly differentiates from the sibling pokeapi_find_pokemon by noting that discovery is handled there, making the tool's purpose unambiguous.
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?
Explicitly instructs to use pokeapi_find_pokemon for discovery by type, generation, or egg group before calling this tool, providing a clear when-not and alternative. It also explains parameter behavior (include_moves default, game_version fallback), leaving no ambiguity about usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pokeapi_get_type_matchupsGet Type MatchupsARead-onlyIdempotentInspect
Get the full offensive and defensive type effectiveness breakdown. Provide either a type name (e.g. "fire", "psychic") or a Pokémon identifier (name or dex number). For dual-type Pokémon, the defensive multipliers are correctly composed (e.g. Fire/Flying vs Rock = 4× because both types are weak to Rock). Exactly one of type or pokemon must be provided.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type name in lowercase (e.g. "fire", "water", "psychic"). Provide this or pokemon, not both. | |
| pokemon | No | Pokémon name or Pokédex number. The server resolves the types automatically. Provide this or type, not both. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| queryType | No | How the query was resolved: "type" for a direct type query, "pokemon" for a Pokémon lookup. |
| resolvedTypes | No | The type name(s) the query resolved to. |
| defensiveMatchups | No | Defensive matchups — composed correctly for dual-type Pokémon. |
| offensiveRelations | No | Offensive effectiveness (populated for single-type queries; null for dual-type Pokémon where per-type breakdown does not compose cleanly). |
| composedMultipliers | No | Multiplier (0, 0.25, 0.5, 1, 2, 4) for every attacking type touched by at least one of the resolved defending type(s), including net-neutral 1× entries where a dual type composes to a cancellation (e.g. Fire/Flying vs Ice: 0.5× then 2× = 1×). A type absent from this map relates to neither defending type and also deals 1× damage. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, covering safety and determinism. The description adds meaningful behavioral detail beyond annotations: it notes that defensive multipliers are correctly composed for dual-type Pokémon (e.g., Fire/Flying vs Rock = 4×), which informs the agent about edge-case handling. It also asserts the output covers both offensive and defensive breakdowns, which is not in annotations.
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?
Three sentences, front-loaded with the primary purpose, followed by input requirements and a crucial note about dual-type composition. Every sentence contributes necessary information; there is zero fluff or redundancy. The structure moves from 'what' to 'how' to 'edge case'—ideal for quick comprehension.
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 two-parameter, mutually-exclusive input tool with an output schema present, the description covers all necessary usage details: both input options, exclusivity, and the complex dual-type composition behavior. Since an output schema exists, return-value details are not needed. The description is complete and leaves no ambiguous call scenarios.
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% (both parameters have descriptions), so the baseline is 3. The description adds value by giving concrete examples for the type parameter ('fire', 'psychic') and clarifying that Pokémon identifiers can be names or dex numbers—though the schema already states this. It also reiterates the mutual exclusivity in a clearer, more explicit way than the schema's 'Provide this or pokemon, not both.' The examples and exclusivity reinforcement are helpful for agent disambiguation.
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 a specific verb and resource: 'Get the full offensive and defensive type effectiveness breakdown.' This clearly distinguishes it from sibling tools (e.g., get_pokemon, get_move) which serve different data needs. The resource is precisely a type-effectiveness lookup, not a generic Pokémon info tool.
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 input context—'Provide either a type name... or a Pokémon identifier'—and explicitly states the exclusivity requirement ('Exactly one of type or pokemon must be provided'). It does not name alternative tools or state when not to use this tool, but the purpose is self-sufficient and distinct from siblings, so the absence of exclusions is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user or an account that owns the GitHub organization, then choose Claim with GitHub.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Pokemon MCP — wraps PokéAPI (free, no auth required)
Provide detailed Pokémon data and information through a standardized MCP interface. Enable LLMs an…
Wynncraft MMO player + guild + leaderboard + item DB lookups.
Look up genes, sequences, variants, homologs, and cross-database xrefs from Ensembl REST.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables querying Pokémon data from PokéAPI, including listing Pokémon, fetching details by name or ID, and getting type matchups.18ISC
- FlicenseNot gradedqualityDmaintenanceProvides Pokemon information from PokeAPI including stats, types, height, and weight. Enables looking up Pokemon by name/ID, getting random Pokemon by type, and comparing Pokemon side-by-side.
- AlicenseNot gradedqualityDmaintenanceEnables fetching detailed Pokémon data from PokéAPI, including Pokémon info, types, moves, abilities, and search with pagination.133Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables fetching Pokémon data from PokeAPI, searching for Pokémon and moves, and simulating battles between two Pokémon with type effectiveness and status effects.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
Each tool maps to a distinct entity—Pokémon, ability, item, move, nature, or type matchup—with no overlap. pokeapi_find_pokemon serves as a discovery filter, while pokeapi_get_pokemon retrieves full details, making their roles unambiguous.
All tools share the consistent pokeapi_ prefix and follow a clear verb-noun pattern: get_<resource> for retrieval and find_pokemon for search. The convention is uniform and predictable across the entire set.
With 7 tools, the server is well-scoped for a Pokémon data API. Each tool covers a core data type without redundancy, and the count is neither too sparse nor overwhelming for agents to navigate.
The set covers the primary Pokémon domain—individual Pokémon, abilities, items, moves, natures, and type matchups—plus discovery via filters. Minor gaps exist (e.g., no dedicated berry or encounter tools), but core workflows like team-building and battle analysis are fully supported.