Skip to main content
Glama

VGCHelper

VGCHelper is a local MCP server for Pokemon Champions VGC doubles. It gives an MCP-capable chat host deterministic replay evidence, metagame snapshots, and Champions damage calculations while the host handles the conversational coaching.

V0 targets Pokemon Champions VGC 2026 Regulation M-B through an explicit versioned profile.

Requirements

  • Node.js 22 or newer

  • An MCP client such as GitHub Copilot

  • Network access when refreshing metagame data

Related MCP server: ai-rotom

Setup

npm install
npm run build

For GitHub Copilot, add this server entry to %USERPROFILE%\.copilot\mcp-config.json, preserving any other registered servers:

{
  "mcpServers": {
    "vgc-helper": {
      "type": "local",
      "command": "node",
      "args": ["dist\\index.js"],
      "cwd": "<absolute-path-to-VGCHelper>",
      "tools": ["*"]
    }
  }
}

Replace <absolute-path-to-VGCHelper> with your checkout's absolute path, escaping Windows backslashes as \\ in JSON. The entry point is resolved relative to cwd.

Run vgc_status. Replay analysis works immediately offline with your replay and team export; opponent calculations become available from open team sheets or cached metagame sets. Run vgc_refresh_meta before team evaluation. The initial refresh can take several minutes because it validates the tournament sheet, linked pastes, and battle-data files. Later calls use a local cache unless force is set.

Local state is written to .vgc-helper\vgc-helper.sqlite. Override the location with VGC_HELPER_DATA_DIR.

Loading updates in Copilot conversations

Copilot launches dist\index.js, not the TypeScript source. After an agent changes the server, run this from the project directory:

npm run build
copilot mcp get vgc-helper

The registration should show Enabled, the compiled entry point above, and Tools: * (all). The wildcard includes newly added tools without changing the registration.

Start a new Copilot conversation after rebuilding so it launches the updated server and discovers its current tool schemas. An already-running MCP connection retains its loaded code; rebuilding alone does not refresh it. No separately running server is needed.

Ask naturally, for example, "Use VGCHelper to show its status" or "Use vgc_meta_query to show cached Garchomp sets." Copilot may ask permission before calling a tool. Saved replays and the normal metagame cache remain in the same local database across rebuilds and new conversations.

MCP tools

Tool

Purpose

vgc_status

Show the regulation, calculator pin, database, and source freshness.

vgc_refresh_meta

Validate and atomically activate VGC Pastes and Champions Battle Data snapshots.

vgc_replay_analyze

Analyze a replay file/content with the user's exact Showdown team export.

vgc_replay_get

Retrieve a persisted replay coaching report.

vgc_replay_turn

Inspect the state before/after a turn and its battle events.

vgc_replay_trends

Aggregate recurring coaching findings across local history.

vgc_meta_query

Inspect cached published sets and usage with source provenance.

vgc_team_evaluate

Evaluate all 15 user leads against representative opposing leads.

vgc_matchup_detail

Inspect bounded positions from a saved lead matrix.

vgc_damage_calculate

Run an auditable standalone Champions doubles damage calculation.

The server also exposes the replay-coach and team-builder prompts plus regulation, methodology, and source-status resources.

Replay workflow

Provide:

  1. A Pokemon Showdown replay as .json, .log, downloaded replay HTML, raw protocol text, or a local path to one of those files.

  2. The exact six-Pokemon Showdown team export used in that battle.

  3. The player name only if the team cannot uniquely identify the replay side.

Replay logs do not reveal full private sets. The user's team is authoritative; opponent moves, items, abilities, and skill points remain confidence-ranked hypotheses until revealed.

The importer accepts explicit [Gen 9 Champions] VGC 2026 Reg M-B and its Bo3 variant. The older broad Champions VGC 2026 label is rejected as ambiguous; dataset category membership alone does not establish M-B. Each report records its team fingerprint, regulation fingerprint and calculator version. Open team sheets are read when present; they do not disclose skill points.

