pokeapi-mcp-server
Look up Pokémon, moves, abilities, items, natures, and type matchups from PokéAPI v2.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"pokeapi-mcp-server": {
"command": "bun",
"args": [
"@cyanheads/pokeapi-mcp-server"
]
}
}
}실행 가능한 패키지
0.2.0streamable-http원격 엔드포인트
https://pokeapi.caseyjhand.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (7)
🟢pokeapi_get_pokemon(identifier, include_moves, game_version)
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.
입력 스키마
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "Pokémon name (lowercase hyphenated, e.g. \"bulbasaur\", \"mr-mime\") or Pokédex number as a string (e.g. \"1\", \"25\")."
},
"include_moves": {
"default": false,
"description": "Include the full learnable-move summary. Defaults to false because the list is large (100–200+ moves).",
"type": "boolean"
},
"game_version": {
"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.",
"type": "string"
}
},
"required": [
"identifier"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "National Pokédex number."
},
"name": {
"type": "string",
"description": "Canonical Pokémon name in hyphenated lowercase."
},
"heightDm": {
"type": "number",
"description": "Height in decimetres."
},
"weightHg": {
"type": "number",
"description": "Weight in hectograms."
},
"types": {
"type": "array",
"items": {
"type": "string"
},
"description": "Type names ordered by slot (e.g. [\"fire\", \"flying\"])."
},
"stats": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Stat name (hp, attack, defense, special-attack, special-defense, speed)."
},
"baseStat": {
"type": "number",
"description": "Base stat value."
},
"effort": {
"type": "number",
"description": "Effort value (EV) yield."
}
},
"required": [
"name",
"baseStat",
"effort"
],
"additionalProperties": false,
"description": "Individual base stat entry."
},
"description": "Base stats."
},
"abilities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Ability name in hyphenated lowercase (e.g. \"overgrow\")."
},
"isHidden": {
"type": "boolean",
"description": "True when this is the hidden ability."
},
"slot": {
"type": "number",
"description": "Ability slot (1, 2, or 3)."
},
"effectText": {
"description": "Full English effect description. Null when unavailable.",
"type": [
"string",
"null"
]
},
"shortEffectText": {
"description": "Short English effect description. Null when unavailable.",
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"isHidden",
"slot",
"effectText",
"shortEffectText"
],
"additionalProperties": false,
"description": "Ability entry with effect text and hidden-ability flag."
},
"description": "Abilities with full effect text."
},
"sprites": {
"type": "object",
"properties": {
"frontDefault": {
"description": "Front default sprite URL.",
"type": [
"string",
"null"
]
},
"frontShiny": {
"description": "Front shiny sprite URL.",
"type": [
"string",
"null"
]
},
"officialArtwork": {
"description": "High-quality official artwork URL.",
"type": [
"string",
"null"
]
}
},
"required": [
"frontDefault",
"frontShiny",
"officialArtwork"
],
"additionalProperties": false,
"description": "Sprite URLs."
},
"moves": {
"type": "array",
"items": {
"type": "object",
"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."
}
},
"required": [
"name",
"learnMethod",
"levelLearnedAt"
],
"additionalProperties": false,
"description": "Move summary entry — name, learn method, and level."
},
"description": "Learnable moves (populated when include_moves=true, empty otherwise)."
},
"moveCount": {
"type": "number",
"description": "Total number of learnable moves regardless of include_moves."
},
"speciesFlavorText": {
"description": "Flavor text from the selected (or most recent) game version. Null when none available.",
"type": [
"string",
"null"
]
},
"genus": {
"description": "English genus (e.g. \"Seed Pokémon\"). Null when unavailable.",
"type": [
"string",
"null"
]
},
"captureRate": {
"type": "number",
"description": "Base capture rate (0–255)."
},
"growthRate": {
"type": "string",
"description": "Growth rate name (e.g. \"medium-slow\")."
},
"genderRate": {
"type": "number",
"description": "Gender ratio: -1 genderless, 0 always male, 8 always female, 1–7 fraction (eighths) female."
},
"isLegendary": {
"type": "boolean",
"description": "True for legendary Pokémon."
},
"isMythical": {
"type": "boolean",
"description": "True for mythical Pokémon."
},
"evolutionChain": {
"anyOf": [
{
"$ref": "#/$defs/__schema0"
},
{
"type": "null"
}
],
"description": "Evolution tree rooted at the base species."
},
"varieties": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Variety/form name (e.g. \"pikachu-alola-cap\")."
},
"isDefault": {
"type": "boolean",
"description": "True for the canonical form."
}
},
"required": [
"name",
"isDefault"
],
"additionalProperties": false,
"description": "Form or variant entry with name and default flag."
},
"description": "All forms and variants of this species."
},
"generation": {
"type": "string",
"description": "Generation introduced (e.g. \"generation-i\")."
},
"eggGroups": {
"type": "array",
"items": {
"type": "string"
},
"description": "Egg group names."
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"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"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"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"
]
}
],
"$defs": {
"__schema0": {
"type": "object",
"properties": {
"species": {
"type": "string",
"description": "Species name."
},
"trigger": {
"type": "string",
"description": "Evolution trigger (level-up, use-item, trade, shed, base)."
},
"minLevel": {
"description": "Minimum level required. Null if not applicable.",
"type": [
"number",
"null"
]
},
"item": {
"description": "Item used in evolution. Null if not applicable.",
"type": [
"string",
"null"
]
},
"condition": {
"description": "Human-readable summary of additional conditions (happiness, time of day, etc.).",
"type": [
"string",
"null"
]
},
"evolvesTo": {
"type": "array",
"items": {
"$ref": "#/$defs/__schema0"
},
"description": "Further evolutions from this stage."
}
},
"required": [
"species",
"trigger",
"minLevel",
"item",
"condition",
"evolvesTo"
],
"additionalProperties": false
}
}
}🟢pokeapi_get_type_matchups(type, pokemon)
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.
입력 스키마
{
"type": "object",
"properties": {
"type": {
"description": "Type name in lowercase (e.g. \"fire\", \"water\", \"psychic\"). Provide this or pokemon, not both.",
"type": "string"
},
"pokemon": {
"description": "Pokémon name or Pokédex number. The server resolves the types automatically. Provide this or type, not both.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"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."
},
"offensiveRelations": {
"anyOf": [
{
"type": "object",
"properties": {
"superEffectiveTo": {
"type": "array",
"items": {
"type": "string"
},
"description": "Types this type deals 2× damage to."
},
"notVeryEffectiveTo": {
"type": "array",
"items": {
"type": "string"
},
"description": "Types this type deals 0.5× damage to."
},
"noEffectTo": {
"type": "array",
"items": {
"type": "string"
},
"description": "Types this type deals 0× damage to (immune)."
}
},
"required": [
"superEffectiveTo",
"notVeryEffectiveTo",
"noEffectTo"
],
"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)."
},
"defensiveMatchups": {
"type": "object",
"properties": {
"weakTo": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attacking types that deal 2× or more damage."
},
"resists": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attacking types that deal 0.5× or less damage (but not immune)."
},
"immuneTo": {
"type": "array",
"items": {
"type": "string"
},
"description": "Attacking types that deal 0× damage."
}
},
"required": [
"weakTo",
"resists",
"immuneTo"
],
"additionalProperties": false,
"description": "Defensive matchups — composed correctly for dual-type Pokémon."
},
"composedMultipliers": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {
"type": "number"
},
"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× 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."
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"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"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"queryType",
"resolvedTypes",
"offensiveRelations",
"defensiveMatchups",
"composedMultipliers"
]
},
{
"required": [
"error"
]
}
]
}🟢pokeapi_get_move(identifier, include_learners)
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.
입력 스키마
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "Move name in lowercase hyphenated form (e.g. \"flamethrower\", \"close-combat\") or numeric ID as a string."
},
"include_learners": {
"default": false,
"description": "Include the list of Pokémon that can learn this move. Defaults to false as the list can be large.",
"type": "boolean"
}
},
"required": [
"identifier"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Move ID."
},
"name": {
"type": "string",
"description": "Move name in hyphenated lowercase."
},
"type": {
"type": "string",
"description": "Elemental type (e.g. \"fire\")."
},
"damageClass": {
"description": "Damage class: physical, special, or status. Null when unavailable.",
"type": [
"string",
"null"
]
},
"power": {
"description": "Base power. Null for status moves.",
"type": [
"number",
"null"
]
},
"accuracy": {
"description": "Accuracy percentage (0–100). Null for moves that always hit.",
"type": [
"number",
"null"
]
},
"pp": {
"description": "Base PP. Null when unavailable.",
"type": [
"number",
"null"
]
},
"priority": {
"type": "number",
"description": "Priority bracket (positive = higher priority, negative = lower)."
},
"effectChance": {
"description": "Secondary effect chance percentage. Null when not applicable.",
"type": [
"number",
"null"
]
},
"effectText": {
"description": "Full English effect description. Null when unavailable.",
"type": [
"string",
"null"
]
},
"shortEffectText": {
"description": "Short English effect summary. Null when unavailable.",
"type": [
"string",
"null"
]
},
"target": {
"type": "string",
"description": "Target selection (e.g. \"selected-pokemon\", \"all-opponents\")."
},
"statChanges": {
"type": "array",
"items": {
"type": "object",
"properties": {
"stat": {
"type": "string",
"description": "Stat name."
},
"change": {
"type": "number",
"description": "Stat stage change (positive = buff, negative = debuff)."
}
},
"required": [
"stat",
"change"
],
"additionalProperties": false,
"description": "Stat stage change entry — affected stat and magnitude."
},
"description": "Stat stage changes caused by this move."
},
"learnedByPokemon": {
"type": "array",
"items": {
"type": "string"
},
"description": "Pokémon names that can learn this move (populated when include_learners=true)."
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"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"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"id",
"name",
"type",
"damageClass",
"power",
"accuracy",
"pp",
"priority",
"effectChance",
"effectText",
"shortEffectText",
"target",
"statChanges",
"learnedByPokemon"
]
},
{
"required": [
"error"
]
}
]
}🟢pokeapi_get_ability(identifier)
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.
입력 스키마
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "Ability name in lowercase hyphenated form (e.g. \"overgrow\", \"speed-boost\") or numeric ID as a string."
}
},
"required": [
"identifier"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Ability ID."
},
"name": {
"type": "string",
"description": "Ability name in hyphenated lowercase."
},
"effectText": {
"description": "Full English effect description. Null when unavailable.",
"type": [
"string",
"null"
]
},
"shortEffectText": {
"description": "Short English effect summary. Null when unavailable.",
"type": [
"string",
"null"
]
},
"generation": {
"type": "string",
"description": "Generation in which the ability was introduced."
},
"pokemon": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Pokémon name."
},
"isHidden": {
"type": "boolean",
"description": "True when this is the hidden ability for the Pokémon."
},
"slot": {
"type": "number",
"description": "Ability slot (1, 2, or 3)."
}
},
"required": [
"name",
"isHidden",
"slot"
],
"additionalProperties": false,
"description": "Pokémon entry with ability slot and hidden-ability flag."
},
"description": "Pokémon that have this ability."
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"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"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"id",
"name",
"effectText",
"shortEffectText",
"generation",
"pokemon"
]
},
{
"required": [
"error"
]
}
]
}🟢pokeapi_get_item(identifier)
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.
입력 스키마
{
"type": "object",
"properties": {
"identifier": {
"type": "string",
"description": "Item name in lowercase hyphenated form (e.g. \"choice-specs\", \"leftovers\") or numeric ID as a string."
}
},
"required": [
"identifier"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Item ID."
},
"name": {
"type": "string",
"description": "Item name in hyphenated lowercase."
},
"category": {
"type": "string",
"description": "Item category (e.g. \"held-items\", \"medicine\")."
},
"cost": {
"type": "number",
"description": "Purchase cost in Pokédollars. 0 means not sold in shops."
},
"flingPower": {
"description": "Fling move base power when this item is flung. Null if not throwable.",
"type": [
"number",
"null"
]
},
"effectText": {
"description": "Full English effect description. Null when unavailable.",
"type": [
"string",
"null"
]
},
"shortEffectText": {
"description": "Short English effect summary. Null when unavailable.",
"type": [
"string",
"null"
]
},
"attributes": {
"type": "array",
"items": {
"type": "string"
},
"description": "Item attributes (e.g. \"holdable\", \"consumable\", \"usable-in-battle\")."
},
"heldByPokemon": {
"type": "array",
"items": {
"type": "string"
},
"description": "Pokémon that commonly hold this item in the wild."
},
"spriteUrl": {
"description": "Item sprite URL. Null when no sprite is available.",
"type": [
"string",
"null"
]
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"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"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"id",
"name",
"category",
"cost",
"flingPower",
"effectText",
"shortEffectText",
"attributes",
"heldByPokemon",
"spriteUrl"
]
},
{
"required": [
"error"
]
}
]
}🟢pokeapi_get_nature(identifier)
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%.
입력 스키마
{
"type": "object",
"properties": {
"identifier": {
"description": "Nature name (e.g. \"modest\", \"jolly\") or ID 1–25 as a string. Omit to list all 25 natures.",
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"natures": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Nature ID (1–25)."
},
"name": {
"type": "string",
"description": "Nature name (e.g. \"modest\")."
},
"increasedStat": {
"description": "Stat boosted by 10%. Null for neutral natures.",
"type": [
"string",
"null"
]
},
"decreasedStat": {
"description": "Stat reduced by 10%. Null for neutral natures.",
"type": [
"string",
"null"
]
},
"likesFlavor": {
"description": "Berry flavor the Pokémon prefers. Null for neutral natures.",
"type": [
"string",
"null"
]
},
"hatesFlavor": {
"description": "Berry flavor the Pokémon dislikes. Null for neutral natures.",
"type": [
"string",
"null"
]
}
},
"required": [
"id",
"name",
"increasedStat",
"decreasedStat",
"likesFlavor",
"hatesFlavor"
],
"additionalProperties": false,
"description": "Nature entry with stat modifiers and flavor preferences."
},
"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)."
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"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"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"natures",
"isListAll"
]
},
{
"required": [
"error"
]
}
]
}🟢pokeapi_find_pokemon(generation, type, pokedex, egg_group, query, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"generation": {
"description": "Generation name (e.g. \"generation-i\", \"generation-iii\"). Filters to Pokémon introduced in this generation.",
"type": "string"
},
"type": {
"description": "Type name (e.g. \"fire\", \"psychic\"). Filters to Pokémon of this type.",
"type": "string"
},
"pokedex": {
"description": "Regional pokédex name (e.g. \"kanto\", \"hoenn\", \"galar\"). Filters to entries in that dex.",
"type": "string"
},
"egg_group": {
"description": "Egg group name (e.g. \"monster\", \"fairy\", \"dragon\"). Filters to Pokémon in this egg group.",
"type": "string"
},
"query": {
"description": "Strict token match on name. \"chu\" matches \"pikachu\" and \"raichu\". Case-insensitive.",
"type": "string"
},
"limit": {
"default": 50,
"description": "Maximum results to return. Positive integer; defaults to 50.",
"type": "integer",
"exclusiveMinimum": 0,
"maximum": 9007199254740991
},
"offset": {
"default": 0,
"description": "Offset into the filtered result set for pagination. Non-negative integer; defaults to 0.",
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}출력 스키마
{
"type": "object",
"properties": {
"pokemon": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "National Pokédex number."
},
"name": {
"type": "string",
"description": "Pokémon name."
}
},
"required": [
"id",
"name"
],
"additionalProperties": false,
"description": "Pokémon entry with dex number and name."
},
"description": "Matching Pokémon entries."
},
"totalCount": {
"type": "number",
"description": "Total matching Pokémon before limit/offset."
},
"shown": {
"type": "number",
"description": "Number of results in this response."
},
"notice": {
"description": "Guidance when no Pokémon matched the filters.",
"type": "string"
},
"error": {
"description": "Present when the call failed. Absent on success.",
"type": "object",
"properties": {
"code": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991,
"description": "JSON-RPC error code for this failure."
},
"message": {
"type": "string",
"description": "Human-readable description of what went wrong."
},
"data": {
"type": "object",
"properties": {
"reason": {
"type": "string",
"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"
]
},
"recovery": {
"description": "Actionable next step for the caller.",
"type": "object",
"properties": {
"hint": {
"type": "string"
}
},
"required": [
"hint"
],
"additionalProperties": {}
},
"retryable": {
"description": "Whether retrying may succeed.",
"type": "boolean"
}
},
"additionalProperties": {}
}
},
"required": [
"code",
"message"
],
"additionalProperties": {}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"pokemon",
"totalCount",
"shown"
]
},
{
"required": [
"error"
]
}
]
}커뮤니티
증거