Skip to main content
Glama
andrewboe

ygo-format

by andrewboe

validate_deck

Read-only

Check a Yu-Gi-Oh! deck against TCG Advanced or Genesys rules, then list each card's ban status or Genesys points and report legality.

Instructions

Check a deck against a format and list every card with its ban status or Genesys points.

Give exactly one deck input: ydk_path a .ydk file path readable from Windows (WSL files: \wsl.localhost\Ubuntu-24.04\home...) ydk_text .ydk contents, or a ydke:// URL decklist {"main": [...], "extra": [...], "side": [...]} with entries like "3 Ash Blossom & Joyous Spring", "Called by the Grave x2", "Cupsy☆Yummy" or a passcode format: tcg_advanced (Forbidden & Limited list; stricter of YGOProDeck and Project Ignis) or genesys (no F&L; Link and Pendulum Monsters banned in every zone; Main+Extra+Side points must fit point_cap, default 100). as_of: YYYY-MM-DD for the release-date check (default today).

legal is true/false, or null when the input had unknown passcodes, unknown or ambiguous names, or unreadable .ydk lines: nothing is dropped or guessed, so fix parse_errors and call again. resolved_names lists names that were matched after normalizing; check them.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
as_ofNo
formatYes
decklistNo
ydk_pathNo
ydk_textNo
point_capNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, and the description is consistent with them ('Check', no mutation). Beyond the annotations it adds real behavioral detail: legal tri-states to null on unknown passcodes/ambiguous names, nothing is dropped or guessed, and resolved_names flags normalized matches. It does not describe rate limits or output volume for large decks.

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?

Purpose and the mutual-exclusion rule are front-loaded, and the indented parameter/format breakdown is scannable. It is somewhat long and the format/genesys block is dense, but nearly every sentence carries unique information rather than restating the schema.

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?

There is no output schema, and the description compensates by explaining the return contract (legal, resolved_names, parse_errors) and the null/failure semantics. Combined with the documented input modes, an agent has enough to call the tool and interpret the result without guessing.

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

Parameters5/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 carry the parameter burden and it does: ydk_path (with WSL path syntax), ydk_text (including ydke:// URLs), decklist shape with entry-format examples, the format enum values with their rules, as_of date semantics, and point_cap inside the genesys rules. All six parameters are given meaning not present in the 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?

Opens with a specific verb+resource+outcome: 'Check a deck against a format and list every card with its ban status or Genesys points.' That scope is clearly distinct from siblings like search_cards, card_lookup, or finalize_deck without needing to name them.

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?

Explicitly states 'Give exactly one deck input' and enumerates the three mutually exclusive input modes (ydk_path / ydk_text / decklist), plus what to do when legal is null ('fix parse_errors and call again'). It gives strong context but never names an alternative sibling tool or the conditions under which another tool would be preferable.

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