The initial report prioritizes up to five findings. A faint or failed move is a review prompt, not proof of a mistake. Alternatives cite pre-turn state and include a partner objective, plausible opposing responses and conditional damage. Inspect vgc_replay_turn for full evidence and use only beforeEvents when judging the decision. Switching alternatives use previously revealed bench Pokémon, not arbitrary members of the six. Filter trends with team_version to compare the same team; repeated analyses of one game count once.

Raw replays, normalized events, turn states, and reports stay in local SQLite. Spectator/chat messages are not included in coaching output.

Fabricated inputs for a quick smoke test are available at examples\sample-team.txt and examples\sample-replay.log.

Team workflow

vgc_team_evaluate parses a complete Showdown export and selects a bounded cohort (12 by default, controlled by the regulation profile). Selection combines user-prioritized threats, recent results, weather/control diversity, and distinct published sets. The coverage report identifies tested and omitted priorities, source reasons, and sampling limits. This is tournament-source coverage, not ladder usage.

The evaluator enumerates all 15-by-15 lead pairs and explicit legal Mega choices on both sides, including holding Mega. Initial entry Intimidate and weather resolve before selected Mega abilities; damage and effective Speed use explicit positions. A stone holder that does not Mega evolve stays in its base form. Unknown pre-Mega abilities and unresolved ties remain conditional assumptions. The screen measures:

  • speed-adjusted immediate damage pressure

  • incoming knockout pressure resolved in priority and Speed order

  • raw and post-preemption pressure for auditing the score

  • speed control, Fake Out, redirection, protection, and related turn-one control

The full matrix is persisted, while the initial tool response remains bounded. Use vgc_matchup_detail to inspect a specific archetype or pair of leads. Its user_mega and opponent_mega filters accept a roster species or null for holding Mega. opening_offset pages conditional openings and returns nextOpeningOffset; comparison_offset pages comparison benchmarks and returns comparison.nextOffset.

Optional evaluation_context accepts:

{
  "priorityThreats": ["Charizard-Mega-Y", "Floette-Mega"],
  "roles": [{"pokemon": "Sneasler", "move": "Rock Slide", "purpose": "Immediate Charizard Y pressure", "target": "Charizard-Mega-Y"}],
  "modes": [{"id": "fairy-plan", "bringFour": ["Banette", "Scizor", "Milotic", "Sneasler"], "mega": "Banette", "targets": ["Floette-Mega"]}]
}

Modes may optionally specify a two-member lead. Each reported plan fixes its four, lead and Mega allocation before testing opposing responses. Roles and modes are hypotheses, never positive score bonuses. User modes are reported alongside inferred alternatives; bench utility remains a conditional coverage heuristic rather than a switching simulation. The supplied roster, moves and Mega eligibility are validated against mode declarations.

Supply comparison_team_export to compare a proposed edit before recommending it. Both versions use the same selected opponent teams and published sets. The comparison includes opening-score deltas, declared-mode deltas, lost role/mode hypotheses, and bounded damage benchmarks with gains and losses. Scenarios include published bulk or explicitly unknown physical/special bulk, neutral/sun sensitivity, Attack drops, and Helping Hand. Accuracy-adjusted KO probabilities are separate from KO rolls conditional on hitting, and neither establishes that the attacker gets to act. Alternate teammate attacks report Mega and support requirements. Scenario and result caps disclose omissions, including evaluated gains/losses omitted from presentation. Detail retrieval preserves both exact team versions and scenario sources.

examples/contextual-team.txt reproduces the discussed six-Pokemon team. examples/contextual-evaluation.json supplies illustrative fixed fours for its two modes, not assertions of optimal selections. After building, node scripts/validate-contextual.mjs tests it against the active offline cache and writes a compact report to examples/reports/contextual-validation.json.

Scores are not win probabilities. V0 does not simulate switching trees, simultaneous move combinations beyond its bounded heuristics, adaptation across games, or a full best-of-three.

