Serveur MCP

pokeapi-mcp-server

io.github.cyanheads/pokeapi-mcp-server
Gaming Connaissance et documentation Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Looks up Pokémon, moves, abilities, items, natures, evolution data, and type effectiveness from PokéAPI.

pokeapi_find_pokemon
Find Pokémon
Filter Pokémon by generation, type, regional pokédex, or egg group. Returns names and PokéAPI IDs; every returned name works as a pokeapi_get_pokemon identifier, where a species name resolves to its default variety. At least one of generation, type, pokedex, or egg_group is required; the ones provided are combined with AND logic, and query adds strict token matching on name within them. A call with no category filter, with or without query, returns an empty result and a notice naming the requirement.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'type': 'string', 'description': 'Type name (e.g. "fire", "psychic"). Filters to Pokémon of this type.'}, 'limit': {'type': 'integer', 'default': 50, 'maximum': 9007199254740991, 'description': 'Maximum results to return. Positive integer; defaults to 50.', 'exclusiveMinimum': 0}, 'query': {'type': 'string', 'maxLength': 100, 'description': 'Strict token match on name. "chu" matches "pikachu" and "raichu". Case-insensitive. At most 100 characters; whitespace separates tokens, and every token must match.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Offset into the filtered result set for pagination. Non-negative integer; defaults to 0.'}, 'pokedex': {'type': 'string', 'description': 'Regional pokédex name (e.g. "kanto", "hoenn", "galar"). Filters to entries in that dex.'}, 'egg_group': {'type': 'string', 'description': 'Egg group name (e.g. "monster", "fairy", "dragon"). Filters to Pokémon in this egg group.'}, 'generation': {'type': 'string', 'description': 'Generation name (e.g. "generation-i", "generation-iii"). Filters to Pokémon introduced in this generation.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['pokemon', 'totalCount', 'shown', 'appliedFilters']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['invalid_filter'], '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.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of results in this response.'}, 'notice': {'type': 'string', 'description': 'Guidance for missing category filters, zero matches, or an offset beyond the results.'}, 'pokemon': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'number', 'description': 'PokéAPI ID: Pokémon record for type filters, species record for generation, pokedex, or egg_group filters. Form IDs are not National Pokédex numbers.'}, 'name': {'type': 'string', 'description': 'Pokémon name.'}}, 'description': 'Pokémon entry with PokéAPI ID and name.', 'additionalProperties': False}, 'description': 'Matching Pokémon entries.'}, 'totalCount': {'type': 'number', 'description': 'Total matching Pokémon before limit/offset.'}, 'appliedFilters': {'type': 'object', 'required': ['limit', 'offset'], 'properties': {'type': {'type': 'string', 'description': 'Normalized type filter, when applied.'}, 'limit': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Accepted page size, including the default of 50.', 'exclusiveMinimum': 0}, 'query': {'type': 'string', 'description': 'Applied lowercase query tokens joined with single spaces. Omitted without a category filter.'}, 'offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Accepted page offset, including the default of 0.'}, 'pokedex': {'type': 'string', 'description': 'Normalized pokédex filter, when applied.'}, 'egg_group': {'type': 'string', 'description': 'Normalized egg-group filter, when applied.'}, 'generation': {'type': 'string', 'description': 'Normalized generation filter, when applied.'}}, 'description': 'Effective nonblank filters and pagination controls for this response.', 'additionalProperties': False}}, 'additionalProperties': False}
pokeapi_get_ability
Get Ability
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.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'description': 'Ability name in lowercase hyphenated form (e.g. "overgrow", "speed-boost") or numeric ID as a string.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['id', 'name', 'effectText', 'shortEffectText', 'generation', 'pokemon']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'number', 'description': 'Ability ID.'}, 'name': {'type': 'string', 'description': 'Ability name in hyphenated lowercase.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], '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.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'pokemon': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'isHidden', 'slot'], 'properties': {'name': {'type': 'string', 'description': 'Pokémon name.'}, 'slot': {'type': 'number', 'description': 'Ability slot (1, 2, or 3).'}, 'isHidden': {'type': 'boolean', 'description': 'True when this is the hidden ability for the Pokémon.'}}, 'description': 'Pokémon entry with ability slot and hidden-ability flag.', 'additionalProperties': False}, 'description': 'Pokémon that have this ability.'}, 'effectText': {'type': ['string', 'null'], 'description': 'Full English effect description. Null when unavailable.'}, 'generation': {'type': 'string', 'description': 'Generation in which the ability was introduced.'}, 'shortEffectText': {'type': ['string', 'null'], 'description': 'Short English effect summary. Null when unavailable.'}}, 'additionalProperties': False}
pokeapi_get_item
Get Item
Get item details by name or numeric ID — effect text, category, versioned purchase and sell prices, fling power, item attributes (holdable, consumable, etc.), sprite URL, and Pokémon that commonly hold it.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'description': 'Item name in lowercase hyphenated form (e.g. "choice-specs", "leftovers") or numeric ID as a string.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['id', 'name', 'category', 'cost', 'prices', 'flingPower', 'effectText', 'shortEffectText', 'attributes', 'heldByPokemon', 'spriteUrl']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'number', 'description': 'Item ID.'}, 'cost': {'type': ['number', 'null'], 'description': 'Legacy Pokédollar cost when supplied. Null when unavailable; zero is a literal amount. Independent of versioned prices.'}, 'name': {'type': 'string', 'description': 'Item name in hyphenated lowercase.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], '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.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'prices': {'type': 'array', 'items': {'type': 'object', 'required': ['versionGroup', 'currency', 'purchasePrice', 'sellPrice'], 'properties': {'currency': {'type': 'string', 'description': 'Currency name for both prices.'}, 'sellPrice': {'type': ['number', 'null'], 'description': 'Sell price in this currency and version group. Null means not sellable; zero is a literal amount.'}, 'versionGroup': {'type': 'string', 'description': 'Version group these prices apply to.'}, 'purchasePrice': {'type': ['number', 'null'], 'description': 'Purchase price in this currency and version group. Null means not purchasable; zero is a literal amount.'}}, 'description': 'One version and currency price record.', 'additionalProperties': False}, 'description': 'All supplied price records in upstream order. Empty when no records are available.'}, 'category': {'type': 'string', 'description': 'Item category (e.g. "held-items", "medicine").'}, 'spriteUrl': {'type': ['string', 'null'], 'description': 'Item sprite URL. Null when no sprite is available.'}, 'attributes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Item attributes (e.g. "holdable", "consumable", "usable-in-battle").'}, 'effectText': {'type': ['string', 'null'], 'description': 'Full English effect description. Null when unavailable.'}, 'flingPower': {'type': ['number', 'null'], 'description': 'Fling move base power when this item is flung. Null if not throwable.'}, 'heldByPokemon': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Pokémon that commonly hold this item in the wild.'}, 'shortEffectText': {'type': ['string', 'null'], 'description': 'Short English effect summary. Null when unavailable.'}}, 'additionalProperties': False}
pokeapi_get_move
Get Move
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.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'description': 'Move name in lowercase hyphenated form (e.g. "flamethrower", "close-combat") or numeric ID as a string.'}, 'include_learners': {'type': 'boolean', 'default': False, 'description': 'Include the list of Pokémon that can learn this move. Defaults to false as the list can be large.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['id', 'name', 'type', 'damageClass', 'power', 'accuracy', 'pp', 'priority', 'effectChance', 'effectText', 'shortEffectText', 'target', 'statChanges', 'learnedByPokemon', 'learnersIncluded']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'number', 'description': 'Move ID.'}, 'pp': {'type': ['number', 'null'], 'description': 'Base PP. Null when unavailable.'}, 'name': {'type': 'string', 'description': 'Move name in hyphenated lowercase.'}, 'type': {'type': 'string', 'description': 'Elemental type (e.g. "fire").'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], '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.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'power': {'type': ['number', 'null'], 'description': 'Base power. Null for status moves.'}, 'target': {'type': 'string', 'description': 'Target selection (e.g. "selected-pokemon", "all-opponents").'}, 'accuracy': {'type': ['number', 'null'], 'description': 'Accuracy percentage (0â\x80\x93100). Null for moves that always hit.'}, 'priority': {'type': 'number', 'description': 'Priority bracket (positive = higher priority, negative = lower).'}, 'effectText': {'type': ['string', 'null'], 'description': 'Full English effect description. Null when unavailable.'}, 'damageClass': {'type': ['string', 'null'], 'description': 'Damage class: physical, special, or status. Null when unavailable.'}, 'statChanges': {'type': 'array', 'items': {'type': 'object', 'required': ['stat', 'change'], 'properties': {'stat': {'type': 'string', 'description': 'Stat name.'}, 'change': {'type': 'number', 'description': 'Stat stage change (positive = buff, negative = debuff).'}}, 'description': 'Stat stage change entry â\x80\x94 affected stat and magnitude.', 'additionalProperties': False}, 'description': 'Stat stage changes caused by this move.'}, 'effectChance': {'type': ['number', 'null'], 'description': 'Secondary effect chance percentage. Null when not applicable.'}, 'shortEffectText': {'type': ['string', 'null'], 'description': 'Short English effect summary. Null when unavailable.'}, 'learnedByPokemon': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Pokémon names that can learn this move (populated when include_learners=true).'}, 'learnersIncluded': {'type': 'boolean', 'description': 'True when the learner list was requested, including when no learners are known.'}}, 'additionalProperties': False}
pokeapi_get_nature
Get Nature
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%.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'identifier': {'type': 'string', 'description': 'Nature name (e.g. "modest", "jolly") or ID 1â\x80\x9325 as a string. Omit to list all 25 natures.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['natures', 'isListAll']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], '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.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'natures': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'increasedStat', 'decreasedStat', 'likesFlavor', 'hatesFlavor'], 'properties': {'id': {'type': 'number', 'description': 'Nature ID (1â\x80\x9325).'}, 'name': {'type': 'string', 'description': 'Nature name (e.g. "modest").'}, 'hatesFlavor': {'type': ['string', 'null'], 'description': 'Berry flavor the Pokémon dislikes. Null for neutral natures.'}, 'likesFlavor': {'type': ['string', 'null'], 'description': 'Berry flavor the Pokémon prefers. Null for neutral natures.'}, 'decreasedStat': {'type': ['string', 'null'], 'description': 'Stat reduced by 10%. Null for neutral natures.'}, 'increasedStat': {'type': ['string', 'null'], 'description': 'Stat boosted by 10%. Null for neutral natures.'}}, 'description': 'Nature entry with stat modifiers and flavor preferences.', 'additionalProperties': False}, 'description': 'One or all 25 natures depending on whether identifier was provided.'}, 'isListAll': {'type': 'boolean', 'description': 'True when all 25 natures are returned (no identifier provided).'}}, 'additionalProperties': False}
pokeapi_get_pokemon
Get Pokémon
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éAPI Pokémon-record ID. A species name with no Pokémon record of its own (e.g. "deoxys") resolves to the default variety of that species ("deoxys-normal"), reported in resolvedFromSpecies. 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.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'description': 'Pokémon name (lowercase hyphenated, e.g. "bulbasaur", "charizard-mega-x") or PokéAPI Pokémon-record ID as a string (e.g. "1", "10034"). A species name (e.g. "deoxys") resolves to its default variety.'}, 'game_version': {'type': 'string', 'description': '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': {'type': 'boolean', 'default': False, 'description': 'Include the full learnable-move summary. Defaults to false because the list is large (100â\x80\x93200+ moves).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'__schema0': {'type': 'object', 'required': ['species', 'trigger', 'minLevel', 'item', 'condition', 'evolutionDetails', 'evolvesTo'], 'properties': {'item': {'type': ['string', 'null'], 'description': 'First alternative evolution item. Null when unspecified.'}, 'species': {'type': 'string', 'description': 'Species name.'}, 'trigger': {'type': 'string', 'description': 'First alternative trigger, or base for the root stage.'}, 'minLevel': {'type': ['number', 'null'], 'description': 'First alternative minimum level. Null when unspecified.'}, 'condition': {'type': ['string', 'null'], 'description': 'Compatibility summary of the first alternative; evolutionDetails contains the complete methods.'}, 'evolvesTo': {'type': 'array', 'items': {'$ref': '#/$defs/__schema0'}, 'description': 'Further evolutions from this stage.'}, 'evolutionDetails': {'type': 'array', 'items': {'type': 'object', 'required': ['versionGroup', 'isDefault', 'requiredPokemonForm', 'evolvedPokemonForm', 'trigger', 'item', 'gender', 'heldItem', 'knownMove', 'knownMoveType', 'location', 'minLevel', 'minHappiness', 'minBeauty', 'minAffection', 'nearSpecialRock', 'needsMultiplayer', 'needsOverworldRain', 'partySpecies', 'partyType', 'relativePhysicalStats', 'timeOfDay', 'tradeSpecies', 'turnUpsideDown', 'region', 'usedMove', 'minMoveCount', 'minSteps', 'minDamageTaken', 'allowedNatures', 'conditionExpression'], 'properties': {'item': {'type': ['string', 'null'], 'description': 'Item used for evolution. Null when unspecified.'}, 'gender': {'type': ['number', 'null'], 'description': 'Required gender ID. Null when unspecified.'}, 'region': {'type': ['string', 'null'], 'description': 'Required region. Null when unspecified.'}, 'trigger': {'type': 'string', 'description': 'Event that triggers this alternative.'}, 'heldItem': {'type': ['string', 'null'], 'description': 'Required held item. Null when unspecified.'}, 'location': {'type': ['string', 'null'], 'description': 'Required location. Null when unspecified.'}, 'minLevel': {'type': ['number', 'null'], 'description': 'Minimum level. Null when unspecified.'}, 'minSteps': {'type': ['number', 'null'], 'description': 'Minimum steps. Null when unspecified.'}, 'usedMove': {'type': ['string', 'null'], 'description': 'Move that must be used. Null when unspecified.'}, 'isDefault': {'type': ['boolean', 'null'], 'description': 'Whether this is the expected main-series evolution for its variety. Null when unspecified.'}, 'knownMove': {'type': ['string', 'null'], 'description': 'Required known move. Null when unspecified.'}, 'minBeauty': {'type': ['number', 'null'], 'description': 'Minimum beauty. Null when unspecified.'}, 'partyType': {'type': ['string', 'null'], 'description': 'Type required in the party. Null when unspecified.'}, 'timeOfDay': {'type': ['string', 'null'], 'description': 'Required time of day. Empty string is preserved; null when unspecified.'}, 'minAffection': {'type': ['number', 'null'], 'description': 'Minimum affection. Null when unspecified.'}, 'minHappiness': {'type': ['number', 'null'], 'description': 'Minimum happiness. Null when unspecified.'}, 'minMoveCount': {'type': ['number', 'null'], 'description': 'Minimum move uses. Null when unspecified.'}, 'partySpecies': {'type': ['string', 'null'], 'description': 'Species required in the party. Null when unspecified.'}, 'tradeSpecies': {'type': ['string', 'null'], 'description': 'Species to trade for. Null when unspecified.'}, 'versionGroup': {'type': ['string', 'null'], 'description': 'Version group that introduced this method. Null when unspecified.'}, 'knownMoveType': {'type': ['string', 'null'], 'description': 'Type of a required known move. Null when unspecified.'}, 'allowedNatures': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Allowed nature names. Empty lists are preserved; null when unspecified.'}, 'minDamageTaken': {'type': ['number', 'null'], 'description': 'Minimum damage taken. Null when unspecified.'}, 'turnUpsideDown': {'type': ['boolean', 'null'], 'description': 'Whether the device must be upside down. Null when unspecified.'}, 'nearSpecialRock': {'type': ['boolean', 'null'], 'description': 'Whether proximity to a Moss Rock or Icy Rock is required. Null when unspecified.'}, 'needsMultiplayer': {'type': ['boolean', 'null'], 'description': 'Whether multiplayer link play is required. Null when unspecified.'}, 'evolvedPokemonForm': {'type': ['string', 'null'], 'description': 'Resulting form. Null when unspecified.'}, 'needsOverworldRain': {'type': ['boolean', 'null'], 'description': 'Whether overworld rain is required. Null when unspecified.'}, 'conditionExpression': {'anyOf': [{'type': 'object', 'required': ['expression', 'percentageChance', 'variables'], 'properties': {'variables': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Names of expression variables in upstream order.'}, 'expression': {'type': 'string', 'description': 'Verbatim upstream RPN condition expression; not evaluated.'}, 'percentageChance': {'type': 'number', 'description': 'Upstream chance percentage, including zero.'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Variable-dependent condition supplied by PokéAPI. Null when unspecified.'}, 'requiredPokemonForm': {'type': ['string', 'null'], 'description': 'Required starting form. Null when unspecified.'}, 'relativePhysicalStats': {'type': ['number', 'null'], 'description': 'Required Attack relative to Defense: 1 greater, 0 equal, -1 less. Null when unspecified.'}}, 'description': 'One complete alternative evolution method.', 'additionalProperties': False}, 'description': 'All alternative methods in upstream order; empty for a base stage. Requirements apply within each method, never across alternatives.'}}, 'additionalProperties': False}}, 'anyOf': [{'not': {'required': ['error']}, 'required': ['id', 'name', 'resolvedFromSpecies', 'heightDm', 'weightHg', 'types', 'stats', 'abilities', 'sprites', 'moves', 'moveCount', 'speciesFlavorText', 'genus', 'captureRate', 'growthRate', 'genderRate', 'isLegendary', 'isMythical', 'evolutionChain', 'varieties', 'generation', 'eggGroups']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'id': {'type': 'number', 'description': 'PokéAPI Pokémon-record ID. Form IDs are not National Pokédex numbers.'}, 'name': {'type': 'string', 'description': 'Canonical Pokémon name in hyphenated lowercase.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found'], 'description': 'Machine-readable failure mode. Declared by this tool: `not_found`: The identifier matches no Pokémon record and no species. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'genus': {'type': ['string', 'null'], 'description': 'English genus (e.g. "Seed Pokémon"). Null when unavailable.'}, 'moves': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'learnMethod', 'levelLearnedAt'], 'properties': {'name': {'type': 'string', 'description': 'Move name.'}, 'learnMethod': {'type': 'string', 'description': 'How the move is learned (level-up, machine, egg, tutor).'}, 'levelLearnedAt': {'type': 'number', 'description': 'Level at which the move is learned. Zero for non-level-up methods.'}}, 'description': 'Move summary entry â\x80\x94 name, learn method, and level.', 'additionalProperties': False}, 'description': 'Learnable moves (populated when include_moves=true, empty otherwise).'}, 'stats': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'baseStat', 'effort'], 'properties': {'name': {'type': 'string', 'description': 'Stat name (hp, attack, defense, special-attack, special-defense, speed).'}, 'effort': {'type': 'number', 'description': 'Effort value (EV) yield.'}, 'baseStat': {'type': 'number', 'description': 'Base stat value.'}}, 'description': 'Individual base stat entry.', 'additionalProperties': False}, 'description': 'Base stats.'}, 'types': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Type names ordered by slot (e.g. ["fire", "flying"]).'}, 'sprites': {'type': 'object', 'required': ['frontDefault', 'frontShiny', 'officialArtwork'], 'properties': {'frontShiny': {'type': ['string', 'null'], 'description': 'Front shiny sprite URL.'}, 'frontDefault': {'type': ['string', 'null'], 'description': 'Front default sprite URL.'}, 'officialArtwork': {'type': ['string', 'null'], 'description': 'High-quality official artwork URL.'}}, 'description': 'Sprite URLs.', 'additionalProperties': False}, 'heightDm': {'type': 'number', 'description': 'Height in decimetres.'}, 'weightHg': {'type': 'number', 'description': 'Weight in hectograms.'}, 'abilities': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'isHidden', 'slot', 'effectText', 'shortEffectText'], 'properties': {'name': {'type': 'string', 'description': 'Ability name in hyphenated lowercase (e.g. "overgrow").'}, 'slot': {'type': 'number', 'description': 'Ability slot (1, 2, or 3).'}, 'isHidden': {'type': 'boolean', 'description': 'True when this is the hidden ability.'}, 'effectText': {'type': ['string', 'null'], 'description': 'Full English effect description. Null when unavailable.'}, 'shortEffectText': {'type': ['string', 'null'], 'description': 'Short English effect description. Null when unavailable.'}}, 'description': 'Ability entry with effect text and hidden-ability flag.', 'additionalProperties': False}, 'description': 'Abilities with full effect text.'}, 'eggGroups': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Egg group names.'}, 'moveCount': {'type': 'number', 'description': 'Total number of learnable moves regardless of include_moves.'}, 'varieties': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'isDefault'], 'properties': {'name': {'type': 'string', 'description': 'Variety/form name (e.g. "pikachu-alola-cap").'}, 'isDefault': {'type': 'boolean', 'description': 'True for the canonical form.'}}, 'description': 'Form or variant entry with name and default flag.', 'additionalProperties': False}, 'description': 'All forms and variants of this species.'}, 'genderRate': {'type': 'number', 'description': 'Gender ratio: -1 genderless, 0 always male, 8 always female, 1â\x80\x937 fraction (eighths) female.'}, 'generation': {'type': 'string', 'description': 'Generation introduced (e.g. "generation-i").'}, 'growthRate': {'type': 'string', 'description': 'Growth rate name (e.g. "medium-slow").'}, 'isMythical': {'type': 'boolean', 'description': 'True for mythical Pokémon.'}, 'captureRate': {'type': 'number', 'description': 'Base capture rate (0â\x80\x93255).'}, 'isLegendary': {'type': 'boolean', 'description': 'True for legendary Pokémon.'}, 'evolutionChain': {'anyOf': [{'$ref': '#/$defs/__schema0'}, {'type': 'null'}], 'description': 'Evolution tree rooted at the base species.'}, 'speciesFlavorText': {'type': ['string', 'null'], 'description': 'Flavor text from the selected (or most recent) game version. Null when none available.'}, 'resolvedFromSpecies': {'type': ['string', 'null'], 'description': 'Species name the identifier matched when it named no Pokémon record; this dossier is the default variety of that species. Null when the identifier named a Pokémon record directly.'}}, 'additionalProperties': False}
pokeapi_get_type_matchups
Get Type Matchups
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 PokéAPI Pokémon-record ID). 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.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'type': 'string', 'description': 'Type name in lowercase (e.g. "fire", "water", "psychic"). Provide this or pokemon, not both.'}, 'pokemon': {'type': 'string', 'description': 'Pokémon name or PokéAPI Pokémon-record ID. The server resolves the types automatically. Provide this or type, not both.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['queryType', 'resolvedTypes', 'offensiveRelations', 'defensiveMatchups', 'composedMultipliers']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['not_found', 'invalid_input'], '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.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'queryType': {'type': 'string', 'description': 'How the query was resolved: "type" for a direct type query, "pokemon" for a Pokémon lookup.'}, 'resolvedTypes': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The type name(s) the query resolved to.'}, 'defensiveMatchups': {'type': 'object', 'required': ['weakTo', 'resists', 'immuneTo'], 'properties': {'weakTo': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Attacking types that deal 2Ã\x97 or more damage.'}, 'resists': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Attacking types that deal 0.5Ã\x97 or less damage (but not immune).'}, 'immuneTo': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Attacking types that deal 0Ã\x97 damage.'}}, 'description': 'Defensive matchups â\x80\x94 composed correctly for dual-type Pokémon.', 'additionalProperties': False}, 'offensiveRelations': {'anyOf': [{'type': 'object', 'required': ['superEffectiveTo', 'notVeryEffectiveTo', 'noEffectTo'], 'properties': {'noEffectTo': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Types this type deals 0Ã\x97 damage to (immune).'}, 'superEffectiveTo': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Types this type deals 2Ã\x97 damage to.'}, 'notVeryEffectiveTo': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Types this type deals 0.5Ã\x97 damage to.'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Offensive effectiveness (populated for single-type queries; null for dual-type Pokémon where per-type breakdown does not compose cleanly).'}, 'composedMultipliers': {'type': 'object', 'description': '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Ã\x97 entries where a dual type composes to a cancellation (e.g. Fire/Flying vs Ice: 0.5Ã\x97 then 2Ã\x97 = 1Ã\x97). A type absent from this map relates to neither defending type and also deals 1Ã\x97 damage.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': 'number'}}}, 'additionalProperties': False}
Modifié
pokeapi_find_pokemon
1 October 2026 02:45
Modifié
pokeapi_get_item
1 October 2026 02:45
Modifié
pokeapi_get_move
1 October 2026 02:45
Modifié
pokeapi_get_type_matchups
1 October 2026 02:45
Modifié
pokeapi_get_pokemon
1 October 2026 02:45
Modifié
pokeapi_get_nature
21 September 2026 02:50
Modifié
pokeapi_get_item
21 September 2026 02:50
Modifié
pokeapi_get_ability
21 September 2026 02:50
Modifié
pokeapi_get_move
21 September 2026 02:50
Modifié
pokeapi_get_pokemon
21 September 2026 02:50
Ajouté
pokeapi_find_pokemon
17 September 2026 12:41
Ajouté
pokeapi_get_nature
17 September 2026 12:41
Ajouté
pokeapi_get_item
17 September 2026 12:41
Ajouté
pokeapi_get_ability
17 September 2026 12:41
Ajouté
pokeapi_get_move
17 September 2026 12:41
Ajouté
pokeapi_get_type_matchups
17 September 2026 12:41
Ajouté
pokeapi_get_pokemon
17 September 2026 12:41