Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_pokemonA

Look up one Pokémon and return its competitive profile: types, base stats and BST, abilities by slot, weight, gender ratio, egg groups, and evolutions. Accepts any Showdown name or form, case- and punctuation-insensitive ("garchomp", "Ogerpon-Wellspring", "rotom wash"); unknown names return an isError listing near matches. Use search_dex when you only have a partial name, list_forms for alternate or cosmetic forms, and calculate_stats when you need stats computed from EVs, IVs, and nature. Read-only and offline over the bundled Showdown dataset — no network, auth, or rate limits.

list_formsA

List every form of one species — base, alternate, cosmetic, and battle-only — with each form's types, base stats, abilities, plus the total count. Forms that have no data are returned with a note rather than dropped, so a missing entry is visible. Use it before assuming a form exists; for a single species' full profile use get_pokemon, and to search names across species use search_dex. Read-only and offline; unknown species return an isError with near matches.

search_dexA

Find species, moves, items, abilities, or natures by case-insensitive substring of name or Showdown id, sorted by National Dex number and truncated to limit. Use it when the exact name is uncertain, then call the matching lookup (get_pokemon, get_move, get_item, get_ability, get_nature) with the name it returns. Exactly one kind is searched per call; and the reply echoes kind, query, and total match count. Read-only and offline; a blank query is rejected as an error instead of dumping the dataset.

get_moveA

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.

get_itemA

Get one held item's data: effect text, category flags (Berry, Choice, Mega Stone, …), Z-move, Natural Gift, Fling, and flat stat boosts. Use it to confirm what an item actually does before recommending it; get_set returns the item a curated meta set runs. Accepts item names case-insensitively; unknown items return an isError with near matches. Read-only and offline.

get_abilityA

Get one ability's effect text, flags, and the generations it exists in. Use it before relying on an ability in damage or speed reasoning; the set inputs of calculate_damage and check_speed take the ability or item name and apply it themselves. Accepts ability names case-insensitively; unknown abilities return an isError with near matches. Read-only and offline.

get_natureA

Get one nature's stat effect: the stat it raises 10% and the stat it lowers 10%, or a neutral effect for the five natures that change nothing (Hardy, Docile, Serious, Bashful, Quirky). Use it when assembling a set, since calculate_stats, calculate_damage, check_speed, and optimize_evs all take a nature name rather than a numeric modifier. Accepts nature names case-insensitively; unknown natures return an isError. Read-only and offline.

get_learnsetA

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.

get_typeA

Get the defensive profile of one type: what it is weak to, what it resists, what it is immune to, plus the Hidden Power IVs for that type. Use it for a type's own matchups; for one specific pairing pass attacker and defender to get_type_matchup, and for a Pokémon's combined defensive chart give get_type_matchup the species name instead. Accepts type names case-insensitively; unknown types return an isError. Read-only and offline.

get_type_matchupA

Resolve type effectiveness in the mode the arguments imply: attacker + defender returns the single multiplier (the defender may be a type or a species, whose current-generation typing is used); attacker alone returns that type's offensive coverage against all 18 types; defender alone returns everything the defender takes, including 4x weaknesses and immunities; neither returns the complete 18x18 matrix. Use get_type for a type's own defensive entry, and analyze_team when the question spans a whole team. Names are case-insensitive; an unknown type or species returns an isError. Read-only and offline.

calculate_statsA

Compute one Pokémon’s final six stats at a level from its nature, IVs, and EVs, returning the stat table plus base stats and BST. Stats only, never a battle: use calculate_damage or calculate_matchups for damage rolls, check_speed to place the Speed stat against a regulation roster, and optimize_evs when the spread must be derived from a goal. EVs are 0-252 per stat with a 510 total cap, IVs 0-31, level defaults to 50 and nature to Serious. Read-only and offline; unknown species or nature names return an isError.

calculate_damageA

Simulate one attack end to end: one attacker set, one defender set, one named move, optionally under weather, terrain, game type, or side conditions. Use calculate_matchups when one attacker must be tested against several defenders, and calculate_stats for stat tables with no battle. field.weather takes Sand/Sun/Rain/Hail/Snow and field.terrain Electric/Grassy/Psychic/Misty; attackerSide/defenderSide take calc flags (isReflect, isLightScreen, isAuroraVeil, spikes 0-3, isSR), and set levels default to 100 here. Species and move names are validated first, so typos return an isError. Returns every damage roll, damageRange, koChance text, a description line, and both sets’ computed stats. Read-only and offline.

calculate_matchupsA

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.

check_speedA

Compute one Pokémon’s final Speed and, given a Regulation Set, rank it against that roster at its fastest (252 EV, +Spe nature) and uninvested reference speeds. Speed only: for damage use calculate_damage or calculate_matchups, and to find the Speed EVs that beat a target use optimize_evs. Applies boosts.spe (-6..+6) and Choice Scarf ×1.5; other items are reported as Speed-neutral, and regulation is optional. Returns finalSpeed, modifiers, and outspeeds/conditional/losesTo counts with up to 15 threats each. Read-only and offline; unknown names return an isError.

optimize_evsA

Derive a minimal EV spread for one Pokémon satisfying up to three goals: survive a named attack, outspeed a target Speed, and guarantee a KO in 1-4 hits. Use it when EVs must come from a goal — calculate_stats evaluates a spread you already have, check_speed ranks Speed without deriving EVs, and get_set returns a curated spread. Supplying none of survive/outspeed/kill errors; outspeed takes a set target or a raw speed, and leftover EVs fill maximize (default spe). Returns the spread, resulting stats, totalEVs/unusedEVs of the 508 usable, and a verification line per goal. Read-only and offline; an unreachable goal returns an isError.