The report adds per-opponent fixed mode plans, opening menus with both partners' actions, and three practice experiments with tradeoffs. Selected openings compare unknown spreads against a labeled bulk sensitivity scenario. Helping Hand modifies partner damage; earlier Haze conditionally clears both sides' stages; Destiny Bond is described as contingent on action timing and a direct KO. Spread moves show side-labeled ally damage where applicable. Only two opening scenarios are returned initially; the complete set is persisted and available through vgc_matchup_detail (up to six per page).

Control effects in those menus are conditional. Fake Out action denial, redirection, same-turn speed-control resolution, competing weather ties, residual damage, and many other interactions are not a complete turn simulation. The screen still uses a static control bonus. Multi-hit damage uses a weighted total-damage distribution conditional on the calculator's selected hit count. Supplied teams receive structural/stat validation; a full Showdown learnset/format legality validator is not bundled.

Source integrity

Published team fields retain field-level provenance; an absent spread is unknown. Champions Battle Data's Current label does not establish M-B membership. Unverified usage remains queryable as context but is excluded from set hydration and matchup scoring. An optional sources.championsBattleData.binding with regulationId, season, validFrom, and validTo can admit explicitly verified dated snapshots. Do not infer a regulation window from download time.

Provider failures preserve the previously active snapshot. Missing usage coverage is reported explicitly. Dates, hashes and source versions make saved reports reproducible; featured-team representation is not a ladder usage estimate.

Regulation changes

Profiles live in config\regulations. config\active-regulation.json selects the default profile.

When a season changes:

  1. Add a new immutable profile with accepted Showdown formats, rules, source mappings, and evaluation bounds.

  2. Change the active profile pointer.

  3. Run vgc_refresh_meta for the new profile.

Historical analyses retain their original regulation and source versions.

Data sources

Battle data provided by Pokemon Champions Battle Data.

Cached source data is for analysis, not redistribution as a standalone mirror or data service.

Development

npm run typecheck
npm test
npm run build
npm run smoke

npm run smoke tests the compiled stdio MCP workflow against a separate .vgc-helper/smoke database. node scripts/smoke-mcp.mjs --refresh also refreshes public data and evaluates the example team. npm run validate:live downloads up to ten public M-B replay JSON files and writes an import summary under examples/public-replays. These two network checks are manual, not part of ordinary tests.

After a successful smoke refresh, node scripts/smoke-mcp.mjs --team repeats the team evaluation using that cached snapshot without network access. It writes the example output locally to examples/reports/team-smoke.json. Connect your MCP client using the setup above; the smoke database is separate from your normal coaching history.

Local databases, machine-specific agent settings, analysis output, downloaded replay samples, and generated reports are excluded from Git. The fabricated sample inputs, one pinned public replay regression fixture, and the pinned calculator's compiled package are included so a fresh checkout can run the offline workflow and tests.

See validation notes for the evidence and limits of the current checks.

The calculator source and compiled package are vendored under vendor\damage-calc because the current npm release does not yet include the repository's Pokemon Champions mechanics. Its upstream MIT license is preserved in vendor\damage-calc\LICENSE.

Available Tools

10 tools
vgc_damage_calculateCalculate Pokemon Champions damageA
Read-only

Run an auditable generation-zero Pokemon Champions doubles damage calculation from two Showdown-format sets.

ParametersJSON Schema
NameRequiredDescriptionDefault
moveYes
reflectNo
terrainNo
weatherNo
protectedNo
profile_idNo
attacker_setYes
critical_hitNo
defender_setYes
friend_guardNo
helping_handNo
light_screenNo
single_targetNo
attacker_positionNo
defender_positionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already discloses that this is a safe read operation. The description adds the meaningful trait 'auditable' and specifies the doubles format, but it does not explain what auditable means in practice, such as whether a calculation trace is returned or how modifiers are applied. No contradiction with annotations.

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?

