Skip to main content
Glama

Server Details

Look up Pokémon, moves, abilities, items, natures, and type matchups from PokéAPI v2.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 38 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/pokeapi-mcp-server
GitHub Stars
1
Server Listing
@cyanheads/pokeapi-mcp-server

TDQS

A4.3/5.0

Scored across 7 tools

Disambiguation5/5

Each tool maps to a distinct PokeAPI resource or action: search is separated from dossier retrieval, and ability/item/move/nature/type-matchup lookups have no meaningful overlap. The only potentially similar pair is find_pokemon and get_pokemon, but their descriptions clearly differentiate search/filtering from full-record retrieval.

Naming Consistency5/5

All tool names use the consistent pokeapi_ prefix with a clear verb_noun pattern: pokeapi_find_ for discovery and pokeapi_get_ for fetching resource details. Naming is uniformly snake_case and predictable across the entire set.

Tool Count5/5

Seven tools is a well-scoped size for a Pokémon data server, covering search, core entity lookups, and type information without unnecessary redundancy. Every tool earns its place in the set.

Completeness4/5

The server covers the most important read-only Pokémon workflows: discovering Pokémon, fetching dense Pokémon data, and looking up abilities, items, moves, natures, and type matchups. Gaps like berries, locations, and standalone evolution-chain lookups are minor because the main dossier already embeds evolution and species information.

Available Tools

7 tools
pokeapi_find_pokemonFind PokémonA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoType name (e.g. "fire", "psychic"). Filters to Pokémon of this type.
limitNoMaximum results to return. Positive integer; defaults to 50.
queryNoStrict token match on name. "chu" matches "pikachu" and "raichu". Case-insensitive.
offsetNoOffset into the filtered result set for pagination. Non-negative integer; defaults to 0.
pokedexNoRegional pokédex name (e.g. "kanto", "hoenn", "galar"). Filters to entries in that dex.
egg_groupNoEgg group name (e.g. "monster", "fairy", "dragon"). Filters to Pokémon in this egg group.
generationNoGeneration name (e.g. "generation-i", "generation-iii"). Filters to Pokémon introduced in this generation.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
shownNoNumber of results in this response.
noticeNoGuidance when no Pokémon matched the filters.
pokemonNoMatching Pokémon entries.
totalCountNoTotal matching Pokémon before limit/offset.

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines4/5

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 AbilityA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesAbility name in lowercase hyphenated form (e.g. "overgrow", "speed-boost") or numeric ID as a string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoAbility ID.
nameNoAbility name in hyphenated lowercase.
errorNoPresent when the call failed. Absent on success.
pokemonNoPokémon that have this ability.
effectTextNoFull English effect description. Null when unavailable.
generationNoGeneration in which the ability was introduced.
shortEffectTextNoShort English effect summary. Null when unavailable.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering the safety profile. The description adds behavioral context by specifying that effect text is English and that hidden-ability flags are included, and it clarifies the returned payload beyond just saying 'details'.

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?

Two sentences with no filler: the first front-loads the purpose and key returned fields, the second provides a useful cross-reference. Every clause earns its place.

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?

With one well-documented parameter, an output schema present, and annotations covering read-only/idempotent behavior, the description provides sufficient context for correct invocation. The cross-reference to pokeapi_get_pokemon further completes the workflow.

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% and the identifier parameter is already documented with format examples. The description adds value by reiterating the name-or-numeric-ID forms and by explaining that ability names originate from pokeapi_get_pokemon, helping the agent understand where the parameter value would come from.

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 ('Get ability details by name or numeric ID') and enumerates the returned content (English effect text, generation, Pokémon list with hidden-ability flag). It also distinguishes itself from siblings by focusing on abilities and referencing pokeapi_get_pokemon as the source of ability names.

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 intended use is clear: call this tool when you have an ability name or ID and need its details. The reference to pokeapi_get_pokemon returning ability names provides useful context for how an agent might obtain the identifier, though it does not explicitly name alternatives or state when not to use this tool.

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

pokeapi_get_itemGet ItemA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesItem name in lowercase hyphenated form (e.g. "choice-specs", "leftovers") or numeric ID as a string.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoItem ID.
costNoPurchase cost in Pokédollars. 0 means not sold in shops.
nameNoItem name in hyphenated lowercase.
errorNoPresent when the call failed. Absent on success.
categoryNoItem category (e.g. "held-items", "medicine").
spriteUrlNoItem sprite URL. Null when no sprite is available.
attributesNoItem attributes (e.g. "holdable", "consumable", "usable-in-battle").
effectTextNoFull English effect description. Null when unavailable.
flingPowerNoFling move base power when this item is flung. Null if not throwable.
heldByPokemonNoPokémon that commonly hold this item in the wild.
shortEffectTextNoShort English effect summary. Null when unavailable.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering the safety profile. The description adds value by enumerating the expected response fields, but it does not disclose behaviors like error handling, rate limits, or response structure beyond what the output schema already provides.

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?