list_regulationsA

List every Pokémon Champions / VGC Regulation Set with its id, dates, status, and roster size. Takes no arguments; status is relative to today and the active set is also returned as currentSet (null when none is). Use get_regulation for one set's full rules and roster, check_legality to validate a team. Read-only and offline over the bundled regulation data — no network, auth, or rate limits; returns game, currentSet, and one summary per set (id, name, status, start, end, eligibleCount, megaCount, notes).

get_regulationA

Get one Pokémon Champions / VGC Regulation Set in full: battle rules (level 50 doubles, timers, bring 4 of 6), team clauses (Species, Item, auto-level 50), Mega Evolution rules, and the size of the legal roster. The two name rosters — every legal base species, and every species allowed to Mega Evolve — are about two thirds of the response and come back only with includeRoster; the eligibleCount/megaCount sizes are always there. Accepts the id or name case- and punctuation-insensitively ("M-A", "m-a", "mc", "Regulation Set M-C"); an unknown id is an isError listing the valid names. Use list_regulations to discover ids and check_legality to test a team. Read-only and offline; returns dates, status, counts, clauses, and source.

check_legalityA

Validate up to 6 team members against a Pokémon Champions / VGC Regulation Set, reporting illegal or unknown species, duplicate National Pokédex numbers (Species Clause), duplicate items (Item Clause), unlearnable moves, team size (must be exactly 6), and who may Mega Evolve (one per battle). Species resolve case-insensitively to base species (any form of a legal base qualifies). A move is legal when any species in the evolution line knows it — the form, its base species, or a pre-evolution — because egg and level-up moves carry up on evolution: Rillaboom may hold Fake Out, which is Grookey’s egg move. get_learnset lists one species’ own learnset rather than this union, get_regulation gives the roster, and for stat values rather than legality use calculate_stats. Unknown ids return an isError listing them. Read-only and offline; returns valid, violations, and per-member checks.

analyze_teamA

Analyze a whole team’s type synergy: per-type weak, resist, and immune counts with the types at risk, super-effective coverage from STAB and supplied moves, speed placement, and a transparent 0-100 heuristic score — a quick signal, not a metagame rating. With regulation it also reports threatCoverage: how the team fares against that regulation’s most-used sets, each threat’s real nature, EVs and Mega form included, listing the threats nothing on the team hits super-effectively. With opponent it reports bringFour: which four of your six to bring against that team, scored on the types team preview shows, plus the types that leaves stacked. Use get_type_matchup or get_type for one matchup. Each entry is a species with optional moves, nature, evs/championsPoints and item; unknown moves are collected into unknownMoves, unknown species error. Read-only and offline over the bundled dataset.

list_threatsA

List the most-used Pokémon of one Pokémon Champions regulation, ranked by measured usage: each threat’s species, role, tier (S/A/B by usage rank) and usage share, plus the sample and sources the list was derived from; omit regulation to get every available list. This is the ranking only — for a threat’s standard set call get_set, which takes several species at once, and use list_regulations to discover regulation ids. Regulation ids match case- and punctuation-insensitively ("M-C", "mc"); an unknown one returns an isError naming the available lists. Usage-derived from Limitless VGC tournament teams, not editorial opinion. Read-only and offline; no network, auth, or rate limits.

get_setA

Return one species’ most-played competitive set: item, ability (with the Mega form and ability for Mega sets), nature, EVs, the four most-played moves, role, tier, usage share, the usage figures behind it, and the set as a Showdown-format paste ready to copy into a team builder or paste host, with EVs in Champions stat points. Pass an array of species to fetch several sets in one call, which answers as sets — use that rather than calling once per species. Reach for it when asked what a species usually runs; list_threats gives the ranked species of a regulation and check_legality validates teams. Species match is case-insensitive and ignores punctuation, and resolves forms, so "Indeedee-F" and "Salamence-Mega" find the same sets as "Indeedee" and "Salamence"; pass regulation (e.g. "m-c") to scope to one list; unknown species return an isError. Usage-derived from Limitless VGC tournament teams, not editorial opinion; read-only, offline, no network or auth.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.6/5.0

Scored across 21 tools

Disambiguation4/5

Every tool has a clear primary purpose and the descriptions cross-reference the right alternative for each situation, but a few closely related pairs can be confused: get_type vs get_type_matchup both cover defensive effectiveness, and calculate_damage vs calculate_matchups both perform damage rolls. The overlap is well-mitigated by explicit usage guidance, so it is mostly distinct rather than perfectly unambiguous.

Naming Consistency5/5

All 21 tools follow a predictable verb_noun snake_case pattern: get_* for lookups, list_* for enumerations, calculate_* for simulations, plus check_*, optimize_evs, search_dex, and analyze_team. The verb reliably signals the action and the noun reliably signals the resource, making the naming extremely consistent.

Tool Count4/5

21 tools is on the high side of the typical sweet spot, but the domain is genuinely broad: entity lookups, battle calculations, EV optimization, regulation data, threat lists, team analysis, and legality validation. Each tool maps to a distinct workflow with little redundancy, so the count feels justified rather than bloated.

Completeness5/5

The tool surface covers the full competitive Pokémon workflow: search to discover names, lookup entities, compute stats and damage, optimize EVs, inspect regulations, fetch usage-based sets, analyze team synergy, and validate legality. Cross-references close gaps, and unknown-name errors return near matches, so agents are unlikely to hit dead ends.

Maintenance

ActivityNo data
ResponsivenessNo issues