Skip to main content
Glama

Get move data

get_move
Read-onlyIdempotent

Get a move's battle data: type, damage class, power, accuracy, PP, priority, target, flags, secondary effects, Z/Max variants, and effect text. Use Showdown names for team and matchup analysis.

Instructions

Get one move's battle data: type, damage class, base power, accuracy, PP, priority, target, flags, secondary effect, Z/Max variants, and effect text. Use get_learnset to check which Pokémon learn it and calculate_damage to apply it in a matchup, rather than reasoning about damage from these fields. Accepts Showdown move names case- and punctuation-insensitively ("make it rain"); unknown moves return an isError with near matches. Read-only and offline.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
moveYesMove name, e.g. "Earthquake", "Make It Rain", "Dragon Claw".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
ppYesBase PP, before PP Ups.
genYesGeneration the move was introduced in.
isZNoZ-Crystal id that turns this move into a Z-Move; absent when the move has no dedicated Z-Move.
numYesMove number in the dataset, which is also the sort key `search_dex` returns moves by.
descYesFull effect description.
nameYesMove name, e.g. "Earthquake".
typeYesMove type. One of "Bug", "Dark", "Dragon", "Electric", "Fairy", "Fighting", "Fire", "Flying", "Ghost", "Grass", "Ground", "Ice", "Normal", "Poison", "Psychic", "Rock", "Steel", "Water".
drainNoHP the user recovers as a [numerator, denominator] fraction of damage dealt, e.g. [1, 2] for half; absent when the move does not drain.
flagsYesFlags the move carries, as {"<flag>": 1}; any flag not listed does not apply. Possible keys: "allyanim", "bite", "bullet", "bypasssub", "cantusetwice", "charge", "contact", "dance", "defrost", "distance", "failcopycat", "failencore", "failinstruct", "failmefirst", "failmimic", "futuremove", "gravity", "heal", "metronome", "minimize", "mirror", "mustpressure", "noassist", "nonsky", "noparentalbond", "nosketch", "nosleeptalk", "pledgecombo", "powder", "protect", "pulse", "punch", "recharge", "reflectable", "slicing", "snatch", "sound", "wind".
isMaxNoSpecies name when this is a G-Max move, true for generic Max Moves; absent when the move is not a Max Move.
zMoveNoThe Z-Move this move becomes when a Z-Crystal is held; absent when it does not become one.
recoilNoRecoil to the user as a [numerator, denominator] fraction of damage dealt, e.g. [33, 100]; absent when the move has no recoil.
targetYesTargeting mode, e.g. "normal", "self", "allAdjacent", "allAdjacentFoes", "allySide".
maxMoveNoThe Max Move this move becomes under Dynamax; absent when it does not become one.
accuracyYesAccuracy as a percentage, or true when the move cannot miss.
categoryYesDamage class: "Physical", "Special", or "Status".
multihitNoHit count when the move hits multiple times: a fixed number, or a [min, max] range as [2, 5]; absent for single-hit moves.
priorityYesPriority bracket: positive moves act first, negative moves last.
alwaysHitNotrue when the dataset marks the move as never missing; absent from every other move.
basePowerYesBase power; 0 for status moves and for moves whose power is computed rather than fixed (e.g. Seismic Toss, Low Kick).
secondaryNoSecondary effect attached to the move itself, when it has one (absent for moves with none).
shortDescYesOne-line effect summary.
secondariesNoList of secondary effects, present for moves that carry more than one (e.g. a different effect per hit); absent for moves with none.
breaksProtectNotrue when the move hits through Protect and similar protection; absent when it does not.
isNonstandardYes"Past", "Future", "Unobtainable", or "CAP" when the move is not available in the current games; null when it is standard.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field 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"
      -}
  2. Changed1 schema field changedv2.0.0
    • changedOutput schema / properties / num / description
      Previous value: -"Move number in the dataset, which is also the sort key `search` returns moves by."New value: +"Move number in the dataset, which is also the sort key `search_dex` returns moves by."
  3. 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 / move / description
      Added value: +"Move name, e.g. \"Earthquake\", \"Make It Rain\", \"Dragon Claw\"."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "accuracy": {
      +      "description": "Accuracy as a percentage, or true when the move cannot miss.",
      +      "type": [
      +        "number",
      +        "boolean"
      +      ]
      +    },
      +    "alwaysHit": {
      +      "description": "true when the dataset marks the move as never missing; absent from every other move.",
      +      "type": "boolean"
      +    },
      +    "basePower": {
      +      "description": "Base power; 0 for status moves and for moves whose power is computed rather than fixed (e.g. Seismic Toss, Low Kick).",
      +      "type": "number"
      +    },
      +    "breaksProtect": {
      +      "description": "true when the move hits through Protect and similar protection; absent when it does not.",
      +      "type": "boolean"
      +    },
      +    "category": {
      +      "description": "Damage class: \"Physical\", \"Special\", or \"Status\".",
      +      "type": "string"
      +    },
      +    "desc": {
      +      "description": "Full effect description.",
      +      "type": "string"
      +    },
      +    "drain": {
      +      "description": "HP the user recovers as a [numerator, denominator] fraction of damage dealt, e.g. [1, 2] for half; absent when the move does not drain.",
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    "flags": {
      +      "additionalProperties": {
      +        "type": "number"
      +      },
      +      "description": "Flags the move carries, as {\"<flag>\": 1}; any flag not listed does not apply. Possible keys: \"allyanim\", \"bite\", \"bullet\", \"bypasssub\", \"cantusetwice\", \"charge\", \"contact\", \"dance\", \"defrost\", \"distance\", \"failcopycat\", \"failencore\", \"failinstruct\", \"failmefirst\", \"failmimic\", \"futuremove\", \"gravity\", \"heal\", \"metronome\", \"minimize\", \"mirror\", \"mustpressure\", \"noassist\", \"nonsky\", \"noparentalbond\", \"nosketch\", \"nosleeptalk\", \"pledgecombo\", \"powder\", \"protect\", \"pulse\", \"punch\", \"recharge\", \"reflectable\", \"slicing\", \"snatch\", \"sound\", \"wind\".",
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "gen": {
      +      "description": "Generation the move was introduced in.",
      +      "type": "number"
      +    },
      +    "isMax": {
      +      "description": "Species name when this is a G-Max move, true for generic Max Moves; absent when the move is not a Max Move.",
      +      "type": [
      +        "string",
      +        "boolean"
      +      ]
      +    },
      +    "isNonstandard": {
      +      "description": "\"Past\", \"Future\", \"Unobtainable\", or \"CAP\" when the move is not available in the current games; null when it is standard.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "isZ": {
      +      "description": "Z-Crystal id that turns this move into a Z-Move; absent when the move has no dedicated Z-Move.",
      +      "type": "string"
      +    },
      +    "maxMove": {
      +      "additionalProperties": false,
      +      "description": "The Max Move this move becomes under Dynamax; absent when it does not become one.",
      +      "properties": {
      +        "basePower": {
      +          "description": "Base power of the Max Move under Dynamax.",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "basePower"
      +      ],
      +      "type": "object"
      +    },
      +    "multihit": {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "items": {
      +            "type": "number"
      +          },
      +          "type": "array"
      +        }
      +      ],
      +      "description": "Hit count when the move hits multiple times: a fixed number, or a [min, max] range as [2, 5]; absent for single-hit moves."
      +    },
      +    "name": {
      +      "description": "Move name, e.g. \"Earthquake\".",
      +      "type": "string"
      +    },
      +    "num": {
      +      "description": "Move number in the dataset, which is also the sort key `search` returns moves by.",
      +      "type": "number"
      +    },
      +    "pp": {
      +      "description": "Base PP, before PP Ups.",
      +      "type": "number"
      +    },
      +    "priority": {
      +      "description": "Priority bracket: positive moves act first, negative moves last.",
      +      "type": "number"
      +    },
      +    "recoil": {
      +      "description": "Recoil to the user as a [numerator, denominator] fraction of damage dealt, e.g. [33, 100]; absent when the move has no recoil.",
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    "secondaries": {
      +      "description": "List of secondary effects, present for moves that carry more than one (e.g. a different effect per hit); absent for moves with none.",
      +      "items": {
      +        "additionalProperties": false,
      +        "description": "One secondary effect of the move; only the fields that apply to that effect are present.",
      +        "properties": {
      +          "boosts": {
      +            "additionalProperties": {
      +              "type": "number"
      +            },
      +            "description": "Stat changes applied to the target, e.g. {\"spd\": -1} for a Special Defense drop.",
      +            "propertyNames": {
      +              "type": "string"
      +            },
      +            "type": "object"
      +          },
      +          "chance": {
      +            "description": "Percent chance the effect triggers; absent when it is guaranteed.",
      +            "type": "number"
      +          },
      +          "self": {
      +            "additionalProperties": false,
      +            "description": "Effect applied to the user instead of the target, e.g. a self-boost or self-drop.",
      +            "properties": {
      +              "boosts": {
      +                "additionalProperties": {
      +                  "type": "number"
      +                },
      +                "description": "Stat changes applied to the user of the move.",
      +                "propertyNames": {
      +                  "type": "string"
      +                },
      +                "type": "object"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "status": {
      +            "description": "Major status inflicted, e.g. \"brn\", \"par\", \"frz\".",
      +            "type": "string"
      +          },
      +          "volatileStatus": {
      +            "description": "Volatile status inflicted, e.g. \"flinch\", \"confusion\".",
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "secondary": {
      +      "additionalProperties": false,
      +      "description": "Secondary effect attached to the move itself, when it has one (absent for moves with none).",
      +      "properties": {
      +        "boosts": {
      +          "additionalProperties": {
      +            "type": "number"
      +          },
      +          "description": "Stat changes applied to the target, e.g. {\"spd\": -1} for a Special Defense drop.",
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "chance": {
      +          "description": "Percent chance the effect triggers; absent when it is guaranteed.",
      +          "type": "number"
      +        },
      +        "self": {
      +          "additionalProperties": false,
      +          "description": "Effect applied to the user instead of the target, e.g. a self-boost or self-drop.",
      +          "properties": {
      +            "boosts": {
      +              "additionalProperties": {
      +                "type": "number"
      +              },
      +              "description": "Stat changes applied to the user of the move.",
      +              "propertyNames": {
      +                "type": "string"
      +              },
      +              "type": "object"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "status": {
      +          "description": "Major status inflicted, e.g. \"brn\", \"par\", \"frz\".",
      +          "type": "string"
      +        },
      +        "volatileStatus": {
      +          "description": "Volatile status inflicted, e.g. \"flinch\", \"confusion\".",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "shortDesc": {
      +      "description": "One-line effect summary.",
      +      "type": "string"
      +    },
      +    "target": {
      +      "description": "Targeting mode, e.g. \"normal\", \"self\", \"allAdjacent\", \"allAdjacentFoes\", \"allySide\".",
      +      "type": "string"
      +    },
      +    "type": {
      +      "description": "Move type. One of \"Bug\", \"Dark\", \"Dragon\", \"Electric\", \"Fairy\", \"Fighting\", \"Fire\", \"Flying\", \"Ghost\", \"Grass\", \"Ground\", \"Ice\", \"Normal\", \"Poison\", \"Psychic\", \"Rock\", \"Steel\", \"Water\".",
      +      "type": "string"
      +    },
      +    "zMove": {
      +      "additionalProperties": false,
      +      "description": "The Z-Move this move becomes when a Z-Crystal is held; absent when it does not become one.",
      +      "properties": {
      +        "basePower": {
      +          "description": "Base power the Z-Move is fixed to.",
      +          "type": "number"
      +        },
      +        "boost": {
      +          "additionalProperties": {
      +            "type": "number"
      +          },
      +          "description": "Stat boosts the Z-Move grants the user before attacking.",
      +          "propertyNames": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "effect": {
      +          "description": "Effect id applied by the Z-Move, e.g. \"clearnegativeboost\".",
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "name",
      +    "num",
      +    "gen",
      +    "type",
      +    "category",
      +    "basePower",
      +    "accuracy",
      +    "pp",
      +    "priority",
      +    "target",
      +    "flags",
      +    "shortDesc",
      +    "desc",
      +    "isNonstandard"
      +  ],
      +  "type": "object"
      +}
  4. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior; the description adds further behavioral detail: input is normalized case- and punctuation-insensitively, and unknown moves return an isError with near matches. This goes meaningfully beyond annotation coverage.

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?

The description is tight and front-loaded: the first sentence states the resource and content, the second gives sibling routing, and the third covers input/error behavior. Every sentence earns its place despite the dense field list.

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 the output schema already exists, the description does not need to explain return structure. It covers what data is included, how to use sibling tools instead, input normalization, error behavior, and offline/read-only nature. Nothing needed for correct invocation is missing.

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

Parameters5/5

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

The schema describes the move parameter with examples, and the description adds important operational semantics: acceptable input format ('Make It Rain' vs 'make it rain'), and the error behavior for unknown move names. Since there is only one parameter and it is fully documented, this is excellent coverage.

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 uses a specific verb and resource ('Get one move's battle data') and enumerates the exact fields returned. It clearly distinguishes the tool from siblings like get_learnset and calculate_damage by naming those alternatives and their purpose.

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 instructs when to use this tool versus siblings: use get_learnset to check which Pokémon learn a move and calculate_damage to apply it in a matchup. It also warns not to reason about damage from these fields, providing clear routing guidance.

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