Servidor MCP

pokeapi-mcp-server

io.github.cyanheads/pokeapi-mcp-server
Gaming Conocimiento y documentación Público y accesible MCP 2025-11-25

Qué hace este 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.
Solo lectura Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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%.
Solo lectura Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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}
Modificado
pokeapi_find_pokemon
1 de October de 2026 a las 02:45
Modificado
pokeapi_get_item
1 de October de 2026 a las 02:45
Modificado
pokeapi_get_move
1 de October de 2026 a las 02:45
Modificado
pokeapi_get_type_matchups
1 de October de 2026 a las 02:45
Modificado
pokeapi_get_pokemon
1 de October de 2026 a las 02:45
Modificado
pokeapi_get_nature
21 de September de 2026 a las 02:50
Modificado
pokeapi_get_item
21 de September de 2026 a las 02:50
Modificado
pokeapi_get_ability
21 de September de 2026 a las 02:50
Modificado
pokeapi_get_move
21 de September de 2026 a las 02:50
Modificado
pokeapi_get_pokemon
21 de September de 2026 a las 02:50
Añadido
pokeapi_find_pokemon
17 de September de 2026 a las 12:41
Añadido
pokeapi_get_nature
17 de September de 2026 a las 12:41
Añadido
pokeapi_get_item
17 de September de 2026 a las 12:41
Añadido
pokeapi_get_ability
17 de September de 2026 a las 12:41
Añadido
pokeapi_get_move
17 de September de 2026 a las 12:41
Añadido
pokeapi_get_type_matchups
17 de September de 2026 a las 12:41
Añadido
pokeapi_get_pokemon
17 de September de 2026 a las 12:41