pokeapi-mcp-server

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
100%
Integridad del esquema
96%
Calidad de los nombres
80%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~8,000Tokens (definiciones de herramientas)
~13.5 KBTamaño de respuesta típico
Impacto significativo en la atención (6.25% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

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

Paquetes ejecutables

npm@cyanheads/pokeapi-mcp-server0.2.0streamable-http

Puntos de conexión remotos

https://pokeapi.caseyjhand.com/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (7)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢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.

Esquema de entrada

{
  "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
}

Esquema de salida

{
  "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.

Esquema de entrada

{
  "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
}

Esquema de salida

{
  "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.

Esquema de entrada

{
  "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
}

Esquema de salida

{
  "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.

Esquema de entrada

{
  "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
}

Esquema de salida

{
  "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.

Esquema de entrada

{
  "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
}

Esquema de salida

{
  "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%.

Esquema de entrada

{
  "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
}

Esquema de salida

{
  "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.

Esquema de entrada

{
  "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
}

Esquema de salida

{
  "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"
      ]
    }
  ]
}

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada7 herramientas
verificadoversión no registrada7 herramientas
verificadoversión no registrada7 herramientas