Single sentence, front-loaded verb, no filler. Every phrase adds distinguishing context: auditable, generation-zero, Pokemon Champions, doubles, damage calculation, Showdown-format set.

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

Completeness2/5

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

The tool has 15 parameters, nested position objects, and zero schema-based parameter descriptions, yet the description provides only input format and mode. It does not explain the effect of the many optional modifiers, what 'auditable' entails, or what the output contains. Too sparse given the tool's complexity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden of explaining 15 parameters. It usefully identifies 'two Showdown-format sets', mapping to attacker_set and defender_set, but it does not clarify move, terrain, weather, reflect, position objects, or the many boolean modifiers. This leaves substantial ambiguity.

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 states a specific verb ('Run') and resource ('damage calculation'), and narrows scope with 'generation-zero Pokemon Champions doubles' and 'two Showdown-format sets'. This clearly distinguishes it from the sibling replay, meta, and team-evaluation tools.

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

Usage Guidelines3/5

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

The phrase 'from two Showdown-format sets' implies the intended input and use case, but the description gives no explicit when-to-use guidance or exclusions. It does not name alternatives or explain when a damage calc is preferable to team evaluation or matchup analysis.

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

vgc_matchup_detailInspect a saved lead matchupB
Read-only

Retrieve bounded lead-state details from a persisted team evaluation.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
user_leadNo
user_megaNo
analysis_idYes
opponent_leadNo
opponent_megaNo
opening_offsetNo
opponent_team_idNo
comparison_offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes the read-only safety profile, and the description doesn't contradict it. It adds context by saying the data is bounded and persisted, which distinguishes this from live evaluation or replay-based data, but it doesn't describe pagination/offset behavior or any other operational details.

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?

One short, front-loaded sentence with no redundant filler. It earns its keep by stating verb, resource, and provenance in a compact form.

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

Completeness2/5

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

Despite the output schema and read-only annotation covering return and safety aspects, the tool has nine parameters with no param-level descriptions and no usage guidance. An agent would still need to infer which identifiers/options to supply and what 'bounded' means in practice.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate for nine undocumented parameters, but it only loosely hints at them with 'lead-state' and 'bounded'. Analysis_id, user_lead, opponent_lead, offsets, and limit are never explained or mapped to the retrieval behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Retrieve') and identifies the resource ('bounded lead-state details') and source ('persisted team evaluation'), so an agent can tell this is a read-style lookup rather than an analyze/evaluate operation. It is not fully explicit about what 'bounded lead-state details' means, and it doesn't name a sibling alternative, so it stops short of a 5.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool instead of siblings like vgc_team_evaluate, vgc_replay_get, or vgc_meta_query. A mention that this is for inspecting previously persisted evaluations would have been useful, but the description leaves the routing decision to inference.

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

vgc_meta_queryInspect cached metagame evidenceA
Read-only

Query cached team sets and per-Pokemon usage with source dates and regulation verification. Unverified usage is contextual only.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
pokemonYes
profile_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The readOnlyHint annotation already establishes safety, and the description adds meaningful behavioral context: data is cached, includes source dates, and is regulation-verified. The caveat 'Unverified usage is contextual only' is a valuable transparency signal beyond the annotation.

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?

Two sentences deliver the core purpose, scoping, and an important caveat without any filler. The main action is front-loaded and every clause earns its place.

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 simple read-only query tool with an output schema, the description covers the essence. The main gaps are undocumented parameters and the absence of explicit guidance about refreshing cached data, so it is adequate but not fully complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for parameter meaning. It hints that 'pokemon' is the core entity via 'per-Pokemon usage,' but it does not explain 'limit' or 'profile_id' at all, leaving agents to guess their roles.

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 states a specific action ('Query') and a distinct resource ('cached team sets and per-Pokemon usage') with additional detail about source dates and regulation verification. This clearly separates it from the replay, team evaluation, and damage calculation siblings.

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?

The description clearly frames this as a read-only cached evidence lookup, which implies when it should be used. However, it does not explicitly say when to prefer vgc_refresh_meta or vgc_status, so there is no explicit alternative routing.

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

