pokeapi-mcp-server

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

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
96%
命名品質
80%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~8,000Token(工具定義)
~13.5 KB典型回應大小
顯著的注意力影響(128k 上下文的 6.25%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `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é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.

輸入結構描述

{
  "type": "object",
  "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."
    },
    "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": "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."
    },
    "resolvedFromSpecies": {
      "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.",
      "type": [
        "string",
        "null"
      ]
    },
    "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 matches no Pokémon record and no species. 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",
        "resolvedFromSpecies",
        "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": "First alternative trigger, or base for the root stage."
        },
        "minLevel": {
          "description": "First alternative minimum level. Null when unspecified.",
          "type": [
            "number",
            "null"
          ]
        },
        "item": {
          "description": "First alternative evolution item. Null when unspecified.",
          "type": [
            "string",
            "null"
          ]
        },
        "condition": {
          "description": "Compatibility summary of the first alternative; evolutionDetails contains the complete methods.",
          "type": [
            "string",
            "null"
          ]
        },
        "evolutionDetails": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "versionGroup": {
                "description": "Version group that introduced this method. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "isDefault": {
                "description": "Whether this is the expected main-series evolution for its variety. Null when unspecified.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "requiredPokemonForm": {
                "description": "Required starting form. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "evolvedPokemonForm": {
                "description": "Resulting form. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "trigger": {
                "type": "string",
                "description": "Event that triggers this alternative."
              },
              "item": {
                "description": "Item used for evolution. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "gender": {
                "description": "Required gender ID. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "heldItem": {
                "description": "Required held item. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "knownMove": {
                "description": "Required known move. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "knownMoveType": {
                "description": "Type of a required known move. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "location": {
                "description": "Required location. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "minLevel": {
                "description": "Minimum level. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "minHappiness": {
                "description": "Minimum happiness. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "minBeauty": {
                "description": "Minimum beauty. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "minAffection": {
                "description": "Minimum affection. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "nearSpecialRock": {
                "description": "Whether proximity to a Moss Rock or Icy Rock is required. Null when unspecified.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "needsMultiplayer": {
                "description": "Whether multiplayer link play is required. Null when unspecified.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "needsOverworldRain": {
                "description": "Whether overworld rain is required. Null when unspecified.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "partySpecies": {
                "description": "Species required in the party. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "partyType": {
                "description": "Type required in the party. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "relativePhysicalStats": {
                "description": "Required Attack relative to Defense: 1 greater, 0 equal, -1 less. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timeOfDay": {
                "description": "Required time of day. Empty string is preserved; null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "tradeSpecies": {
                "description": "Species to trade for. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "turnUpsideDown": {
                "description": "Whether the device must be upside down. Null when unspecified.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "region": {
                "description": "Required region. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "usedMove": {
                "description": "Move that must be used. Null when unspecified.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "minMoveCount": {
                "description": "Minimum move uses. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "minSteps": {
                "description": "Minimum steps. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "minDamageTaken": {
                "description": "Minimum damage taken. Null when unspecified.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "allowedNatures": {
                "anyOf": [
                  {
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Allowed nature names. Empty lists are preserved; null when unspecified."
              },
              "conditionExpression": {
                "anyOf": [
                  {
                    "type": "object",
                    "properties": {
                      "expression": {
                        "type": "string",
                        "description": "Verbatim upstream RPN condition expression; not evaluated."
                      },
                      "percentageChance": {
                        "type": "number",
                        "description": "Upstream chance percentage, including zero."
                      },
                      "variables": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "description": "Names of expression variables in upstream order."
                      }
                    },
                    "required": [
                      "expression",
                      "percentageChance",
                      "variables"
                    ],
                    "additionalProperties": false
                  },
                  {
                    "type": "null"
                  }
                ],
                "description": "Variable-dependent condition supplied by PokéAPI. Null when unspecified."
              }
            },
            "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"
            ],
            "additionalProperties": false,
            "description": "One complete alternative evolution method."
          },
          "description": "All alternative methods in upstream order; empty for a base stage. Requirements apply within each method, never across alternatives."
        },
        "evolvesTo": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/__schema0"
          },
          "description": "Further evolutions from this stage."
        }
      },
      "required": [
        "species",
        "trigger",
        "minLevel",
        "item",
        "condition",
        "evolutionDetails",
        "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 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.

輸入結構描述

{
  "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éAPI Pokémon-record ID. 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)."
    },
    "learnersIncluded": {
      "type": "boolean",
      "description": "True when the learner list was requested, including when no learners are known."
    },
    "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",
        "learnersIncluded"
      ]
    },
    {
      "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, versioned purchase and sell prices, 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": {
      "description": "Legacy Pokédollar cost when supplied. Null when unavailable; zero is a literal amount. Independent of versioned prices.",
      "type": [
        "number",
        "null"
      ]
    },
    "prices": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "versionGroup": {
            "type": "string",
            "description": "Version group these prices apply to."
          },
          "currency": {
            "type": "string",
            "description": "Currency name for both prices."
          },
          "purchasePrice": {
            "description": "Purchase price in this currency and version group. Null means not purchasable; zero is a literal amount.",
            "type": [
              "number",
              "null"
            ]
          },
          "sellPrice": {
            "description": "Sell price in this currency and version group. Null means not sellable; zero is a literal amount.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "versionGroup",
          "currency",
          "purchasePrice",
          "sellPrice"
        ],
        "additionalProperties": false,
        "description": "One version and currency price record."
      },
      "description": "All supplied price records in upstream order. Empty when no records are available."
    },
    "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",
        "prices",
        "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é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.

輸入結構描述

{
  "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. At most 100 characters; whitespace separates tokens, and every token must match.",
      "type": "string",
      "maxLength": 100
    },
    "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": "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."
          }
        },
        "required": [
          "id",
          "name"
        ],
        "additionalProperties": false,
        "description": "Pokémon entry with PokéAPI ID 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."
    },
    "appliedFilters": {
      "type": "object",
      "properties": {
        "generation": {
          "description": "Normalized generation filter, when applied.",
          "type": "string"
        },
        "type": {
          "description": "Normalized type filter, when applied.",
          "type": "string"
        },
        "pokedex": {
          "description": "Normalized pokédex filter, when applied.",
          "type": "string"
        },
        "egg_group": {
          "description": "Normalized egg-group filter, when applied.",
          "type": "string"
        },
        "query": {
          "description": "Applied lowercase query tokens joined with single spaces. Omitted without a category filter.",
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991,
          "description": "Accepted page size, including the default of 50."
        },
        "offset": {
          "type": "integer",
          "minimum": 0,
          "maximum": 9007199254740991,
          "description": "Accepted page offset, including the default of 0."
        }
      },
      "required": [
        "limit",
        "offset"
      ],
      "additionalProperties": false,
      "description": "Effective nonblank filters and pagination controls for this response."
    },
    "notice": {
      "description": "Guidance for missing category filters, zero matches, or an offset beyond the results.",
      "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",
        "appliedFilters"
      ]
    },
    {
      "required": [
        "error"
      ]
    }
  ]
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本7 個工具
已驗證未記錄版本7 個工具
已驗證未記錄版本7 個工具