Batch damage matchups
calculate_matchupsCompare one attacker against up to 30 defenders, auto-selecting the hardest-hitting move for each to report damage range, KO chance, immunity, and speed order.
Instructions
Run one attacker against 1-30 defenders in a single call, picking the hardest-hitting move per defender from move or attacker.moves and reporting each matchup’s damage range, KO chance, immunity, and who moves first. Rows carry only those fields — they are structured rather than prose, so that 30 defenders do not cost thirty rendered sentences; call calculate_damage for the single matchup rendered as a Showdown-format line. Use calculate_damage too when side screens and hazards matter (this tool’s field has only gameType, weather, and terrain); use analyze_team for type-synergy, not damage, and calculate_stats for a stat table with no battle. Supply move or a non-empty attacker.moves, else the call errors; defender levels default to 100. Read-only, offline, deterministic; unknown species or move names return an isError naming the offender.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| move | No | Pin the matchup to this one move, e.g. "Close Combat"; when omitted, `attacker.moves` is searched instead. | |
| field | No | Shared battlefield conditions for every matchup; omit for a neutral Singles field. Side hazards and screens are only available on `calculate_damage`. | |
| attacker | Yes | The single attacking Pokémon; set `moves` to let the tool choose the best move against each defender. | |
| defenders | Yes | 1-30 defender sets, each with the same fields as `attacker`; every entry is scored against the same attacker, move set, and field. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| move | Yes | The fixed move both sides were scored with, or the literal "best of moveset" when the tool picked the hardest-hitting move per defender. | |
| attacker | Yes | Canonical species name of the single attacker every matchup was run with. | |
| matchups | Yes | One entry per defender, in the order the defenders were supplied. | |
| attackerSpeed | Yes | The attacker’s final Speed stat; hoisted here because it is the same for every matchup, and `speed.attackerMovesFirst` compares it against each row’s `speed.defender`. |