vgc_refresh_metaRefresh VGC metagame dataB
Idempotent

Fetch, validate, cache, and atomically activate VGC Pastes teams and Champions Battle Data usage for the active regulation.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo
dry_runNo
profile_idNo
relevant_pokemonNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

Beyond the idempotentHint and destructiveHint annotations, the description discloses non-obvious behavior: validation, caching, and atomic activation. This gives an agent a realistic model of the refresh process without contradicting 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?

A single dense sentence with no filler; the operation stages are front-loaded and readable. It earns its place, though it is not broken into usage or parameter guidance.

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

Completeness2/5

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

Despite annotations and an output schema covering safety and return shape, the description omits parameter roles and gives no usage condition. For a tool with four optional flags and a dry-run mode, this is a notable completeness gap.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain any of the four parameters. The agent cannot tell from the description what force, dry_run, profile_id, or relevant_pokemon control, so the definition fails to compensate for the bare schema.

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 states a precise operation chain — fetch, validate, cache, and atomically activate — over a concrete resource (VGC Pastes teams and Champions Battle Data usage) scoped to the active regulation. This clearly distinguishes the tool from query-focused siblings like vgc_meta_query.

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

Usage Guidelines3/5

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

Use is implied: this is the refresh/update counterpart to metagame query tools, and it is scoped to the active regulation. However, there is no explicit statement of when to call it, when not to, or which sibling alternatives exist.

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

vgc_replay_analyzeAnalyze a Pokemon Showdown replayB

Parse and persist a Champions VGC doubles replay, then return turn-cited coaching evidence using the supplied exact user team.

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idNo
player_nameNo
replay_pathNo
team_exportYes
replay_contentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

The description discloses meaningful behavior beyond the annotations: it parses and persists the replay, and returns turn-cited coaching evidence. However, it does not clarify what persistence means, whether existing data is overwritten, or what prerequisites exist, and the annotations only cover destructiveHint, so coverage is limited.

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?

One focused sentence with no filler. The action verbs are front-loaded, and the sentence earns its place by conveying the core parse-persist-return flow efficiently.

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

Completeness2/5

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

Despite having an output schema, the description leaves significant gaps: five parameters are essentially undocumented, no sibling-routing guidance exists, and the persistence side effect is vague. This is too thin for a tool with zero schema parameter descriptions and many near-neighbor siblings.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only maps 'exact user team' to team_export and 'replay' generically to a replay source; profile_id, player_name, replay_path, and replay_content are left entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs — 'Parse and persist' and 'return turn-cited coaching evidence' — tied to a clear resource: a Champions VGC doubles replay with the user's exact team. It implies a distinguishably analytical purpose versus siblings like vgc_replay_get or vgc_replay_turn, though it does not explicitly name an alternative.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance is provided. The phrase 'using the supplied exact user team' hints that this tool requires a team export for coaching analysis, but it does not contrast with siblings such as vgc_team_evaluate, vgc_replay_trends, or vgc_matchup_detail, leaving selection to inference.

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

vgc_replay_getGet a prior replay analysisA
Read-only

Retrieve a persisted replay coaching report by analysis ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
analysis_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The annotations already provide readOnlyHint=true, establishing that this is a safe read operation. The description adds the 'persisted' qualifier, which signals that no new analysis computation occurs—just retrieval. It does not cover error cases, rate limits, or prerequisites, but for a simple get-by-ID operation these are minor gaps.

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?

One tight sentence that front-loads the action and object, with no filler or repetition. Every word earns its place, and the qualifier 'persisted' is useful context rather than noise.

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

Completeness4/5

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

For a tool with one required parameter, an output schema, and a readOnly annotation, the description is sufficient to invoke correctly. It lacks an explicit pointer to sibling tools for creating analyses or obtaining an analysis_id, but the low complexity and output schema cover most contextual needs.

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 description coverage is 0%, so the description's 'by analysis ID' is the only semantic explanation of analysis_id. It clearly ties the parameter to the retrieval key. It does not mention where the ID comes from (e.g., from vgc_replay_analyze), but the single required string parameter is adequately explained.

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?

