Skip to main content
Glama

Lookup

lookup
Read-onlyIdempotent

Fetch competitive Pokémon data by mode: species, forms, search, moves, items, abilities, natures, learnsets, types, matchups, sprites. Pick the mode and provide its arguments.

Instructions

Pokémon Champions data lookup, dispatching on mode: "species" for one Pokémon’s profile, "forms" for its forms, "search" for a fuzzy name search across the dataset, "move"/"item"/"ability"/"nature"/"learnset" for those records, "type" for a type’s defensive profile, "matchup" for one type multiplier, and "sprites" for a whole team’s sprite URLs in one call. Each mode carries the same documented fields the dedicated lookup tools had; pick the mode that names the thing being looked up and pass its arguments. Read-only and offline over the bundled dataset.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemNoItem name, e.g. "Choice Band", "Assault Vest", "Leftovers".
kindNoTable to search; one per call (default "species").species
modeYesWhich operation to run: "species", "forms", "search", "move", "item", "ability", "nature", "learnset", "type", "matchup", "sprites".
moveNoMove name, e.g. "Earthquake", "Make It Rain", "Dragon Claw".
sizeNoWhich image the URLs point at: "artwork" (default) is the 475×475 transparent official art, "icon" is the 96×96 game sprite for a compact row.
typeNoType name, e.g. "Steel", "Fairy", "Ground".
limitNoMaximum results returned, 1-100 (default 20).
queryNoSubstring to match against name and Showdown id, e.g. "oger", "sword".
detailNoHow 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.
natureNoNature name, e.g. "Jolly", "Timid", "Impish".
abilityNoAbility name, e.g. "Intimidate", "Protosynthesis".
speciesNo
attackerNoAttacking type name; omit to read the chart from the defender's side or to get the full matrix.
defenderNoDefending type or species name; a species contributes its types.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changedv8.0.2
    • addedInput schema / $schema
      Added value: +"http://json-schema.org/draft-07/schema#"
    • addedInput schema / properties / ability
      Added value: +{
      +  "description": "Ability name, e.g. \"Intimidate\", \"Protosynthesis\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / attacker
      Added value: +{
      +  "description": "Attacking type name; omit to read the chart from the defender's side or to get the full matrix.",
      +  "type": "string"
      +}
    • addedInput schema / properties / defender
      Added value: +{
      +  "description": "Defending type or species name; a species contributes its types.",
      +  "type": "string"
      +}
    • 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 / item
      Added value: +{
      +  "description": "Item name, e.g. \"Choice Band\", \"Assault Vest\", \"Leftovers\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / kind
      Added value: +{
      +  "default": "species",
      +  "description": "Table to search; one per call (default \"species\").",
      +  "enum": [
      +    "species",
      +    "move",
      +    "item",
      +    "ability",
      +    "nature"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 20,
      +  "description": "Maximum results returned, 1-100 (default 20).",
      +  "maximum": 100,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / mode
      Added value: +{
      +  "description": "Which operation to run: \"species\", \"forms\", \"search\", \"move\", \"item\", \"ability\", \"nature\", \"learnset\", \"type\", \"matchup\", \"sprites\".",
      +  "enum": [
      +    "species",
      +    "forms",
      +    "search",
      +    "move",
      +    "item",
      +    "ability",
      +    "nature",
      +    "learnset",
      +    "type",
      +    "matchup",
      +    "sprites"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / move
      Added value: +{
      +  "description": "Move name, e.g. \"Earthquake\", \"Make It Rain\", \"Dragon Claw\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / nature
      Added value: +{
      +  "description": "Nature name, e.g. \"Jolly\", \"Timid\", \"Impish\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / query
      Added value: +{
      +  "description": "Substring to match against name and Showdown id, e.g. \"oger\", \"sword\".",
      +  "type": "string"
      +}
    • addedInput schema / properties / size
      Added value: +{
      +  "description": "Which image the URLs point at: \"artwork\" (default) is the 475×475 transparent official art, \"icon\" is the 96×96 game sprite for a compact row.",
      +  "enum": [
      +    "artwork",
      +    "icon"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / species
      Added value: +{
      +  "anyOf": [
      +    {
      +      "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\", \"Rotom-Wash\".",
      +      "type": "string"
      +    },
      +    {
      +      "description": "Base species to expand, e.g. \"Rotom\", \"Ogerpon\", \"Gholdengo\".",
      +      "type": "string"
      +    },
      +    {
      +      "description": "Species or form name, e.g. \"Garchomp\", \"Ogerpon-Wellspring\".",
      +      "type": "string"
      +    },
      +    {
      +      "description": "Species names, e.g. [\"Garchomp\", \"Rotom-Wash\", \"Salamence-Mega\"], in any order; a whole team is the expected payload.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "maxItems": 30,
      +      "minItems": 1,
      +      "type": "array"
      +    }
      +  ]
      +}
    • addedInput schema / properties / type
      Added value: +{
      +  "description": "Type name, e.g. \"Steel\", \"Fairy\", \"Ground\".",
      +  "type": "string"
      +}
    • addedInput schema / required
      Added value: +[
      +  "mode"
      +]
  2. Addedv6.2.2

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds the non-obvious dispatch behavior across 11 modes and the offline-dataset context. It does not describe return shapes, but the schema's 'detail' parameter partially covers output granularity, and nothing contradicts the 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 full mode list in the first sentence and the read-only/offline note at the end. Every sentence earns its place, though the long first sentence and the vague 'same documented fields' phrase are slightly less crisp than ideal.

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

Completeness3/5

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

For a 14-parameter, 11-mode tool, the description handles dispatch and mode selection well. However, it relies on 'the same documented fields the dedicated lookup tools had' instead of stating what each mode returns, and with no output schema that is a meaningful gap for agents unfamiliar with those prior tools.

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 93%, so parameters are already well documented individually. The description adds a crucial cross-cutting mapping: each mode selects which arguments to pass ('pass its arguments'), which the schema's flat parameter list does not make explicit. It could go further by naming the exact arguments per mode.

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 opens with 'Pokémon Champions data lookup' and enumerates every mode ('species', 'forms', 'search', 'move', etc.), making the verb, resource, and scope explicit. This clearly distinguishes the tool from sibling analysis/optimization tools.

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

Usage Guidelines4/5

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

It gives direct selection guidance: 'pick the mode that names the thing being looked up and pass its arguments.' It also notes the tool is read-only and offline, implying use for offline data lookups, but it does not explicitly name sibling alternatives like analyze_team or optimize_team.

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