Skip to main content
Glama

List Pokémon forms

list_forms
Read-onlyIdempotent

List every form of one species—base, alternate, cosmetic, and battle-only—with types, stats, abilities, and total count, noting missing entries.

Instructions

List every form of one species — base, alternate, cosmetic, and battle-only — with each form's types, base stats, abilities, plus the total count. Forms that have no data are returned with a note rather than dropped, so a missing entry is visible. Use it before assuming a form exists; for a single species' full profile use get_pokemon, and to search names across species use search_dex. Read-only and offline; unknown species return an isError with near matches.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
speciesYesBase species to expand, e.g. "Rotom", "Ogerpon", "Gholdengo".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYesNumber of entries in `forms`, including placeholders for forms with no data.
formsYesOne entry per known form name of the species — base, alternate, cosmetic, and battle-only — either a full form profile or a `{name, note}` placeholder.
baseSpeciesYesName of the base species whose forms are listed, e.g. "Rotom" when asked for "Rotom-Wash".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv3.2.0
    • removedInput schema / properties / generation
      Removed value: -{
      -  "default": 9,
      -  "description": "Generation whose data to use, 1-9 (default 9). Earlier generations omit moves, items, abilities, and forms that did not exist yet.",
      -  "maximum": 9,
      -  "minimum": 1,
      -  "type": "integer"
      -}
    • changedOutput schema / properties / count / description
      Previous value: -"Number of entries in `forms`, including placeholders for forms missing in this generation."New value: +"Number of entries in `forms`, including placeholders for forms with no data."
    • changedOutput schema / properties / forms / items / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "description": "A form that exists in the requested generation, carrying the same fields as `get_pokemon` (minus evolutions and the long tail of dataset metadata).",
      -    "properties": {
      -      "abilities": {
      -        "additionalProperties": false,
      -        "description": "Abilities keyed by Showdown slot: \"0\" primary, \"1\" secondary, \"H\" hidden, \"S\" special.",
      -        "properties": {
      -          "0": {
      -            "description": "Primary ability.",
      -            "type": "string"
      -          },
      -          "1": {
      -            "description": "Secondary ability; absent from species with only one normal ability.",
      -            "type": "string"
      -          },
      -          "H": {
      -            "description": "Hidden ability; absent from species that have none.",
      -            "type": "string"
      -          },
      -          "S": {
      -            "description": "Special slot, used by abilities that come with a forme (Battle Bond, Power Construct); absent for species that have none.",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "0"
      -        ],
      -        "type": "object"
      -      },
      -      "baseStats": {
      -        "additionalProperties": false,
      -        "description": "All six stats keyed by stat id (\"hp\", \"atk\", \"def\", \"spa\", \"spd\", \"spe\").",
      -        "properties": {
      -          "atk": {
      -            "description": "Attack.",
      -            "type": "number"
      -          },
      -          "def": {
      -            "description": "Defense.",
      -            "type": "number"
      -          },
      -          "hp": {
      -            "description": "Hit Points.",
      -            "type": "number"
      -          },
      -          "spa": {
      -            "description": "Special Attack.",
      -            "type": "number"
      -          },
      -          "spd": {
      -            "description": "Special Defense.",
      -            "type": "number"
      -          },
      -          "spe": {
      -            "description": "Speed.",
      -            "type": "number"
      -          }
      -        },
      -        "required": [
      -          "hp",
      -          "atk",
      -          "def",
      -          "spa",
      -          "spd",
      -          "spe"
      -        ],
      -        "type": "object"
      -      },
      -      "battleOnly": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          }
      -        ],
      -        "description": "The species this form transforms from in battle; absent for normally selectable forms."
      -      },
      -      "bst": {
      -        "description": "Base stat total of the form.",
      -        "type": "number"
      -      },
      -      "doublesTier": {
      -        "description": "Doubles (VGC) tier label of the form; may be empty.",
      -        "type": "string"
      -      },
      -      "isCosmetic": {
      -        "description": "true when the form differs only cosmetically.",
      -        "type": "boolean"
      -      },
      -      "isMega": {
      -        "description": "true for Mega Evolutions; absent otherwise.",
      -        "type": "boolean"
      -      },
      -      "isPrimal": {
      -        "description": "true for Primal Reversions; absent otherwise.",
      -        "type": "boolean"
      -      },
      -      "name": {
      -        "description": "Form name, e.g. \"Rotom-Wash\".",
      -        "type": "string"
      -      },
      -      "tier": {
      -        "description": "Singles tier label of the form; may be empty for untiered forms.",
      -        "type": "string"
      -      },
      -      "types": {
      -        "description": "Typing of the form, e.g. [\"Electric\", \"Water\"]. One of \"Bug\", \"Dark\", \"Dragon\", \"Electric\", \"Fairy\", \"Fighting\", \"Fire\", \"Flying\", \"Ghost\", \"Grass\", \"Ground\", \"Ice\", \"Normal\", \"Poison\", \"Psychic\", \"Rock\", \"Steel\", \"Water\".",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "name",
      -      "types",
      -      "baseStats",
      -      "bst",
      -      "abilities",
      -      "tier",
      -      "doublesTier",
      -      "isCosmetic"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "description": "Placeholder for a form name the dataset knows about but that does not exist in the requested generation; distinguishes \"no such form\" from \"form missing here\".",
      -    "properties": {
      -      "name": {
      -        "description": "Form name that has no data in the requested generation.",
      -        "type": "string"
      -      },
      -      "note": {
      -        "description": "Why the entry is empty — currently always \"unavailable in this generation\".",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "name",
      -      "note"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "description": "A form that exists in the dataset, carrying the same fields as `get_pokemon` (minus evolutions and the long tail of dataset metadata).",
      +    "properties": {
      +      "abilities": {
      +        "additionalProperties": false,
      +        "description": "Abilities keyed by Showdown slot: \"0\" primary, \"1\" secondary, \"H\" hidden, \"S\" special.",
      +        "properties": {
      +          "0": {
      +            "description": "Primary ability.",
      +            "type": "string"
      +          },
      +          "1": {
      +            "description": "Secondary ability; absent from species with only one normal ability.",
      +            "type": "string"
      +          },
      +          "H": {
      +            "description": "Hidden ability; absent from species that have none.",
      +            "type": "string"
      +          },
      +          "S": {
      +            "description": "Special slot, used by abilities that come with a forme (Battle Bond, Power Construct); absent for species that have none.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "0"
      +        ],
      +        "type": "object"
      +      },
      +      "baseStats": {
      +        "additionalProperties": false,
      +        "description": "All six stats keyed by stat id (\"hp\", \"atk\", \"def\", \"spa\", \"spd\", \"spe\").",
      +        "properties": {
      +          "atk": {
      +            "description": "Attack.",
      +            "type": "number"
      +          },
      +          "def": {
      +            "description": "Defense.",
      +            "type": "number"
      +          },
      +          "hp": {
      +            "description": "Hit Points.",
      +            "type": "number"
      +          },
      +          "spa": {
      +            "description": "Special Attack.",
      +            "type": "number"
      +          },
      +          "spd": {
      +            "description": "Special Defense.",
      +            "type": "number"
      +          },
      +          "spe": {
      +            "description": "Speed.",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "hp",
      +          "atk",
      +          "def",
      +          "spa",
      +          "spd",
      +          "spe"
      +        ],
      +        "type": "object"
      +      },
      +      "battleOnly": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          }
      +        ],
      +        "description": "The species this form transforms from in battle; absent for normally selectable forms."
      +      },
      +      "bst": {
      +        "description": "Base stat total of the form.",
      +        "type": "number"
      +      },
      +      "isCosmetic": {
      +        "description": "true when the form differs only cosmetically.",
      +        "type": "boolean"
      +      },
      +      "isMega": {
      +        "description": "true for Mega Evolutions; absent otherwise.",
      +        "type": "boolean"
      +      },
      +      "isPrimal": {
      +        "description": "true for Primal Reversions; absent otherwise.",
      +        "type": "boolean"
      +      },
      +      "name": {
      +        "description": "Form name, e.g. \"Rotom-Wash\".",
      +        "type": "string"
      +      },
      +      "types": {
      +        "description": "Typing of the form, e.g. [\"Electric\", \"Water\"]. One of \"Bug\", \"Dark\", \"Dragon\", \"Electric\", \"Fairy\", \"Fighting\", \"Fire\", \"Flying\", \"Ghost\", \"Grass\", \"Ground\", \"Ice\", \"Normal\", \"Poison\", \"Psychic\", \"Rock\", \"Steel\", \"Water\".",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "types",
      +      "baseStats",
      +      "bst",
      +      "abilities",
      +      "isCosmetic"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "description": "Placeholder for a form name the dataset knows about but that distinguishes \"no such form\" from \"form missing here\"; distinguishes \"no such form\" from \"form missing here\".",
      +    "properties": {
      +      "name": {
      +        "description": "Form name that has no data in the dataset.",
      +        "type": "string"
      +      },
      +      "note": {
      +        "description": "Why the entry is empty — currently always \"unavailable in the dataset\".",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "note"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed3 schema fields changedv1.1.1
    • addedInput schema / properties / generation / description
      Added value: +"Generation whose data to use, 1-9 (default 9). Earlier generations omit moves, items, abilities, and forms that did not exist yet."
    • addedInput schema / properties / species / description
      Added value: +"Base species to expand, e.g. \"Rotom\", \"Ogerpon\", \"Gholdengo\"."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "baseSpecies": {
      +      "description": "Name of the base species whose forms are listed, e.g. \"Rotom\" when asked for \"Rotom-Wash\".",
      +      "type": "string"
      +    },
      +    "count": {
      +      "description": "Number of entries in `forms`, including placeholders for forms missing in this generation.",
      +      "type": "number"
      +    },
      +    "forms": {
      +      "description": "One entry per known form name of the species — base, alternate, cosmetic, and battle-only — either a full form profile or a `{name, note}` placeholder.",
      +      "items": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": false,
      +            "description": "A form that exists in the requested generation, carrying the same fields as `get_pokemon` (minus evolutions and the long tail of dataset metadata).",
      +            "properties": {
      +              "abilities": {
      +                "additionalProperties": false,
      +                "description": "Abilities keyed by Showdown slot: \"0\" primary, \"1\" secondary, \"H\" hidden, \"S\" special.",
      +                "properties": {
      +                  "0": {
      +                    "description": "Primary ability.",
      +                    "type": "string"
      +                  },
      +                  "1": {
      +                    "description": "Secondary ability; absent from species with only one normal ability.",
      +                    "type": "string"
      +                  },
      +                  "H": {
      +                    "description": "Hidden ability; absent from species that have none.",
      +                    "type": "string"
      +                  },
      +                  "S": {
      +                    "description": "Special slot, used by abilities that come with a forme (Battle Bond, Power Construct); absent for species that have none.",
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "0"
      +                ],
      +                "type": "object"
      +              },
      +              "baseStats": {
      +                "additionalProperties": false,
      +                "description": "All six stats keyed by stat id (\"hp\", \"atk\", \"def\", \"spa\", \"spd\", \"spe\").",
      +                "properties": {
      +                  "atk": {
      +                    "description": "Attack.",
      +                    "type": "number"
      +                  },
      +                  "def": {
      +                    "description": "Defense.",
      +                    "type": "number"
      +                  },
      +                  "hp": {
      +                    "description": "Hit Points.",
      +                    "type": "number"
      +                  },
      +                  "spa": {
      +                    "description": "Special Attack.",
      +                    "type": "number"
      +                  },
      +                  "spd": {
      +                    "description": "Special Defense.",
      +                    "type": "number"
      +                  },
      +                  "spe": {
      +                    "description": "Speed.",
      +                    "type": "number"
      +                  }
      +                },
      +                "required": [
      +                  "hp",
      +                  "atk",
      +                  "def",
      +                  "spa",
      +                  "spd",
      +                  "spe"
      +                ],
      +                "type": "object"
      +              },
      +              "battleOnly": {
      +                "anyOf": [
      +                  {
      +                    "type": "string"
      +                  },
      +                  {
      +                    "items": {
      +                      "type": "string"
      +                    },
      +                    "type": "array"
      +                  }
      +                ],
      +                "description": "The species this form transforms from in battle; absent for normally selectable forms."
      +              },
      +              "bst": {
      +                "description": "Base stat total of the form.",
      +                "type": "number"
      +              },
      +              "doublesTier": {
      +                "description": "Doubles (VGC) tier label of the form; may be empty.",
      +                "type": "string"
      +              },
      +              "isCosmetic": {
      +                "description": "true when the form differs only cosmetically.",
      +                "type": "boolean"
      +              },
      +              "isMega": {
      +                "description": "true for Mega Evolutions; absent otherwise.",
      +                "type": "boolean"
      +              },
      +              "isPrimal": {
      +                "description": "true for Primal Reversions; absent otherwise.",
      +                "type": "boolean"
      +              },
      +              "name": {
      +                "description": "Form name, e.g. \"Rotom-Wash\".",
      +                "type": "string"
      +              },
      +              "tier": {
      +                "description": "Singles tier label of the form; may be empty for untiered forms.",
      +                "type": "string"
      +              },
      +              "types": {
      +                "description": "Typing of the form, e.g. [\"Electric\", \"Water\"]. One of \"Bug\", \"Dark\", \"Dragon\", \"Electric\", \"Fairy\", \"Fighting\", \"Fire\", \"Flying\", \"Ghost\", \"Grass\", \"Ground\", \"Ice\", \"Normal\", \"Poison\", \"Psychic\", \"Rock\", \"Steel\", \"Water\".",
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "types",
      +              "baseStats",
      +              "bst",
      +              "abilities",
      +              "tier",
      +              "doublesTier",
      +              "isCosmetic"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "additionalProperties": false,
      +            "description": "Placeholder for a form name the dataset knows about but that does not exist in the requested generation; distinguishes \"no such form\" from \"form missing here\".",
      +            "properties": {
      +              "name": {
      +                "description": "Form name that has no data in the requested generation.",
      +                "type": "string"
      +              },
      +              "note": {
      +                "description": "Why the entry is empty — currently always \"unavailable in this generation\".",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "note"
      +            ],
      +            "type": "object"
      +          }
      +        ]
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "baseSpecies",
      +    "count",
      +    "forms"
      +  ],
      +  "type": "object"
      +}
  3. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral context beyond this: missing forms are returned with a note instead of dropped, unknown species return isError with near matches, and the operation is offline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences deliver purpose, output contents, error behavior, usage guidance, and alternatives with no filler. Key scope is front-loaded, and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description need not recreate return formatting, yet it still covers edge cases: data-less forms, missing entries, unknown species, and error behavior. An agent has everything needed to invoke and interpret the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema parameter description already explains the base-species meaning with examples. The description reinforces that the operation is per-species but does not add meaningful new parameter semantics beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: list all forms of one species, naming the categories included (base, alternate, cosmetic, battle-only). It also names sibling tools get_pokemon and search_dex as different operations, so an agent can distinguish them without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use: before assuming a form exists. It also gives direct alternatives, get_pokemon for a full species profile and search_dex for cross-species name search, leaving no ambiguity about tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.