States a specific verb ('Retrieve'), a specific resource ('persisted replay coaching report'), and the selection key ('analysis ID'). This clearly distinguishes it from siblings like vgc_replay_analyze, which would create a new analysis rather than fetch an existing one.

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

Usage Guidelines3/5

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

The description implies usage through the words 'persisted' and 'prior,' suggesting this tool fetches existing reports rather than creating them. However, it never explicitly names alternatives or states when to use this tool versus vgc_replay_analyze, vgc_replay_turn, or vgc_replay_trends.

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

vgc_replay_turnInspect a replay turnA
Read-only

Retrieve stored state before and after a turn plus battle events. Judge decisions using beforeEvents only; afterEvents contains later revelations.

ParametersJSON Schema
NameRequiredDescriptionDefault
turnYes
analysis_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

The readOnlyHint annotation already covers the safety profile. The description adds meaningful behavioral context by warning that afterEvents contains later revelations, which is critical for correct interpretation and could prevent incorrect reasoning. This goes beyond what annotations provide.

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 two sentences with no wasted words. It front-loads the core retrieval purpose and then supplies a critical usage warning. Every sentence contributes necessary information.

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

Completeness4/5

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

Given the tool has only two required parameters, an output schema, and a readOnlyHint annotation, the description is mostly complete. It explains what is retrieved and warns about a subtle data interpretation issue. It could be slightly stronger by explicitly interpreting analysis_id and turn, but it is adequate for a tool of this simplicity.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain analysis_id or turn beyond the general phrase 'a turn.' The parameter names are somewhat self-explanatory, but the description fails to compensate for the absence of schema-level parameter documentation, especially for analysis_id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves stored state before and after a turn plus battle events, which specifies the verb and resource. It does not explicitly differentiate from siblings like vgc_replay_get, but the turn-scoped resource is implied by the name and description.

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

Usage Guidelines3/5

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

The description includes practical guidance: 'Judge decisions using beforeEvents only; afterEvents contains later revelations.' However, it does not state when to use this tool versus alternatives such as vgc_replay_get or vgc_replay_analyze, so usage context is mostly implied rather than explicit.

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

vgc_statusVGC Helper statusA
Read-only

Show the active regulation, calculator version, local database, and metagame source freshness.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The readOnlyHint annotation matches the read-only 'Show' behavior. The description adds the specific status categories, but not extra behavioral details such as network checks or caching. This is acceptable because the output schema and read-only annotation cover the main expectations.

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?

A single, front-loaded sentence names the action and the exact returned information with no filler. Every word earns its place.

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?

For a parameterless, read-only status tool with an output schema, this description is complete. It states the key status dimensions and requires no additional context to invoke safely.

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?

The tool has zero parameters, so there is no semantic burden on the description. Baseline 4 applies because there are no parameter details an agent could need.

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 the verb 'Show' and enumerates exactly what status info is returned (active regulation, calculator version, local database, metagame source freshness). This clearly distinguishes it from replay/calculation/refresh sibling tools.

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

Usage Guidelines3/5

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

The status-oriented wording implies it is used to inspect current state, but there is no explicit guidance about when to prefer it over siblings. The description does not mention alternatives or when-not-to-use conditions.

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

vgc_team_evaluateEvaluate a Champions VGC teamB

Evaluate legal Mega alternatives and fixed matchup modes against a threat-aware cohort. Optionally compare an edited team on identical sources and conditions; scores are pressure heuristics.

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idNo
team_exportYes
evaluation_contextNo
comparison_team_exportNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations only declare destructiveHint=false, leaving the description to carry the behavioral burden. It adds genuinely useful disclosure: scores are 'pressure heuristics' (so the agent should not treat them as exact win probabilities) and comparisons run on 'identical sources and conditions' (controlling for confounding variables). It could go further — e.g., whether profile_id is needed, whether evaluation_context is required for meaningful results — but it adds real context beyond the single annotation.

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?

