analyze_deck
Analyze a raw deck list to get its ink curve, composition, and Core Constructed legality, confirming whether the deck is legal and well-built before playtesting.
Instructions
Analyze a raw deck list (a list of card names, not a collection CSV) and return its ink curve, composition, and Core Constructed legality — the tool for "is this decklist actually good/legal", independent of what you own or can afford.
Accepts one card per line, e.g. "4x Goofy - Musketeer" or "4 Goofy - Musketeer" (both "4x" and "4 " are accepted; qty is optional and defaults to 1). Lines starting with "#" or "//" are treated as comments and skipped.
Reports: ink curve (1-2/3-4/5-6/7+ cost brackets), inkable vs. uninkable count, color split, card type split, an estimated lore-per-turn (sum of Character lore values), a Core Constructed legality check (60-card minimum, max 4 copies of any card, at most 2 ink colors), and any card names that couldn't be resolved.
Behavior: card names are matched the same simple way as lookup_card
(exact, then substring) — not fuzzy-resolved like resolve_card — so a
typo'd or oddly-abbreviated name lands in the unresolved list rather than
being guessed. Unresolved lines are excluded from every stat (curve,
color split, lore/turn, legality counts), so a deck list with several
unresolved names will under-report its true totals; always check that
list before trusting the numbers. The legality check is Core Constructed
only — it does not check rotation-group safety (whether the deck's cards
survive the next rotation) or Infinity/Poorcana rules; for rotation
safety, cross-reference the card list against search_cards filtered by
set, or build fresh via build_deck(rotation_safe=True).
Usage guidelines: use this on a decklist you already have — hand-written,
pasted from elsewhere, or build_deck's output — to sanity-check curve
and legality before playtesting or buying anything. It never touches your
collection, so it can't tell you what's missing or what it costs; for
that, feed the same deck list to what_am_i_missing instead.
Args: deck_list: Raw deck list text, one card per line.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| deck_list | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |