Skip to main content
Glama

Get a Pokémon learnset

get_learnset
Read-onlyIdempotent

Look up any species or form to see its complete learnset, with moves grouped by level-up, TM/TR, egg, tutor, and event. Unknown species return near matches; species without data return an error.

Instructions

List every move a Pokémon can learn, grouped by acquisition method (level-up with the level, TM/TR, egg, tutor, event, and so on). This is the species’ own learnset: a move it inherits from a pre-evolution — an egg move such as Grookey’s Fake Out — is filed against that pre-evolution, so use check_legality to decide whether a set’s move is legal in a regulation. Accepts any species or form name; unknown species return an isError with near matches, and a species with no learnset data errors instead of returning an empty list. Read-only and offline.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
speciesYesSpecies or form name, e.g. "Garchomp", "Ogerpon-Wellspring".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
existsYestrue when the dataset has learnset data for the species; a species without data errors instead of returning false.
speciesYesName of the species whose learnset this is, resolved from the argument, e.g. "Garchomp".
eventDataNoEvent distributions that granted this species, when it has any; absent for species with no event history.
eventOnlyYestrue when the species is only obtainable through events, so most of its moves come from the event list.
totalMovesYesNumber of distinct moves the species can learn, counted before grouping by source.
movesBySourceYesLearned moves grouped by how they are acquired, keyed by "Level-up", "TM", "Egg", "Tutor", "Event", "Raid/Event", "Virtual Console transfer", "Dream World", "Pre-evolution", or "Other"; a move learned more than one way appears under each. Each list is sorted by move name and holds display names, e.g. {"TM": ["Earthquake"], "Level-up": ["Dragon Claw"]}. Empty when the dataset records no moves.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 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 / movesBySource / description
      Previous value: -"Learned moves grouped by how they are acquired, keyed by \"Level-up\", \"TM\", \"Egg\", \"Tutor\", \"Event\", \"Raid/Event\", \"Virtual Console transfer\", \"Dream World\", \"Pre-evolution\", or \"Other\"; a move learned more than one way appears under each. Each list is sorted by move name and holds display names, e.g. {\"TM\": [\"Earthquake\"], \"Level-up\": [\"Dragon Claw\"]}. Empty when the generation records no moves."New value: +"Learned moves grouped by how they are acquired, keyed by \"Level-up\", \"TM\", \"Egg\", \"Tutor\", \"Event\", \"Raid/Event\", \"Virtual Console transfer\", \"Dream World\", \"Pre-evolution\", or \"Other\"; a move learned more than one way appears under each. Each list is sorted by move name and holds display names, e.g. {\"TM\": [\"Earthquake\"], \"Level-up\": [\"Dragon Claw\"]}. Empty when the dataset records no moves."
  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: +"Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\"."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "eventData": {
      +      "description": "Event distributions that granted this species, when it has any; absent for species with no event history.",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "abilities": {
      +            "description": "Ability ids the event Pokémon can come with.",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "emeraldEventEgg": {
      +            "description": "true when the event is the Emerald event egg; absent otherwise.",
      +            "type": "boolean"
      +          },
      +          "gender": {
      +            "description": "Gender the event forces, \"M\" or \"F\"; absent when the event does not fix it.",
      +            "type": "string"
      +          },
      +          "generation": {
      +            "description": "Generation the event ran in.",
      +            "type": "number"
      +          },
      +          "isHidden": {
      +            "description": "true when the event grants the hidden ability; absent otherwise.",
      +            "type": "boolean"
      +          },
      +          "ivs": {
      +            "additionalProperties": false,
      +            "description": "IVs the event fixes, keyed by stat id; only the stats the event pins down are listed.",
      +            "properties": {
      +              "atk": {
      +                "description": "Attack IV.",
      +                "type": "number"
      +              },
      +              "def": {
      +                "description": "Defense IV.",
      +                "type": "number"
      +              },
      +              "hp": {
      +                "description": "HP IV.",
      +                "type": "number"
      +              },
      +              "spa": {
      +                "description": "Special Attack IV.",
      +                "type": "number"
      +              },
      +              "spd": {
      +                "description": "Special Defense IV.",
      +                "type": "number"
      +              },
      +              "spe": {
      +                "description": "Speed IV.",
      +                "type": "number"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "japan": {
      +            "description": "true when the event was Japan-only; absent otherwise.",
      +            "type": "boolean"
      +          },
      +          "level": {
      +            "description": "Level the event Pokémon is distributed at.",
      +            "type": "number"
      +          },
      +          "moves": {
      +            "description": "Move ids the event Pokémon comes with.",
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "nature": {
      +            "description": "Nature the event fixes; absent when the nature is not fixed.",
      +            "type": "string"
      +          },
      +          "perfectIVs": {
      +            "description": "Number of stats guaranteed to be perfect (31 IVs); absent when the event guarantees none.",
      +            "type": "number"
      +          },
      +          "pokeball": {
      +            "description": "Ball the Pokémon is distributed in, as an id such as \"cherishball\".",
      +            "type": "string"
      +          },
      +          "shiny": {
      +            "description": "true (or 1) when the distributed Pokémon is shiny; absent when it is not.",
      +            "type": [
      +              "boolean",
      +              "number"
      +            ]
      +          },
      +          "source": {
      +            "description": "Source game the event belongs to, e.g. \"gen8bdsp\".",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "generation",
      +          "level",
      +          "moves"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "eventOnly": {
      +      "description": "true when the species is only obtainable through events, so most of its moves come from the event list.",
      +      "type": "boolean"
      +    },
      +    "exists": {
      +      "description": "true when the dataset has learnset data for the species; a species without data errors instead of returning false.",
      +      "type": "boolean"
      +    },
      +    "movesBySource": {
      +      "additionalProperties": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "description": "Learned moves grouped by how they are acquired, keyed by \"Level-up\", \"TM\", \"Egg\", \"Tutor\", \"Event\", \"Raid/Event\", \"Virtual Console transfer\", \"Dream World\", \"Pre-evolution\", or \"Other\"; a move learned more than one way appears under each. Each list is sorted by move name and holds display names, e.g. {\"TM\": [\"Earthquake\"], \"Level-up\": [\"Dragon Claw\"]}. Empty when the generation records no moves.",
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "species": {
      +      "description": "Name of the species whose learnset this is, resolved from the argument, e.g. \"Garchomp\".",
      +      "type": "string"
      +    },
      +    "totalMoves": {
      +      "description": "Number of distinct moves the species can learn, counted before grouping by source.",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "species",
      +    "exists",
      +    "eventOnly",
      +    "movesBySource",
      +    "totalMoves"
      +  ],
      +  "type": "object"
      +}
  3. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond the read-only annotation: it explains that inherited egg moves are filed under the pre-evolution, that unknown species return an isError with near matches, and that species with no learnset data error instead of returning an empty list. It also adds the offline behavior, which is not in annotations. No contradiction with annotations.

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

Conciseness4/5

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

The description is dense and front-loaded with the main purpose, but it runs to three sentences and includes an illustrative example (Grookey's Fake Out). Every sentence earns its place, though it could be slightly tighter; it remains well-structured and efficient.

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?

For a one-parameter read-only tool with an output schema and annotations covering safety, the description covers input acceptance, error behavior, output grouping, and the critical pre-evolution nuance. Nothing an agent needs to invoke and interpret the tool correctly appears missing.

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

Parameters4/5

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

Schema coverage is 100% for the single `species` parameter, so the baseline is 3. The description adds value beyond the schema by stating that any species or form name is accepted and by detailing the error behavior for unknown species and species with no learnset data, which helps the agent anticipate failure modes when passing the parameter.

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?

The description starts with a specific verb and resource: "List every move a Pokémon can learn," and immediately distinguishes this tool from siblings by noting it is the species' own learnset and that legality is handled by check_legality. An agent can clearly tell it apart from get_pokemon, get_move, get_set, and check_legality without inspecting their 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?

The description explicitly routes the agent to an alternative tool: "so use `check_legality` to decide whether a set’s move is legal in a regulation." This gives an explicit when-not-to-use condition and names the sibling that should be selected instead, satisfying the highest bar for usage guidance.

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