pokeapi-mcp-server

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

사용해야 할까요

품질 및 안전성

A
설명 품질
97%
스키마 완전성
96%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~6,434토큰 (도구 정의)
~10.4 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 5.03%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "pokeapi-mcp-server": {
      "command": "bun",
      "args": [
        "@cyanheads/pokeapi-mcp-server"
      ]
    }
  }
}

실행 가능한 패키지

npm@cyanheads/pokeapi-mcp-server0.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"
      ]
    }
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 7개
검증됨버전이 기록되지 않음도구 7개