A single, front-loaded sentence that states the verb, resource, lookup method, and a detailed but compact enumeration of return values. Every phrase earns its place; no filler 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?

For a simple read-only lookup tool with one parameter, a thorough schema, and an output schema, the description is nearly complete. The only missing context is error/not-found behavior (e.g., what happens for an invalid identifier), which is a minor gap for this tool's simplicity.

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% and the identifier parameter is already well-documented with format examples ('choice-specs', 'leftovers') and type constraints (lowercase hyphenated name or numeric ID as string). The description merely restates 'by name or numeric ID' without adding further semantic detail.

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 begins with a specific verb-resource pair ('Get item details') and elaborates with a concrete list of returned fields (effect text, category, cost, etc.). The item domain clearly distinguishes it from sibling tools focused on Pokémon, abilities, moves, natures, and type matchups.

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 makes the use case implicit ('Get item details by name or numeric ID') but never explicitly states when to use this tool over alternatives or when not to use it. There is no mention of sibling tools or exclusion criteria, leaving the agent to infer from the domain.

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

pokeapi_get_moveGet MoveA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesMove name in lowercase hyphenated form (e.g. "flamethrower", "close-combat") or numeric ID as a string.
include_learnersNoInclude the list of Pokémon that can learn this move. Defaults to false as the list can be large.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoMove ID.
ppNoBase PP. Null when unavailable.
nameNoMove name in hyphenated lowercase.
typeNoElemental type (e.g. "fire").
errorNoPresent when the call failed. Absent on success.
powerNoBase power. Null for status moves.
targetNoTarget selection (e.g. "selected-pokemon", "all-opponents").
accuracyNoAccuracy percentage (0–100). Null for moves that always hit.
priorityNoPriority bracket (positive = higher priority, negative = lower).
effectTextNoFull English effect description. Null when unavailable.
damageClassNoDamage class: physical, special, or status. Null when unavailable.
statChangesNoStat stage changes caused by this move.
effectChanceNoSecondary effect chance percentage. Null when not applicable.
shortEffectTextNoShort English effect summary. Null when unavailable.
learnedByPokemonNoPokémon names that can learn this move (populated when include_learners=true).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already mark this as read-only, open-world, and idempotent, so the safety profile is covered. The description adds useful behavioral context by specifying that include_learners=true pulls the Pokémon learner list and that move names can be sourced from pokeapi_get_pokemon, while the schema notes the list can be large. No contradiction 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.

Conciseness5/5

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

Three concise sentences: the first enumerates what is returned, the second explains the optional learner flag, and the third points to the sibling source for identifiers. 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?

With a rich output schema, read-only/idempotent annotations, and a fully documented two-parameter input schema, the description covers the key operational details: identifier format/source, optional learner list, and the move fields returned. Nothing needed for correct invocation is missing.

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 schema already explains both identifier and include_learners. The description adds a useful cross-reference for obtaining move names and restates the learner flag, but it does not add significant parameter-level meaning beyond the schema.

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 'Get move details by name or numeric ID' and then enumerates the returned fields (type, damage class, power, accuracy, PP, priority, target, stat changes, status-effect chance, effect text). This is a specific verb+resource and clearly separates it from sibling tools like pokeapi_get_ability or pokeapi_get_item.

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 context is clear: this tool is for move details, and the description even points to pokeapi_get_pokemon as the source for valid move names when include_moves=true. It does not explicitly state when not to use this tool versus siblings, but the resource type (move) makes the appropriate use obvious.

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