Two sentences and roughly 30 words, with the primary function front-loaded and the comparison option and heuristic caveat placed second. There is no wasted text, but the density of unexplained jargon means each sentence does not earn its place in clarity as well as it could.

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

Completeness2/5

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

This is a complex tool — 4 parameters, nested evaluation_context object with modes/roles/priorityThreats, zero schema description coverage, and only destructiveHint in annotations — yet it gets just two sentences. The description never explains what team_export should contain (e.g., Pokemon Showdown format), what profile_id is for, or how modes with bringFour/lead/mega/targets are structured. The output schema mitigates the return-value side, but input construction is critically under-specified.

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

Parameters2/5

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

With schema description coverage at 0%, the description must compensate by mapping to parameters, and it does so only obliquely: 'Mega alternatives' hints at modes[].mega, 'threat-aware cohort' hints at priorityThreats, and 'compare an edited team' maps to comparison_team_export. The required team_export, profile_id, and the roles object are never mentioned, so the agent gets no help constructing the most important input or the evaluation_context structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource: the tool evaluates a VGC team, specifically 'legal Mega alternatives' and 'fixed matchup modes', and adds an optional comparison mode. It is distinguishable from sibling tools (none of which evaluate teams — they analyze replays, query meta, calculate damage). However, the heavy jargon ('legal Mega alternatives', 'fixed matchup modes', 'threat-aware cohort') is never unpacked, so an agent without VGC domain knowledge gets only a fuzzy picture of what actually happens.

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

Usage Guidelines3/5

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

The second sentence gives one concrete usage scenario — comparing an edited team on 'identical sources and conditions' — which implies the tool's role as a controlled evaluator rather than an open-ended analyzer. But there is no explicit routing among the nine siblings: no 'use this instead of vgc_matchup_detail when...' or 'not for replay-level analysis' type exclusions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.0
    • First observedvgc_damage_calculate
    • First observedvgc_matchup_detail
    • First observedvgc_meta_query
    • First observedvgc_refresh_meta
    • First observedvgc_replay_analyze
    • First observedvgc_replay_get
    • First observedvgc_replay_trends
    • First observedvgc_replay_turn
    • First observedvgc_status
    • First observedvgc_team_evaluate

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct resource or action: status, meta refresh/query, replay analysis/retrieval/turn inspection/trends, team evaluation/detail, and damage calculation. There is no meaningful overlap among the tools even though several operate on replays or evaluations.

Naming Consistency3/5

All tools share the vgc_ prefix and use lowercase snake_case, but the verb/noun ordering is inconsistent: refresh_meta and meta_query flip the pattern, while replay_analyze, replay_get, team_evaluate, and damage_calculate place the object before the verb. The names remain readable, but the convention is not uniform.

Tool Count5/5

With 10 tools, the server is well-scoped for a VGC helper covering metagame data, replay coaching, team evaluation, and damage calculation. Each tool addresses a meaningful part of the workflow without unnecessary redundancy.

Completeness4/5

The tool surface covers the main lifecycle needs: refreshing and querying meta data, analyzing and retrieving replay coaching details, aggregating trends, evaluating teams, and calculating damage. Minor gaps exist, such as no listing or deletion of persisted replay reports/evaluations, but these are workable and do not break core workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    An MCP-compliant server that enables AI agents to perform accurate Pokémon battle damage calculations using the Smogon calculator, supporting comprehensive input handling for Pokémon stats, moves, abilities, and field conditions.
    1
    27
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server for Pokémon battle advising: provides type matchups, damage calculation, party analysis, and move/ability data for AI agents like Claude Code and Codex.
    18
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ychen022/VGCHelper'

If you have feedback or need assistance with the MCP directory API, please join our Discord server