addedInput schema / $schema
Added value: +"http://json-schema.org/draft-07/schema#"
addedInput schema / properties / ability
Added value: +{
+ "description": "Ability assumed active while solving, e.g. \"Intimidate\", \"Protosynthesis\".",
+ "type": "string"
+}
addedInput schema / properties / attacker
Added value: +{
+ "anyOf": [
+ {
+ "description": "The attacking Pokémon: species plus optional level, nature, IVs, EVs, item, ability, boosts, status, and current HP.",
+ "properties": {
+ "ability": {
+ "description": "Ability name, e.g. \"Intimidate\", \"Protosynthesis\"; defaults to the species’ default ability.",
+ "type": "string"
+ },
+ "abilityOn": {
+ "description": "Force the ability on (true) or off (false), e.g. to compare Protosynthesis active vs not; omitted leaves it to the calc.",
+ "type": "boolean"
+ },
+ "boosts": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Stat stages keyed by stat id (hp, atk, def, spa, spd, spe), each -6..+6; omitted stats are 0 (e.g. { atk: 2 } = +2 Attack).",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "championsPoints": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Pokémon Champions stat points keyed by stat id (hp, atk, def, spa, spd, spe): whole numbers, each 0-32, totalling at most 66. This is the spread the game’s training screen takes, and an alternative to `evs` — give one or the other, not both. One point is worth 8 EVs, so a converted spread is trimmed from its largest stats to fit the 510 EV cap the calculator enforces.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "curHP": {
+ "description": "Current HP when entering damaged, e.g. 120; defaults to full HP.",
+ "type": "number"
+ },
+ "evs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-252 in steps of 4; omitted stats are 0, and a total above 510 is rejected.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "item": {
+ "description": "Held item name, e.g. \"Choice Band\", \"Assault Vest\", \"Leftovers\"; the calc applies its damage, Speed, or bulk effect.",
+ "type": "string"
+ },
+ "ivs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-31; omitted stats default to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "level": {
+ "description": "Level 1-100; defaults to 100 in the damage tools and 50 in the stat/speed tools.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "moves": {
+ "description": "Moveset names, e.g. [\"Earthquake\", \"Dragon Claw\"]; used by `calculate_matchups` to pick the hardest-hitting move per defender.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nature": {
+ "description": "Nature name, e.g. \"Jolly\", \"Modest\", \"Adamant\"; defaults to Serious (neutral) when omitted.",
+ "type": "string"
+ },
+ "species": {
+ "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ "status": {
+ "description": "Pre-existing status such as \"brn\", \"par\", or \"tox\"; burn halves physical damage, paralysis cuts Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species"
+ ],
+ "type": "object"
+ },
+ {
+ "description": "The single attacking Pokémon; set `moves` to let the tool choose the best move against each defender.",
+ "properties": {
+ "ability": {
+ "description": "Ability name, e.g. \"Intimidate\", \"Protosynthesis\"; defaults to the species’ default ability.",
+ "type": "string"
+ },
+ "abilityOn": {
+ "description": "Force the ability on (true) or off (false), e.g. to compare Protosynthesis active vs not; omitted leaves it to the calc.",
+ "type": "boolean"
+ },
+ "boosts": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Stat stages keyed by stat id (hp, atk, def, spa, spd, spe), each -6..+6; omitted stats are 0 (e.g. { atk: 2 } = +2 Attack).",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "championsPoints": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Pokémon Champions stat points keyed by stat id (hp, atk, def, spa, spd, spe): whole numbers, each 0-32, totalling at most 66. This is the spread the game’s training screen takes, and an alternative to `evs` — give one or the other, not both. One point is worth 8 EVs, so a converted spread is trimmed from its largest stats to fit the 510 EV cap the calculator enforces.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "curHP": {
+ "description": "Current HP when entering damaged, e.g. 120; defaults to full HP.",
+ "type": "number"
+ },
+ "evs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-252 in steps of 4; omitted stats are 0, and a total above 510 is rejected.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "item": {
+ "description": "Held item name, e.g. \"Choice Band\", \"Assault Vest\", \"Leftovers\"; the calc applies its damage, Speed, or bulk effect.",
+ "type": "string"
+ },
+ "ivs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-31; omitted stats default to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "level": {
+ "description": "Level 1-100; defaults to 100 in the damage tools and 50 in the stat/speed tools.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "moves": {
+ "description": "Moveset names, e.g. [\"Earthquake\", \"Dragon Claw\"]; used by `calculate_matchups` to pick the hardest-hitting move per defender.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nature": {
+ "description": "Nature name, e.g. \"Jolly\", \"Modest\", \"Adamant\"; defaults to Serious (neutral) when omitted.",
+ "type": "string"
+ },
+ "species": {
+ "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ "status": {
+ "description": "Pre-existing status such as \"brn\", \"par\", or \"tox\"; burn halves physical damage, paralysis cuts Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species"
+ ],
+ "type": "object"
+ }
+ ]
+}
addedInput schema / properties / boosts
Added value: +{
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Stat stages; only `spe` (-6..+6) is applied, e.g. { spe: 1 } for a +1 Speed stage.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+}
addedInput schema / properties / championsPoints
Added value: +{
+ "anyOf": [
+ {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Pokémon Champions stat points keyed by stat id (hp, atk, def, spa, spd, spe): whole numbers, each 0-32, totalling at most 66. This is the spread the game’s training screen takes, and an alternative to `evs` — give one or the other, not both. One point is worth 8 EVs, so a converted spread is trimmed from its largest stats to fit the 510 EV cap the calculator enforces.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "The same Speed investment in Pokémon Champions stat points, e.g. { spe: 32 } for a maxed Speed stat; give this or `evs`, not both.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ ]
+}
addedInput schema / properties / defender
Added value: +{
+ "description": "The defending Pokémon, same fields as `attacker`; its Defense/SpD, HP, typing, and ability drive the result.",
+ "properties": {
+ "ability": {
+ "description": "Ability name, e.g. \"Intimidate\", \"Protosynthesis\"; defaults to the species’ default ability.",
+ "type": "string"
+ },
+ "abilityOn": {
+ "description": "Force the ability on (true) or off (false), e.g. to compare Protosynthesis active vs not; omitted leaves it to the calc.",
+ "type": "boolean"
+ },
+ "boosts": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Stat stages keyed by stat id (hp, atk, def, spa, spd, spe), each -6..+6; omitted stats are 0 (e.g. { atk: 2 } = +2 Attack).",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "championsPoints": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Pokémon Champions stat points keyed by stat id (hp, atk, def, spa, spd, spe): whole numbers, each 0-32, totalling at most 66. This is the spread the game’s training screen takes, and an alternative to `evs` — give one or the other, not both. One point is worth 8 EVs, so a converted spread is trimmed from its largest stats to fit the 510 EV cap the calculator enforces.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "curHP": {
+ "description": "Current HP when entering damaged, e.g. 120; defaults to full HP.",
+ "type": "number"
+ },
+ "evs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-252 in steps of 4; omitted stats are 0, and a total above 510 is rejected.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "item": {
+ "description": "Held item name, e.g. \"Choice Band\", \"Assault Vest\", \"Leftovers\"; the calc applies its damage, Speed, or bulk effect.",
+ "type": "string"
+ },
+ "ivs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-31; omitted stats default to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "level": {
+ "description": "Level 1-100; defaults to 100 in the damage tools and 50 in the stat/speed tools.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "moves": {
+ "description": "Moveset names, e.g. [\"Earthquake\", \"Dragon Claw\"]; used by `calculate_matchups` to pick the hardest-hitting move per defender.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nature": {
+ "description": "Nature name, e.g. \"Jolly\", \"Modest\", \"Adamant\"; defaults to Serious (neutral) when omitted.",
+ "type": "string"
+ },
+ "species": {
+ "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ "status": {
+ "description": "Pre-existing status such as \"brn\", \"par\", or \"tox\"; burn halves physical damage, paralysis cuts Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species"
+ ],
+ "type": "object"
+}
addedInput schema / properties / defenders
Added value: +{
+ "description": "1-30 defender sets, each with the same fields as `attacker`; every entry is scored against the same attacker, move set, and field.",
+ "items": {
+ "properties": {
+ "ability": {
+ "description": "Ability name, e.g. \"Intimidate\", \"Protosynthesis\"; defaults to the species’ default ability.",
+ "type": "string"
+ },
+ "abilityOn": {
+ "description": "Force the ability on (true) or off (false), e.g. to compare Protosynthesis active vs not; omitted leaves it to the calc.",
+ "type": "boolean"
+ },
+ "boosts": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Stat stages keyed by stat id (hp, atk, def, spa, spd, spe), each -6..+6; omitted stats are 0 (e.g. { atk: 2 } = +2 Attack).",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "championsPoints": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Pokémon Champions stat points keyed by stat id (hp, atk, def, spa, spd, spe): whole numbers, each 0-32, totalling at most 66. This is the spread the game’s training screen takes, and an alternative to `evs` — give one or the other, not both. One point is worth 8 EVs, so a converted spread is trimmed from its largest stats to fit the 510 EV cap the calculator enforces.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "curHP": {
+ "description": "Current HP when entering damaged, e.g. 120; defaults to full HP.",
+ "type": "number"
+ },
+ "evs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-252 in steps of 4; omitted stats are 0, and a total above 510 is rejected.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "item": {
+ "description": "Held item name, e.g. \"Choice Band\", \"Assault Vest\", \"Leftovers\"; the calc applies its damage, Speed, or bulk effect.",
+ "type": "string"
+ },
+ "ivs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-31; omitted stats default to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "level": {
+ "description": "Level 1-100; defaults to 100 in the damage tools and 50 in the stat/speed tools.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "moves": {
+ "description": "Moveset names, e.g. [\"Earthquake\", \"Dragon Claw\"]; used by `calculate_matchups` to pick the hardest-hitting move per defender.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nature": {
+ "description": "Nature name, e.g. \"Jolly\", \"Modest\", \"Adamant\"; defaults to Serious (neutral) when omitted.",
+ "type": "string"
+ },
+ "species": {
+ "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ "status": {
+ "description": "Pre-existing status such as \"brn\", \"par\", or \"tox\"; burn halves physical damage, paralysis cuts Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species"
+ ],
+ "type": "object"
+ },
+ "maxItems": 30,
+ "minItems": 1,
+ "type": "array"
+}
addedInput schema / properties / detail
Added value: +{
+ "description": "How much detail to return: \"compact\" (default) gives conclusions and the numbers needed to reason; \"evidence\" adds ranges, benchmarks and per-row detail; \"debug\" adds provenance and every intermediate. Ask for more only when the reasoning actually needs it — model context is the expensive resource.",
+ "enum": [
+ "compact",
+ "evidence",
+ "debug"
+ ],
+ "type": "string"
+}
addedInput schema / properties / evs
Added value: +{
+ "anyOf": [
+ {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-252 in steps of 4; omitted stats are 0, and a total above 510 is rejected.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id; only `spe` (0-252) changes the result, e.g. { spe: 252 }.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ ]
+}
addedInput schema / properties / field
Added value: +{
+ "anyOf": [
+ {
+ "description": "Battlefield conditions applied to the calc; omit it for a neutral Singles field with no weather, terrain, or hazards.",
+ "properties": {
+ "attackerSide": {
+ "additionalProperties": {},
+ "description": "Attacker-side flags, e.g. { isHelpingHand: true, isTailwind: true, spikes: 2 }.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "defenderSide": {
+ "additionalProperties": {},
+ "description": "Defender-side flags, e.g. { isReflect: true, isLightScreen: true, isAuroraVeil: true, isSR: true }.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "gameType": {
+ "description": "Doubles spreads damage across targets; default Singles.",
+ "enum": [
+ "Singles",
+ "Doubles"
+ ],
+ "type": "string"
+ },
+ "terrain": {
+ "description": "Terrain: \"Electric\", \"Grassy\", \"Psychic\", or \"Misty\"; default none.",
+ "type": "string"
+ },
+ "weather": {
+ "description": "Weather: \"Sand\", \"Sun\", \"Rain\", \"Hail\", \"Snow\", \"Harsh Sunshine\", \"Heavy Rain\", or \"Strong Winds\"; default none.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "description": "Shared battlefield conditions for every matchup; omit for a neutral Singles field. Side hazards and screens are only available on `calculate_damage`.",
+ "properties": {
+ "gameType": {
+ "description": "Doubles spreads damage across targets; default Singles.",
+ "enum": [
+ "Singles",
+ "Doubles"
+ ],
+ "type": "string"
+ },
+ "terrain": {
+ "description": "Terrain: \"Electric\", \"Grassy\", \"Psychic\", or \"Misty\"; default none.",
+ "type": "string"
+ },
+ "weather": {
+ "description": "Weather: \"Sand\", \"Sun\", \"Rain\", \"Hail\", \"Snow\", \"Harsh Sunshine\", \"Heavy Rain\", or \"Strong Winds\"; default none.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "description": "Battlefield conditions applied while testing the survive and kill goals; omit for a neutral Singles field.",
+ "properties": {
+ "gameType": {
+ "description": "Doubles spreads damage across targets; default Singles.",
+ "enum": [
+ "Singles",
+ "Doubles"
+ ],
+ "type": "string"
+ },
+ "terrain": {
+ "description": "Terrain for the survive/kill calcs: \"Electric\", \"Grassy\", \"Psychic\", or \"Misty\"; default none.",
+ "type": "string"
+ },
+ "weather": {
+ "description": "Weather for the survive/kill calcs, e.g. \"Sun\", \"Rain\", \"Sand\"; default none.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ ]
+}
addedInput schema / properties / item
Added value: +{
+ "anyOf": [
+ {
+ "description": "Held item, e.g. \"Choice Scarf\"; only Choice Scarf multiplies Speed (×1.5), other items are listed as speed-neutral.",
+ "type": "string"
+ },
+ {
+ "description": "Item held while solving, e.g. \"Assault Vest\"; it changes the bulk or Speed the goals are tested against.",
+ "type": "string"
+ }
+ ]
+}
addedInput schema / properties / ivs
Added value: +{
+ "anyOf": [
+ {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-31; omitted stats default to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id; only `spe` (0-31) changes the result, and it defaults to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs to hold fixed while searching, keyed by stat id; omitted stats default to 31 (use 0 for a Trick Room Speed IV).",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ ]
+}
addedInput schema / properties / kill
Added value: +{
+ "description": "Add a KO goal: minimizes Atk or SpA so that even the lowest damage roll reaches the per-hit HP threshold.",
+ "properties": {
+ "hits": {
+ "default": 1,
+ "description": "Number of hits the move must KO in, 1-4 (default 1); each hit must reach target max HP / hits.",
+ "maximum": 4,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "move": {
+ "description": "Move used for the KO, e.g. \"Knock Off\"; its category decides whether Atk or SpA EVs are minimized.",
+ "type": "string"
+ },
+ "target": {
+ "description": "The defender that must be KOed, including its bulk EVs, item, and ability; give it the same `level` as the optimized Pokémon, since a nested set defaults to level 100.",
+ "properties": {
+ "ability": {
+ "description": "Ability name, e.g. \"Intimidate\", \"Protosynthesis\"; defaults to the species’ default ability.",
+ "type": "string"
+ },
+ "abilityOn": {
+ "description": "Force the ability on (true) or off (false), e.g. to compare Protosynthesis active vs not; omitted leaves it to the calc.",
+ "type": "boolean"
+ },
+ "boosts": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Stat stages keyed by stat id (hp, atk, def, spa, spd, spe), each -6..+6; omitted stats are 0 (e.g. { atk: 2 } = +2 Attack).",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "championsPoints": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Pokémon Champions stat points keyed by stat id (hp, atk, def, spa, spd, spe): whole numbers, each 0-32, totalling at most 66. This is the spread the game’s training screen takes, and an alternative to `evs` — give one or the other, not both. One point is worth 8 EVs, so a converted spread is trimmed from its largest stats to fit the 510 EV cap the calculator enforces.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "curHP": {
+ "description": "Current HP when entering damaged, e.g. 120; defaults to full HP.",
+ "type": "number"
+ },
+ "evs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-252 in steps of 4; omitted stats are 0, and a total above 510 is rejected.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "item": {
+ "description": "Held item name, e.g. \"Choice Band\", \"Assault Vest\", \"Leftovers\"; the calc applies its damage, Speed, or bulk effect.",
+ "type": "string"
+ },
+ "ivs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-31; omitted stats default to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "level": {
+ "description": "Level 1-100; defaults to 100 in the damage tools and 50 in the stat/speed tools.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "moves": {
+ "description": "Moveset names, e.g. [\"Earthquake\", \"Dragon Claw\"]; used by `calculate_matchups` to pick the hardest-hitting move per defender.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nature": {
+ "description": "Nature name, e.g. \"Jolly\", \"Modest\", \"Adamant\"; defaults to Serious (neutral) when omitted.",
+ "type": "string"
+ },
+ "species": {
+ "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ "status": {
+ "description": "Pre-existing status such as \"brn\", \"par\", or \"tox\"; burn halves physical damage, paralysis cuts Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species"
+ ],
+ "type": "object"
+ }
+ },
+ "required": [
+ "target",
+ "move"
+ ],
+ "type": "object"
+}
addedInput schema / properties / level
Added value: +{
+ "anyOf": [
+ {
+ "default": 50,
+ "description": "Level 1-100; default 50.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "default": 50,
+ "description": "Level 1-100; default 50, matching VGC play.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ {
+ "default": 50,
+ "description": "Level 1-100; default 50 (VGC), where bulk and Speed benchmarks are tightest.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ }
+ ]
+}
addedInput schema / properties / maximize
Added value: +{
+ "default": "spe",
+ "description": "Stat that receives leftover EVs after the goals are met, capped at 252 (default spe); EVs are added in steps of 4.",
+ "enum": [
+ "atk",
+ "spa",
+ "spe",
+ "hp",
+ "def",
+ "spd"
+ ],
+ "type": "string"
+}
addedInput schema / properties / mode
Added value: +{
+ "description": "Which operation to run: \"stats\", \"damage\", \"matchups\", \"speed\", \"optimize_evs\".",
+ "enum": [
+ "stats",
+ "damage",
+ "matchups",
+ "speed",
+ "optimize_evs"
+ ],
+ "type": "string"
+}
addedInput schema / properties / move
Added value: +{
+ "anyOf": [
+ {
+ "description": "Move used by the attacker, e.g. \"Earthquake\", \"Make It Rain\"; must be a real move name.",
+ "type": "string"
+ },
+ {
+ "description": "Pin the matchup to this one move, e.g. \"Close Combat\"; when omitted, `attacker.moves` is searched instead.",
+ "type": "string"
+ }
+ ]
+}
addedInput schema / properties / nature
Added value: +{
+ "anyOf": [
+ {
+ "description": "Nature name, e.g. \"Jolly\", \"Modest\"; default Serious (raises and lowers nothing).",
+ "type": "string"
+ },
+ {
+ "description": "Nature name, e.g. \"Jolly\", \"Timid\"; default Serious (neutral Speed).",
+ "type": "string"
+ },
+ {
+ "description": "Nature used for every stat calculation, e.g. \"Adamant\", \"Calm\"; default Serious. Change it to trade one stat for another.",
+ "type": "string"
+ }
+ ]
+}
addedInput schema / properties / outspeed
Added value: +{
+ "description": "Add an outspeed goal: supply `target` or `speed` (one is required here, otherwise that goal errors).",
+ "properties": {
+ "speed": {
+ "description": "Raw Speed number to beat when there is no full target set, e.g. 189.",
+ "maximum": 9007199254740991,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "target": {
+ "description": "Set to outspeed, e.g. {\"species\": \"Dragapult\", \"nature\": \"Jolly\", \"evs\": {\"spe\": 252}}; its computed Speed becomes the benchmark. Give it the same `level` as the optimized Pokémon, since a nested set defaults to level 100.",
+ "properties": {
+ "ability": {
+ "description": "Ability name, e.g. \"Intimidate\", \"Protosynthesis\"; defaults to the species’ default ability.",
+ "type": "string"
+ },
+ "abilityOn": {
+ "description": "Force the ability on (true) or off (false), e.g. to compare Protosynthesis active vs not; omitted leaves it to the calc.",
+ "type": "boolean"
+ },
+ "boosts": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Stat stages keyed by stat id (hp, atk, def, spa, spd, spe), each -6..+6; omitted stats are 0 (e.g. { atk: 2 } = +2 Attack).",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "championsPoints": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Pokémon Champions stat points keyed by stat id (hp, atk, def, spa, spd, spe): whole numbers, each 0-32, totalling at most 66. This is the spread the game’s training screen takes, and an alternative to `evs` — give one or the other, not both. One point is worth 8 EVs, so a converted spread is trimmed from its largest stats to fit the 510 EV cap the calculator enforces.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "curHP": {
+ "description": "Current HP when entering damaged, e.g. 120; defaults to full HP.",
+ "type": "number"
+ },
+ "evs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-252 in steps of 4; omitted stats are 0, and a total above 510 is rejected.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "item": {
+ "description": "Held item name, e.g. \"Choice Band\", \"Assault Vest\", \"Leftovers\"; the calc applies its damage, Speed, or bulk effect.",
+ "type": "string"
+ },
+ "ivs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-31; omitted stats default to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "level": {
+ "description": "Level 1-100; defaults to 100 in the damage tools and 50 in the stat/speed tools.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "moves": {
+ "description": "Moveset names, e.g. [\"Earthquake\", \"Dragon Claw\"]; used by `calculate_matchups` to pick the hardest-hitting move per defender.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nature": {
+ "description": "Nature name, e.g. \"Jolly\", \"Modest\", \"Adamant\"; defaults to Serious (neutral) when omitted.",
+ "type": "string"
+ },
+ "species": {
+ "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ "status": {
+ "description": "Pre-existing status such as \"brn\", \"par\", or \"tox\"; burn halves physical damage, paralysis cuts Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species"
+ ],
+ "type": "object"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / regulation
Added value: +{
+ "description": "Regulation Set name or id from `list_regulations` to compare against, e.g. \"Regulation Set G\"; omit to get the raw Speed only.",
+ "type": "string"
+}
addedInput schema / properties / species
Added value: +{
+ "anyOf": [
+ {
+ "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ {
+ "description": "Species or form name, e.g. \"Dragapult\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ {
+ "description": "Species or form name to optimize, e.g. \"Garchomp\", \"Incineroar\".",
+ "type": "string"
+ }
+ ]
+}
addedInput schema / properties / survive
Added value: +{
+ "description": "Add a \"always live this hit\" goal: the search minimizes HP plus the relevant Defense EVs that keep the worst roll below max HP.",
+ "properties": {
+ "attacker": {
+ "description": "The attacker whose move must be survived; the calc picks Defense or SpD from the move’s category. Set its `level` to match the optimized Pokémon’s, since a nested set defaults to level 100.",
+ "properties": {
+ "ability": {
+ "description": "Ability name, e.g. \"Intimidate\", \"Protosynthesis\"; defaults to the species’ default ability.",
+ "type": "string"
+ },
+ "abilityOn": {
+ "description": "Force the ability on (true) or off (false), e.g. to compare Protosynthesis active vs not; omitted leaves it to the calc.",
+ "type": "boolean"
+ },
+ "boosts": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Stat stages keyed by stat id (hp, atk, def, spa, spd, spe), each -6..+6; omitted stats are 0 (e.g. { atk: 2 } = +2 Attack).",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "championsPoints": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "Pokémon Champions stat points keyed by stat id (hp, atk, def, spa, spd, spe): whole numbers, each 0-32, totalling at most 66. This is the spread the game’s training screen takes, and an alternative to `evs` — give one or the other, not both. One point is worth 8 EVs, so a converted spread is trimmed from its largest stats to fit the 510 EV cap the calculator enforces.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "curHP": {
+ "description": "Current HP when entering damaged, e.g. 120; defaults to full HP.",
+ "type": "number"
+ },
+ "evs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "EVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-252 in steps of 4; omitted stats are 0, and a total above 510 is rejected.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "item": {
+ "description": "Held item name, e.g. \"Choice Band\", \"Assault Vest\", \"Leftovers\"; the calc applies its damage, Speed, or bulk effect.",
+ "type": "string"
+ },
+ "ivs": {
+ "additionalProperties": {
+ "type": "number"
+ },
+ "description": "IVs keyed by stat id (hp, atk, def, spa, spd, spe), each 0-31; omitted stats default to 31.",
+ "propertyNames": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "level": {
+ "description": "Level 1-100; defaults to 100 in the damage tools and 50 in the stat/speed tools.",
+ "maximum": 100,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "moves": {
+ "description": "Moveset names, e.g. [\"Earthquake\", \"Dragon Claw\"]; used by `calculate_matchups` to pick the hardest-hitting move per defender.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "nature": {
+ "description": "Nature name, e.g. \"Jolly\", \"Modest\", \"Adamant\"; defaults to Serious (neutral) when omitted.",
+ "type": "string"
+ },
+ "species": {
+ "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
+ "type": "string"
+ },
+ "status": {
+ "description": "Pre-existing status such as \"brn\", \"par\", or \"tox\"; burn halves physical damage, paralysis cuts Speed.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "species"
+ ],
+ "type": "object"
+ },
+ "move": {
+ "description": "Move being survived, e.g. \"Close Combat\"; a valid move name is required.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "attacker",
+ "move"
+ ],
+ "type": "object"
+}
addedInput schema / required
Added value: +[
+ "mode"
+]