pokeapi_get_natureGet NatureA
Read-onlyIdempotent
Inspect

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%.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierNoNature name (e.g. "modest", "jolly") or ID 1–25 as a string. Omit to list all 25 natures.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
naturesNoOne or all 25 natures depending on whether identifier was provided.
isListAllNoTrue when all 25 natures are returned (no identifier provided).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds meaningful behavioral context beyond annotations by explaining what the tool returns (boosted/reduced stats, berry flavors) and the special listing behavior when identifier is omitted, which helps the agent anticipate the response shape.

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 three sentences with no fluff. The first sentence states the core purpose, the second covers the optional-parameter behavior, and the third provides useful domain context for competitive team-building. Every sentence earns its place and the key information is front-loaded.

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 read-only tool with one optional parameter and a full output schema, the description is complete. It explains the return content (stats, flavors), the listing behavior, and the relevance for team-building. Nothing an agent needs to call this tool correctly is missing.

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 schema fully documents the identifier parameter, including examples and the omit-to-list-all behavior. The description adds no new parameter-level semantics beyond what the schema already states, aligning with the baseline score of 3.

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 verb and resource—'Get nature details'—and enumerates the exact outputs: stat boost/reduction percentages and preferred/disliked berry flavors. It also explicitly mentions the list-all behavior when identifier is omitted, clearly distinguishing it from sibling tools like pokeapi_get_pokemon or pokeapi_get_move.

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 context for when to use the tool (competitive team-building) and explicit instructions for the omit-identifier case to list all natures. It does not name alternative tools, but the domain-specific nature content makes the appropriate use case clear without needing to exclude siblings.

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émonA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesPokémon name (lowercase hyphenated, e.g. "bulbasaur", "mr-mime") or Pokédex number as a string (e.g. "1", "25").
game_versionNoPoké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_movesNoInclude the full learnable-move summary. Defaults to false because the list is large (100–200+ moves).

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoNational Pokédex number.
nameNoCanonical Pokémon name in hyphenated lowercase.
errorNoPresent when the call failed. Absent on success.
genusNoEnglish genus (e.g. "Seed Pokémon"). Null when unavailable.
movesNoLearnable moves (populated when include_moves=true, empty otherwise).
statsNoBase stats.
typesNoType names ordered by slot (e.g. ["fire", "flying"]).
spritesNoSprite URLs.
heightDmNoHeight in decimetres.
weightHgNoWeight in hectograms.
abilitiesNoAbilities with full effect text.
eggGroupsNoEgg group names.
moveCountNoTotal number of learnable moves regardless of include_moves.
varietiesNoAll forms and variants of this species.
genderRateNoGender ratio: -1 genderless, 0 always male, 8 always female, 1–7 fraction (eighths) female.
generationNoGeneration introduced (e.g. "generation-i").
growthRateNoGrowth rate name (e.g. "medium-slow").
isMythicalNoTrue for mythical Pokémon.
captureRateNoBase capture rate (0–255).
isLegendaryNoTrue for legendary Pokémon.
evolutionChainNoEvolution tree rooted at the base species.
speciesFlavorTextNoFlavor text from the selected (or most recent) game version. Null when none available.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so safety is covered. The description adds contextual behavior beyond that: the include_moves default to false due to large result size, the game_version fallback behavior, and the overall 'denormalized' structure. These are useful disclosures that annotations alone do not provide.

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

Conciseness4/5

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

The description is long but information-dense; every sentence conveys a functional detail. It front-loads the core purpose, then elaborates on parameters and usage. While slightly verbose, it avoids filler and remains well-organized, earning a 4 rather than a 5.

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 tool is complex with many output fields, but an output schema exists, so the description need not repeat return structure. It covers the identifier requirements, optional parameters, fallback behavior, and the size trade-off for moves. It is sufficient for an agent to call the tool correctly, though it does not address error conditions or rate limits, which are minor given the openWorldHint.

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 all three parameters are already documented in detail (identifier format, game_version fallback, include_moves default and rationale). The description largely repeats this information without adding new meaning, e.g., it restates the identifier format and the include_moves default. It provides no extra semantics, such as edge cases or constraints, beyond what the schema already offers.

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 ('Get a fully denormalized Pokémon dossier in a single call') and enumerates the exact fields returned, making its scope unmistakable. It also distinguishes itself from the sibling pokeapi_find_pokemon by noting that tool is for discovery, while this one retrieves a complete dossier.

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 tells the agent when to use the sibling instead: 'Use pokeapi_find_pokemon to discover Pokémon by type, generation, or egg group before calling this tool.' It also explains the optional parameters (include_moves, game_version) and their behavior, giving clear guidance on how to invoke the tool correctly.

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 MatchupsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoType name in lowercase (e.g. "fire", "water", "psychic"). Provide this or pokemon, not both.
pokemonNoPokémon name or Pokédex number. The server resolves the types automatically. Provide this or type, not both.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
queryTypeNoHow the query was resolved: "type" for a direct type query, "pokemon" for a Pokémon lookup.
resolvedTypesNoThe type name(s) the query resolved to.
defensiveMatchupsNoDefensive matchups — composed correctly for dual-type Pokémon.
offensiveRelationsNoOffensive effectiveness (populated for single-type queries; null for dual-type Pokémon where per-type breakdown does not compose cleanly).
composedMultipliersNoMultiplier (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

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

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: '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.

Usage Guidelines4/5

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.

Tool Schema Changelog

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

  1. 5 tool updates
    • Changedpokeapi_get_ability4 fields changed
      • removedOutput schema / properties / effectText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / effectText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / shortEffectText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / shortEffectText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedpokeapi_get_item8 fields changed
      • removedOutput schema / properties / effectText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / effectText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / flingPower / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / flingPower / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / shortEffectText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / shortEffectText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / spriteUrl / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / spriteUrl / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedpokeapi_get_move14 fields changed
      • removedOutput schema / properties / accuracy / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / accuracy / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / damageClass / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / damageClass / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / effectChance / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / effectChance / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / effectText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / effectText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / power / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / power / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / pp / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / pp / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / shortEffectText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / shortEffectText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedpokeapi_get_nature8 fields changed
      • removedOutput schema / properties / natures / items / properties / decreasedStat / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / natures / items / properties / decreasedStat / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / natures / items / properties / hatesFlavor / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / natures / items / properties / hatesFlavor / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / natures / items / properties / increasedStat / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / natures / items / properties / increasedStat / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / natures / items / properties / likesFlavor / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / natures / items / properties / likesFlavor / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedpokeapi_get_pokemon20 fields changed
      • removedOutput schema / $defs / __schema0 / properties / condition / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / $defs / __schema0 / properties / condition / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / $defs / __schema0 / properties / item / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / $defs / __schema0 / properties / item / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / $defs / __schema0 / properties / minLevel / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / $defs / __schema0 / properties / minLevel / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / abilities / items / properties / effectText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / abilities / items / properties / effectText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / abilities / items / properties / shortEffectText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / abilities / items / properties / shortEffectText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / genus / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / genus / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / speciesFlavorText / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / speciesFlavorText / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sprites / properties / frontDefault / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / sprites / properties / frontDefault / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sprites / properties / frontShiny / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / sprites / properties / frontShiny / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / sprites / properties / officialArtwork / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / sprites / properties / officialArtwork / type
        Added value: +[
        +  "string",
        +  "null"
        +]
  2. 7 tool updates
    • Changedpokeapi_find_pokemon6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "pokemon",
        +      "totalCount",
        +      "shown"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `invalid_filter`: An unrecognized generation, type, pokédex, or egg-group name was provided. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "invalid_filter"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "pokemon",
        -  "totalCount",
        -  "shown"
        -]
    • Changedpokeapi_get_ability6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "effectText",
        +      "shortEffectText",
        +      "generation",
        +      "pokemon"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no ability in PokéAPI. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "id",
        -  "name",
        -  "effectText",
        -  "shortEffectText",
        -  "generation",
        -  "pokemon"
        -]
    • Changedpokeapi_get_item6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "category",
        +      "cost",
        +      "flingPower",
        +      "effectText",
        +      "shortEffectText",
        +      "attributes",
        +      "heldByPokemon",
        +      "spriteUrl"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no item in PokéAPI. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "id",
        -  "name",
        -  "category",
        -  "cost",
        -  "flingPower",
        -  "effectText",
        -  "shortEffectText",
        -  "attributes",
        -  "heldByPokemon",
        -  "spriteUrl"
        -]
    • Changedpokeapi_get_move6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "type",
        +      "damageClass",
        +      "power",
        +      "accuracy",
        +      "pp",
        +      "priority",
        +      "effectChance",
        +      "effectText",
        +      "shortEffectText",
        +      "target",
        +      "statChanges",
        +      "learnedByPokemon"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no move in PokéAPI. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "id",
        -  "name",
        -  "type",
        -  "damageClass",
        -  "power",
        -  "accuracy",
        -  "pp",
        -  "priority",
        -  "effectChance",
        -  "effectText",
        -  "shortEffectText",
        -  "target",
        -  "statChanges",
        -  "learnedByPokemon"
        -]
    • Changedpokeapi_get_nature6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "natures",
        +      "isListAll"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no nature in PokéAPI. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "natures",
        -  "isListAll"
        -]
    • Changedpokeapi_get_pokemon9 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedOutput schema / $defs
        Added value: +{
        +  "__schema0": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "condition": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Human-readable summary of additional conditions (happiness, time of day, etc.)."
        +      },
        +      "evolvesTo": {
        +        "description": "Further evolutions from this stage.",
        +        "items": {
        +          "$ref": "#/$defs/__schema0"
        +        },
        +        "type": "array"
        +      },
        +      "item": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Item used in evolution. Null if not applicable."
        +      },
        +      "minLevel": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Minimum level required. Null if not applicable."
        +      },
        +      "species": {
        +        "description": "Species name.",
        +        "type": "string"
        +      },
        +      "trigger": {
        +        "description": "Evolution trigger (level-up, use-item, trade, shed, base).",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "species",
        +      "trigger",
        +      "minLevel",
        +      "item",
        +      "condition",
        +      "evolvesTo"
        +    ],
        +    "type": "object"
        +  }
        +}
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "id",
        +      "name",
        +      "heightDm",
        +      "weightHg",
        +      "types",
        +      "stats",
        +      "abilities",
        +      "sprites",
        +      "moves",
        +      "moveCount",
        +      "speciesFlavorText",
        +      "genus",
        +      "captureRate",
        +      "growthRate",
        +      "genderRate",
        +      "isLegendary",
        +      "isMythical",
        +      "evolutionChain",
        +      "varieties",
        +      "generation",
        +      "eggGroups"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • removedOutput schema / definitions
        Removed value: -{
        -  "__schema0": {
        -    "additionalProperties": false,
        -    "properties": {
        -      "condition": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Human-readable summary of additional conditions (happiness, time of day, etc.)."
        -      },
        -      "evolvesTo": {
        -        "description": "Further evolutions from this stage.",
        -        "items": {
        -          "$ref": "#/definitions/__schema0"
        -        },
        -        "type": "array"
        -      },
        -      "item": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Item used in evolution. Null if not applicable."
        -      },
        -      "minLevel": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Minimum level required. Null if not applicable."
        -      },
        -      "species": {
        -        "description": "Species name.",
        -        "type": "string"
        -      },
        -      "trigger": {
        -        "description": "Evolution trigger (level-up, use-item, trade, shed, base).",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "species",
        -      "trigger",
        -      "minLevel",
        -      "item",
        -      "condition",
        -      "evolvesTo"
        -    ],
        -    "type": "object"
        -  }
        -}
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The identifier resolves to no PokéAPI entry (HTTP 404). Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / evolutionChain / anyOf
        Previous value: -[
        -  {
        -    "$ref": "#/definitions/__schema0"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "$ref": "#/$defs/__schema0"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / required
        Removed value: -[
        -  "id",
        -  "name",
        -  "heightDm",
        -  "weightHg",
        -  "types",
        -  "stats",
        -  "abilities",
        -  "sprites",
        -  "moves",
        -  "moveCount",
        -  "speciesFlavorText",
        -  "genus",
        -  "captureRate",
        -  "growthRate",
        -  "genderRate",
        -  "isLegendary",
        -  "isMythical",
        -  "evolutionChain",
        -  "varieties",
        -  "generation",
        -  "eggGroups"
        -]
    • Changedpokeapi_get_type_matchups6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "queryType",
        +      "resolvedTypes",
        +      "offensiveRelations",
        +      "defensiveMatchups",
        +      "composedMultipliers"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The type name or Pokémon identifier was not found in PokéAPI. `invalid_input`: Neither type nor pokemon was provided, or both were provided simultaneously. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "invalid_input"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "queryType",
        -  "resolvedTypes",
        -  "offensiveRelations",
        -  "defensiveMatchups",
        -  "composedMultipliers"
        -]
  3. 2 tool updates
    • Changedpokeapi_find_pokemon8 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum results to return. Defaults to 50."New value: +"Maximum results to return. Positive integer; defaults to 50."
      • addedInput schema / properties / limit / exclusiveMinimum
        Added value: +0
      • addedInput schema / properties / limit / maximum
        Added value: +9007199254740991
      • changedInput schema / properties / limit / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / offset / description
        Previous value: -"Offset into the filtered result set for pagination. Defaults to 0."New value: +"Offset into the filtered result set for pagination. Non-negative integer; defaults to 0."
      • addedInput schema / properties / offset / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / offset / minimum
        Added value: +0
      • changedInput schema / properties / offset / type
        Previous value: -"number"New value: +"integer"
    • Changedpokeapi_get_type_matchups1 field changed
      • changedOutput schema / properties / composedMultipliers / description
        Previous value: -"Multiplier for each non-neutral attacking type (0, 0.25, 0.5, 1, 2, 4). Types absent from this map deal 1× damage."New value: +"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."
  4. 7 tool updates
    • First observedpokeapi_find_pokemon
    • First observedpokeapi_get_ability
    • First observedpokeapi_get_item
    • First observedpokeapi_get_move
    • First observedpokeapi_get_nature
    • First observedpokeapi_get_pokemon
    • First observedpokeapi_get_type_matchups

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.