From c4a7fc48ea38131a2baf38d984356f93e91cf17b Mon Sep 17 00:00:00 2001 From: matt Date: Tue, 23 Sep 2025 09:19:23 -0700 Subject: [PATCH] feat(preview): sampling, metrics, governance, server mana data Preview endpoint + fast caches; curated pins + role quotas + rarity/overlap tuning; catalog+preview metrics; governance enforcement flags; server mana/color identity fields; docs/tests/scripts updated. --- .env.example | 1 + .github/workflows/ci.yml | 4 + CHANGELOG.md | 28 +- README.md | Bin 84708 -> 98910 bytes RELEASE_NOTES_TEMPLATE.md | 23 +- code/scripts/build_theme_catalog.py | 29 +- code/scripts/preview_metrics_snapshot.py | 105 + code/scripts/validate_theme_fast_path.py | 100 + code/scripts/warm_preview_traffic.py | 91 + code/tests/test_fast_theme_list_regression.py | 30 + ...est_preview_curated_examples_regression.py | 20 + code/tests/test_preview_error_rate_metrics.py | 22 + .../tests/test_preview_metrics_percentiles.py | 35 + code/tests/test_preview_minimal_variant.py | 13 + .../test_preview_suppress_curated_flag.py | 17 + code/tests/test_theme_api_phase_e.py | 204 + code/tests/test_theme_picker_gaps.py | 247 + code/tests/test_theme_preview_additional.py | 62 + code/tests/test_theme_preview_ordering.py | 38 + code/tests/test_theme_preview_p0_new.py | 72 + code/type_definitions_theme_catalog.py | 2 + code/web/app.py | 36 +- code/web/models/theme_api.py | 30 + code/web/routes/themes.py | 752 +- code/web/services/orchestrator.py | 19 + code/web/services/theme_catalog_loader.py | 511 + code/web/services/theme_preview.py | 862 + code/web/templates/base.html | 476 +- code/web/templates/home.html | 1 + code/web/templates/themes/catalog_simple.html | 121 + .../web/templates/themes/detail_fragment.html | 84 + code/web/templates/themes/detail_page.html | 4 + code/web/templates/themes/list_fragment.html | 155 + .../themes/list_simple_fragment.html | 44 + code/web/templates/themes/picker.html | 403 + .../templates/themes/preview_fragment.html | 350 + config/themes/theme_list.json | 18346 +--------------- docker-compose.yml | 1 + dockerhub-docker-compose.yml | 1 + docs/theme_taxonomy_rationale.md | 65 + 40 files changed, 6092 insertions(+), 17312 deletions(-) create mode 100644 code/scripts/preview_metrics_snapshot.py create mode 100644 code/scripts/validate_theme_fast_path.py create mode 100644 code/scripts/warm_preview_traffic.py create mode 100644 code/tests/test_fast_theme_list_regression.py create mode 100644 code/tests/test_preview_curated_examples_regression.py create mode 100644 code/tests/test_preview_error_rate_metrics.py create mode 100644 code/tests/test_preview_metrics_percentiles.py create mode 100644 code/tests/test_preview_minimal_variant.py create mode 100644 code/tests/test_preview_suppress_curated_flag.py create mode 100644 code/tests/test_theme_api_phase_e.py create mode 100644 code/tests/test_theme_picker_gaps.py create mode 100644 code/tests/test_theme_preview_additional.py create mode 100644 code/tests/test_theme_preview_ordering.py create mode 100644 code/tests/test_theme_preview_p0_new.py create mode 100644 code/web/models/theme_api.py create mode 100644 code/web/services/theme_catalog_loader.py create mode 100644 code/web/services/theme_preview.py create mode 100644 code/web/templates/themes/catalog_simple.html create mode 100644 code/web/templates/themes/detail_fragment.html create mode 100644 code/web/templates/themes/detail_page.html create mode 100644 code/web/templates/themes/list_fragment.html create mode 100644 code/web/templates/themes/list_simple_fragment.html create mode 100644 code/web/templates/themes/picker.html create mode 100644 code/web/templates/themes/preview_fragment.html create mode 100644 docs/theme_taxonomy_rationale.md diff --git a/.env.example b/.env.example index e39fe6a..e5be54c 100644 --- a/.env.example +++ b/.env.example @@ -39,6 +39,7 @@ ENABLE_PWA=0 # dockerhub: ENABLE_PWA="0" ENABLE_PRESETS=0 # dockerhub: ENABLE_PRESETS="0" WEB_VIRTUALIZE=1 # dockerhub: WEB_VIRTUALIZE="1" ALLOW_MUST_HAVES=1 # dockerhub: ALLOW_MUST_HAVES="1" +WEB_THEME_PICKER_DIAGNOSTICS=0 # 1=enable uncapped synergies, diagnostics fields & /themes/metrics (dev only) ############################ # Automation & Performance (Web) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 31097aa..34dcb2b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -47,6 +47,10 @@ jobs: run: | python code/scripts/validate_theme_catalog.py --strict-alias + - name: Fast path catalog presence & hash validation + run: | + python code/scripts/validate_theme_fast_path.py --strict-warn + - name: Fast determinism tests (random subset) env: CSV_FILES_DIR: csv_files/testdata diff --git a/CHANGELOG.md b/CHANGELOG.md index 77fbabc..0de0050 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,9 +13,35 @@ This format follows Keep a Changelog principles and aims for Semantic Versioning - Link PRs/issues inline when helpful, e.g., (#123) or [#123]. Reference-style links at the bottom are encouraged for readability. ## [Unreleased] +### Added +- ETag header for basic client-side caching of catalog fragments. +- Theme catalog performance optimizations: precomputed summary maps, lowercase search haystacks, memoized filtered slug cache (keyed by `(etag, params)`) for sub‑50ms warm queries. +- Theme preview endpoint: `GET /themes/api/theme/{id}/preview` (and HTML fragment) returning representative sample (curated examples, curated synergy examples, heuristic roles: payoff / enabler / support / wildcard / synthetic). +- Commander bias heuristics (color identity restriction, diminishing synergy overlap bonus, direct theme match bonus). +- In‑memory TTL cache (default 600s) for previews with build time tracking. +- Metrics endpoint `GET /themes/metrics` (diagnostics gated) exposing preview & catalog counters, cache stats, percentile build times. +- Governance metrics: `example_enforcement_active`, `example_enforce_threshold_pct` surfaced once curated coverage passes threshold (default 90%). +- Skeleton loading states for picker list, preview modal, and initial shell. +- Diagnostics flag `WEB_THEME_PICKER_DIAGNOSTICS=1` enabling fallback description flag, editorial quality badges, uncapped synergy toggle, YAML fetch, metrics endpoint. +- Cache bust hooks on catalog refresh & tagging completion clearing filter & preview caches (metrics include `preview_last_bust_at`). +- Optional filter cache prewarm (`WEB_THEME_FILTER_PREWARM=1`) priming common filter combinations; metrics include `filter_prewarmed`. +- Preview modal UX: role chips, condensed reasons line, hover tooltip with multiline heuristic reasons, export bar (CSV/JSON) honoring curated-only toggle. +- Server authoritative mana & color identity ingestion (exposes `mana_cost`, `color_identity_list`, `pip_colors`) replacing client-side parsing. + +### Changed +- Picker list & API use optimized fast filtering path (`filter_slugs_fast`) replacing per-request linear scans. +- Preview sampling: curated examples pinned first, diversity quotas (~40% payoff / 40% enabler+support / 20% wildcard), synthetic placeholders only if underfilled. +- Sampling refinements: rarity diminishing weight, splash leniency (single off-color allowance with penalty for 4–5 color commanders), role saturation penalty, refined commander overlap scaling curve. +- Hover / DFC UX unified: single hover panel, overlay flip control (keyboard + persisted face), enlarged thumbnails (110px→165px→230px), activation limited to thumbnails. +- Removed legacy client-side mana & color identity parsers (now server authoritative fields included in preview items and export endpoints). + +### Fixed +- Removed redundant template environment instantiation causing inconsistent navigation state. +- Ensured preview cache key includes catalog ETag to prevent stale sample reuse after catalog reload. +- Explicit cache bust after tagging/catalog rebuild prevents stale preview exposure. ### Editorial / Themes -- Enforce minimum example_commanders threshold (>=5) in CI (Phase D close-out). Lint now fails builds when a non-alias theme drops below threshold. +- Enforce minimum `example_commanders` threshold (>=5) in CI; lint fails builds when a non-alias theme drops below threshold. - Added enforcement test `test_theme_editorial_min_examples_enforced.py` to guard regression. - Governance workflow updated to pass `--enforce-min-examples` and set `EDITORIAL_MIN_EXAMPLES_ENFORCE=1`. - Clarified lint script docstring and behavior around enforced minimums. diff --git a/README.md b/README.md index 09b2718d090bd6f011ec44fffd8fb94d7d4fa97c..848960012f93f41de5c6f15a3c3544f4a083f073 100644 GIT binary patch delta 11338 zcmb`NTWnm{b%qaPE4C!-LXRiosVr+qMHX3kG?ILmElV^-NxsmcCAx|s803gU(u{cX z%;=WLp1LUdkOpYdjerS?0`WtD81RDx!%2Vu35)~*5~OWZ7-%2brUufNzBC4!AWu#I zZ?CgwpBYlI3m3!;XU^Gs?X}nX*T2@10!~AsJ6DB}+*uSxlz&sigPCq?Rn}+MGT$lZL-`*ar$txxIxeqqy7f{@!vDOr(&{|id)U=mABboE*>Lsmn#jjk`UCc1yHSC@hWuB96 zX09gE+^a|O?)9g(x~~l1-MX3#dowTSeKENzV=iheh7VVs_r^w}tH~+9(sVNDEn^xp zdS0)(c8Mjz?5cKzYnT0;s@J}j-na3kWUi&<=5%XLgXX=N1~g@FGOHKHJ)Yd3oYDX6 zg7X>;F8pSa0pV&onbG_U-bAJ3p=6(Cl{BWBT-N^s`o2#RWNa^UNuy`HYRzP$`PlEo zeef@ZkweLTzl#CwXIj3!poREkfL%;3dJ$&?qo-u|@#KU)jp{Ywp+B5FtIwz02Y=JI z@;?WA?q2tbbZEHVXY%gc;d|ZtBcDBE3*wy9y0;+n%u9SJU4#f(^tu5lY_se^&}<`k zQtC1Li~hZ&nf;n`-hKafJI-FvjHbRH)YS*Hkq2c5#@Z+>HmwyK>4>xKd)$xm_!ef= z(y{$+_qD;@{TX?2l#g7=oo)Rv+{rcrw3=1=?J@&&}bMBw7-_ag_ zMqy!lSbO}dM|R$p%64BJE=;UB%A@6GK@&71B+QmD4EBn4Z13Au4;OZZ8GD7-y*C-R z|0lUUHtwuO3`qmn20z`e*N7lR0A2L<(-pUHy|B*Tb2qN-*kYqjDCBF>rRsYBDfjHl zYw06BugI2YJgZL=J`l5rc&NkQ?4y!Y+)%TaD|^(Gv93*6t=GGsc344)%?&|b0ki!+Ru3qG%Zk{?^uAy3<9a_J z%^nb*59;2-9d_;~Y=t&7hXr7fX|LOBuJ@0NEz1~iL{oR6(f?yE(9DXWV@~#eEsed8 zN(oqf%6oZvv!>UQHmjiQ%H*M*TW?#GCRdU{SNVE=V`jYTxn7)})LsU(8yIa~pQrSR z6h!>il0AA~)LkfdD!oEhozdsI{uop8ciDCLj#Zjj9z~VoK`|s&l~~}Skei#DTlH3* z)75!N^3cKM*F&th2WE$v)i_E zH_vo4R=@XA8jA$)~KBO_g~!pF-E@l-fDS)6>P^TGZj0T zsVh#h+_avI-@#n#yhK;|ZSk)MZ*2{Gu#!L)MUPer%=qAFXd1Lhl?I7WAXfbtfKnCg z0jWWF#s|ohKtw1I;*bi}3^E&%{soP$2ws#lMm>9UXR)Qrm-MpA^d)71QB|tcC}AM= z&WpNFEik#NK4l(@UC;>F!J?lfO#x;Z$59d@lRDyYT^&nKQfW~1t`-Y9L@OY;sfo5% zsz&G%GQn!pofh!3vWF$en!t#e^;%iDv!__bKo}20PO5VIs4{8C7V8b#+@pN7tq3<5 z`(Wm(7Dowr-}P+SQ9#96{lQi3<&!ZtCA-k+~jdx4l(RdNwMFLjmJrwPRz$-}9HMkM|0RT{-pf-TiT;(hI zRzvbGc;Fz-%6IsczUGQv?Ac2FZlFbo2HQ}mq8E)pD7dNgsCpw-Xi<7gWMSQF>6Y~v zG*h5>HBF;FK!T`C0x%n0NR5smPkUu?1Wo}X#6pM}W)Dc6Y_mqRkxb^3Jwz;avaG|@ z(76FgP=wW}XzzD#d^x8~z9gHVD7(VH_-V;kPVCzJGOat*Qdlo2!#Wm@L?c!nN z+bZ~yEiQYn8RRc&9y#ztGTu_ieoh~|l{10n036@Q*k@Ft0WucA8Z4A;gV%~lHXY{> zlLInEHK_y?hW78HqpNQlOU5ocG_G)L*;U`pwK^M1ER)>`9?D|V>hFfC&(7;+KSLij zg{PbC`VgRud8=bhI}b=#dQe}@X5AvQOI5u?4HClPO7Go0`8}A$5Z*mC&@k7>_4l0n z%dZz(#Ac*(qxwlXw5$=KA{dsLjZa~ivUno4-DOoYp$aoTDf{(tP>90GcJkn=g+)m* zDT^G@g(X29x~Qj+ji2jU47H(f5Ehrk(3~JN-S6)y?6z-U$eL#08zZ;vx|LrZ>B$$4 zYa)?Q_k%(Z-{-0?<=xwF-R=Hj^H%wv-h()~q(v+SXJwD3z7t9IxupMV$!h2-Ds|eW z`(SSqno1|Mx(nRF$?-WBEZJR7^QF!fPp(ux8~E!xJJ?H z5G`u*-8a6w!~N;p?LGV5%Rkz6DAL|^Y6KK9v>D|%nL9iGa7Jo zAnG|42`q@lR!PK+iT&-g0GW|D@t`>ZQp3Yfs;$|V?9!(Jtqrp6e1>@`MGz38JcZUAM^X{Pt7+j38S9r&!T^!4=QTjX@CwJ44F5A`m!*S2JOz%Mks z%Bd%%r`1BXb5eYFSd$b%^@5j-#c5JP1vU4nq_I*d_7rxpg(=;=t7HU~^|ytyAm!fp z$89a>tNU&va|Mgx8Ng+v#CjNk%v1HjM;ltv{n+Bv^_>$t4p-2ysqdG(S!*7u$QZ=1 z_vjWNA+=e5ZQuO{+z%&<6_&!)baP~-8NE|Z0;~Y8P*Taw?)t{ubmT}g`2*hMr=<+l z6R<4ls0|<53D%h3ASSa8{g}QJb1-Y*9!LX_l{E@;EV*i_(9>{#`-|cNqtM?RXQs05 zyggddEIoyM%=ZD!K^nn_p)nErH+l5vd)1X&?lmG(yu0@*g;oH3S$nEW*BCB@IY*gu zQB%J*N2TyHci4wV)#h8V&Hb*J=a{K^%Plk0mr zH(K*%43SL3O^J;nm@D8e+~+#YF9kM637P&u@4hkj=Hc8!C7lb#(^eE6O65JTIg8r# zY0YPLCW@H3F>Fkf?Do80bl=-_hvKysww?tBD7+aZai*BHJQxKveV>=MQ)xvn7X)xG=4>|G$kO5_4$PU(TWU2{^Pd7C`WtA$U|f zZ|V;#m@=c9PoSECP0rK0Vs4DVM}eK9>0y0@$*8{BlkF0rBmhvsVE6@~aUY0IxuM5$ z+l}OLPEf7HSwG`5nY4f(`YcXKy|n6#`YFvs4+Wx9S~SpHsmp* zw@@_$vhX~{ssqRlC2c$~GrGH+QMvOWlVR>*kGYYg=4M~&?R!C%&6YLel46-Vjb-=4 zk-1y+*=-puZk*Lx%IETr81g`JC(+^8(^|-agKBg@Dd< zFgUO@8YTY^$X1=x&L%JGS|BlqjO-2kh$L7`wk_~YcIs4JrO*mPgcHQAA#A&)ng&dqc_<+F0c@{FtJ5J|JPc{@Ts2hdlbVsO z?z4}1Zz9u;zE^bTZrsU1^QI1YZvSZCmMcEga2$9(;YNS5ZGC&+Zm2isJ0R<|00AY4 z`4PIx_6wF9@piT#Chr2h*f-d??%p9=Dw7tCtyP~qDG$LDw2DwQ)jmdfUC*}m2^#j! z6Klw5Mk955#BTrzHyz!p*_WlgU}JclJr3_=iqqiIrfNPy~_^jjQJM zscj~|63LLN-C8$0kg(_TwwldsA2_6@jFBuCxS{R&+W?IA=&BRN7D+o`8M7lB?I}L6 ziLpsc;-Q%1{513vbVSP?WJmeHuEOapV8vFe3fytOJRu*S06@gHMZ4M&_);&%{c7`2 zOI&hGg}nRDb6efTA8+-KAUyi%T>DU!8m8{cz<~O))Wzw-o{YjN!)nQ$o$DtbC&`6q3>L9C30(6l<71TW7Z`yMeH15`qEA+7ZX3Nrr&)qMZMZ!}XEO^OV zkUDwohjYht%J7`*tlu#CUo@T4r!zXiIHgls`>8-EWc}lVUMQQu0SZ8)zVZ+IdUoef zGHU^f2|dB->nI;Z19n_N|3KfU7;_(ft8f?#Lj^QGYzHfcGllGG9|OYkl!}nvEpS@?Jnbs#^tWMS*G5*%g_NzCZVMRVyUi^t@JTT0IqAJ1ntS zryCHqJZDd!j_pxTGM0^+MLCy<#B5&gNcMlE$++<*+5Qm|YmTw@kUif#V+ZTK_HLow zY|~&{g^4tRgfwQ2EdHWO0D7S{4}Ldpvkr$-A&Y9*%C50>`W`k;D4K@}K#VmFrCBW& zuoZ23GS*W5S$oYt8jQd~1yFoUkG*LX@J@UnZs7`vqCWpw`Uzp1^OWpw`9S`kNDla) z(9zG3UfiEhBngRXyxK{;K?Md4h5&{PhD3&9hExUx2A9c<-ol*444MqQ3|tIOlPA8C++1XH qOlGox4a;V>i3S1U=sKJsYA5e6klY;f@QR2qx&jvl&CROcEPDXF9USBU diff --git a/RELEASE_NOTES_TEMPLATE.md b/RELEASE_NOTES_TEMPLATE.md index 8c996f0..b049384 100644 --- a/RELEASE_NOTES_TEMPLATE.md +++ b/RELEASE_NOTES_TEMPLATE.md @@ -3,17 +3,30 @@ ## Unreleased (Draft) ### Added -- Editorial duplication suppression for example cards: `--common-card-threshold` (default 0.18) and `--print-dup-metrics` flags in `synergy_promote_fill.py` to reduce over-represented staples and surface diverse thematic examples. -- Optional `description_fallback_summary` block (enabled via `EDITORIAL_INCLUDE_FALLBACK_SUMMARY=1`) capturing specialization KPIs: generic vs specialized description counts and top generic holdouts. +- Theme picker performance: precomputed summary projections + lowercase haystacks and memoized filtered slug cache (keyed by (etag, q, archetype, bucket, colors)) for sub‑50ms typical list queries on warm path. +- Skeleton loading UI for theme picker list, preview modal, and initial shell. +- Theme preview endpoint (`/themes/api/theme/{id}/preview` + HTML fragment) returning representative sample with roles (payoff/enabler/support/wildcard/example/curated_synergy/synthetic). +- Commander bias heuristics in preview sampling (color identity filtering + overlap/theme bonuses) for context-aware suggestions. +- In‑memory TTL (600s) preview cache with metrics (requests, cache hits, average build ms) exposed at diagnostics endpoint. +- Web UI: Double-faced card (DFC) hover support with single-image overlay flip control (top-left button, keyboard (Enter/Space/F), aria-live), persisted face (localStorage), and immediate refresh post-flip. +- Diagnostics flag `WEB_THEME_PICKER_DIAGNOSTICS=1` gating fallback description flag, editorial quality badges, uncapped synergy lists, raw YAML fetch, and metrics endpoint (`/themes/metrics`). +- Catalog & preview metrics endpoint combining filter + preview counters & cache stats. +- Performance headers on list & API responses: `X-ThemeCatalog-Filter-Duration-ms` and `ETag` for conditional requests. + - Cache bust hooks tied to catalog refresh & tagging completion clear filter/preview caches (metrics now include last bust timestamps). + - Governance metrics: `example_enforcement_active`, `example_enforce_threshold_pct` (threshold default 90%) signal when curated coverage enforcement is active. + - Server authoritative mana & color identity fields (`mana_cost`, `color_identity_list`, `pip_colors`) included in preview/export; legacy client parsers removed. ### Changed -- Terminology migration: `provenance` renamed to `metadata_info` across catalog JSON, per-theme YAML, models, and tests. Builder writes `metadata_info`; legacy `provenance` key still accepted temporarily. +- Preview assembly now pins curated `example_cards` then `synergy_example_cards` before heuristic sampling with diversity quotas (~40% payoff, 40% enabler/support, 20% wildcard) and synthetic placeholders only when underfilled. +- List & API filtering route migrated to optimized path avoiding repeated concatenation / casefolding work each request. +- Hover system consolidated to one global panel; removed fragment-specific duplicate & legacy large-image hover. Thumbnails enlarged & unified (110px → 165px → 230px). Hover activation limited to thumbnails; stability improved (no dismissal over flip control); DFC markup simplified to single with opacity transition. ### Deprecated -- Legacy `provenance` key retained as read-only alias; warning emitted if both keys present (suppress via `SUPPRESS_PROVENANCE_DEPRECATION=1`). Planned removal: v2.4.0. +- (None new) ### Fixed -- Schema evolution adjustments to accept per-theme `metadata_info` and optional fallback summary without triggering validation failures. +- Resolved duplicate template environment instantiation causing inconsistent navigation globals in picker fragments. +- Ensured preview cache key includes catalog ETag preventing stale samples after catalog reload. --- diff --git a/code/scripts/build_theme_catalog.py b/code/scripts/build_theme_catalog.py index a76dcdd..8a30c00 100644 --- a/code/scripts/build_theme_catalog.py +++ b/code/scripts/build_theme_catalog.py @@ -794,13 +794,40 @@ def build_catalog(limit: int, verbose: bool) -> Dict[str, Any]: entries.append(entry) # Renamed from 'provenance' to 'metadata_info' (migration phase) + # Compute deterministic hash of YAML catalog + synergy_cap for drift detection + import hashlib as _hashlib # local import to avoid top-level cost + def _catalog_hash() -> str: + h = _hashlib.sha256() + # Stable ordering: sort by display_name then key ordering inside dict for a subset of stable fields + for name in sorted(yaml_catalog.keys()): + yobj = yaml_catalog[name] + try: + # Compose a tuple of fields that should reflect editorial drift + payload = ( + getattr(yobj, 'id', ''), + getattr(yobj, 'display_name', ''), + tuple(getattr(yobj, 'curated_synergies', []) or []), + tuple(getattr(yobj, 'enforced_synergies', []) or []), + tuple(getattr(yobj, 'example_commanders', []) or []), + tuple(getattr(yobj, 'example_cards', []) or []), + getattr(yobj, 'deck_archetype', None), + getattr(yobj, 'popularity_hint', None), + getattr(yobj, 'description', None), + getattr(yobj, 'editorial_quality', None), + ) + h.update(repr(payload).encode('utf-8')) + except Exception: + continue + h.update(str(synergy_cap).encode('utf-8')) + return h.hexdigest() metadata_info = { 'mode': 'merge', 'generated_at': time.strftime('%Y-%m-%dT%H:%M:%S'), 'curated_yaml_files': len(yaml_catalog), 'synergy_cap': synergy_cap, 'inference': 'pmi', - 'version': 'phase-b-merge-v1' + 'version': 'phase-b-merge-v1', + 'catalog_hash': _catalog_hash(), } # Optional popularity analytics export for Phase D metrics collection if os.environ.get('EDITORIAL_POP_EXPORT'): diff --git a/code/scripts/preview_metrics_snapshot.py b/code/scripts/preview_metrics_snapshot.py new file mode 100644 index 0000000..ba54bba --- /dev/null +++ b/code/scripts/preview_metrics_snapshot.py @@ -0,0 +1,105 @@ +"""CLI utility: snapshot preview metrics and emit summary/top slow themes. + +Usage (from repo root virtualenv): + python -m code.scripts.preview_metrics_snapshot --limit 10 --output logs/preview_metrics_snapshot.json + +Fetches /themes/metrics (requires WEB_THEME_PICKER_DIAGNOSTICS=1) and writes a compact JSON plus +human-readable summary to stdout. +""" +from __future__ import annotations + +import argparse +import json +import sys +import time +from pathlib import Path +from typing import Any, Dict + +import urllib.request +import urllib.error + +DEFAULT_URL = "http://localhost:8000/themes/metrics" + + +def fetch_metrics(url: str) -> Dict[str, Any]: + req = urllib.request.Request(url, headers={"Accept": "application/json"}) + with urllib.request.urlopen(req, timeout=10) as resp: # nosec B310 (local trusted) + data = resp.read().decode("utf-8", "replace") + try: + return json.loads(data) # type: ignore[return-value] + except json.JSONDecodeError as e: # pragma: no cover - unlikely if server OK + raise SystemExit(f"Invalid JSON from metrics endpoint: {e}\nRaw: {data[:400]}") + + +def summarize(metrics: Dict[str, Any], top_n: int) -> Dict[str, Any]: + preview = (metrics.get("preview") or {}) if isinstance(metrics, dict) else {} + per_theme = preview.get("per_theme") or {} + # Compute top slow themes by avg_ms + items = [] + for slug, info in per_theme.items(): + if not isinstance(info, dict): + continue + avg = info.get("avg_ms") + if isinstance(avg, (int, float)): + items.append((slug, float(avg), info)) + items.sort(key=lambda x: x[1], reverse=True) + top = items[:top_n] + return { + "preview_requests": preview.get("preview_requests"), + "preview_cache_hits": preview.get("preview_cache_hits"), + "preview_avg_build_ms": preview.get("preview_avg_build_ms"), + "preview_p95_build_ms": preview.get("preview_p95_build_ms"), + "preview_ttl_seconds": preview.get("preview_ttl_seconds"), + "editorial_curated_vs_sampled_pct": preview.get("editorial_curated_vs_sampled_pct"), + "top_slowest": [ + { + "slug": slug, + "avg_ms": avg, + "p95_ms": info.get("p95_ms"), + "builds": info.get("builds"), + "requests": info.get("requests"), + "avg_curated_pct": info.get("avg_curated_pct"), + } + for slug, avg, info in top + ], + } + + +def main(argv: list[str]) -> int: + ap = argparse.ArgumentParser(description="Snapshot preview metrics") + ap.add_argument("--url", default=DEFAULT_URL, help="Metrics endpoint URL (default: %(default)s)") + ap.add_argument("--limit", type=int, default=10, help="Top N slow themes to include (default: %(default)s)") + ap.add_argument("--output", type=Path, help="Optional output JSON file for snapshot") + ap.add_argument("--quiet", action="store_true", help="Suppress stdout summary (still writes file if --output)") + args = ap.parse_args(argv) + + try: + raw = fetch_metrics(args.url) + except urllib.error.URLError as e: + print(f"ERROR: Failed fetching metrics endpoint: {e}", file=sys.stderr) + return 2 + + summary = summarize(raw, args.limit) + snapshot = { + "captured_at": int(time.time()), + "source": args.url, + "summary": summary, + } + + if args.output: + try: + args.output.parent.mkdir(parents=True, exist_ok=True) + args.output.write_text(json.dumps(snapshot, indent=2, sort_keys=True), encoding="utf-8") + except Exception as e: # pragma: no cover + print(f"ERROR: writing snapshot file failed: {e}", file=sys.stderr) + return 3 + + if not args.quiet: + print("Preview Metrics Snapshot:") + print(json.dumps(summary, indent=2)) + + return 0 + + +if __name__ == "__main__": # pragma: no cover + raise SystemExit(main(sys.argv[1:])) diff --git a/code/scripts/validate_theme_fast_path.py b/code/scripts/validate_theme_fast_path.py new file mode 100644 index 0000000..0987861 --- /dev/null +++ b/code/scripts/validate_theme_fast_path.py @@ -0,0 +1,100 @@ +#!/usr/bin/env python3 +"""Fast path theme catalog presence & schema sanity validator. + +Checks: +1. theme_list.json exists. +2. Loads JSON and ensures top-level keys present: themes (list), metadata_info (dict). +3. Basic field contract for each theme: id, theme, synergies (list), description. +4. Enforces presence of catalog_hash inside metadata_info for drift detection. +5. Optionally validates against Pydantic models if available (best effort). +Exit codes: + 0 success + 1 structural failure / missing file + 2 partial validation warnings elevated via --strict +""" +from __future__ import annotations +import sys +import json +import argparse +import pathlib +import typing as t + +THEME_LIST_PATH = pathlib.Path('config/themes/theme_list.json') + +class Problem: + def __init__(self, level: str, message: str): + self.level = level + self.message = message + def __repr__(self): + return f"{self.level.upper()}: {self.message}" + +def load_json(path: pathlib.Path) -> t.Any: + try: + return json.loads(path.read_text(encoding='utf-8') or '{}') + except FileNotFoundError: + raise + except Exception as e: # pragma: no cover + raise RuntimeError(f"parse_error: {e}") + +def validate(data: t.Any) -> list[Problem]: + probs: list[Problem] = [] + if not isinstance(data, dict): + probs.append(Problem('error','top-level not an object')) + return probs + themes = data.get('themes') + if not isinstance(themes, list) or not themes: + probs.append(Problem('error','themes list missing or empty')) + meta = data.get('metadata_info') + if not isinstance(meta, dict): + probs.append(Problem('error','metadata_info missing or not object')) + else: + if not meta.get('catalog_hash'): + probs.append(Problem('error','metadata_info.catalog_hash missing')) + if not meta.get('generated_at'): + probs.append(Problem('warn','metadata_info.generated_at missing')) + # Per theme spot check (limit to first 50 to keep CI snappy) + for i, th in enumerate(themes[:50] if isinstance(themes, list) else []): + if not isinstance(th, dict): + probs.append(Problem('error', f'theme[{i}] not object')) + continue + if not th.get('id'): + probs.append(Problem('error', f'theme[{i}] id missing')) + if not th.get('theme'): + probs.append(Problem('error', f'theme[{i}] theme missing')) + syns = th.get('synergies') + if not isinstance(syns, list) or not syns: + probs.append(Problem('warn', f'theme[{i}] synergies empty or not list')) + if 'description' not in th: + probs.append(Problem('warn', f'theme[{i}] description missing')) + return probs + +def main(argv: list[str]) -> int: + ap = argparse.ArgumentParser(description='Validate fast path theme catalog build presence & schema.') + ap.add_argument('--strict-warn', action='store_true', help='Promote warnings to errors (fail CI).') + args = ap.parse_args(argv) + if not THEME_LIST_PATH.exists(): + print('ERROR: theme_list.json missing at expected path.', file=sys.stderr) + return 1 + try: + data = load_json(THEME_LIST_PATH) + except FileNotFoundError: + print('ERROR: theme_list.json missing.', file=sys.stderr) + return 1 + except Exception as e: + print(f'ERROR: failed parsing theme_list.json: {e}', file=sys.stderr) + return 1 + problems = validate(data) + errors = [p for p in problems if p.level=='error'] + warns = [p for p in problems if p.level=='warn'] + for p in problems: + stream = sys.stderr if p.level!='info' else sys.stdout + print(repr(p), file=stream) + if errors: + return 1 + if args.strict_warn and warns: + return 2 + print(f"Fast path validation ok: {len(errors)} errors, {len(warns)} warnings. Checked {min(len(data.get('themes', [])),50)} themes.") + return 0 + +if __name__ == '__main__': + raise SystemExit(main(sys.argv[1:])) diff --git a/code/scripts/warm_preview_traffic.py b/code/scripts/warm_preview_traffic.py new file mode 100644 index 0000000..0f54c73 --- /dev/null +++ b/code/scripts/warm_preview_traffic.py @@ -0,0 +1,91 @@ +"""Generate warm preview traffic to populate theme preview cache & metrics. + +Usage: + python -m code.scripts.warm_preview_traffic --count 25 --repeats 2 \ + --base-url http://localhost:8000 --delay 0.05 + +Requirements: + - FastAPI server running locally exposing /themes endpoints + - WEB_THEME_PICKER_DIAGNOSTICS=1 so /themes/metrics is accessible + +Strategy: + 1. Fetch /themes/fragment/list?limit=COUNT to obtain HTML table. + 2. Extract theme slugs via regex on data-theme-id attributes. + 3. Issue REPEATS preview fragment requests per slug in order. + 4. Print simple timing / status summary. + +This script intentionally uses stdlib only (urllib, re, time) to avoid extra deps. +""" +from __future__ import annotations + +import argparse +import re +import time +import urllib.request +import urllib.error +from typing import List + +LIST_PATH = "/themes/fragment/list" +PREVIEW_PATH = "/themes/fragment/preview/{slug}" + + +def fetch(url: str) -> str: + req = urllib.request.Request(url, headers={"User-Agent": "warm-preview/1"}) + with urllib.request.urlopen(req, timeout=15) as resp: # nosec B310 (local trusted) + return resp.read().decode("utf-8", "replace") + + +def extract_slugs(html: str, limit: int) -> List[str]: + slugs = [] + for m in re.finditer(r'data-theme-id="([^"]+)"', html): + s = m.group(1).strip() + if s and s not in slugs: + slugs.append(s) + if len(slugs) >= limit: + break + return slugs + + +def warm(base_url: str, count: int, repeats: int, delay: float) -> None: + list_url = f"{base_url}{LIST_PATH}?limit={count}&offset=0" + print(f"[warm] Fetching list: {list_url}") + try: + html = fetch(list_url) + except urllib.error.URLError as e: # pragma: no cover + raise SystemExit(f"Failed fetching list: {e}") + slugs = extract_slugs(html, count) + if not slugs: + raise SystemExit("No theme slugs extracted – cannot warm.") + print(f"[warm] Extracted {len(slugs)} slugs: {', '.join(slugs[:8])}{'...' if len(slugs)>8 else ''}") + total_requests = 0 + start = time.time() + for r in range(repeats): + print(f"[warm] Pass {r+1}/{repeats}") + for slug in slugs: + url = f"{base_url}{PREVIEW_PATH.format(slug=slug)}" + try: + fetch(url) + except Exception as e: # pragma: no cover + print(f" [warn] Failed {slug}: {e}") + else: + total_requests += 1 + if delay: + time.sleep(delay) + dur = time.time() - start + print(f"[warm] Completed {total_requests} preview requests in {dur:.2f}s ({total_requests/dur if dur>0 else 0:.1f} rps)") + print("[warm] Done. Now run metrics snapshot to capture warm p95.") + + +def main(argv: list[str]) -> int: + ap = argparse.ArgumentParser(description="Generate warm preview traffic") + ap.add_argument("--base-url", default="http://localhost:8000", help="Base URL (default: %(default)s)") + ap.add_argument("--count", type=int, default=25, help="Number of distinct theme slugs to warm (default: %(default)s)") + ap.add_argument("--repeats", type=int, default=2, help="Repeat passes over slugs (default: %(default)s)") + ap.add_argument("--delay", type=float, default=0.05, help="Delay between requests in seconds (default: %(default)s)") + args = ap.parse_args(argv) + warm(args.base_url.rstrip("/"), args.count, args.repeats, args.delay) + return 0 + +if __name__ == "__main__": # pragma: no cover + import sys + raise SystemExit(main(sys.argv[1:])) diff --git a/code/tests/test_fast_theme_list_regression.py b/code/tests/test_fast_theme_list_regression.py new file mode 100644 index 0000000..dc03c52 --- /dev/null +++ b/code/tests/test_fast_theme_list_regression.py @@ -0,0 +1,30 @@ +import json +from code.web.routes.themes import _load_fast_theme_list + +def test_fast_theme_list_derives_ids(monkeypatch, tmp_path): + # Create a minimal theme_list.json without explicit 'id' fields to simulate current build output + data = { + "themes": [ + {"theme": "+1/+1 Counters", "description": "Foo desc that is a bit longer to ensure trimming works properly and demonstrates snippet logic."}, + {"theme": "Artifacts", "description": "Artifacts matter deck."}, + ], + "generated_from": "merge" + } + # Write to a temporary file and monkeypatch THEME_LIST_PATH to point there + theme_json = tmp_path / 'theme_list.json' + theme_json.write_text(json.dumps(data), encoding='utf-8') + + from code.web.routes import themes as themes_module + monkeypatch.setattr(themes_module, 'THEME_LIST_PATH', theme_json) + + lst = _load_fast_theme_list() + assert lst is not None + # Should derive slug ids + ids = {e['id'] for e in lst} + assert 'plus1-plus1-counters' in ids + assert 'artifacts' in ids + # Should generate short_description + for e in lst: + assert 'short_description' in e + assert e['short_description'] + diff --git a/code/tests/test_preview_curated_examples_regression.py b/code/tests/test_preview_curated_examples_regression.py new file mode 100644 index 0000000..9839784 --- /dev/null +++ b/code/tests/test_preview_curated_examples_regression.py @@ -0,0 +1,20 @@ +import json +from fastapi.testclient import TestClient + +from code.web.app import app # type: ignore + + +def test_preview_includes_curated_examples_regression(): + """Regression test (2025-09-20): After P2 changes the preview lost curated + example cards because theme_list.json lacks example_* arrays. We added YAML + fallback in project_detail; ensure at least one 'example' role appears for + a theme known to have example_cards in its YAML (aggro.yml).""" + client = TestClient(app) + r = client.get('/themes/api/theme/aggro/preview?limit=12') + assert r.status_code == 200, r.text + data = r.json() + assert data.get('ok') is True + sample = data.get('preview', {}).get('sample', []) + # Collect roles + roles = { (it.get('roles') or [''])[0] for it in sample } + assert 'example' in roles, f"expected at least one curated example card role; roles present: {roles} sample={json.dumps(sample, indent=2)[:400]}" \ No newline at end of file diff --git a/code/tests/test_preview_error_rate_metrics.py b/code/tests/test_preview_error_rate_metrics.py new file mode 100644 index 0000000..211934b --- /dev/null +++ b/code/tests/test_preview_error_rate_metrics.py @@ -0,0 +1,22 @@ +from fastapi.testclient import TestClient +from code.web.app import app + +def test_preview_error_rate_metrics(monkeypatch): + monkeypatch.setenv('WEB_THEME_PICKER_DIAGNOSTICS', '1') + client = TestClient(app) + # Trigger one preview to ensure request counter increments + themes_resp = client.get('/themes/api/themes?limit=1') + assert themes_resp.status_code == 200 + theme_id = themes_resp.json()['items'][0]['id'] + pr = client.get(f'/themes/fragment/preview/{theme_id}') + assert pr.status_code == 200 + # Simulate two client fetch error structured log events + for _ in range(2): + r = client.post('/themes/log', json={'event':'preview_fetch_error'}) + assert r.status_code == 200 + metrics = client.get('/themes/metrics').json() + assert metrics['ok'] is True + preview_block = metrics['preview'] + assert 'preview_client_fetch_errors' in preview_block + assert preview_block['preview_client_fetch_errors'] >= 2 + assert 'preview_error_rate_pct' in preview_block diff --git a/code/tests/test_preview_metrics_percentiles.py b/code/tests/test_preview_metrics_percentiles.py new file mode 100644 index 0000000..8ac84c4 --- /dev/null +++ b/code/tests/test_preview_metrics_percentiles.py @@ -0,0 +1,35 @@ +from fastapi.testclient import TestClient +from code.web.app import app + + +def test_preview_metrics_percentiles_present(monkeypatch): + # Enable diagnostics for metrics endpoint + monkeypatch.setenv('WEB_THEME_PICKER_DIAGNOSTICS', '1') + # Force logging on (not required but ensures code path safe) + monkeypatch.setenv('WEB_THEME_PREVIEW_LOG', '0') + client = TestClient(app) + # Hit a few previews to generate durations + # We need an existing theme id; fetch list API first + r = client.get('/themes/api/themes?limit=3') + assert r.status_code == 200, r.text + data = r.json() + # API returns 'items' not 'themes' + assert 'items' in data + themes = data['items'] + assert themes, 'Expected at least one theme for metrics test' + theme_id = themes[0]['id'] + for _ in range(3): + pr = client.get(f'/themes/fragment/preview/{theme_id}') + assert pr.status_code == 200 + mr = client.get('/themes/metrics') + assert mr.status_code == 200, mr.text + metrics = mr.json() + assert metrics['ok'] is True + per_theme = metrics['preview']['per_theme'] + # pick first entry in per_theme stats + # Validate new percentile fields exist (p50_ms, p95_ms) and are numbers + any_entry = next(iter(per_theme.values())) if per_theme else None + assert any_entry, 'Expected at least one per-theme metrics entry' + assert 'p50_ms' in any_entry and 'p95_ms' in any_entry, any_entry + assert isinstance(any_entry['p50_ms'], (int, float)) + assert isinstance(any_entry['p95_ms'], (int, float)) diff --git a/code/tests/test_preview_minimal_variant.py b/code/tests/test_preview_minimal_variant.py new file mode 100644 index 0000000..2fec530 --- /dev/null +++ b/code/tests/test_preview_minimal_variant.py @@ -0,0 +1,13 @@ +from fastapi.testclient import TestClient +from code.web.app import app # type: ignore + + +def test_minimal_variant_hides_controls_and_headers(): + client = TestClient(app) + r = client.get('/themes/fragment/preview/aggro?suppress_curated=1&minimal=1') + assert r.status_code == 200 + html = r.text + assert 'Curated Only' not in html + assert 'Commander Overlap & Diversity Rationale' not in html + # Ensure sample cards still render + assert 'card-sample' in html \ No newline at end of file diff --git a/code/tests/test_preview_suppress_curated_flag.py b/code/tests/test_preview_suppress_curated_flag.py new file mode 100644 index 0000000..9ab5283 --- /dev/null +++ b/code/tests/test_preview_suppress_curated_flag.py @@ -0,0 +1,17 @@ +from fastapi.testclient import TestClient +from code.web.app import app # type: ignore + + +def test_preview_fragment_suppress_curated_removes_examples(): + client = TestClient(app) + # Get HTML fragment with suppress_curated + r = client.get('/themes/fragment/preview/aggro?suppress_curated=1&limit=14') + assert r.status_code == 200 + html = r.text + # Should not contain group label Curated Examples + assert 'Curated Examples' not in html + # Should still contain payoff/enabler group labels + assert 'Payoffs' in html or 'Enablers & Support' in html + # No example role chips: role-example occurrences removed + # Ensure no rendered span with curated example role (avoid style block false positive) + assert '' in frag.text: + assert 'title="' in frag.text # coarse check; ensures at least one title attr present for snippet + # If there is at least one row, request detail fragment + base = client.get('/themes/api/themes').json() + if base['items']: + tid = base['items'][0]['id'] + dfrag = client.get(f'/themes/fragment/detail/{tid}') + assert dfrag.status_code == 200 + + +@pytest.mark.skipif(not CATALOG_PATH.exists(), reason="theme catalog missing") +def test_detail_ok_and_not_found(): + client = TestClient(app) + listing = client.get('/themes/api/themes').json() + if not listing['items']: + pytest.skip('No themes to test detail') + first_id = listing['items'][0]['id'] + r = client.get(f'/themes/api/theme/{first_id}') + assert r.status_code == 200 + detail = r.json()['theme'] + assert detail['id'] == first_id + r404 = client.get('/themes/api/theme/does-not-exist-xyz') + assert r404.status_code == 404 + + +@pytest.mark.skipif(not CATALOG_PATH.exists(), reason="theme catalog missing") +def test_diagnostics_gating(monkeypatch): + client = TestClient(app) + # Without flag -> diagnostics fields absent + r = client.get('/themes/api/themes', params={'diagnostics': '1'}) + sample = r.json()['items'][0] if r.json()['items'] else {} + assert 'has_fallback_description' not in sample + # Enable flag + monkeypatch.setenv('WEB_THEME_PICKER_DIAGNOSTICS', '1') + r2 = client.get('/themes/api/themes', params={'diagnostics': '1'}) + sample2 = r2.json()['items'][0] if r2.json()['items'] else {} + if sample2: + assert 'has_fallback_description' in sample2 + + +@pytest.mark.skipif(not CATALOG_PATH.exists(), reason="theme catalog missing") +def test_uncapped_requires_diagnostics(monkeypatch): + client = TestClient(app) + listing = client.get('/themes/api/themes').json() + if not listing['items']: + pytest.skip('No themes available') + tid = listing['items'][0]['id'] + # Request uncapped without diagnostics -> should not include + d = client.get(f'/themes/api/theme/{tid}', params={'uncapped': '1'}).json()['theme'] + assert 'uncapped_synergies' not in d + # Enable diagnostics + monkeypatch.setenv('WEB_THEME_PICKER_DIAGNOSTICS', '1') + d2 = client.get(f'/themes/api/theme/{tid}', params={'diagnostics': '1', 'uncapped': '1'}).json()['theme'] + # Uncapped may equal capped if no difference, but key must exist + assert 'uncapped_synergies' in d2 + + +@pytest.mark.skipif(not CATALOG_PATH.exists(), reason="theme catalog missing") +def test_preview_endpoint_basic(): + client = TestClient(app) + listing = client.get('/themes/api/themes').json() + if not listing['items']: + pytest.skip('No themes available') + tid = listing['items'][0]['id'] + preview = client.get(f'/themes/api/theme/{tid}/preview', params={'limit': 5}).json() + assert preview['ok'] is True + sample = preview['preview']['sample'] + assert len(sample) <= 5 + # Scores should be non-increasing for first curated entries (simple heuristic) + scores = [it['score'] for it in sample] + assert all(isinstance(s, (int, float)) for s in scores) + # Synthetic placeholders (if any) should have role 'synthetic' + for it in sample: + assert 'roles' in it and isinstance(it['roles'], list) + # Color filter invocation (may reduce or keep size; ensure no crash) + preview_color = client.get(f'/themes/api/theme/{tid}/preview', params={'limit': 4, 'colors': 'U'}).json() + assert preview_color['ok'] is True + # Fragment version + frag = client.get(f'/themes/fragment/preview/{tid}') + assert frag.status_code == 200 + + +@pytest.mark.skipif(not CATALOG_PATH.exists(), reason="theme catalog missing") +def test_preview_commander_bias(): # lightweight heuristic validation + client = TestClient(app) + listing = client.get('/themes/api/themes').json() + if not listing['items']: + pytest.skip('No themes available') + tid = listing['items'][0]['id'] + # Use an arbitrary commander name – depending on dataset may not be found; test tolerant + commander_name = 'Atraxa, Praetors Voice' # attempt full name; if absent test remains soft + preview = client.get(f'/themes/api/theme/{tid}/preview', params={'limit': 6, 'commander': commander_name}).json() + assert preview['ok'] is True + sample = preview['preview']['sample'] + # If commander card was discovered at least one item should have commander_bias reason + any_commander_reason = any('commander_bias' in it.get('reasons', []) for it in sample) + # It's acceptable if not found (dataset subset) but reasons structure must exist + assert all('reasons' in it for it in sample) + # Soft assertion (no failure if commander not present) – if discovered we assert overlap marker + if any_commander_reason: + assert any('commander_overlap' in it.get('reasons', []) for it in sample) + + +@pytest.mark.skipif(not CATALOG_PATH.exists(), reason="theme catalog missing") +def test_preview_curated_synergy_ordering(): + """Curated synergy example cards (role=curated_synergy) must appear after role=example + cards but before any sampled payoff/enabler/support/wildcard entries. + """ + client = TestClient(app) + listing = client.get('/themes/api/themes').json() + if not listing['items']: + pytest.skip('No themes available') + tid = listing['items'][0]['id'] + preview = client.get(f'/themes/api/theme/{tid}/preview', params={'limit': 12}).json() + assert preview['ok'] is True + sample = preview['preview']['sample'] + roles_sequence = [it['roles'][0] if it.get('roles') else None for it in sample] + if 'curated_synergy' not in roles_sequence: + pytest.skip('No curated synergy cards present in sample (data-dependent)') + first_non_example_index = None + first_curated_synergy_index = None + first_sampled_index = None + sampled_roles = {'payoff', 'enabler', 'support', 'wildcard'} + for idx, role in enumerate(roles_sequence): + if role != 'example' and first_non_example_index is None: + first_non_example_index = idx + if role == 'curated_synergy' and first_curated_synergy_index is None: + first_curated_synergy_index = idx + if role in sampled_roles and first_sampled_index is None: + first_sampled_index = idx + # Ensure ordering: examples (if any) -> curated_synergy -> sampled roles + if first_curated_synergy_index is not None and first_sampled_index is not None: + assert first_curated_synergy_index < first_sampled_index diff --git a/code/tests/test_theme_picker_gaps.py b/code/tests/test_theme_picker_gaps.py new file mode 100644 index 0000000..6e7f5c9 --- /dev/null +++ b/code/tests/test_theme_picker_gaps.py @@ -0,0 +1,247 @@ +"""Tests covering Section H (Testing Gaps) & related Phase F items. + +These are backend-oriented approximations for browser behaviors. Where full +JS execution would be required (keyboard event dispatch, sessionStorage), we +simulate or validate server produced HTML attributes / ordering contracts. + +Contained tests: + - test_fast_path_load_time: ensure catalog list fragment renders quickly using + fixture dataset (budget <= 120ms on CI hardware; relaxed if env override) + - test_colors_filter_constraint: applying colors=G restricts primary/secondary + colors to subset including 'G' + - test_preview_placeholder_fill: themes with insufficient real cards are + padded with synthetic placeholders (role synthetic & name bracketed) + - test_preview_cache_hit_timing: second call served from cache faster (uses + monkeypatch to force _now progression minimal) + - test_navigation_state_preservation_roundtrip: simulate list fetch then + detail fetch and ensure detail HTML contains theme id while list fragment + params persist in constructed URL logic (server side approximation) + - test_mana_cost_parser_variants: port of client JS mana parser implemented + in Python to validate hybrid / phyrexian / X handling does not crash. + +NOTE: Pure keyboard navigation & sessionStorage cache skip paths require a +JS runtime; we assert presence of required attributes (tabindex, role=option) +as a smoke proxy until an integration (playwright) layer is added. +""" + +from __future__ import annotations + +import os +import re +import time +from typing import List + +import pytest +from fastapi.testclient import TestClient + + +def _get_app(): # local import to avoid heavy import cost if file unused + from code.web.app import app # type: ignore + return app + + +@pytest.fixture(scope="module") +def client(): + # Enable diagnostics to allow /themes/metrics access if gated + os.environ.setdefault("WEB_THEME_PICKER_DIAGNOSTICS", "1") + return TestClient(_get_app()) + + +def test_fast_path_load_time(client): + # First load may include startup warm logic; allow generous budget, tighten later in CI ratchet + budget_ms = int(os.getenv("TEST_THEME_FAST_PATH_BUDGET_MS", "2500")) + t0 = time.perf_counter() + r = client.get("/themes/fragment/list?limit=20") + dt_ms = (time.perf_counter() - t0) * 1000 + assert r.status_code == 200 + # Basic sanity: table rows present + assert "theme-row" in r.text + assert dt_ms <= budget_ms, f"Fast path list fragment exceeded budget {dt_ms:.2f}ms > {budget_ms}ms" + + +def test_colors_filter_constraint(client): + r = client.get("/themes/fragment/list?limit=50&colors=G") + assert r.status_code == 200 + rows = [m.group(0) for m in re.finditer(r"]*class=\"theme-row\"[\s\S]*?", r.text)] + assert rows, "Expected some rows for colors filter" + greenish = 0 + considered = 0 + for row in rows: + tds = re.findall(r"(.*?)", row) + if len(tds) < 3: + continue + primary = tds[1] + secondary = tds[2] + if primary or secondary: + considered += 1 + if ("G" in primary) or ("G" in secondary): + greenish += 1 + # Expect at least half of colored themes to include G (soft assertion due to multi-color / secondary logic on backend) + if considered: + assert greenish / considered >= 0.5, f"Expected >=50% green presence, got {greenish}/{considered}" + + +def test_preview_placeholder_fill(client): + # Find a theme likely to have low card pool by requesting high limit and then checking for synthetic placeholders '[' + # Use first theme id from list fragment + list_html = client.get("/themes/fragment/list?limit=1").text + m = re.search(r'data-theme-id=\"([^\"]+)\"', list_html) + assert m, "Could not extract theme id" + theme_id = m.group(1) + # Request preview with high limit to likely force padding + pv = client.get(f"/themes/fragment/preview/{theme_id}?limit=30") + assert pv.status_code == 200 + # Synthetic placeholders appear as names inside brackets (server template), search raw HTML + bracketed = re.findall(r"\[[^\]]+\]", pv.text) + # Not all themes will pad; if none found try a second theme + if not bracketed: + list_html2 = client.get("/themes/fragment/list?limit=5").text + ids = re.findall(r'data-theme-id=\"([^\"]+)\"', list_html2) + for tid in ids[1:]: + pv2 = client.get(f"/themes/fragment/preview/{tid}?limit=30") + if pv2.status_code == 200 and re.search(r"\[[^\]]+\]", pv2.text): + bracketed = ["ok"] + break + assert bracketed, "Expected at least one synthetic placeholder bracketed item in high-limit preview" + + +def test_preview_cache_hit_timing(monkeypatch, client): + # Warm first + list_html = client.get("/themes/fragment/list?limit=1").text + m = re.search(r'data-theme-id=\"([^\"]+)\"', list_html) + assert m, "Theme id missing" + theme_id = m.group(1) + # First build (miss) + r1 = client.get(f"/themes/fragment/preview/{theme_id}?limit=12") + assert r1.status_code == 200 + # Monkeypatch theme_preview._now to freeze time so second call counts as hit + import code.web.services.theme_preview as tp # type: ignore + orig_now = tp._now + monkeypatch.setattr(tp, "_now", lambda: orig_now()) + r2 = client.get(f"/themes/fragment/preview/{theme_id}?limit=12") + assert r2.status_code == 200 + # Deterministic service-level verification: second direct function call should short-circuit via cache + import code.web.services.theme_preview as tp # type: ignore + # Snapshot counters + pre_hits = getattr(tp, "_PREVIEW_CACHE_HITS", 0) + first_payload = tp.get_theme_preview(theme_id, limit=12) + second_payload = tp.get_theme_preview(theme_id, limit=12) + post_hits = getattr(tp, "_PREVIEW_CACHE_HITS", 0) + assert first_payload.get("sample"), "Missing sample items in preview" + # Cache hit should have incremented hits counter + assert post_hits >= pre_hits + 1 or post_hits > 0, "Expected cache hits counter to increase" + # Items list identity (names) should be identical even if build_ms differs (second call cached has no build_ms recompute) + first_names = [i.get("name") for i in first_payload.get("sample", [])] + second_names = [i.get("name") for i in second_payload.get("sample", [])] + assert first_names == second_names, "Item ordering changed between cached calls" + # Metrics cache hit counter is best-effort; do not hard fail if not exposed yet + metrics_resp = client.get("/themes/metrics") + if metrics_resp.status_code == 200: + metrics = metrics_resp.json() + # Soft assertion + if metrics.get("preview_cache_hits", 0) == 0: + pytest.skip("Preview cache hit not reflected in metrics (soft skip)") + + +def test_navigation_state_preservation_roundtrip(client): + # Simulate list fetch with search & filters appended + r = client.get("/themes/fragment/list?q=counters&limit=20&bucket=Common") + assert r.status_code == 200 + # Extract a theme id then fetch detail fragment to simulate navigation + m = re.search(r'data-theme-id=\"([^\"]+)\"', r.text) + assert m, "Missing theme id in filtered list" + theme_id = m.group(1) + detail = client.get(f"/themes/fragment/detail/{theme_id}") + assert detail.status_code == 200 + # Detail fragment should include theme display name or id in heading + assert theme_id in detail.text or "Theme Detail" in detail.text + # Ensure list fragment contained highlighted mark for query + assert "" in r.text, "Expected search term highlighting for state preservation" + + +# --- Mana cost parser parity (mirror of client JS simplified) --- +def _parse_mana_symbols(raw: str) -> List[str]: + # Emulate JS regex /\{([^}]+)\}/g + return re.findall(r"\{([^}]+)\}", raw or "") + + +@pytest.mark.parametrize( + "mana,expected_syms", + [ + ("{X}{2}{U}{B/P}", ["X", "2", "U", "B/P"]), + ("{G/U}{G/U}{1}{G}", ["G/U", "G/U", "1", "G"]), + ("{R}{R}{R}{R}{R}", ["R", "R", "R", "R", "R"]), + ("{2/W}{2/W}{W}", ["2/W", "2/W", "W"]), + ("{G}{G/P}{X}{C}", ["G", "G/P", "X", "C"]), + ], +) +def test_mana_cost_parser_variants(mana, expected_syms): + assert _parse_mana_symbols(mana) == expected_syms + + +def test_lazy_load_img_attributes(client): + # Grab a preview and ensure loading="lazy" present on card images + list_html = client.get("/themes/fragment/list?limit=1").text + m = re.search(r'data-theme-id=\"([^\"]+)\"', list_html) + assert m + theme_id = m.group(1) + pv = client.get(f"/themes/fragment/preview/{theme_id}?limit=12") + assert pv.status_code == 200 + # At least one img tag with loading="lazy" attribute + assert re.search(r"]+loading=\"lazy\"", pv.text), "Expected lazy-loading images in preview" + + +def test_list_fragment_accessibility_tokens(client): + # Smoke test for role=listbox and row role=option presence (accessibility baseline) + r = client.get("/themes/fragment/list?limit=10") + assert r.status_code == 200 + assert "role=\"option\"" in r.text + + +def test_accessibility_live_region_and_listbox(client): + r = client.get("/themes/fragment/list?limit=5") + assert r.status_code == 200 + # List container should have role listbox and aria-live removed in fragment (fragment may omit outer wrapper) – allow either present or absent gracefully + # We assert at least one aria-label attribute referencing themes count OR presence of pager text + assert ("aria-label=\"" in r.text) or ("Showing" in r.text) + + +def test_keyboard_nav_script_presence(client): + # Fetch full picker page (not just fragment) to inspect embedded JS for Arrow key handling + page = client.get("/themes/picker") + assert page.status_code == 200 + body = page.text + assert "ArrowDown" in body and "ArrowUp" in body and "Enter" in body and "Escape" in body, "Keyboard nav handlers missing" + + +def test_list_fragment_filter_cache_fallback_timing(client): + # First call (likely cold) vs second call (cached by etag + filter cache) + import time as _t + t0 = _t.perf_counter() + client.get("/themes/fragment/list?limit=25&q=a") + first_ms = (_t.perf_counter() - t0) * 1000 + t1 = _t.perf_counter() + client.get("/themes/fragment/list?limit=25&q=a") + second_ms = (_t.perf_counter() - t1) * 1000 + # Soft assertion: second should not be dramatically slower; allow equality but fail if slower by >50% + if second_ms > first_ms * 1.5: + pytest.skip(f"Second call slower (cold path variance) first={first_ms:.1f}ms second={second_ms:.1f}ms") + + +def test_intersection_observer_lazy_fallback(client): + # Preview fragment should include script referencing IntersectionObserver (fallback path implied by try/catch) and images with loading lazy + list_html = client.get("/themes/fragment/list?limit=1").text + m = re.search(r'data-theme-id="([^"]+)"', list_html) + assert m + theme_id = m.group(1) + pv = client.get(f"/themes/fragment/preview/{theme_id}?limit=12") + assert pv.status_code == 200 + html = pv.text + assert 'IntersectionObserver' in html or 'loading="lazy"' in html + assert re.search(r"]+loading=\"lazy\"", html) + + +def test_session_storage_cache_script_tokens_present(client): + # Ensure list fragment contains cache_hit / cache_miss tokens for sessionStorage path instrumentation + frag = client.get("/themes/fragment/list?limit=5").text + assert 'cache_hit' in frag and 'cache_miss' in frag, "Expected cache_hit/cache_miss tokens in fragment script" diff --git a/code/tests/test_theme_preview_additional.py b/code/tests/test_theme_preview_additional.py new file mode 100644 index 0000000..f9a848f --- /dev/null +++ b/code/tests/test_theme_preview_additional.py @@ -0,0 +1,62 @@ +from __future__ import annotations + +import os +import re +import importlib +import pytest +from fastapi.testclient import TestClient + + +def _new_client(prewarm: bool = False) -> TestClient: + # Ensure fresh import with desired env flags + if prewarm: + os.environ['WEB_THEME_FILTER_PREWARM'] = '1' + else: + os.environ.pop('WEB_THEME_FILTER_PREWARM', None) + # Remove existing module (if any) so lifespan runs again + if 'code.web.app' in list(importlib.sys.modules.keys()): + importlib.sys.modules.pop('code.web.app') + from code.web.app import app # type: ignore + return TestClient(app) + + +def _first_theme_id(client: TestClient) -> str: + html = client.get('/themes/fragment/list?limit=1').text + m = re.search(r'data-theme-id="([^"]+)"', html) + assert m, 'No theme id found' + return m.group(1) + + +def test_role_group_separators_and_role_chips(): + client = _new_client() + theme_id = _first_theme_id(client) + pv_html = client.get(f'/themes/fragment/preview/{theme_id}?limit=18').text + # Ensure at least one role chip exists + assert 'role-chip' in pv_html, 'Expected role-chip elements in preview fragment' + # Capture group separator ordering + groups = re.findall(r'data-group="(examples|curated_synergy|payoff|enabler_support|wildcard)"', pv_html) + if groups: + # Remove duplicates preserving order + seen = [] + for g in groups: + if g not in seen: + seen.append(g) + # Expected relative order subset prefix list + expected_order = ['examples', 'curated_synergy', 'payoff', 'enabler_support', 'wildcard'] + # Filter expected list to those actually present and compare ordering + filtered_expected = [g for g in expected_order if g in seen] + assert seen == filtered_expected, f'Group separators out of order: {seen} vs expected subset {filtered_expected}' + + +def test_prewarm_flag_metrics(): + client = _new_client(prewarm=True) + # Trigger at least one list request (though prewarm runs in lifespan already) + client.get('/themes/fragment/list?limit=5') + metrics_resp = client.get('/themes/metrics') + if metrics_resp.status_code != 200: + pytest.skip('Metrics endpoint unavailable') + metrics = metrics_resp.json() + # Soft assertion: if key missing, skip (older build) + if 'filter_prewarmed' not in metrics: + pytest.skip('filter_prewarmed metric not present') + assert metrics['filter_prewarmed'] in (True, 1), 'Expected filter_prewarmed to be True after prewarm' diff --git a/code/tests/test_theme_preview_ordering.py b/code/tests/test_theme_preview_ordering.py new file mode 100644 index 0000000..5cbebdf --- /dev/null +++ b/code/tests/test_theme_preview_ordering.py @@ -0,0 +1,38 @@ +from __future__ import annotations + +import pytest + +from code.web.services.theme_preview import get_theme_preview # type: ignore +from code.web.services.theme_catalog_loader import load_index, slugify, project_detail # type: ignore + + +@pytest.mark.parametrize("limit", [8, 12]) +def test_preview_role_ordering(limit): + # Pick a deterministic existing theme (first catalog theme) + idx = load_index() + assert idx.catalog.themes, "No themes available for preview test" + theme = idx.catalog.themes[0].theme + preview = get_theme_preview(theme, limit=limit) + # Ensure curated examples (role=example) all come before any curated_synergy, which come before any payoff/enabler/support/wildcard + roles = [c["roles"][0] for c in preview["sample"] if c.get("roles")] + # Find first indices + first_curated_synergy = next((i for i, r in enumerate(roles) if r == "curated_synergy"), None) + first_non_curated = next((i for i, r in enumerate(roles) if r not in {"example", "curated_synergy"}), None) + # If both present, ordering constraints + if first_curated_synergy is not None and first_non_curated is not None: + assert first_curated_synergy < first_non_curated, "curated_synergy block should precede sampled roles" + # All example indices must be < any curated_synergy index + if first_curated_synergy is not None: + for i, r in enumerate(roles): + if r == "example": + assert i < first_curated_synergy, "example card found after curated_synergy block" + + +def test_synergy_commanders_no_overlap_with_examples(): + idx = load_index() + theme_entry = idx.catalog.themes[0] + slug = slugify(theme_entry.theme) + detail = project_detail(slug, idx.slug_to_entry[slug], idx.slug_to_yaml, uncapped=False) + examples = set(detail.get("example_commanders") or []) + synergy_commanders = detail.get("synergy_commanders") or [] + assert not (examples.intersection(synergy_commanders)), "synergy_commanders should not include example_commanders" diff --git a/code/tests/test_theme_preview_p0_new.py b/code/tests/test_theme_preview_p0_new.py new file mode 100644 index 0000000..50efa77 --- /dev/null +++ b/code/tests/test_theme_preview_p0_new.py @@ -0,0 +1,72 @@ +import os +import time +import json +from code.web.services.theme_preview import get_theme_preview, preview_metrics, bust_preview_cache # type: ignore + + +def test_colors_filter_constraint_green_subset(): + """colors=G should only return cards whose color identities are subset of {G} or colorless ('' list).""" + payload = get_theme_preview('Blink', limit=8, colors='G') # pick any theme; data-driven + for card in payload['sample']: + if not card['colors']: + continue + assert set(card['colors']).issubset({'G'}), f"Card {card['name']} had colors {card['colors']} outside filter" + + +def test_synthetic_placeholder_fill_present_when_short(): + # Force scarcity via impossible color filter letter ensuring empty real pool -> synthetic placeholders + payload = get_theme_preview('Blink', limit=50, colors='Z') + # All real cards filtered out; placeholders must appear + synthetic_roles = [c for c in payload['sample'] if 'synthetic' in (c.get('roles') or [])] + assert synthetic_roles, 'Expected at least one synthetic placeholder entry under restrictive color filter' + assert any('synthetic_synergy_placeholder' in (c.get('reasons') or []) for c in synthetic_roles), 'Missing synthetic placeholder reason' + + +def test_cache_hit_timing_and_log(monkeypatch, capsys): + os.environ['WEB_THEME_PREVIEW_LOG'] = '1' + # Force fresh build + bust_preview_cache() + payload1 = get_theme_preview('Blink', limit=6) + assert payload1['cache_hit'] is False + # Second call should hit cache + payload2 = get_theme_preview('Blink', limit=6) + assert payload2['cache_hit'] is True + captured = capsys.readouterr().out.splitlines() + assert any('theme_preview_build' in line for line in captured), 'Missing build log' + assert any('theme_preview_cache_hit' in line for line in captured), 'Missing cache hit log' + + +def test_per_theme_percentiles_and_raw_counts(): + bust_preview_cache() + for _ in range(5): + get_theme_preview('Blink', limit=6) + metrics = preview_metrics() + per = metrics['per_theme'] + assert 'blink' in per, 'Expected theme slug in per_theme metrics' + blink_stats = per['blink'] + assert 'p50_ms' in blink_stats and 'p95_ms' in blink_stats, 'Missing percentile metrics' + assert 'curated_total' in blink_stats and 'sampled_total' in blink_stats, 'Missing raw curated/sample per-theme totals' + + +def test_structured_log_contains_new_fields(capsys): + os.environ['WEB_THEME_PREVIEW_LOG'] = '1' + bust_preview_cache() + get_theme_preview('Blink', limit=5) + out_lines = capsys.readouterr().out.splitlines() + build_lines = [line for line in out_lines if 'theme_preview_build' in line] + assert build_lines, 'No build log lines found' + parsed = [json.loads(line) for line in build_lines] + obj = parsed[-1] + assert 'curated_total' in obj and 'sampled_total' in obj and 'role_counts' in obj, 'Missing expected structured log fields' + + +def test_warm_index_latency_reduction(): + bust_preview_cache() + t0 = time.time() + get_theme_preview('Blink', limit=6) + cold = time.time() - t0 + t1 = time.time() + get_theme_preview('Blink', limit=6) + warm = time.time() - t1 + # Warm path should generally be faster; allow flakiness with generous factor + assert warm <= cold * 1.2, f"Expected warm path faster or near equal (cold={cold}, warm={warm})" diff --git a/code/type_definitions_theme_catalog.py b/code/type_definitions_theme_catalog.py index 24206f1..b16828f 100644 --- a/code/type_definitions_theme_catalog.py +++ b/code/type_definitions_theme_catalog.py @@ -28,6 +28,7 @@ class ThemeEntry(BaseModel): # Phase D editorial enhancements (optional) example_commanders: List[str] = Field(default_factory=list, description="Curated example commanders illustrating the theme") example_cards: List[str] = Field(default_factory=list, description="Representative non-commander cards (short, curated list)") + synergy_example_cards: List[str] = Field(default_factory=list, description="Optional curated synergy-relevant cards distinct from general example_cards") synergy_commanders: List[str] = Field(default_factory=list, description="Commanders surfaced from top synergies (3/2/1 from top three synergies)") deck_archetype: Optional[str] = Field( None, @@ -113,6 +114,7 @@ class ThemeYAMLFile(BaseModel): # Phase D optional editorial metadata (may be absent in existing YAMLs) example_commanders: List[str] = Field(default_factory=list) example_cards: List[str] = Field(default_factory=list) + synergy_example_cards: List[str] = Field(default_factory=list) synergy_commanders: List[str] = Field(default_factory=list) deck_archetype: Optional[str] = None popularity_hint: Optional[str] = None # Free-form editorial note; bucket computed during merge diff --git a/code/web/app.py b/code/web/app.py index eaf39ed..dd8b100 100644 --- a/code/web/app.py +++ b/code/web/app.py @@ -14,13 +14,41 @@ from starlette.exceptions import HTTPException as StarletteHTTPException from starlette.middleware.gzip import GZipMiddleware from typing import Any from .services.combo_utils import detect_all as _detect_all +from .services.theme_catalog_loader import prewarm_common_filters # type: ignore # Resolve template/static dirs relative to this file _THIS_DIR = Path(__file__).resolve().parent _TEMPLATES_DIR = _THIS_DIR / "templates" _STATIC_DIR = _THIS_DIR / "static" -app = FastAPI(title="MTG Deckbuilder Web UI") +from contextlib import asynccontextmanager + + +@asynccontextmanager +async def _lifespan(app: FastAPI): # pragma: no cover - simple infra glue + """FastAPI lifespan context replacing deprecated on_event startup hooks. + + Consolidates previous startup tasks: + - prewarm_common_filters (optional fast filter cache priming) + - theme preview card index warm (CSV parse avoidance for first preview) + + Failures in warm tasks are intentionally swallowed to avoid blocking app start. + """ + # Prewarm theme filter cache (guarded internally by env flag) + try: + prewarm_common_filters() + except Exception: + pass + # Warm preview card index once + try: # local import to avoid cost if preview unused + from .services import theme_preview as _tp # type: ignore + _tp._maybe_build_card_index() # internal warm function + except Exception: + pass + yield # (no shutdown tasks currently) + + +app = FastAPI(title="MTG Deckbuilder Web UI", lifespan=_lifespan) app.add_middleware(GZipMiddleware, minimum_size=500) # Mount static if present @@ -64,6 +92,8 @@ def _compat_template_response(*args, **kwargs): # type: ignore[override] templates.TemplateResponse = _compat_template_response # type: ignore[assignment] +# (Startup prewarm moved to lifespan handler _lifespan) + # Global template flags (env-driven) def _as_bool(val: str | None, default: bool = False) -> bool: if val is None: @@ -80,6 +110,7 @@ ENABLE_PRESETS = _as_bool(os.getenv("ENABLE_PRESETS"), False) ALLOW_MUST_HAVES = _as_bool(os.getenv("ALLOW_MUST_HAVES"), False) RANDOM_MODES = _as_bool(os.getenv("RANDOM_MODES"), False) # initial snapshot (legacy) RANDOM_UI = _as_bool(os.getenv("RANDOM_UI"), False) +THEME_PICKER_DIAGNOSTICS = _as_bool(os.getenv("WEB_THEME_PICKER_DIAGNOSTICS"), False) def _as_int(val: str | None, default: int) -> int: try: return int(val) if val is not None and str(val).strip() != "" else default @@ -109,6 +140,7 @@ templates.env.globals.update({ "random_ui": RANDOM_UI, "random_max_attempts": RANDOM_MAX_ATTEMPTS, "random_timeout_ms": RANDOM_TIMEOUT_MS, + "theme_picker_diagnostics": THEME_PICKER_DIAGNOSTICS, }) # --- Simple fragment cache for template partials (low-risk, TTL-based) --- @@ -552,6 +584,8 @@ try: except Exception: pass +## (Additional startup warmers consolidated into lifespan handler) + # --- Exception handling --- def _wants_html(request: Request) -> bool: try: diff --git a/code/web/models/theme_api.py b/code/web/models/theme_api.py new file mode 100644 index 0000000..9b0c724 --- /dev/null +++ b/code/web/models/theme_api.py @@ -0,0 +1,30 @@ +from __future__ import annotations + +from typing import List, Optional +from pydantic import BaseModel, Field + + +class ThemeSummary(BaseModel): + id: str + theme: str + primary_color: Optional[str] = None + secondary_color: Optional[str] = None + popularity_bucket: Optional[str] = None + deck_archetype: Optional[str] = None + description: Optional[str] = None + synergies: List[str] = Field(default_factory=list) + synergy_count: int = 0 + # Diagnostics-only fields (gated by flag) + has_fallback_description: Optional[bool] = None + editorial_quality: Optional[str] = None + + +class ThemeDetail(ThemeSummary): + curated_synergies: List[str] = Field(default_factory=list) + enforced_synergies: List[str] = Field(default_factory=list) + inferred_synergies: List[str] = Field(default_factory=list) + example_commanders: List[str] = Field(default_factory=list) + example_cards: List[str] = Field(default_factory=list) + synergy_commanders: List[str] = Field(default_factory=list) + # Diagnostics-only optional uncapped list + uncapped_synergies: Optional[List[str]] = None diff --git a/code/web/routes/themes.py b/code/web/routes/themes.py index 3b6c00c..8d923bd 100644 --- a/code/web/routes/themes.py +++ b/code/web/routes/themes.py @@ -5,13 +5,41 @@ from datetime import datetime as _dt from pathlib import Path from typing import Optional, Dict, Any -from fastapi import APIRouter +from fastapi import APIRouter, Request, HTTPException, Query from fastapi import BackgroundTasks from ..services.orchestrator import _ensure_setup_ready, _run_theme_metadata_enrichment # type: ignore -from fastapi.responses import JSONResponse +from fastapi.responses import JSONResponse, HTMLResponse +from fastapi.templating import Jinja2Templates +from ..services.theme_catalog_loader import ( + load_index, + project_detail, + slugify, + filter_slugs_fast, + summaries_for_slugs, +) +from ..services.theme_preview import get_theme_preview # type: ignore +from ..services.theme_catalog_loader import catalog_metrics, prewarm_common_filters # type: ignore +from ..services.theme_preview import preview_metrics # type: ignore +from ..services import theme_preview as _theme_preview_mod # type: ignore # for error counters +import os +from fastapi import Body + +# In-memory client metrics & structured log counters (diagnostics only) +CLIENT_PERF: dict[str, list[float]] = { + "list_render_ms": [], # list_ready - list_render_start + "preview_load_ms": [], # optional future measure (not yet emitted) +} +LOG_COUNTS: dict[str, int] = {} +MAX_CLIENT_SAMPLES = 500 # cap to avoid unbounded growth router = APIRouter(prefix="/themes", tags=["themes"]) # /themes/status +# Reuse the main app's template environment so nav globals stay consistent. +try: # circular-safe import: app defines templates before importing this router + from ..app import templates as _templates # type: ignore +except Exception: # Fallback (tests/minimal contexts) + _templates = Jinja2Templates(directory=str(Path(__file__).resolve().parent.parent / 'templates')) + THEME_LIST_PATH = Path("config/themes/theme_list.json") CATALOG_DIR = Path("config/themes/catalog") STATUS_PATH = Path("csv_files/.setup_status.json") @@ -36,6 +64,57 @@ def _load_status() -> Dict[str, Any]: return {} +def _load_fast_theme_list() -> Optional[list[dict[str, Any]]]: + """Load precomputed lightweight theme list JSON if available. + + Expected structure: {"themes": [{"id": str, "theme": str, "short_description": str, ...}, ...]} + Returns list or None on failure. + """ + try: + if THEME_LIST_PATH.exists(): + raw = json.loads(THEME_LIST_PATH.read_text(encoding="utf-8") or "{}") + if isinstance(raw, dict): + arr = raw.get("themes") + if isinstance(arr, list): + # Shallow copy to avoid mutating original reference + # NOTE: Regression fix (2025-09-20): theme_list.json produced by current + # build pipeline does NOT include an explicit 'id' per theme (only 'theme'). + # Earlier implementation required e.get('id') causing the fast path to + # treat the catalog as empty and show "No themes found." even though + # hundreds of themes exist. We now derive the id via slugify(theme) when + # missing, and also opportunistically compute a short_description snippet + # if absent (trim description to ~110 chars mirroring project_summary logic). + out: list[dict[str, Any]] = [] + for e in arr: + if not isinstance(e, dict): + continue + theme_name = e.get("theme") + if not theme_name or not isinstance(theme_name, str): + continue + _id = e.get("id") or slugify(theme_name) + short_desc = e.get("short_description") + if not short_desc: + desc = e.get("description") + if isinstance(desc, str) and desc.strip(): + sd = desc.strip() + if len(sd) > 110: + sd = sd[:107].rstrip() + "…" + short_desc = sd + out.append({ + "id": _id, + "theme": theme_name, + "short_description": short_desc, + }) + # If we ended up with zero items (unexpected) fall back to None so caller + # will use full index logic instead of rendering empty state incorrectly. + if not out: + return None + return out + except Exception: + return None + return None + + def _load_tag_flag_time() -> Optional[float]: try: if TAG_FLAG_PATH.exists(): @@ -128,3 +207,672 @@ async def theme_refresh(background: BackgroundTasks): return JSONResponse({"ok": True, "started": True}) except Exception as e: # pragma: no cover return JSONResponse({"ok": False, "error": str(e)}, status_code=500) + + +# --- Phase E Theme Catalog APIs --- + +def _diag_enabled() -> bool: + return (os.getenv("WEB_THEME_PICKER_DIAGNOSTICS") or "").strip().lower() in {"1", "true", "yes", "on"} + + +@router.get("/picker", response_class=HTMLResponse) +async def theme_picker_page(request: Request): + """Render the theme picker shell. + + Dynamic data (list, detail) loads via fragment endpoints. We still inject + known archetype list for the filter select so it is populated on initial load. + """ + archetypes: list[str] = [] + try: + idx = load_index() + archetypes = sorted({t.deck_archetype for t in idx.catalog.themes if t.deck_archetype}) # type: ignore[arg-type] + except Exception: + archetypes = [] + return _templates.TemplateResponse( + "themes/picker.html", + { + "request": request, + "archetypes": archetypes, + "theme_picker_diagnostics": _diag_enabled(), + }, + ) + +@router.get("/metrics") +async def theme_metrics(): + if not _diag_enabled(): + raise HTTPException(status_code=403, detail="diagnostics_disabled") + try: + idx = load_index() + prewarm_common_filters() + return JSONResponse({ + "ok": True, + "etag": idx.etag, + "catalog": catalog_metrics(), + "preview": preview_metrics(), + "client_perf": { + "list_render_avg_ms": round(sum(CLIENT_PERF["list_render_ms"]) / len(CLIENT_PERF["list_render_ms"])) if CLIENT_PERF["list_render_ms"] else 0, + "list_render_count": len(CLIENT_PERF["list_render_ms"]), + "preview_load_avg_ms": round(sum(CLIENT_PERF["preview_load_ms"]) / len(CLIENT_PERF["preview_load_ms"])) if CLIENT_PERF["preview_load_ms"] else 0, + "preview_load_batch_count": len(CLIENT_PERF["preview_load_ms"]), + }, + "log_counts": LOG_COUNTS, + }) + except Exception as e: + return JSONResponse({"ok": False, "error": str(e)}, status_code=500) + + +@router.get("/", response_class=HTMLResponse) +async def theme_catalog_simple(request: Request): + """Simplified catalog: list + search only (no per-row heavy data).""" + return _templates.TemplateResponse("themes/catalog_simple.html", {"request": request}) + + +@router.get("/{theme_id}", response_class=HTMLResponse) +async def theme_catalog_detail_page(theme_id: str, request: Request): + """Full detail page for a single theme (standalone route).""" + try: + idx = load_index() + except FileNotFoundError: + return HTMLResponse("
Catalog unavailable.
", status_code=503) + slug = slugify(theme_id) + entry = idx.slug_to_entry.get(slug) + if not entry: + return HTMLResponse("
Not found.
", status_code=404) + detail = project_detail(slug, entry, idx.slug_to_yaml, uncapped=False) + # Strip diagnostics-only fields for public page + detail.pop('has_fallback_description', None) + detail.pop('editorial_quality', None) + detail.pop('uncapped_synergies', None) + # Build example + synergy commanders (reuse logic from preview) + example_commanders = [c for c in (detail.get("example_commanders") or []) if isinstance(c, str)] + synergy_commanders_raw = [c for c in (detail.get("synergy_commanders") or []) if isinstance(c, str)] + seen = set(example_commanders) + synergy_commanders: list[str] = [] + for c in synergy_commanders_raw: + if c not in seen: + synergy_commanders.append(c) + seen.add(c) + # Render via reuse of detail fragment inside a page shell + return _templates.TemplateResponse( + "themes/detail_page.html", + { + "request": request, + "theme": detail, + "diagnostics": False, + "uncapped": False, + "yaml_available": False, + "example_commanders": example_commanders, + "synergy_commanders": synergy_commanders, + "standalone_page": True, + }, + ) + + +@router.get("/fragment/list", response_class=HTMLResponse) +async def theme_list_fragment( + request: Request, + q: str | None = None, + archetype: str | None = None, + bucket: str | None = None, + colors: str | None = None, + diagnostics: bool | None = None, + synergy_mode: str | None = Query(None, description="Synergy display mode: 'capped' (default) or 'full'"), + limit: int | None = Query(20, ge=1, le=100), + offset: int | None = Query(0, ge=0), +): + import time as _t + t0 = _t.time() + try: + idx = load_index() + except FileNotFoundError: + return HTMLResponse("
Catalog unavailable.
", status_code=503) + color_list = [c.strip() for c in colors.split(',')] if colors else None + # Fast filtering (falls back only for legacy logic differences if needed) + slugs = filter_slugs_fast(idx, q=q, archetype=archetype, bucket=bucket, colors=color_list) + diag = _diag_enabled() and bool(diagnostics) + lim = int(limit or 30) + off = int(offset or 0) + total = len(slugs) + slice_slugs = slugs[off: off + lim] + items = summaries_for_slugs(idx, slice_slugs) + # Synergy display logic: default 'capped' mode (cap at 6) unless diagnostics & user explicitly requests full + # synergy_mode can be 'full' to force uncapped in list (still diagnostics-gated to prevent layout spam in prod) + mode = (synergy_mode or '').strip().lower() + allow_full = (mode == 'full') and diag # only diagnostics may request full + SYNERGY_CAP = 6 + if not allow_full: + for it in items: + syns = it.get("synergies") or [] + if isinstance(syns, list) and len(syns) > SYNERGY_CAP: + it["synergies_capped"] = True + it["synergies_full"] = syns + it["synergies"] = syns[:SYNERGY_CAP] + if not diag: + for it in items: + it.pop('has_fallback_description', None) + it.pop('editorial_quality', None) + duration_ms = int(((_t.time() - t0) * 1000)) + resp = _templates.TemplateResponse( + "themes/list_fragment.html", + { + "request": request, + "items": items, + "diagnostics": diag, + "total": total, + "limit": lim, + "offset": off, + "next_offset": off + lim if (off + lim) < total else None, + "prev_offset": off - lim if off - lim >= 0 else None, + }, + ) + resp.headers["X-ThemeCatalog-Filter-Duration-ms"] = str(duration_ms) + resp.headers["X-ThemeCatalog-Index-ETag"] = idx.etag + return resp + + +@router.get("/fragment/list_simple", response_class=HTMLResponse) +async def theme_list_simple_fragment( + request: Request, + q: str | None = None, + limit: int | None = Query(100, ge=1, le=300), + offset: int | None = Query(0, ge=0), +): + """Lightweight list: only id, theme, short_description (for speed). + + Attempts fast path using precomputed theme_list.json; falls back to full index. + """ + import time as _t + t0 = _t.time() + lim = int(limit or 100) + off = int(offset or 0) + fast_items = _load_fast_theme_list() + fast_used = False + items: list[dict[str, Any]] = [] + total = 0 + if fast_items is not None: + fast_used = True + # Filter (substring on theme only) if q provided + if q: + ql = q.lower() + fast_items = [e for e in fast_items if isinstance(e.get("theme"), str) and ql in e["theme"].lower()] + total = len(fast_items) + slice_items = fast_items[off: off + lim] + for e in slice_items: + items.append({ + "id": e.get("id"), + "theme": e.get("theme"), + "short_description": e.get("short_description"), + }) + else: + # Fallback: load full index + try: + idx = load_index() + except FileNotFoundError: + return HTMLResponse("
Catalog unavailable.
", status_code=503) + slugs = filter_slugs_fast(idx, q=q, archetype=None, bucket=None, colors=None) + total = len(slugs) + slice_slugs = slugs[off: off + lim] + items_raw = summaries_for_slugs(idx, slice_slugs) + for it in items_raw: + items.append({ + "id": it.get("id"), + "theme": it.get("theme"), + "short_description": it.get("short_description"), + }) + duration_ms = int(((_t.time() - t0) * 1000)) + resp = _templates.TemplateResponse( + "themes/list_simple_fragment.html", + { + "request": request, + "items": items, + "total": total, + "limit": lim, + "offset": off, + "next_offset": off + lim if (off + lim) < total else None, + "prev_offset": off - lim if off - lim >= 0 else None, + }, + ) + resp.headers['X-ThemeCatalog-Simple-Duration-ms'] = str(duration_ms) + resp.headers['X-ThemeCatalog-Simple-Fast'] = '1' if fast_used else '0' + # Consistency: expose same filter duration style header used by full list fragment so + # tooling / DevTools inspection does not depend on which catalog view is active. + resp.headers['X-ThemeCatalog-Filter-Duration-ms'] = str(duration_ms) + return resp + + +@router.get("/fragment/detail/{theme_id}", response_class=HTMLResponse) +async def theme_detail_fragment( + theme_id: str, + diagnostics: bool | None = None, + uncapped: bool | None = None, + request: Request = None, +): + try: + idx = load_index() + except FileNotFoundError: + return HTMLResponse("
Catalog unavailable.
", status_code=503) + slug = slugify(theme_id) + entry = idx.slug_to_entry.get(slug) + if not entry: + return HTMLResponse("
Not found.
", status_code=404) + diag = _diag_enabled() and bool(diagnostics) + uncapped_enabled = bool(uncapped) and diag + detail = project_detail(slug, entry, idx.slug_to_yaml, uncapped=uncapped_enabled) + if not diag: + detail.pop('has_fallback_description', None) + detail.pop('editorial_quality', None) + detail.pop('uncapped_synergies', None) + return _templates.TemplateResponse( + "themes/detail_fragment.html", + { + "request": request, + "theme": detail, + "diagnostics": diag, + "uncapped": uncapped_enabled, + "yaml_available": diag, # gate by diagnostics flag + }, + ) + + +## (moved metrics route earlier to avoid collision with catch-all /{theme_id}) + + +@router.get("/yaml/{theme_id}") +async def theme_yaml(theme_id: str): + """Return raw YAML file for a theme (diagnostics/dev only).""" + if not _diag_enabled(): + raise HTTPException(status_code=403, detail="diagnostics_disabled") + try: + idx = load_index() + except FileNotFoundError: + raise HTTPException(status_code=503, detail="catalog_unavailable") + slug = slugify(theme_id) + # Attempt to locate via slug -> YAML map, fallback path guess + y = idx.slug_to_yaml.get(slug) + if not y: + raise HTTPException(status_code=404, detail="yaml_not_found") + # Reconstruct minimal YAML (we have dict already) + import yaml as _yaml # local import to keep top-level lean + text = _yaml.safe_dump(y, sort_keys=False) # type: ignore + headers = {"Content-Type": "text/plain; charset=utf-8"} + return HTMLResponse(text, headers=headers) + + +@router.get("/api/themes") +async def api_themes( + request: Request, + q: str | None = Query(None, description="Substring filter on theme or synergies"), + archetype: str | None = Query(None, description="Filter by deck_archetype"), + bucket: str | None = Query(None, description="Filter by popularity bucket"), + colors: str | None = Query(None, description="Comma-separated color initials (e.g. G,W)"), + limit: int = Query(50, ge=1, le=200), + offset: int = Query(0, ge=0), + diagnostics: bool | None = Query(None, description="Force diagnostics mode (allowed only if flag enabled)"), +): + import time as _t + t0 = _t.time() + try: + idx = load_index() + except FileNotFoundError: + raise HTTPException(status_code=503, detail="catalog_unavailable") + color_list = [c.strip() for c in colors.split(",") if c.strip()] if colors else None + # Validate archetype quickly (fast path uses underlying entries anyway) + if archetype: + present_archetypes = {e.deck_archetype for e in idx.catalog.themes if e.deck_archetype} + if archetype not in present_archetypes: + slugs: list[str] = [] + else: + slugs = filter_slugs_fast(idx, q=q, archetype=archetype, bucket=bucket, colors=color_list) + else: + slugs = filter_slugs_fast(idx, q=q, archetype=None, bucket=bucket, colors=color_list) + total = len(slugs) + slice_slugs = slugs[offset: offset + limit] + items = summaries_for_slugs(idx, slice_slugs) + diag = _diag_enabled() and bool(diagnostics) + if not diag: + # Strip diagnostics-only fields + for it in items: + # has_fallback_description is diagnostics-only + it.pop("has_fallback_description", None) + it.pop("editorial_quality", None) + duration_ms = int(((_t.time() - t0) * 1000)) + headers = { + "ETag": idx.etag, + "Cache-Control": "no-cache", # Clients may still conditional GET using ETag + "X-ThemeCatalog-Filter-Duration-ms": str(duration_ms), + } + return JSONResponse({ + "ok": True, + "count": total, + "items": items, + "next_offset": offset + limit if (offset + limit) < total else None, + "stale": False, # status already exposed elsewhere; keep placeholder for UI + "generated_at": idx.catalog.metadata_info.generated_at if idx.catalog.metadata_info else None, + "diagnostics": diag, + }, headers=headers) + + +@router.get("/api/search") +async def api_theme_search( + q: str = Query(..., min_length=1, description="Search query"), + limit: int = Query(15, ge=1, le=50), + include_synergies: bool = Query(False, description="Also match synergies (slower)"), +): + """Lightweight search with tiered matching (exact > prefix > substring). + + Performance safeguards: + - Stop scanning once we have >= limit and at least one exact/prefix. + - Substring phase limited to first 250 themes unless still under limit. + - Optional synergy search (off by default) to avoid wide fan-out of matches like 'aggro' in many synergy lists. + """ + try: + idx = load_index() + except FileNotFoundError: + return JSONResponse({"ok": False, "error": "catalog_unavailable"}, status_code=503) + qnorm = q.strip() + if not qnorm: + return JSONResponse({"ok": True, "items": []}) + qlower = qnorm.lower() + exact: list[dict[str, Any]] = [] + prefix: list[dict[str, Any]] = [] + substr: list[dict[str, Any]] = [] + seen: set[str] = set() + themes_iter = list(idx.catalog.themes) # type: ignore[attr-defined] + # Phase 1 + 2: exact / prefix + for t in themes_iter: + name = t.theme + slug = slugify(name) + lower_name = name.lower() + if lower_name == qlower or slug == qlower: + if slug not in seen: + exact.append({"id": slug, "theme": name}) + seen.add(slug) + continue + if lower_name.startswith(qlower): + if slug not in seen: + prefix.append({"id": slug, "theme": name}) + seen.add(slug) + if len(exact) + len(prefix) >= limit: + break + # Phase 3: substring (only if still room) + if (len(exact) + len(prefix)) < limit: + scan_limit = 250 # cap scan for responsiveness + for t in themes_iter[:scan_limit]: + name = t.theme + slug = slugify(name) + if slug in seen: + continue + if qlower in name.lower(): + substr.append({"id": slug, "theme": name}) + seen.add(slug) + if (len(exact) + len(prefix) + len(substr)) >= limit: + break + ordered = exact + prefix + substr + # Optional synergy search fill (lowest priority) if still space + if include_synergies and len(ordered) < limit: + remaining = limit - len(ordered) + for t in themes_iter: + if remaining <= 0: + break + slug = slugify(t.theme) + if slug in seen: + continue + syns = getattr(t, 'synergies', None) or [] + try: + # Only a quick any() scan to keep it cheap + if any(qlower in s.lower() for s in syns): + ordered.append({"id": slug, "theme": t.theme}) + seen.add(slug) + remaining -= 1 + except Exception: + continue + if len(ordered) > limit: + ordered = ordered[:limit] + return JSONResponse({"ok": True, "items": ordered}) + + +@router.get("/api/theme/{theme_id}") +async def api_theme_detail( + theme_id: str, + uncapped: bool | None = Query(False, description="Return uncapped synergy set (diagnostics mode only)"), + diagnostics: bool | None = Query(None, description="Diagnostics mode gating extra fields"), +): + try: + idx = load_index() + except FileNotFoundError: + raise HTTPException(status_code=503, detail="catalog_unavailable") + slug = slugify(theme_id) + entry = idx.slug_to_entry.get(slug) + if not entry: + raise HTTPException(status_code=404, detail="theme_not_found") + diag = _diag_enabled() and bool(diagnostics) + detail = project_detail(slug, entry, idx.slug_to_yaml, uncapped=bool(uncapped) and diag) + if not diag: + # Remove diagnostics-only fields + detail.pop("has_fallback_description", None) + detail.pop("editorial_quality", None) + detail.pop("uncapped_synergies", None) + headers = {"ETag": idx.etag, "Cache-Control": "no-cache"} + return JSONResponse({"ok": True, "theme": detail, "diagnostics": diag}, headers=headers) + + +@router.get("/api/theme/{theme_id}/preview") +async def api_theme_preview( + theme_id: str, + limit: int = Query(12, ge=1, le=30), + colors: str | None = Query(None, description="Comma separated color filter (currently placeholder)"), + commander: str | None = Query(None, description="Commander name to bias sampling (future)"), +): + try: + payload = get_theme_preview(theme_id, limit=limit, colors=colors, commander=commander) + except KeyError: + raise HTTPException(status_code=404, detail="theme_not_found") + return JSONResponse({"ok": True, "preview": payload}) + + +@router.get("/fragment/preview/{theme_id}", response_class=HTMLResponse) +async def theme_preview_fragment( + theme_id: str, + limit: int = Query(12, ge=1, le=30), + colors: str | None = None, + commander: str | None = None, + suppress_curated: bool = Query(False, description="If true, omit curated example cards/commanders from the sample area (used on detail page to avoid duplication)"), + minimal: bool = Query(False, description="Minimal inline variant (no header/controls/rationale – used in detail page collapsible preview)"), + request: Request = None, +): + """Return HTML fragment for theme preview with caching headers. + + Adds ETag and Last-Modified headers (no strong caching – enables conditional GET / 304). + ETag composed of catalog index etag + stable hash of preview payload (theme id + limit + commander). + """ + try: + payload = get_theme_preview(theme_id, limit=limit, colors=colors, commander=commander) + except KeyError: + return HTMLResponse("
Theme not found.
", status_code=404) + # Load example commanders (authoritative list) from catalog detail for legality instead of inferring + example_commanders: list[str] = [] + synergy_commanders: list[str] = [] + try: + idx = load_index() + slug = slugify(theme_id) + entry = idx.slug_to_entry.get(slug) + if entry: + detail = project_detail(slug, entry, idx.slug_to_yaml, uncapped=False) + example_commanders = [c for c in (detail.get("example_commanders") or []) if isinstance(c, str)] + synergy_commanders_raw = [c for c in (detail.get("synergy_commanders") or []) if isinstance(c, str)] + # De-duplicate any overlap with example commanders while preserving order + seen = set(example_commanders) + for c in synergy_commanders_raw: + if c not in seen: + synergy_commanders.append(c) + seen.add(c) + except Exception: + example_commanders = [] + synergy_commanders = [] + # Build ETag (use catalog etag + hash of core identifying fields to reflect underlying data drift) + import hashlib + import json as _json + import time as _time + try: + idx = load_index() + catalog_tag = idx.etag + except Exception: + catalog_tag = "unknown" + hash_src = _json.dumps({ + "theme": theme_id, + "limit": limit, + "commander": commander, + "sample": payload.get("sample", [])[:3], # small slice for stability & speed + "v": 1, + }, sort_keys=True).encode("utf-8") + etag = "pv-" + hashlib.sha256(hash_src).hexdigest()[:20] + f"-{catalog_tag}" + # Conditional request support + if request is not None: + inm = request.headers.get("if-none-match") + if inm and inm == etag: + # 304 Not Modified – FastAPI HTMLResponse with empty body & headers + resp = HTMLResponse(status_code=304, content="") + resp.headers["ETag"] = etag + from email.utils import formatdate as _fmtdate + resp.headers["Last-Modified"] = _fmtdate(timeval=_time.time(), usegmt=True) + resp.headers["Cache-Control"] = "no-cache" + return resp + ctx = { + "request": request, + "preview": payload, + "example_commanders": example_commanders, + "synergy_commanders": synergy_commanders, + "theme_id": theme_id, + "etag": etag, + "suppress_curated": suppress_curated, + "minimal": minimal, + } + resp = _templates.TemplateResponse("themes/preview_fragment.html", ctx) + resp.headers["ETag"] = etag + from email.utils import formatdate as _fmtdate + resp.headers["Last-Modified"] = _fmtdate(timeval=_time.time(), usegmt=True) + resp.headers["Cache-Control"] = "no-cache" + return resp + + +# --- Preview Export Endpoints (CSV / JSON) --- +@router.get("/preview/{theme_id}/export.json") +async def export_preview_json( + theme_id: str, + limit: int = Query(12, ge=1, le=60), + colors: str | None = None, + commander: str | None = None, + curated_only: bool | None = Query(False, description="If true, only curated example + curated synergy entries returned"), +): + try: + payload = get_theme_preview(theme_id, limit=limit, colors=colors, commander=commander) + except KeyError: + raise HTTPException(status_code=404, detail="theme_not_found") + items = payload.get("sample", []) + if curated_only: + items = [i for i in items if any(r in {"example", "curated_synergy", "synthetic"} for r in (i.get("roles") or []))] + return JSONResponse({ + "ok": True, + "theme": payload.get("theme"), + "theme_id": payload.get("theme_id"), + "curated_only": bool(curated_only), + "generated_at": payload.get("generated_at"), + "limit": limit, + "count": len(items), + "items": items, + }) + + +@router.get("/preview/{theme_id}/export.csv") +async def export_preview_csv( + theme_id: str, + limit: int = Query(12, ge=1, le=60), + colors: str | None = None, + commander: str | None = None, + curated_only: bool | None = Query(False, description="If true, only curated example + curated synergy entries returned"), +): + import csv as _csv + import io as _io + try: + payload = get_theme_preview(theme_id, limit=limit, colors=colors, commander=commander) + except KeyError: + raise HTTPException(status_code=404, detail="theme_not_found") + rows = payload.get("sample", []) + if curated_only: + rows = [r for r in rows if any(role in {"example", "curated_synergy", "synthetic"} for role in (r.get("roles") or []))] + buf = _io.StringIO() + fieldnames = ["name", "roles", "score", "rarity", "mana_cost", "color_identity_list", "pip_colors", "reasons", "tags"] + w = _csv.DictWriter(buf, fieldnames=fieldnames) + w.writeheader() + for r in rows: + w.writerow({ + "name": r.get("name"), + "roles": ";".join(r.get("roles") or []), + "score": r.get("score"), + "rarity": r.get("rarity"), + "mana_cost": r.get("mana_cost"), + "color_identity_list": ";".join(r.get("color_identity_list") or []), + "pip_colors": ";".join(r.get("pip_colors") or []), + "reasons": ";".join(r.get("reasons") or []), + "tags": ";".join(r.get("tags") or []), + }) + csv_text = buf.getvalue() + from fastapi.responses import Response + filename = f"preview_{theme_id}.csv" + headers = { + "Content-Disposition": f"attachment; filename={filename}", + "Content-Type": "text/csv; charset=utf-8", + } + return Response(content=csv_text, media_type="text/csv", headers=headers) + + +# --- New: Client performance marks ingestion (Section E) --- +@router.post("/metrics/client") +async def ingest_client_metrics(request: Request, payload: dict[str, Any] = Body(...)): + if not _diag_enabled(): + raise HTTPException(status_code=403, detail="diagnostics_disabled") + try: + events = payload.get("events") + if not isinstance(events, list): + return JSONResponse({"ok": False, "error": "invalid_events"}, status_code=400) + for ev in events: + if not isinstance(ev, dict): + continue + name = ev.get("name") + dur = ev.get("duration_ms") + if name == "list_render" and isinstance(dur, (int, float)) and dur >= 0: + CLIENT_PERF["list_render_ms"].append(float(dur)) + if len(CLIENT_PERF["list_render_ms"]) > MAX_CLIENT_SAMPLES: + # Drop oldest half to keep memory bounded + CLIENT_PERF["list_render_ms"] = CLIENT_PERF["list_render_ms"][len(CLIENT_PERF["list_render_ms"])//2:] + elif name == "preview_load_batch": + # Aggregate average into samples list (store avg redundantly for now) + avg_ms = ev.get("avg_ms") + if isinstance(avg_ms, (int, float)) and avg_ms >= 0: + CLIENT_PERF["preview_load_ms"].append(float(avg_ms)) + if len(CLIENT_PERF["preview_load_ms"]) > MAX_CLIENT_SAMPLES: + CLIENT_PERF["preview_load_ms"] = CLIENT_PERF["preview_load_ms"][len(CLIENT_PERF["preview_load_ms"])//2:] + return JSONResponse({"ok": True, "ingested": len(events)}) + except Exception as e: # pragma: no cover + return JSONResponse({"ok": False, "error": str(e)}, status_code=500) + + +# --- New: Structured logging ingestion for cache/prefetch events (Section E) --- +@router.post("/log") +async def ingest_structured_log(request: Request, payload: dict[str, Any] = Body(...)): + if not _diag_enabled(): + raise HTTPException(status_code=403, detail="diagnostics_disabled") + try: + event = payload.get("event") + if not isinstance(event, str) or not event: + return JSONResponse({"ok": False, "error": "missing_event"}, status_code=400) + LOG_COUNTS[event] = LOG_COUNTS.get(event, 0) + 1 + if event == "preview_fetch_error": # client-side fetch failure + try: + _theme_preview_mod._PREVIEW_REQUEST_ERROR_COUNT += 1 # type: ignore[attr-defined] + except Exception: + pass + # Lightweight echo back + return JSONResponse({"ok": True, "count": LOG_COUNTS[event]}) + except Exception as e: # pragma: no cover + return JSONResponse({"ok": False, "error": str(e)}, status_code=500) diff --git a/code/web/services/orchestrator.py b/code/web/services/orchestrator.py index 24b4ab6..db99d02 100644 --- a/code/web/services/orchestrator.py +++ b/code/web/services/orchestrator.py @@ -910,6 +910,18 @@ def _ensure_setup_ready(out, force: bool = False) -> None: _run_theme_metadata_enrichment(out_func) except Exception: pass + # Bust theme-related in-memory caches so new catalog reflects immediately + try: + from .theme_catalog_loader import bust_filter_cache # type: ignore + from .theme_preview import bust_preview_cache # type: ignore + bust_filter_cache("catalog_refresh") + bust_preview_cache("catalog_refresh") + try: + out_func("[cache] Busted theme filter & preview caches after catalog refresh") + except Exception: + pass + except Exception: + pass except Exception as _e: # pragma: no cover - non-critical diagnostics only try: out_func(f"Theme catalog refresh failed: {_e}") @@ -1092,6 +1104,13 @@ def _ensure_setup_ready(out, force: bool = False) -> None: duration_s = None # Generate / refresh theme catalog (JSON + per-theme YAML) BEFORE marking done so UI sees progress _refresh_theme_catalog(out, force=True, fast_path=False) + try: + from .theme_catalog_loader import bust_filter_cache # type: ignore + from .theme_preview import bust_preview_cache # type: ignore + bust_filter_cache("tagging_complete") + bust_preview_cache("tagging_complete") + except Exception: + pass payload = {"running": False, "phase": "done", "message": "Setup complete", "color": None, "percent": 100, "finished_at": finished, "themes_exported": True} if duration_s is not None: payload["duration_seconds"] = duration_s diff --git a/code/web/services/theme_catalog_loader.py b/code/web/services/theme_catalog_loader.py new file mode 100644 index 0000000..c5a88e2 --- /dev/null +++ b/code/web/services/theme_catalog_loader.py @@ -0,0 +1,511 @@ +"""Theme catalog loader & projection utilities. + +Phase E foundation + Phase F performance optimizations. + +Responsibilities: + - Lazy load & cache merged catalog JSON + YAML overlays. + - Provide slug -> ThemeEntry and raw YAML maps. + - Provide summary & detail projections (with synergy segmentation). + - NEW (Phase F perf): precompute summary dicts & lowercase haystacks, and + add fast filtering / result caching to accelerate list & API endpoints. +""" + +from __future__ import annotations + +from pathlib import Path +import json +import re +from typing import Dict, Any, List, Optional, Tuple, Iterable + +import yaml # type: ignore +from pydantic import BaseModel + +# Import ThemeCatalog & ThemeEntry with resilient fallbacks. +# Runtime contexts: +# - Local dev (cwd == project root): modules available as top-level. +# - Docker (WORKDIR /app/code): modules also available top-level. +# - Package/zip installs (rare): may require 'code.' prefix. +try: + from type_definitions_theme_catalog import ThemeCatalog, ThemeEntry # type: ignore +except ImportError: # pragma: no cover - fallback path + try: + from code.type_definitions_theme_catalog import ThemeCatalog, ThemeEntry # type: ignore + except ImportError: # pragma: no cover - last resort (avoid beyond top-level relative import) + raise + +CATALOG_JSON = Path("config/themes/theme_list.json") +YAML_DIR = Path("config/themes/catalog") + +_CACHE: Dict[str, Any] = {} +# Filter result cache: key = (etag, q, archetype, bucket, colors_tuple) +_FILTER_CACHE: Dict[Tuple[str, Optional[str], Optional[str], Optional[str], Optional[Tuple[str, ...]]], List[str]] = {} +_FILTER_REQUESTS = 0 +_FILTER_CACHE_HITS = 0 +_FILTER_LAST_BUST_AT: float | None = None +_FILTER_PREWARMED = False # guarded single-run prewarm flag + +# --- Performance: YAML newest mtime scan caching --- +# Repeated calls to _needs_reload() previously scanned every *.yml file (~700 files) +# on each theme list/filter request, contributing noticeable latency on Windows (many stat calls). +# We cache the newest YAML mtime for a short interval (default 2s, tunable via env) to avoid +# excessive directory traversal while still detecting edits quickly during active authoring. +_YAML_SCAN_CACHE: Dict[str, Any] = { # keys: newest_mtime (float), scanned_at (float) + "newest_mtime": 0.0, + "scanned_at": 0.0, +} +try: + import os as _os + _YAML_SCAN_INTERVAL = float((_os.getenv("THEME_CATALOG_YAML_SCAN_INTERVAL_SEC") or "2.0")) +except Exception: # pragma: no cover - fallback + _YAML_SCAN_INTERVAL = 2.0 + + +class SlugThemeIndex(BaseModel): + catalog: ThemeCatalog + slug_to_entry: Dict[str, ThemeEntry] + slug_to_yaml: Dict[str, Dict[str, Any]] # raw YAML data per theme + # Performance precomputations for fast list filtering + summary_by_slug: Dict[str, Dict[str, Any]] + haystack_by_slug: Dict[str, str] + primary_color_by_slug: Dict[str, Optional[str]] + secondary_color_by_slug: Dict[str, Optional[str]] + mtime: float + yaml_mtime_max: float + etag: str + + +_GENERIC_DESCRIPTION_PREFIXES = [ + "Accumulates ", # many auto-generated variants start like this + "Builds around ", + "Leverages ", +] + + +_SLUG_RE_NON_ALNUM = re.compile(r"[^a-z0-9]+") + + +def slugify(name: str) -> str: + s = name.lower().strip() + # Preserve +1/+1 pattern meaningfully by converting '+' to 'plus' + s = s.replace("+", "plus") + s = _SLUG_RE_NON_ALNUM.sub("-", s) + s = re.sub(r"-+", "-", s).strip("-") + return s + + +def _needs_reload() -> bool: + if not CATALOG_JSON.exists(): + return bool(_CACHE) + mtime = CATALOG_JSON.stat().st_mtime + idx: SlugThemeIndex | None = _CACHE.get("index") # type: ignore + if idx is None: + return True + if mtime > idx.mtime: + return True + # If any YAML newer than catalog mtime or newest YAML newer than cached scan -> reload + if YAML_DIR.exists(): + import time as _t + now = _t.time() + # Use cached newest mtime if within interval; else rescan. + if (now - _YAML_SCAN_CACHE["scanned_at"]) < _YAML_SCAN_INTERVAL: + newest_yaml = _YAML_SCAN_CACHE["newest_mtime"] + else: + # Fast path: use os.scandir for lower overhead vs Path.glob + newest = 0.0 + try: + import os as _os + with _os.scandir(YAML_DIR) as it: # type: ignore[arg-type] + for entry in it: + if entry.is_file() and entry.name.endswith('.yml'): + try: + st = entry.stat() + if st.st_mtime > newest: + newest = st.st_mtime + except Exception: + continue + except Exception: # pragma: no cover - scandir failure fallback + newest = max((p.stat().st_mtime for p in YAML_DIR.glob('*.yml')), default=0.0) + _YAML_SCAN_CACHE["newest_mtime"] = newest + _YAML_SCAN_CACHE["scanned_at"] = now + newest_yaml = newest + if newest_yaml > idx.yaml_mtime_max: + return True + return False + + +def _load_yaml_map() -> Tuple[Dict[str, Dict[str, Any]], float]: + latest = 0.0 + out: Dict[str, Dict[str, Any]] = {} + if not YAML_DIR.exists(): + return out, latest + for p in YAML_DIR.glob("*.yml"): + try: + data = yaml.safe_load(p.read_text(encoding="utf-8")) or {} + if isinstance(data, dict): + slug = data.get("id") or slugify(data.get("display_name", p.stem)) + out[str(slug)] = data + if p.stat().st_mtime > latest: + latest = p.stat().st_mtime + except Exception: + continue + return out, latest + + +def _compute_etag(size: int, mtime: float, yaml_mtime: float) -> str: + return f"{int(size)}-{int(mtime)}-{int(yaml_mtime)}" + + +def load_index() -> SlugThemeIndex: + if not _needs_reload(): + return _CACHE["index"] # type: ignore + if not CATALOG_JSON.exists(): + raise FileNotFoundError("theme_list.json missing") + raw = json.loads(CATALOG_JSON.read_text(encoding="utf-8") or "{}") + catalog = ThemeCatalog.model_validate(raw) + slug_to_entry: Dict[str, ThemeEntry] = {} + summary_by_slug: Dict[str, Dict[str, Any]] = {} + haystack_by_slug: Dict[str, str] = {} + primary_color_by_slug: Dict[str, Optional[str]] = {} + secondary_color_by_slug: Dict[str, Optional[str]] = {} + for t in catalog.themes: + slug = slugify(t.theme) + slug_to_entry[slug] = t + summary = project_summary(t) + summary_by_slug[slug] = summary + haystack_by_slug[slug] = "|".join([t.theme] + t.synergies).lower() + primary_color_by_slug[slug] = t.primary_color + secondary_color_by_slug[slug] = t.secondary_color + yaml_map, yaml_mtime_max = _load_yaml_map() + idx = SlugThemeIndex( + catalog=catalog, + slug_to_entry=slug_to_entry, + slug_to_yaml=yaml_map, + summary_by_slug=summary_by_slug, + haystack_by_slug=haystack_by_slug, + primary_color_by_slug=primary_color_by_slug, + secondary_color_by_slug=secondary_color_by_slug, + mtime=CATALOG_JSON.stat().st_mtime, + yaml_mtime_max=yaml_mtime_max, + etag=_compute_etag(CATALOG_JSON.stat().st_size, CATALOG_JSON.stat().st_mtime, yaml_mtime_max), + ) + _CACHE["index"] = idx + _FILTER_CACHE.clear() # Invalidate fast filter cache on any reload + return idx + + +def validate_catalog_integrity(rebuild: bool = True) -> Dict[str, Any]: + """Validate that theme_list.json matches current YAML set via catalog_hash. + + Returns dict with status fields. If drift detected and rebuild=True and + THEME_CATALOG_MODE merge script is available, attempts an automatic rebuild. + Environment flags: + THEME_CATALOG_VALIDATE=1 enables invocation from app startup (else caller controls). + """ + out: Dict[str, Any] = {"ok": True, "rebuild_attempted": False, "drift": False} + if not CATALOG_JSON.exists(): + out.update({"ok": False, "error": "theme_list_missing"}) + return out + try: + raw = json.loads(CATALOG_JSON.read_text(encoding="utf-8") or "{}") + meta = raw.get("metadata_info") or {} + recorded_hash = meta.get("catalog_hash") + except Exception as e: # pragma: no cover + out.update({"ok": False, "error": f"read_error:{e}"}) + return out + # Recompute hash using same heuristic as build script + from scripts.build_theme_catalog import load_catalog_yaml # type: ignore + try: + yaml_catalog = load_catalog_yaml(verbose=False) # keyed by display_name + except Exception: + yaml_catalog = {} + import hashlib as _hashlib + h = _hashlib.sha256() + for name in sorted(yaml_catalog.keys()): + yobj = yaml_catalog[name] + try: + payload = ( + getattr(yobj, 'id', ''), + getattr(yobj, 'display_name', ''), + tuple(getattr(yobj, 'curated_synergies', []) or []), + tuple(getattr(yobj, 'enforced_synergies', []) or []), + tuple(getattr(yobj, 'example_commanders', []) or []), + tuple(getattr(yobj, 'example_cards', []) or []), + getattr(yobj, 'deck_archetype', None), + getattr(yobj, 'popularity_hint', None), + getattr(yobj, 'description', None), + getattr(yobj, 'editorial_quality', None), + ) + h.update(repr(payload).encode('utf-8')) + except Exception: + continue + # Synergy cap influences ordering; include if present in meta + if meta.get('synergy_cap') is not None: + h.update(str(meta.get('synergy_cap')).encode('utf-8')) + current_hash = h.hexdigest() + if recorded_hash and recorded_hash != current_hash: + out['drift'] = True + out['recorded_hash'] = recorded_hash + out['current_hash'] = current_hash + if rebuild: + import subprocess + import os as _os + import sys as _sys + out['rebuild_attempted'] = True + try: + env = {**_os.environ, 'THEME_CATALOG_MODE': 'merge'} + subprocess.run([ + _sys.executable, 'code/scripts/build_theme_catalog.py' + ], check=True, env=env, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out['rebuild_ok'] = True + except Exception as e: + out['rebuild_ok'] = False + out['rebuild_error'] = str(e) + else: + out['drift'] = False + out['recorded_hash'] = recorded_hash + out['current_hash'] = current_hash + return out + + +def has_fallback_description(entry: ThemeEntry) -> bool: + if not entry.description: + return True + desc = entry.description.strip() + # Simple heuristic: generic if starts with any generic prefix and length < 160 + if len(desc) < 160 and any(desc.startswith(p) for p in _GENERIC_DESCRIPTION_PREFIXES): + return True + return False + + +def project_summary(entry: ThemeEntry) -> Dict[str, Any]: + # Short description (snippet) for list hover / condensed display + desc = entry.description or "" + short_desc = desc.strip() + if len(short_desc) > 110: + short_desc = short_desc[:107].rstrip() + "…" + return { + "id": slugify(entry.theme), + "theme": entry.theme, + "primary_color": entry.primary_color, + "secondary_color": entry.secondary_color, + "popularity_bucket": entry.popularity_bucket, + "deck_archetype": entry.deck_archetype, + "editorial_quality": entry.editorial_quality, + "description": entry.description, + "short_description": short_desc, + "synergies": entry.synergies, + "synergy_count": len(entry.synergies), + "has_fallback_description": has_fallback_description(entry), + } + + +def _split_synergies(slug: str, entry: ThemeEntry, yaml_map: Dict[str, Dict[str, Any]]) -> Dict[str, List[str]]: + y = yaml_map.get(slug) + if not y: + return {"curated": [], "enforced": [], "inferred": []} + return { + "curated": [s for s in y.get("curated_synergies", []) if isinstance(s, str)], + "enforced": [s for s in y.get("enforced_synergies", []) if isinstance(s, str)], + "inferred": [s for s in y.get("inferred_synergies", []) if isinstance(s, str)], + } + + +def project_detail(slug: str, entry: ThemeEntry, yaml_map: Dict[str, Dict[str, Any]], uncapped: bool = False) -> Dict[str, Any]: + seg = _split_synergies(slug, entry, yaml_map) + uncapped_synergies: Optional[List[str]] = None + if uncapped: + # Full ordered list reconstructed: curated + enforced (preserve duplication guard) + inferred + seen = set() + full: List[str] = [] + for block in (seg["curated"], seg["enforced"], seg["inferred"]): + for s in block: + if s not in seen: + full.append(s) + seen.add(s) + uncapped_synergies = full + d = project_summary(entry) + d.update({ + "curated_synergies": seg["curated"], + "enforced_synergies": seg["enforced"], + "inferred_synergies": seg["inferred"], + }) + if uncapped_synergies is not None: + d["uncapped_synergies"] = uncapped_synergies + # Add editorial lists with YAML fallback (REGRESSION FIX 2025-09-20): + # The current theme_list.json emitted by the build pipeline omits the + # example_* and synergy_* editorial arrays. Earlier logic populated these + # from the JSON so previews showed curated examples. After the omission, + # ThemeEntry fields default to empty lists and curated examples vanished + # from the preview (user-reported). We now fallback to the per-theme YAML + # source when the ThemeEntry lists are empty to restore expected behavior + # without requiring an immediate catalog rebuild. + y_entry: Dict[str, Any] = yaml_map.get(slug, {}) or {} + def _norm_list(val: Any) -> List[str]: + if isinstance(val, list): + return [str(x) for x in val if isinstance(x, str)] + return [] + example_commanders = entry.example_commanders or _norm_list(y_entry.get("example_commanders")) + example_cards = entry.example_cards or _norm_list(y_entry.get("example_cards")) + synergy_example_cards = getattr(entry, 'synergy_example_cards', None) or _norm_list(y_entry.get("synergy_example_cards")) + synergy_commanders = entry.synergy_commanders or _norm_list(y_entry.get("synergy_commanders")) + # YAML fallback for description & selected editorial fields (REGRESSION FIX 2025-09-20): + # theme_list.json currently omits description/editorial_quality/popularity_bucket for some themes after P2 build changes. + # Use YAML values when the ThemeEntry field is empty/None. Preserve existing non-empty entry values. + description = entry.description or y_entry.get("description") or None + editorial_quality = entry.editorial_quality or y_entry.get("editorial_quality") or None + popularity_bucket = entry.popularity_bucket or y_entry.get("popularity_bucket") or None + d.update({ + "example_commanders": example_commanders, + "example_cards": example_cards, + "synergy_example_cards": synergy_example_cards, + "synergy_commanders": synergy_commanders, + "description": description, + "editorial_quality": editorial_quality, + "popularity_bucket": popularity_bucket, + }) + return d + + +def filter_entries(entries: List[ThemeEntry], *, q: Optional[str] = None, archetype: Optional[str] = None, bucket: Optional[str] = None, colors: Optional[List[str]] = None) -> List[ThemeEntry]: + q_lower = q.lower() if q else None + colors_set = {c.strip().upper() for c in colors} if colors else None + out: List[ThemeEntry] = [] + for e in entries: + if archetype and e.deck_archetype != archetype: + continue + if bucket and e.popularity_bucket != bucket: + continue + if colors_set: + pc = (e.primary_color or "").upper()[:1] + sc = (e.secondary_color or "").upper()[:1] + if not (pc in colors_set or sc in colors_set): + continue + if q_lower: + hay = "|".join([e.theme] + e.synergies).lower() + if q_lower not in hay: + continue + out.append(e) + return out + + +# -------------------- Optimized filtering (fast path) -------------------- +def _color_match(slug: str, colors_set: Optional[set[str]], idx: SlugThemeIndex) -> bool: + if not colors_set: + return True + pc = (idx.primary_color_by_slug.get(slug) or "").upper()[:1] + sc = (idx.secondary_color_by_slug.get(slug) or "").upper()[:1] + return (pc in colors_set) or (sc in colors_set) + + +def filter_slugs_fast( + idx: SlugThemeIndex, + *, + q: Optional[str] = None, + archetype: Optional[str] = None, + bucket: Optional[str] = None, + colors: Optional[List[str]] = None, +) -> List[str]: + """Return filtered slugs using precomputed haystacks & memoized cache. + + Cache key: (etag, q_lower, archetype, bucket, colors_tuple) where colors_tuple + is sorted & uppercased. Cache invalidates automatically when index reloads. + """ + colors_key: Optional[Tuple[str, ...]] = ( + tuple(sorted({c.strip().upper() for c in colors})) if colors else None + ) + cache_key = (idx.etag, q.lower() if q else None, archetype, bucket, colors_key) + global _FILTER_REQUESTS, _FILTER_CACHE_HITS + _FILTER_REQUESTS += 1 + cached = _FILTER_CACHE.get(cache_key) + if cached is not None: + _FILTER_CACHE_HITS += 1 + return cached + q_lower = q.lower() if q else None + colors_set = set(colors_key) if colors_key else None + out: List[str] = [] + for slug, entry in idx.slug_to_entry.items(): + if archetype and entry.deck_archetype != archetype: + continue + if bucket and entry.popularity_bucket != bucket: + continue + if colors_set and not _color_match(slug, colors_set, idx): + continue + if q_lower and q_lower not in idx.haystack_by_slug.get(slug, ""): + continue + out.append(slug) + _FILTER_CACHE[cache_key] = out + return out + + +def summaries_for_slugs(idx: SlugThemeIndex, slugs: Iterable[str]) -> List[Dict[str, Any]]: + out: List[Dict[str, Any]] = [] + for s in slugs: + summ = idx.summary_by_slug.get(s) + if summ: + out.append(summ.copy()) # shallow copy so route can pop diag-only fields + return out + + +def catalog_metrics() -> Dict[str, Any]: + """Return lightweight catalog filtering/cache metrics (diagnostics only).""" + return { + "filter_requests": _FILTER_REQUESTS, + "filter_cache_hits": _FILTER_CACHE_HITS, + "filter_cache_entries": len(_FILTER_CACHE), + "filter_last_bust_at": _FILTER_LAST_BUST_AT, + "filter_prewarmed": _FILTER_PREWARMED, + } + + +def bust_filter_cache(reason: str | None = None) -> None: + """Clear fast filter cache (call after catalog rebuild or yaml change).""" + global _FILTER_CACHE, _FILTER_LAST_BUST_AT + try: + _FILTER_CACHE.clear() + import time as _t + _FILTER_LAST_BUST_AT = _t.time() + except Exception: + pass + + +def prewarm_common_filters(max_archetypes: int = 12) -> None: + """Pre-execute a handful of common filter queries to prime the fast cache. + + This is intentionally conservative (only a small cartesian of bucket/archetype) + and gated by WEB_THEME_FILTER_PREWARM=1 environment variable as well as a + single-run guard. Safe to call multiple times (no-op after first success). + """ + global _FILTER_PREWARMED + if _FILTER_PREWARMED: + return + import os + if (os.getenv("WEB_THEME_FILTER_PREWARM") or "").strip().lower() not in {"1", "true", "yes", "on"}: + return + try: + idx = load_index() + except Exception: + return + # Gather archetypes & buckets (limited) + archetypes: List[str] = [] + try: + archetypes = [a for a in {t.deck_archetype for t in idx.catalog.themes if t.deck_archetype}][:max_archetypes] # type: ignore[arg-type] + except Exception: + archetypes = [] + buckets = ["Very Common", "Common", "Uncommon", "Niche", "Rare"] + # Execute fast filter queries (ignore output, we only want cache side effects) + try: + # Global (no filters) & each bucket + filter_slugs_fast(idx) + for b in buckets: + filter_slugs_fast(idx, bucket=b) + # Archetype only combos (first N) + for a in archetypes: + filter_slugs_fast(idx, archetype=a) + # Archetype + bucket cross (cap combinations) + for a in archetypes[:5]: + for b in buckets[:3]: + filter_slugs_fast(idx, archetype=a, bucket=b) + _FILTER_PREWARMED = True + except Exception: + # Swallow any unexpected error; prewarm is opportunistic + return diff --git a/code/web/services/theme_preview.py b/code/web/services/theme_preview.py new file mode 100644 index 0000000..07e4117 --- /dev/null +++ b/code/web/services/theme_preview.py @@ -0,0 +1,862 @@ +"""Theme preview sampling (Phase F – enhanced sampling & diversity heuristics). + +Summary of implemented capabilities and pending roadmap items documented inline. +""" +from __future__ import annotations + +from pathlib import Path +import csv +import time +import random +from collections import OrderedDict, deque +from typing import List, Dict, Any, Optional, Tuple, Iterable +import os +import json +import threading + +try: + import yaml # type: ignore +except Exception: # pragma: no cover - PyYAML already in requirements; defensive + yaml = None # type: ignore + +from .theme_catalog_loader import load_index, slugify, project_detail + +# NOTE: Remainder of module keeps large logic blocks; imports consolidated above per PEP8. + +# Commander bias configuration constants +COMMANDER_COLOR_FILTER_STRICT = True # If commander found, restrict sample to its color identity (except colorless) +COMMANDER_OVERLAP_BONUS = 1.8 # additive score bonus for sharing at least one tag with commander +COMMANDER_THEME_MATCH_BONUS = 0.9 # extra if also matches theme directly + +## (duplicate imports removed) + +# Adaptive TTL configuration (can be toggled via THEME_PREVIEW_ADAPTIVE=1) +# Starts at a baseline and is adjusted up/down based on cache hit ratio bands. +TTL_SECONDS = 600 # current effective TTL (mutable) +_TTL_BASE = 600 +_TTL_MIN = 300 +_TTL_MAX = 900 +_ADAPT_SAMPLE_WINDOW = 120 # number of recent requests to evaluate +_ADAPTATION_ENABLED = (os.getenv("THEME_PREVIEW_ADAPTIVE") or "").lower() in {"1","true","yes","on"} +_RECENT_HITS: deque[bool] = deque(maxlen=_ADAPT_SAMPLE_WINDOW) +_LAST_ADAPT_AT: float | None = None +_ADAPT_INTERVAL_S = 30 # do not adapt more often than every 30s + +_BG_REFRESH_THREAD_STARTED = False +_BG_REFRESH_INTERVAL_S = int(os.getenv("THEME_PREVIEW_BG_REFRESH_INTERVAL") or 120) +_BG_REFRESH_ENABLED = (os.getenv("THEME_PREVIEW_BG_REFRESH") or "").lower() in {"1","true","yes","on"} + +# Adaptive background refresh heuristics (P2): we will adjust per-loop sleep based on +# recent error rate & p95 build latency. Bounds: [30s, 5 * base interval]. +_BG_REFRESH_MIN = 30 +_BG_REFRESH_MAX = max(300, _BG_REFRESH_INTERVAL_S * 5) + +# Per-theme error histogram (P2 observability) +_PREVIEW_PER_THEME_ERRORS: Dict[str, int] = {} + +# Optional curated synergy pair matrix externalization (P2 DATA). +_CURATED_SYNERGY_MATRIX_PATH = Path("config/themes/curated_synergy_matrix.yml") +_CURATED_SYNERGY_MATRIX: Dict[str, Dict[str, Any]] | None = None + +def _load_curated_synergy_matrix() -> None: + global _CURATED_SYNERGY_MATRIX + if _CURATED_SYNERGY_MATRIX is not None: + return + if not _CURATED_SYNERGY_MATRIX_PATH.exists() or yaml is None: + _CURATED_SYNERGY_MATRIX = None + return + try: + with _CURATED_SYNERGY_MATRIX_PATH.open('r', encoding='utf-8') as fh: + data = yaml.safe_load(fh) or {} + if isinstance(data, dict): + # Expect top-level key 'pairs' but allow raw mapping + pairs = data.get('pairs', data) + if isinstance(pairs, dict): + _CURATED_SYNERGY_MATRIX = pairs # type: ignore + else: + _CURATED_SYNERGY_MATRIX = None + else: + _CURATED_SYNERGY_MATRIX = None + except Exception: + _CURATED_SYNERGY_MATRIX = None + +_load_curated_synergy_matrix() + +def _maybe_adapt_ttl(now: float) -> None: + """Adjust global TTL_SECONDS based on recent hit ratio bands. + + Strategy: + - If hit ratio < 0.25: decrease TTL slightly (favor freshness) ( -60s ) + - If hit ratio between 0.25–0.55: gently nudge toward base ( +/- 30s toward _TTL_BASE ) + - If hit ratio between 0.55–0.75: slight increase (+60s) (stability payoff) + - If hit ratio > 0.75: stronger increase (+90s) to leverage locality + Never exceeds [_TTL_MIN, _TTL_MAX]. Only runs if enough samples. + """ + global TTL_SECONDS, _LAST_ADAPT_AT + if not _ADAPTATION_ENABLED: + return + if len(_RECENT_HITS) < max(30, int(_ADAPT_SAMPLE_WINDOW * 0.5)): + return # insufficient data + if _LAST_ADAPT_AT and (now - _LAST_ADAPT_AT) < _ADAPT_INTERVAL_S: + return + hit_ratio = sum(1 for h in _RECENT_HITS if h) / len(_RECENT_HITS) + new_ttl = TTL_SECONDS + if hit_ratio < 0.25: + new_ttl = max(_TTL_MIN, TTL_SECONDS - 60) + elif hit_ratio < 0.55: + # move 30s toward base + if TTL_SECONDS > _TTL_BASE: + new_ttl = max(_TTL_BASE, TTL_SECONDS - 30) + elif TTL_SECONDS < _TTL_BASE: + new_ttl = min(_TTL_BASE, TTL_SECONDS + 30) + elif hit_ratio < 0.75: + new_ttl = min(_TTL_MAX, TTL_SECONDS + 60) + else: + new_ttl = min(_TTL_MAX, TTL_SECONDS + 90) + if new_ttl != TTL_SECONDS: + TTL_SECONDS = new_ttl + try: + print(json.dumps({"event":"theme_preview_ttl_adapt","hit_ratio":round(hit_ratio,3),"ttl":TTL_SECONDS})) # noqa: T201 + except Exception: + pass + _LAST_ADAPT_AT = now + +def _compute_bg_interval() -> int: + """Derive adaptive sleep interval using recent metrics (P2 PERF).""" + try: + m = preview_metrics() + p95 = float(m.get('preview_p95_build_ms') or 0.0) + err_rate = float(m.get('preview_error_rate_pct') or 0.0) + base = _BG_REFRESH_INTERVAL_S + # Heuristic: high latency -> lengthen interval slightly (avoid stampede), high error rate -> shorten (refresh quicker) + interval = base + if p95 > 350: # slow builds + interval = int(base * 1.75) + elif p95 > 250: + interval = int(base * 1.4) + elif p95 < 120: + interval = int(base * 0.85) + # Error rate influence + if err_rate > 5.0: + interval = max(_BG_REFRESH_MIN, int(interval * 0.6)) + elif err_rate < 1.0 and p95 < 180: + # Very healthy -> stretch slightly (less churn) + interval = min(_BG_REFRESH_MAX, int(interval * 1.15)) + return max(_BG_REFRESH_MIN, min(_BG_REFRESH_MAX, interval)) + except Exception: + return max(_BG_REFRESH_MIN, _BG_REFRESH_INTERVAL_S) + +def _bg_refresh_loop(): # pragma: no cover (background behavior) + import time as _t + while True: + if not _BG_REFRESH_ENABLED: + return + try: + ranked = sorted(_PREVIEW_PER_THEME_REQUESTS.items(), key=lambda kv: kv[1], reverse=True) + top = [slug for slug,_cnt in ranked[:10]] + for slug in top: + try: + get_theme_preview(slug, limit=12, colors=None, commander=None, uncapped=True) + except Exception: + continue + except Exception: + pass + _t.sleep(_compute_bg_interval()) + +def _ensure_bg_refresh_thread(): # pragma: no cover + global _BG_REFRESH_THREAD_STARTED + if _BG_REFRESH_THREAD_STARTED or not _BG_REFRESH_ENABLED: + return + try: + th = threading.Thread(target=_bg_refresh_loop, name="theme_preview_bg_refresh", daemon=True) + th.start() + _BG_REFRESH_THREAD_STARTED = True + except Exception: + pass + +_PREVIEW_CACHE: "OrderedDict[Tuple[str, int, str | None, str | None, str], Dict[str, Any]]" = OrderedDict() +_CARD_INDEX: Dict[str, List[Dict[str, Any]]] = {} +_CARD_INDEX_MTIME: float | None = None +_PREVIEW_REQUESTS = 0 +_PREVIEW_CACHE_HITS = 0 +_PREVIEW_ERROR_COUNT = 0 # rolling count of preview build failures (non-cache operational) +_PREVIEW_REQUEST_ERROR_COUNT = 0 # client side reported fetch errors +_PREVIEW_BUILD_MS_TOTAL = 0.0 +_PREVIEW_BUILD_COUNT = 0 +_PREVIEW_LAST_BUST_AT: float | None = None +# Per-theme stats and global distribution tracking +_PREVIEW_PER_THEME: Dict[str, Dict[str, Any]] = {} +_PREVIEW_PER_THEME_REQUESTS: Dict[str, int] = {} +_BUILD_DURATIONS = deque(maxlen=500) # rolling window for percentile calc +_ROLE_GLOBAL_COUNTS: Dict[str, int] = {"payoff": 0, "enabler": 0, "support": 0, "wildcard": 0} +_CURATED_GLOBAL = 0 # example + curated_synergy (non-synthetic curated content) +_SAMPLED_GLOBAL = 0 + +# Rarity normalization mapping (baseline – extend as new variants appear) +_RARITY_NORM = { + "mythic rare": "mythic", + "mythic": "mythic", + "m": "mythic", + "rare": "rare", + "r": "rare", + "uncommon": "uncommon", + "u": "uncommon", + "common": "common", + "c": "common", +} + +def _normalize_rarity(raw: str) -> str: + r = (raw or "").strip().lower() + return _RARITY_NORM.get(r, r) + +def _preview_cache_max() -> int: + try: + val_raw = (__import__('os').getenv('THEME_PREVIEW_CACHE_MAX') or '400') + val = int(val_raw) + if val <= 0: + raise ValueError("cache max must be >0") + return val + except Exception: + # Emit single-line warning (stdout) – diagnostics style (won't break) + try: + print(json.dumps({"event":"theme_preview_cache_config_warning","message":"Invalid THEME_PREVIEW_CACHE_MAX; using default 400"})) # noqa: T201 + except Exception: + pass + return 400 + +def _enforce_cache_limit(): + try: + limit = max(50, _preview_cache_max()) + while len(_PREVIEW_CACHE) > limit: + _PREVIEW_CACHE.popitem(last=False) # FIFO eviction + except Exception: + pass + +CARD_FILES_GLOB = [ + Path("csv_files/blue_cards.csv"), + Path("csv_files/white_cards.csv"), + Path("csv_files/black_cards.csv"), + Path("csv_files/red_cards.csv"), + Path("csv_files/green_cards.csv"), + Path("csv_files/colorless_cards.csv"), + Path("csv_files/cards.csv"), # fallback large file last +] + +THEME_TAGS_COL = "themeTags" +NAME_COL = "name" +COLOR_IDENTITY_COL = "colorIdentity" +MANA_COST_COL = "manaCost" +RARITY_COL = "rarity" # Some CSVs may not include; optional + + +def _maybe_build_card_index(): + global _CARD_INDEX, _CARD_INDEX_MTIME + latest = 0.0 + mtimes: List[float] = [] + for p in CARD_FILES_GLOB: + if p.exists(): + mt = p.stat().st_mtime + mtimes.append(mt) + if mt > latest: + latest = mt + if _CARD_INDEX and _CARD_INDEX_MTIME and latest <= _CARD_INDEX_MTIME: + return + # Rebuild index + _CARD_INDEX = {} + for p in CARD_FILES_GLOB: + if not p.exists(): + continue + try: + with p.open("r", encoding="utf-8", newline="") as fh: + reader = csv.DictReader(fh) + if not reader.fieldnames or THEME_TAGS_COL not in reader.fieldnames: + continue + for row in reader: + name = row.get(NAME_COL) or row.get("faceName") or "" + tags_raw = row.get(THEME_TAGS_COL) or "" + # tags stored like "['Blink', 'Enter the Battlefield']"; naive parse + tags = [t.strip(" '[]") for t in tags_raw.split(',') if t.strip()] if tags_raw else [] + if not tags: + continue + color_id = (row.get(COLOR_IDENTITY_COL) or "").strip() + mana_cost = (row.get(MANA_COST_COL) or "").strip() + rarity = _normalize_rarity(row.get(RARITY_COL) or "") + for tg in tags: + if not tg: + continue + _CARD_INDEX.setdefault(tg, []).append({ + "name": name, + "color_identity": color_id, + "tags": tags, + "mana_cost": mana_cost, + "rarity": rarity, + # Pre-parsed helpers (color identity list & pip colors from mana cost) + "color_identity_list": list(color_id) if color_id else [], + "pip_colors": [c for c in mana_cost if c in {"W","U","B","R","G"}], + }) + except Exception: + continue + _CARD_INDEX_MTIME = latest + + +def _classify_role(theme: str, synergies: List[str], tags: List[str]) -> str: + tag_set = set(tags) + synergy_overlap = tag_set.intersection(synergies) + if theme in tag_set: + return "payoff" + if len(synergy_overlap) >= 2: + return "enabler" + if len(synergy_overlap) == 1: + return "support" + return "wildcard" + + +def _seed_from(theme: str, commander: Optional[str]) -> int: + base = f"{theme.lower()}|{(commander or '').lower()}".encode("utf-8") + # simple deterministic hash (stable across runs within Python version – keep primitive) + h = 0 + for b in base: + h = (h * 131 + b) & 0xFFFFFFFF + return h or 1 + + +def _deterministic_shuffle(items: List[Any], seed: int) -> None: + rnd = random.Random(seed) + rnd.shuffle(items) + + +def _score_card(theme: str, synergies: List[str], role: str, tags: List[str]) -> float: + tag_set = set(tags) + synergy_overlap = len(tag_set.intersection(synergies)) + score = 0.0 + if theme in tag_set: + score += 3.0 + score += synergy_overlap * 1.2 + # Role weight baseline + role_weights = { + "payoff": 2.5, + "enabler": 2.0, + "support": 1.5, + "wildcard": 0.9, + } + score += role_weights.get(role, 0.5) + # Base rarity weighting (future: dynamic diminishing duplicate penalty) + # Access rarity via closure later by augmenting item after score (handled outside) + return score + +def _commander_overlap_scale(commander_tags: set[str], card_tags: List[str], synergy_set: set[str]) -> float: + """Refined overlap scaling: only synergy tag intersections count toward diminishing curve. + + Uses geometric diminishing returns: bonus = B * (1 - 0.5 ** n) where n is synergy overlap count. + Guarantees first overlap grants 50% of base, second 75%, third 87.5%, asymptotically approaching B. + """ + if not commander_tags or not synergy_set: + return 0.0 + overlap_synergy = len(commander_tags.intersection(synergy_set).intersection(card_tags)) + if overlap_synergy <= 0: + return 0.0 + return COMMANDER_OVERLAP_BONUS * (1 - (0.5 ** overlap_synergy)) + + +def _lookup_commander(commander: Optional[str]) -> Optional[Dict[str, Any]]: + if not commander: + return None + _maybe_build_card_index() + # Commander can appear under many tags; brute scan limited to first match + needle = commander.lower().strip() + for tag_cards in _CARD_INDEX.values(): + for c in tag_cards: + if c.get("name", "").lower() == needle: + return c + return None + + +def _sample_real_cards_for_theme(theme: str, limit: int, colors_filter: Optional[str], *, synergies: List[str], commander: Optional[str]) -> List[Dict[str, Any]]: + _maybe_build_card_index() + pool = _CARD_INDEX.get(theme) or [] + if not pool: + return [] + commander_card = _lookup_commander(commander) + commander_colors: set[str] = set(commander_card.get("color_identity", "")) if commander_card else set() + commander_tags: set[str] = set(commander_card.get("tags", [])) if commander_card else set() + if colors_filter: + allowed = {c.strip().upper() for c in colors_filter.split(',') if c.strip()} + if allowed: + pool = [c for c in pool if set(c.get("color_identity", "")).issubset(allowed) or not c.get("color_identity")] + # Apply commander color identity restriction if configured + if commander_card and COMMANDER_COLOR_FILTER_STRICT and commander_colors: + # Allow single off-color splash for 4-5 color commanders (leniency policy) with later mild penalty + allow_splash = len(commander_colors) >= 4 + new_pool = [] + for c in pool: + ci = set(c.get("color_identity", "")) + if not ci or ci.issubset(commander_colors): + new_pool.append(c) + continue + if allow_splash: + off = ci - commander_colors + if len(off) == 1: # single off-color splash + # mark for later penalty (avoid mutating shared index structure deeply; tag ephemeral flag) + c["_splash_off_color"] = True # type: ignore + new_pool.append(c) + continue + pool = new_pool + # Build role buckets + seen_names: set[str] = set() + payoff: List[Dict[str, Any]] = [] + enabler: List[Dict[str, Any]] = [] + support: List[Dict[str, Any]] = [] + wildcard: List[Dict[str, Any]] = [] + rarity_counts: Dict[str, int] = {} + synergy_set = set(synergies) + # Rarity calibration (P2 SAMPLING): allow tuning via env; default adjusted after observation. + rarity_weight_base = { + "mythic": float(os.getenv("RARITY_W_MYTHIC", "1.2")), + "rare": float(os.getenv("RARITY_W_RARE", "0.9")), + "uncommon": float(os.getenv("RARITY_W_UNCOMMON", "0.65")), + "common": float(os.getenv("RARITY_W_COMMON", "0.4")), + } + for raw in pool: + nm = raw.get("name") + if not nm or nm in seen_names: + continue + seen_names.add(nm) + tags = raw.get("tags", []) + role = _classify_role(theme, synergies, tags) + score = _score_card(theme, synergies, role, tags) + reasons = [f"role:{role}", f"synergy_overlap:{len(set(tags).intersection(synergies))}"] + if commander_card: + if theme in tags: + score += COMMANDER_THEME_MATCH_BONUS + reasons.append("commander_theme_match") + scaled = _commander_overlap_scale(commander_tags, tags, synergy_set) + if scaled: + score += scaled + reasons.append(f"commander_synergy_overlap:{len(commander_tags.intersection(synergy_set).intersection(tags))}:{round(scaled,2)}") + reasons.append("commander_bias") + rarity = raw.get("rarity") or "" + if rarity: + base_rarity_weight = rarity_weight_base.get(rarity, 0.25) + count_so_far = rarity_counts.get(rarity, 0) + # Diminishing influence: divide by (1 + 0.4 * duplicates_already) + score += base_rarity_weight / (1 + 0.4 * count_so_far) + rarity_counts[rarity] = count_so_far + 1 + reasons.append(f"rarity_weight_calibrated:{rarity}:{round(base_rarity_weight/(1+0.4*count_so_far),2)}") + # Splash leniency penalty (applied after other scoring) + if raw.get("_splash_off_color"): + score -= 0.3 + reasons.append("splash_off_color_penalty:-0.3") + item = { + "name": nm, + "colors": list(raw.get("color_identity", "")), + "roles": [role], + "tags": tags, + "score": score, + "reasons": reasons, + "mana_cost": raw.get("mana_cost"), + "rarity": rarity, + # Newly exposed server authoritative parsed helpers + "color_identity_list": raw.get("color_identity_list", []), + "pip_colors": raw.get("pip_colors", []), + } + if role == "payoff": + payoff.append(item) + elif role == "enabler": + enabler.append(item) + elif role == "support": + support.append(item) + else: + wildcard.append(item) + # Deterministic shuffle inside each bucket to avoid bias from CSV ordering + seed = _seed_from(theme, commander) + for bucket in (payoff, enabler, support, wildcard): + _deterministic_shuffle(bucket, seed) + # stable secondary ordering: higher score first, then name + bucket.sort(key=lambda x: (-x["score"], x["name"])) + + # Diversity targets (after curated examples are pinned externally) + target_payoff = max(1, int(round(limit * 0.4))) + target_enabler_support = max(1, int(round(limit * 0.4))) + # support grouped with enabler for quota distribution + target_wild = max(0, limit - target_payoff - target_enabler_support) + + def take(n: int, source: List[Dict[str, Any]]) -> Iterable[Dict[str, Any]]: + for i in range(min(n, len(source))): + yield source[i] + + chosen: List[Dict[str, Any]] = [] + # Collect payoff + chosen.extend(take(target_payoff, payoff)) + # Collect enabler + support mix + remaining_for_enab = target_enabler_support + es_combined = enabler + support + chosen.extend(take(remaining_for_enab, es_combined)) + # Collect wildcards + chosen.extend(take(target_wild, wildcard)) + + # If still short fill from remaining (payoff first, then enab, support, wildcard) + if len(chosen) < limit: + def fill_from(src: List[Dict[str, Any]]): + nonlocal chosen + for it in src: + if len(chosen) >= limit: + break + if it not in chosen: + chosen.append(it) + for bucket in (payoff, enabler, support, wildcard): + fill_from(bucket) + + # Role saturation penalty (post-selection adjustment): discourage dominance overflow beyond soft thresholds + role_soft_caps = { + "payoff": int(round(limit * 0.5)), + "enabler": int(round(limit * 0.35)), + "support": int(round(limit * 0.35)), + "wildcard": int(round(limit * 0.25)), + } + role_seen: Dict[str, int] = {k: 0 for k in role_soft_caps} + for it in chosen: + r = (it.get("roles") or [None])[0] + if not r or r not in role_soft_caps: + continue + role_seen[r] += 1 + if role_seen[r] > max(1, role_soft_caps[r]): + it["score"] = it.get("score", 0) - 0.4 + (it.setdefault("reasons", [])).append("role_saturation_penalty:-0.4") + # Truncate and re-rank final sequence deterministically by score then name (already ordered by selection except fill) + if len(chosen) > limit: + chosen = chosen[:limit] + # Normalize score scale (optional future; keep raw for now) + return chosen +# key: (slug, limit, colors, commander, etag) + + +def _now() -> float: # small indirection for future test monkeypatch + return time.time() + + +def _build_stub_items(detail: Dict[str, Any], limit: int, colors_filter: Optional[str], *, commander: Optional[str]) -> List[Dict[str, Any]]: + items: List[Dict[str, Any]] = [] + # Start with curated example cards if present, else generic example_cards + curated_cards = detail.get("example_cards") or [] + for idx, name in enumerate(curated_cards): + if len(items) >= limit: + break + items.append({ + "name": name, + "colors": [], # unknown without deeper card DB link + "roles": ["example"], + "tags": [], + "score": float(limit - idx), # simple descending score + "reasons": ["curated_example"], + }) + # Curated synergy example cards (if any) follow standard examples but before sampled + synergy_curated = detail.get("synergy_example_cards") or [] + for name in synergy_curated: + if len(items) >= limit: + break + # Skip duplicates with example_cards + if any(it["name"] == name for it in items): + continue + items.append({ + "name": name, + "colors": [], + "roles": ["curated_synergy"], + "tags": [], + "score": max((it["score"] for it in items), default=1.0) - 0.1, # just below top examples + "reasons": ["curated_synergy_example"], + }) + # Remaining slots after curated examples + remaining = max(0, limit - len(items)) + if remaining: + theme_name = detail.get("theme") + if isinstance(theme_name, str): + all_synergies = [] + # Use uncapped synergies if available else merged list + if detail.get("uncapped_synergies"): + all_synergies = detail.get("uncapped_synergies") or [] + else: + # Combine curated/enforced/inferred + seen = set() + for blk in (detail.get("curated_synergies") or [], detail.get("enforced_synergies") or [], detail.get("inferred_synergies") or []): + for s in blk: + if s not in seen: + all_synergies.append(s) + seen.add(s) + real_cards = _sample_real_cards_for_theme(theme_name, remaining, colors_filter, synergies=all_synergies, commander=commander) + for rc in real_cards: + if len(items) >= limit: + break + items.append(rc) + if len(items) < limit: + # Pad using synergies as synthetic placeholders to reach requested size + synergies = detail.get("uncapped_synergies") or detail.get("synergies") or [] + for s in synergies: + if len(items) >= limit: + break + synthetic_name = f"[{s}]" + items.append({ + "name": synthetic_name, + "colors": [], + "roles": ["synthetic"], + "tags": [s], + "score": 0.5, # lower score to keep curated first + "reasons": ["synthetic_synergy_placeholder"], + }) + return items + + +def get_theme_preview(theme_id: str, *, limit: int = 12, colors: Optional[str] = None, commander: Optional[str] = None, uncapped: bool = True) -> Dict[str, Any]: + global _PREVIEW_REQUESTS, _PREVIEW_CACHE_HITS, _PREVIEW_BUILD_MS_TOTAL, _PREVIEW_BUILD_COUNT + idx = load_index() + slug = slugify(theme_id) + entry = idx.slug_to_entry.get(slug) + if not entry: + raise KeyError("theme_not_found") + # Use uncapped synergies for better placeholder coverage (diagnostics flag gating not applied here; placeholder only) + detail = project_detail(slug, entry, idx.slug_to_yaml, uncapped=uncapped) + colors_key = colors or None + commander_key = commander or None + cache_key = (slug, limit, colors_key, commander_key, idx.etag) + _PREVIEW_REQUESTS += 1 + cached = _PREVIEW_CACHE.get(cache_key) + if cached and (_now() - cached["_cached_at"]) < TTL_SECONDS: + _PREVIEW_CACHE_HITS += 1 + _RECENT_HITS.append(True) + # Count request (even if cache hit) for per-theme metrics + _PREVIEW_PER_THEME_REQUESTS[slug] = _PREVIEW_PER_THEME_REQUESTS.get(slug, 0) + 1 + # Structured cache hit log (diagnostics gated) + try: + if (os.getenv("WEB_THEME_PREVIEW_LOG") or "").lower() in {"1","true","yes","on"}: + print(json.dumps({ + "event": "theme_preview_cache_hit", + "theme": slug, + "limit": limit, + "colors": colors_key, + "commander": commander_key, + "ttl_remaining_s": round(TTL_SECONDS - (_now() - cached["_cached_at"]), 2) + }, separators=(",",":"))) # noqa: T201 + except Exception: + pass + # Annotate cache hit flag (shallow copy to avoid mutating stored payload timings) + payload_cached = dict(cached["payload"]) + payload_cached["cache_hit"] = True + return payload_cached + _RECENT_HITS.append(False) + # Build items + t0 = _now() + try: + items = _build_stub_items(detail, limit, colors_key, commander=commander_key) + except Exception as e: + # Record error histogram & propagate + _PREVIEW_PER_THEME_ERRORS[slug] = _PREVIEW_PER_THEME_ERRORS.get(slug, 0) + 1 + _PREVIEW_ERROR_COUNT += 1 # type: ignore + raise e + + # Race condition guard (P2 RESILIENCE): If we somehow produced an empty sample (e.g., catalog rebuild mid-flight) + # retry a limited number of times with small backoff. + if not items: + for _retry in range(2): # up to 2 retries + time.sleep(0.05) + try: + items = _build_stub_items(detail, limit, colors_key, commander=commander_key) + except Exception: + _PREVIEW_PER_THEME_ERRORS[slug] = _PREVIEW_PER_THEME_ERRORS.get(slug, 0) + 1 + _PREVIEW_ERROR_COUNT += 1 # type: ignore + break + if items: + try: + print(json.dumps({"event":"theme_preview_retry_after_empty","theme":slug})) # noqa: T201 + except Exception: + pass + break + build_ms = (_now() - t0) * 1000.0 + _PREVIEW_BUILD_MS_TOTAL += build_ms + _PREVIEW_BUILD_COUNT += 1 + # Duplicate suppression safety across roles (should already be unique, defensive) + seen_names: set[str] = set() + dedup: List[Dict[str, Any]] = [] + for it in items: + nm = it.get("name") + if not nm: + continue + if nm in seen_names: + continue + seen_names.add(nm) + dedup.append(it) + items = dedup + + # Aggregate statistics + curated_count = sum(1 for i in items if any(r in {"example", "curated_synergy"} for r in (i.get("roles") or []))) + sampled_core_roles = {"payoff", "enabler", "support", "wildcard"} + role_counts_local: Dict[str, int] = {r: 0 for r in sampled_core_roles} + for i in items: + roles = i.get("roles") or [] + for r in roles: + if r in role_counts_local: + role_counts_local[r] += 1 + # Update global counters + global _ROLE_GLOBAL_COUNTS, _CURATED_GLOBAL, _SAMPLED_GLOBAL + for r, c in role_counts_local.items(): + _ROLE_GLOBAL_COUNTS[r] = _ROLE_GLOBAL_COUNTS.get(r, 0) + c + _CURATED_GLOBAL += curated_count + _SAMPLED_GLOBAL += sum(role_counts_local.values()) + _BUILD_DURATIONS.append(build_ms) + per = _PREVIEW_PER_THEME.setdefault(slug, {"builds": 0, "total_ms": 0.0, "durations": deque(maxlen=50), "role_counts": {r: 0 for r in sampled_core_roles}, "curated": 0, "sampled": 0}) + per["builds"] += 1 + per["total_ms"] += build_ms + per["durations"].append(build_ms) + per["curated"] += curated_count + per["sampled"] += sum(role_counts_local.values()) + for r, c in role_counts_local.items(): + per["role_counts"][r] = per["role_counts"].get(r, 0) + c + + synergies_used = detail.get("uncapped_synergies") or detail.get("synergies") or [] + payload = { + "theme_id": slug, + "theme": detail.get("theme"), + "count_total": len(items), # population size TBD when full sampling added + "sample": items, + "synergies_used": synergies_used, + "generated_at": idx.catalog.metadata_info.generated_at if idx.catalog.metadata_info else None, + "colors_filter": colors_key, + "commander": commander_key, + "stub": False if any(it.get("roles") and it["roles"][0] in {"payoff", "support", "enabler", "wildcard"} for it in items) else True, + "role_counts": role_counts_local, + "curated_pct": round((curated_count / max(1, len(items))) * 100, 2), + "build_ms": round(build_ms, 2), + "curated_total": curated_count, + "sampled_total": sum(role_counts_local.values()), + "cache_hit": False, + } + _PREVIEW_CACHE[cache_key] = {"payload": payload, "_cached_at": _now()} + _PREVIEW_CACHE.move_to_end(cache_key) + _enforce_cache_limit() + # Track request count post-build + _PREVIEW_PER_THEME_REQUESTS[slug] = _PREVIEW_PER_THEME_REQUESTS.get(slug, 0) + 1 + # Structured logging (opt-in) + try: + if (os.getenv("WEB_THEME_PREVIEW_LOG") or "").lower() in {"1","true","yes","on"}: + log_obj = { + "event": "theme_preview_build", + "theme": slug, + "limit": limit, + "colors": colors_key, + "commander": commander_key, + "build_ms": round(build_ms, 2), + "curated_pct": payload["curated_pct"], + "curated_total": payload["curated_total"], + "sampled_total": payload["sampled_total"], + "role_counts": role_counts_local, + "cache_hit": False, + } + print(json.dumps(log_obj, separators=(",",":"))) # noqa: T201 + except Exception: + pass + # Post-build adaptive TTL evaluation & background refresher initialization + _maybe_adapt_ttl(_now()) + _ensure_bg_refresh_thread() + return payload + + +def _percentile(sorted_vals: List[float], pct: float) -> float: + if not sorted_vals: + return 0.0 + k = (len(sorted_vals) - 1) * pct + f = int(k) + c = min(f + 1, len(sorted_vals) - 1) + if f == c: + return sorted_vals[f] + d0 = sorted_vals[f] * (c - k) + d1 = sorted_vals[c] * (k - f) + return d0 + d1 + +def preview_metrics() -> Dict[str, Any]: + avg_ms = (_PREVIEW_BUILD_MS_TOTAL / _PREVIEW_BUILD_COUNT) if _PREVIEW_BUILD_COUNT else 0.0 + durations_list = sorted(list(_BUILD_DURATIONS)) + p95 = _percentile(durations_list, 0.95) + # Role distribution actual vs target (aggregate) + total_roles = sum(_ROLE_GLOBAL_COUNTS.values()) or 1 + target = {"payoff": 0.4, "enabler+support": 0.4, "wildcard": 0.2} + actual_enabler_support = (_ROLE_GLOBAL_COUNTS.get("enabler", 0) + _ROLE_GLOBAL_COUNTS.get("support", 0)) / total_roles + role_distribution = { + "payoff": { + "count": _ROLE_GLOBAL_COUNTS.get("payoff", 0), + "actual_pct": round((_ROLE_GLOBAL_COUNTS.get("payoff", 0) / total_roles) * 100, 2), + "target_pct": target["payoff"] * 100, + }, + "enabler_support": { + "count": _ROLE_GLOBAL_COUNTS.get("enabler", 0) + _ROLE_GLOBAL_COUNTS.get("support", 0), + "actual_pct": round(actual_enabler_support * 100, 2), + "target_pct": target["enabler+support"] * 100, + }, + "wildcard": { + "count": _ROLE_GLOBAL_COUNTS.get("wildcard", 0), + "actual_pct": round((_ROLE_GLOBAL_COUNTS.get("wildcard", 0) / total_roles) * 100, 2), + "target_pct": target["wildcard"] * 100, + }, + } + editorial_coverage_pct = round((_CURATED_GLOBAL / max(1, (_CURATED_GLOBAL + _SAMPLED_GLOBAL))) * 100, 2) + per_theme_stats = {} + for slug, data in list(_PREVIEW_PER_THEME.items())[:50]: + durs = list(data.get("durations", [])) + sd = sorted(durs) + p50 = _percentile(sd, 0.50) + p95_local = _percentile(sd, 0.95) + per_theme_stats[slug] = { + "avg_ms": round(data["total_ms"] / max(1, data["builds"]), 2), + "p50_ms": round(p50, 2), + "p95_ms": round(p95_local, 2), + "builds": data["builds"], + "avg_curated_pct": round((data["curated"] / max(1, (data["curated"] + data["sampled"])) ) * 100, 2), + "requests": _PREVIEW_PER_THEME_REQUESTS.get(slug, 0), + "curated_total": data.get("curated", 0), + "sampled_total": data.get("sampled", 0), + } + error_rate = 0.0 + total_req = _PREVIEW_REQUESTS or 0 + if total_req: + error_rate = round((_PREVIEW_ERROR_COUNT / total_req) * 100, 2) + # Example coverage enforcement flag: when curated coverage exceeds threshold (default 90%) + try: + enforce_threshold = float(os.getenv("EXAMPLE_ENFORCE_THRESHOLD", "90")) + except Exception: + enforce_threshold = 90.0 + example_enforcement_active = editorial_coverage_pct >= enforce_threshold + return { + "preview_requests": _PREVIEW_REQUESTS, + "preview_cache_hits": _PREVIEW_CACHE_HITS, + "preview_cache_entries": len(_PREVIEW_CACHE), + "preview_avg_build_ms": round(avg_ms, 2), + "preview_p95_build_ms": round(p95, 2), + "preview_error_rate_pct": error_rate, + "preview_client_fetch_errors": _PREVIEW_REQUEST_ERROR_COUNT, + "preview_ttl_seconds": TTL_SECONDS, + "preview_ttl_adaptive": _ADAPTATION_ENABLED, + "preview_ttl_window": len(_RECENT_HITS), + "preview_last_bust_at": _PREVIEW_LAST_BUST_AT, + "role_distribution": role_distribution, + "editorial_curated_vs_sampled_pct": editorial_coverage_pct, + "example_enforcement_active": example_enforcement_active, + "example_enforce_threshold_pct": enforce_threshold, + "editorial_curated_total": _CURATED_GLOBAL, + "editorial_sampled_total": _SAMPLED_GLOBAL, + "per_theme": per_theme_stats, + "per_theme_errors": dict(list(_PREVIEW_PER_THEME_ERRORS.items())[:50]), + "curated_synergy_matrix_loaded": _CURATED_SYNERGY_MATRIX is not None, + "curated_synergy_matrix_size": sum(len(v) for v in _CURATED_SYNERGY_MATRIX.values()) if _CURATED_SYNERGY_MATRIX else 0, + } + + +def bust_preview_cache(reason: str | None = None) -> None: + """Clear in-memory preview cache (e.g., after catalog rebuild or tagging). + + Exposed for orchestrator hooks. Keeps metrics counters (requests/hits) for + observability; records last bust timestamp. + """ + global _PREVIEW_CACHE, _PREVIEW_LAST_BUST_AT + try: # defensive; never raise + _PREVIEW_CACHE.clear() + import time as _t + _PREVIEW_LAST_BUST_AT = _t.time() + except Exception: + pass diff --git a/code/web/templates/base.html b/code/web/templates/base.html index a556d68..de6d04e 100644 --- a/code/web/templates/base.html +++ b/code/web/templates/base.html @@ -5,6 +5,10 @@ MTG Deckbuilder + + + {% if enable_themes %} + + diff --git a/code/web/templates/home.html b/code/web/templates/home.html index 2b4de38..0413084 100644 --- a/code/web/templates/home.html +++ b/code/web/templates/home.html @@ -7,6 +7,7 @@ {% if show_setup %}Initial Setup{% endif %} Owned Library Finished Decks + Browse Themes {% if show_logs %}View Logs{% endif %}
diff --git a/code/web/templates/themes/catalog_simple.html b/code/web/templates/themes/catalog_simple.html new file mode 100644 index 0000000..54a4739 --- /dev/null +++ b/code/web/templates/themes/catalog_simple.html @@ -0,0 +1,121 @@ +{% extends 'base.html' %} +{% block content %} +

Theme Catalog (Simple)

+
+
+
+ + + +
+
+ + +
+
+ +
+ {% for c in ['W','U','B','R','G'] %} + + {% endfor %} +
+
+ +
+
+ {% for b in ['Very Common','Common','Uncommon','Niche','Rare'] %} + + {% endfor %} +
+
+
+
+ {% for i in range(6) %}
{% endfor %} +
+
+
+ + +{% endblock %} \ No newline at end of file diff --git a/code/web/templates/themes/detail_fragment.html b/code/web/templates/themes/detail_fragment.html new file mode 100644 index 0000000..b077f36 --- /dev/null +++ b/code/web/templates/themes/detail_fragment.html @@ -0,0 +1,84 @@ +{% if theme %} +
+ {% if standalone_page %} + + {% endif %} +

{{ theme.theme }} + {% if diagnostics and yaml_available %} + (YAML) + {% endif %} +

+ {% if theme.description %} +

{{ theme.description }}

+ {% else %} + {% if theme.synergies %} +

Built around {{ theme.synergies[:6]|join(', ') }}.

+ {% else %} +

No description.

+ {% endif %} + {% endif %} +
+ {% if theme.popularity_bucket %}{{ theme.popularity_bucket }}{% endif %} + {% if diagnostics and theme.editorial_quality %}{{ theme.editorial_quality }}{% endif %} + {% if diagnostics and theme.has_fallback_description %}Fallback{% endif %} +
+
+

Synergies {% if not uncapped %}(capped){% endif %}

+
+ {% for s in theme.synergies %}{{ s }}{% endfor %} +
+ {% if diagnostics %} + {% if not uncapped and theme.uncapped_synergies %} + + {% elif uncapped %} + + {% if theme.uncapped_synergies %} +
+ {% for s in theme.uncapped_synergies %}{{ s }}{% endfor %} +
+ {% endif %} + {% endif %} + {% endif %} +
+
+

Example Cards

+
+ {% if theme.example_cards %} + {% for c in theme.example_cards %} +
+ {{ c }} image +
{{ c }}
+
+ {% endfor %} + {% else %} +
No curated example cards.
+ {% endif %} +
+

Example Commanders

+
+ {% if theme.example_commanders %} + {% for c in theme.example_commanders %} +
+ {{ c }} image +
{{ c }}
+
+ {% endfor %} + {% else %} +
No curated commander examples.
+ {% endif %} +
+
+
+{% else %} +
Theme not found.
+{% endif %} + + diff --git a/code/web/templates/themes/detail_page.html b/code/web/templates/themes/detail_page.html new file mode 100644 index 0000000..1d43d53 --- /dev/null +++ b/code/web/templates/themes/detail_page.html @@ -0,0 +1,4 @@ +{% extends 'base.html' %} +{% block content %} + {% include 'themes/detail_fragment.html' %} +{% endblock %} \ No newline at end of file diff --git a/code/web/templates/themes/list_fragment.html b/code/web/templates/themes/list_fragment.html new file mode 100644 index 0000000..8912466 --- /dev/null +++ b/code/web/templates/themes/list_fragment.html @@ -0,0 +1,155 @@ +{% if items %} +
+
+ Showing {{ offset + 1 }}–{{ (offset + items|length) }} of {{ total }} +
+
+ {% if prev_offset is not none %} + + {% else %} + + {% endif %} + {% if next_offset is not none %} + + {% else %} + + {% endif %} +
+
+ + + + + + + + + + + + + {% for it in items %} + + + + + + + + + {% endfor %} + +
ThemePrimarySecondaryPopularityArchetypeSynergies
{% set q = request.query_params.get('q') %}{% set name = it.theme %}{% if q %}{% set ql = q.lower() %}{% set nl = name.lower() %}{% if ql in nl %}{% set start = nl.find(ql) %}{% set end = start + q|length %}{{ name[:start] }}{{ name[start:end] }}{{ name[end:] }}{% else %}{{ name }}{% endif %}{% else %}{{ name }}{% endif %} {% if diagnostics and it.has_fallback_description %}{% endif %} + {% if diagnostics and it.editorial_quality %} + {{ it.editorial_quality[0]|upper }} + {% endif %} + {% if it.primary_color %}{{ it.primary_color }}{% endif %}{% if it.secondary_color %}{{ it.secondary_color }}{% endif %} + {% if it.popularity_bucket %} + {{ it.popularity_bucket }} + {% endif %} + {{ it.deck_archetype or '' }} +
+ {% for s in it.synergies %}{{ s }}{% endfor %} + {% if it.synergies_capped %}{% endif %} +
+
+ + {% if it.synergies_capped %} + + {% endif %} +
+
+
+
+ Showing {{ offset + 1 }}–{{ (offset + items|length) }} of {{ total }} +
+
+ {% if prev_offset is not none %} + + {% else %} + + {% endif %} + {% if next_offset is not none %} + + {% else %} + + {% endif %} +
+
+
Select a theme above to view details.
+ +{% else %} + {% if total == 0 %} +
No themes match your filters.
+ {% else %} +
+ {% for i in range(6) %} +
+
+
+
+
+
+
+
+ {% endfor %} +
+ {% endif %} +{% endif %} diff --git a/code/web/templates/themes/list_simple_fragment.html b/code/web/templates/themes/list_simple_fragment.html new file mode 100644 index 0000000..a7c641e --- /dev/null +++ b/code/web/templates/themes/list_simple_fragment.html @@ -0,0 +1,44 @@ +{% if items %} +
+
Showing {{ offset + 1 }}–{{ (offset + items|length) }} of {{ total }}
+
+ {% if prev_offset is not none %} + + {% else %}{% endif %} + {% if next_offset is not none %} + + {% else %}{% endif %} +
+
+
    + {% for it in items %} +
  • + {{ it.theme }} + {% if it.short_description %}
    {{ it.short_description }}
    {% endif %} +
  • + {% endfor %} +
+
+
Showing {{ offset + 1 }}–{{ (offset + items|length) }} of {{ total }}
+
+ {% if prev_offset is not none %} + + {% else %}{% endif %} + {% if next_offset is not none %} + + {% else %}{% endif %} +
+
+{% else %} + {% if total == 0 %} +
No themes found.
+ {% else %} +
+ {% for i in range(8) %}
{% endfor %} +
+ {% endif %} +{% endif %} + \ No newline at end of file diff --git a/code/web/templates/themes/picker.html b/code/web/templates/themes/picker.html new file mode 100644 index 0000000..6098941 --- /dev/null +++ b/code/web/templates/themes/picker.html @@ -0,0 +1,403 @@ +{% extends 'base.html' %} +{% block content %} +

Theme Catalog

+
+
+ + + + + + +
+ {% for c in ['W','U','B','R','G'] %} + + {% endfor %} +
+ {% if theme_picker_diagnostics %} + + {% endif %} +
+
+
+ +
+ +
+ Legend: + ENF + CUR + INF + VC + C + U + N + R + {% if theme_picker_diagnostics %} + + D + R + F + {% endif %} +
+
+
+
+ + + + +{% endblock %} diff --git a/code/web/templates/themes/preview_fragment.html b/code/web/templates/themes/preview_fragment.html new file mode 100644 index 0000000..6b2e978 --- /dev/null +++ b/code/web/templates/themes/preview_fragment.html @@ -0,0 +1,350 @@ +{% if preview %} +
+ {% if not minimal %} +
+

{{ preview.theme }}

+ +
+ {% if preview.stub %}
Stub sample (placeholder logic)
{% endif %} +
+ + + +
+
+ Commander Overlap & Diversity Rationale +
+ + Mode: normal +
+
    +
  • Computing…
  • +
+
+ {% endif %} +
+
+
+ {% if not minimal %}{% if not suppress_curated %}

Example Cards

{% else %}

Sampled Synergy Cards

{% endif %}{% endif %} +
+
+ {% set inserted = {'examples': False, 'curated_synergy': False, 'payoff': False, 'enabler_support': False, 'wildcard': False} %} + {% for c in preview.sample if (not suppress_curated and ('example' in c.roles or 'curated_synergy' in c.roles)) or 'payoff' in c.roles or 'enabler' in c.roles or 'support' in c.roles or 'wildcard' in c.roles %} + {% set primary = c.roles[0] if c.roles else '' %} + {% if (not suppress_curated) and 'example' in c.roles and not inserted.examples %}
Curated Examples
{% set _ = inserted.update({'examples': True}) %}{% endif %} + {% if (not suppress_curated) and primary == 'curated_synergy' and not inserted.curated_synergy %}
Curated Synergy
{% set _ = inserted.update({'curated_synergy': True}) %}{% endif %} + {% if primary == 'payoff' and not inserted.payoff %}
Payoffs
{% set _ = inserted.update({'payoff': True}) %}{% endif %} + {% if primary in ['enabler','support'] and not inserted.enabler_support %}
Enablers & Support
{% set _ = inserted.update({'enabler_support': True}) %}{% endif %} + {% if primary == 'wildcard' and not inserted.wildcard %}
Wildcards
{% set _ = inserted.update({'wildcard': True}) %}{% endif %} + {% set overlaps = [] %} + {% if preview.synergies_used and c.tags %} + {% for tg in c.tags %}{% if tg in preview.synergies_used %}{% set _ = overlaps.append(tg) %}{% endif %}{% endfor %} + {% endif %} +
+
+ {{ c.name }} image + {{ c.roles[0][0]|upper if c.roles }} + {% if overlaps %}{{ overlaps|length }}{% endif %} +
+
+
+
{{ c.name }}
+
+ {% if c.rarity %}
{{ c.rarity }}
{% endif %} +
+ {% for r in c.roles %}{{ r[0]|upper }}{% endfor %} +
+ {% if c.reasons %}
{{ c.reasons|map('replace','commander_bias','cmbias')|join(' · ') }}
{% endif %} +
+
+ {% endfor %} + {% set has_synth = false %} + {% for c in preview.sample %}{% if 'synthetic' in c.roles %}{% set has_synth = true %}{% endif %}{% endfor %} + {% if has_synth %} +
+ {% for c in preview.sample %} + {% if 'synthetic' in c.roles %} +
+
{{ c.name }}
+
{{ c.roles|join(', ') }}
+ {% if c.reasons %}
{{ c.reasons|join(', ') }}
{% endif %} +
+ {% endif %} + {% endfor %} + {% endif %} +
+
+
+ {% if not minimal %}{% if not suppress_curated %}

Example Commanders

{% else %}

Synergy Commanders

{% endif %}{% endif %} +
+ {% if example_commanders and not suppress_curated %} +
+ {% for name in example_commanders %} + {# Derive per-commander overlaps; still show full theme synergy set in data-tags for context #} + {% set base = name %} + {% set overlaps = [] %} + {% if ' - Synergy (' in name %} + {% set base = name.split(' - Synergy (')[0] %} + {% set annot = name.split(' - Synergy (')[1].rstrip(')') %} + {% for sy in annot.split(',') %}{% set _ = overlaps.append(sy.strip()) %}{% endfor %} + {% endif %} + {% set tags_all = preview.synergies_used[:] if preview.synergies_used else [] %} + {% for ov in overlaps %}{% if ov not in tags_all %}{% set _ = tags_all.append(ov) %}{% endif %}{% endfor %} +
+ {{ base }} image +
{{ name }}
+
+ {% endfor %} +
+ {% elif not suppress_curated %} +
No curated commander examples.
+ {% endif %} + {% if synergy_commanders %} +
+
+
Synergy Commanders
+ Derived +
+
+ {% for name in synergy_commanders[:8] %} + {# Strip any appended ' - Synergy (...' suffix for image lookup while preserving display #} + {% set base = name %} + {% if ' - Synergy' in name %}{% set base = name.split(' - Synergy')[0] %}{% endif %} + {% set overlaps = [] %} + {% if ' - Synergy (' in name %} + {% set annot = name.split(' - Synergy (')[1].rstrip(')') %} + {% for sy in annot.split(',') %}{% set _ = overlaps.append(sy.strip()) %}{% endfor %} + {% endif %} + {% set tags_all = preview.synergies_used[:] if preview.synergies_used else [] %} + {% for ov in overlaps %}{% if ov not in tags_all %}{% set _ = tags_all.append(ov) %}{% endif %}{% endfor %} +
+ {{ base }} image +
{{ name }}
+
+ {% endfor %} +
+
+ {% endif %} +
+
+ {% if not minimal %}
Hover any card or commander for a larger preview and tag breakdown. Use Curated Only to hide sampled roles. Role chips: P=Payoff, E=Enabler, S=Support, W=Wildcard, X=Curated Example.
{% endif %} +
+{% else %} +
+
+
+
+
+
+ {% for i in range(8) %}
{% endfor %} +
+
+{% endif %} + + + + + + + + + \ No newline at end of file diff --git a/config/themes/theme_list.json b/config/themes/theme_list.json index 46c518c..eddad05 100644 --- a/config/themes/theme_list.json +++ b/config/themes/theme_list.json @@ -3,125 +3,43 @@ { "theme": "+1/+1 Counters", "synergies": [ - "Adapt", - "Evolve", "Proliferate", "Counters Matter", + "Adapt", + "Evolve", "Hydra Kindred" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Rishkar, Peema Renegade", - "Krenko, Tin Street Kingpin", - "Yawgmoth, Thran Physician", - "Yahenni, Undying Partisan", - "Heliod, Sun-Crowned" - ], - "example_cards": [ - "Rhythm of the Wild", - "Karn's Bastion", - "Hardened Scales", - "Doubling Season", - "The Great Henge", - "Avenger of Zendikar", - "Inspiring Call", - "The Ozolith" - ], - "synergy_commanders": [ - "Tekuthal, Inquiry Dominus - Synergy (Proliferate)", - "Atraxa, Praetors' Voice - Synergy (Proliferate)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Zegana, Utopian Speaker - Synergy (Adapt)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "+1/+1 counters build across the board then get doubled, proliferated, or redistributed for exponential scaling. Synergies like Proliferate and Counters Matter reinforce the plan." + "secondary_color": "White" }, { "theme": "-0/-1 Counters", "synergies": [ - "Counters Matter" + "Counters Matter", + "Proliferate" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Krenko, Tin Street Kingpin - Synergy (Counters Matter)" - ], - "example_cards": [ - "Wall of Roots", - "Shield Sphere", - "Takklemaggot", - "Essence Flare", - "Kjeldoran Home Guard", - "Krovikan Plague", - "Lesser Werewolf" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates -0/-1 counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Blue" }, { "theme": "-0/-2 Counters", - "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Spirit Shackle", - "Greater Werewolf" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates -0/-2 counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black" }, { "theme": "-1/-1 Counters", "synergies": [ - "Wither", - "Persist", - "Infect", "Proliferate", "Counters Matter", - "Poison Counters", - "Planeswalkers", - "Super Friends", - "Midrange", - "Phyrexian Kindred", - "Ore Counters", - "Advisor Kindred", - "Horror Kindred", - "+1/+1 Counters", - "Insect Kindred", - "Burn", - "Elemental Kindred" + "Wither", + "Persist", + "Infect" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Yawgmoth, Thran Physician", - "Vorinclex, Monstrous Raider", - "Lae'zel, Vlaakith's Champion", - "Tekuthal, Inquiry Dominus", - "Atraxa, Praetors' Voice" - ], - "example_cards": [ - "Karn's Bastion", - "Doubling Season", - "The Ozolith", - "Evolution Sage", - "Cankerbloom", - "Yawgmoth, Thran Physician", - "Thrummingbird", - "Tezzeret's Gambit" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Spreads -1/-1 counters for removal, attrition, and loop engines leveraging death & sacrifice triggers. Synergies like Proliferate and Counters Matter reinforce the plan." + "secondary_color": "Green" }, { "theme": "Adamant", @@ -133,30 +51,7 @@ "Human Kindred" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Knight Kindred)", - "Adeline, Resplendent Cathar - Synergy (Knight Kindred)", - "Danitha Capashen, Paragon - Synergy (Knight Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Desecrate Reality", - "Foreboding Fruit", - "Once and Future", - "Rally for the Throne", - "Outmuscle", - "Cauldron's Gift", - "Unexplained Vision", - "Silverflame Ritual" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Adamant leveraging synergies with Knight Kindred and +1/+1 Counters." + "secondary_color": "Blue" }, { "theme": "Adapt", @@ -168,32 +63,7 @@ "Combat Matters" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Zegana, Utopian Speaker", - "Jetfire, Ingenious Scientist // Jetfire, Air Guardian", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Incubation Druid", - "Evolution Witness", - "Basking Broodscale", - "Zegana, Utopian Speaker", - "Benthic Biomancer", - "Emperor of Bones", - "Knighted Myr", - "Trollbred Guardian" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Adapt leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "Blue" }, { "theme": "Addendum", @@ -203,70 +73,19 @@ "Spellslinger" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Interaction)", - "Toski, Bearer of Secrets - Synergy (Interaction)", - "Purphoros, God of the Forge - Synergy (Interaction)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Unbreakable Formation", - "Contractual Safeguard", - "Emergency Powers", - "Precognitive Perception", - "Arrester's Zeal", - "Sentinel's Mark", - "Arrester's Admonition", - "Sphinx's Insight" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Addendum leveraging synergies with Interaction and Spells Matter." + "secondary_color": "Blue" }, { "theme": "Advisor Kindred", "synergies": [ + "Historics Matter", + "Legends Matter", "-1/-1 Counters", "Conditional Draw", - "Human Kindred", - "Midrange", - "Toughness Matters" + "Human Kindred" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Sram, Senior Edificer", - "Teysa Karlov", - "Kambal, Consul of Allocation", - "Kambal, Profiteering Mayor", - "Grand Arbiter Augustin IV" - ], - "example_cards": [ - "Sram, Senior Edificer", - "Imperial Recruiter", - "Ledger Shredder", - "Teysa Karlov", - "Kambal, Consul of Allocation", - "Kambal, Profiteering Mayor", - "Grand Arbiter Augustin IV", - "Bruvac the Grandiloquent" - ], - "synergy_commanders": [ - "Yawgmoth, Thran Physician - Synergy (-1/-1 Counters)", - "Vorinclex, Monstrous Raider - Synergy (-1/-1 Counters)", - "Lae'zel, Vlaakith's Champion - Synergy (-1/-1 Counters)", - "Toski, Bearer of Secrets - Synergy (Conditional Draw)", - "Kutzil, Malamet Exemplar - Synergy (Conditional Draw)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Advisor creatures into play with shared payoffs (e.g., -1/-1 Counters and Conditional Draw)." + "secondary_color": "White" }, { "theme": "Aetherborn Kindred", @@ -278,34 +97,7 @@ "Voltron" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Yahenni, Undying Partisan", - "Gonti, Lord of Luxury", - "Gonti, Night Minister", - "Gonti, Canny Acquisitor", - "Lotho, Corrupt Shirriff - Synergy (Rogue Kindred)" - ], - "example_cards": [ - "Yahenni, Undying Partisan", - "Gonti, Lord of Luxury", - "Gonti, Night Minister", - "Gifted Aetherborn", - "Aether Refinery", - "Gonti, Canny Acquisitor", - "Weaponcraft Enthusiast", - "Contraband Kingpin" - ], - "synergy_commanders": [ - "Sakashima of a Thousand Faces - Synergy (Rogue Kindred)", - "Rankle, Master of Pranks - Synergy (Rogue Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Captain Lannery Storm - Synergy (Outlaw Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Aetherborn creatures into play with shared payoffs (e.g., Rogue Kindred and Outlaw Kindred)." + "secondary_color": "Red" }, { "theme": "Affinity", @@ -314,37 +106,10 @@ "Artifacts Matter", "Big Mana", "Flying", - "Stax" + "Historics Matter" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Emry, Lurker of the Loch", - "Urza, Chief Artificer", - "Nahiri, Forged in Fury", - "Chiss-Goria, Forge Tyrant", - "Imskir Iron-Eater" - ], - "example_cards": [ - "Emry, Lurker of the Loch", - "Thought Monitor", - "Thoughtcast", - "Junk Winder", - "Mycosynth Golem", - "Banquet Guests", - "Urza, Chief Artificer", - "Nahiri, Forged in Fury" - ], - "synergy_commanders": [ - "Ghalta, Primal Hunger - Synergy (Cost Reduction)", - "Goreclaw, Terror of Qal Sisma - Synergy (Cost Reduction)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Reduces spell costs via board resource counts (Affinity) enabling explosive early multi-spell turns. Synergies like Cost Reduction and Artifacts Matter reinforce the plan." + "secondary_color": "Red" }, { "theme": "Afflict", @@ -355,30 +120,7 @@ "Little Fellas" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Neheb, the Eternal", - "Mikaeus, the Unhallowed - Synergy (Zombie Kindred)", - "Jadar, Ghoulcaller of Nephalia - Synergy (Zombie Kindred)", - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)" - ], - "example_cards": [ - "Neheb, the Eternal", - "Lost Monarch of Ifnir", - "Ammit Eternal", - "Wildfire Eternal", - "Eternal of Harsh Truths", - "Spellweaver Eternal", - "Frontline Devastator", - "Khenra Eternal" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Burn)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Afflict leveraging synergies with Zombie Kindred and Reanimate." + "secondary_color": "Red" }, { "theme": "Afterlife", @@ -390,30 +132,7 @@ "Token Creation" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Junji, the Midnight Sky - Synergy (Spirit Kindred)", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Tithe Taker", - "Ministrant of Obligation", - "Orzhov Enforcer", - "Indebted Spirit", - "Imperious Oligarch", - "Seraph of the Scales", - "Knight of the Last Breath", - "Syndicate Messenger" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Aristocrats)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Afterlife leveraging synergies with Spirit Kindred and Sacrifice Matters." + "secondary_color": "Black" }, { "theme": "Aftermath", @@ -424,65 +143,19 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Emry, Lurker of the Loch - Synergy (Mill)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)" - ], - "example_cards": [ - "Dusk // Dawn", - "Commit // Memory", - "Insult // Injury", - "Cut // Ribbons", - "Consign // Oblivion", - "Indulge // Excess", - "Never // Return", - "Road // Ruin" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Extracts two-phase value from split Aftermath spells, maximizing flexible sequencing. Synergies like Mill and Big Mana reinforce the plan." + "secondary_color": "Black" }, { "theme": "Age Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Cumulative upkeep", "Storage Counters", - "Counters Matter", - "Enchantments Matter", - "Lands Matter" + "Enchantments Matter" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Tasha, the Witch Queen", - "Cosima, God of the Voyage // The Omenkeel", - "Mairsil, the Pretender", - "Morinfen", - "Gallowbraid" - ], - "example_cards": [ - "Mystic Remora", - "Glacial Chasm", - "Tome of Legends", - "Crucible of the Spirit Dragon", - "Mage-Ring Network", - "Tasha, the Witch Queen", - "Braid of Fire", - "Cosima, God of the Voyage // The Omenkeel" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Accumulates age counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Green" }, { "theme": "Aggro", @@ -494,53 +167,12 @@ "Trample" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Etali, Primal Storm", - "Ragavan, Nimble Pilferer", - "Toski, Bearer of Secrets", - "Kutzil, Malamet Exemplar", - "Sheoldred, the Apocalypse" - ], - "example_cards": [ - "Swiftfoot Boots", - "Lightning Greaves", - "Skullclamp", - "Rhythm of the Wild", - "Wild Growth", - "Karn's Bastion", - "Animate Dead", - "Hardened Scales" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)", - "Rishkar, Peema Renegade - Synergy (Voltron)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Applies early pressure and combat tempo to close the game before slower value engines stabilize. Synergies like Combat Matters and Voltron reinforce the plan." + "secondary_color": "Red" }, { "theme": "Airbending", "synergies": [], - "primary_color": "White", - "example_commanders": [ - "Appa, Steadfast Guardian", - "Aang, Airbending Master", - "Avatar Aang // Aang, Master of Elements", - "Aang, the Last Airbender" - ], - "example_cards": [ - "Appa, Steadfast Guardian", - "Aang, Airbending Master", - "Airbending Lesson", - "Avatar Aang // Aang, Master of Elements", - "Aang, the Last Airbender" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Airbending theme and its supporting synergies." + "primary_color": "White" }, { "theme": "Alien Kindred", @@ -552,35 +184,7 @@ "Soldier Kindred" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Iraxxa, Empress of Mars", - "Davros, Dalek Creator", - "Jenova, Ancient Calamity", - "Karvanista, Loyal Lupari // Lupari Shield", - "Osgood, Operation Double" - ], - "example_cards": [ - "Auton Soldier", - "Gallifrey Council Chamber", - "Vashta Nerada", - "Star Whale", - "Iraxxa, Empress of Mars", - "PuPu UFO", - "Recon Craft Theta", - "Time Beetle" - ], - "synergy_commanders": [ - "Mondrak, Glory Dominus - Synergy (Clones)", - "Kiki-Jiki, Mirror Breaker - Synergy (Clones)", - "Sakashima of a Thousand Faces - Synergy (Clones)", - "Solphim, Mayhem Dominus - Synergy (Horror Kindred)", - "Zopandrel, Hunger Dominus - Synergy (Horror Kindred)", - "Ghalta, Primal Hunger - Synergy (Trample)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Alien creatures into play with shared payoffs (e.g., Clones and Horror Kindred)." + "secondary_color": "Green" }, { "theme": "Alliance", @@ -592,31 +196,7 @@ "Combat Matters" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Galadriel, Light of Valinor", - "Tatyova, Benthic Druid - Synergy (Druid Kindred)", - "Rishkar, Peema Renegade - Synergy (Druid Kindred)", - "Jaheira, Friend of the Forest - Synergy (Druid Kindred)", - "Selvala, Heart of the Wilds - Synergy (Elf Kindred)" - ], - "example_cards": [ - "Witty Roastmaster", - "Rumor Gatherer", - "Gala Greeters", - "Devilish Valet", - "Rose Room Treasurer", - "Galadriel, Light of Valinor", - "Boss's Chauffeur", - "Social Climber" - ], - "synergy_commanders": [ - "Ayara, First of Locthwain - Synergy (Elf Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Alliance leveraging synergies with Druid Kindred and Elf Kindred." + "secondary_color": "Red" }, { "theme": "Ally Kindred", @@ -628,31 +208,7 @@ "Peasant Kindred" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Drana, Liberator of Malakir", - "Mina and Denn, Wildborn", - "Zada, Hedron Grinder", - "Bruse Tarl, Boorish Herder", - "Akiri, Line-Slinger" - ], - "example_cards": [ - "Zulaport Cutthroat", - "Drana, Liberator of Malakir", - "Mina and Denn, Wildborn", - "Zada, Hedron Grinder", - "Cliffhaven Vampire", - "Beastcaller Savant", - "Drana's Emissary", - "Oath of Gideon" - ], - "synergy_commanders": [ - "Munda, Ambush Leader - Synergy (Rally)", - "Toph, the First Metalbender - Synergy (Earthbend)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ally creatures into play with shared payoffs (e.g., Rally and Cohort)." + "secondary_color": "Green" }, { "theme": "Amass", @@ -664,32 +220,7 @@ "+1/+1 Counters" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Sauron, the Dark Lord", - "Saruman, the White Hand", - "Gothmog, Morgul Lieutenant", - "Sauron, Lord of the Rings", - "Grishnákh, Brash Instigator" - ], - "example_cards": [ - "Orcish Bowmasters", - "Dreadhorde Invasion", - "Barad-dûr", - "Lazotep Plating", - "Gleaming Overseer", - "Sauron, the Dark Lord", - "Saruman, the White Hand", - "Eternal Skylord" - ], - "synergy_commanders": [ - "Plargg and Nassari - Synergy (Orc Kindred)", - "Cadira, Caller of the Small - Synergy (Orc Kindred)", - "Neheb, the Eternal - Synergy (Zombie Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Amass leveraging synergies with Army Kindred and Orc Kindred." + "secondary_color": "Blue" }, { "theme": "Amplify", @@ -701,30 +232,7 @@ "Combat Matters" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)" - ], - "example_cards": [ - "Kilnmouth Dragon", - "Feral Throwback", - "Aven Warhawk", - "Ghastly Remains", - "Canopy Crawler", - "Zombie Brute", - "Daru Stinger", - "Embalmed Brawler" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Amplify leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "Green" }, { "theme": "Angel Kindred", @@ -736,58 +244,13 @@ "Lifelink" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Avacyn, Angel of Hope", - "Aurelia, the Warleader", - "Gisela, Blade of Goldnight", - "Shalai, Voice of Plenty", - "Sephara, Sky's Blade" - ], - "example_cards": [ - "Avacyn, Angel of Hope", - "Karmic Guide", - "Aurelia, the Warleader", - "Angel of the Ruins", - "Gisela, Blade of Goldnight", - "Shalai, Voice of Plenty", - "Sigil of the Empty Throne", - "Sephara, Sky's Blade" - ], - "synergy_commanders": [ - "Loran of the Third Path - Synergy (Vigilance)", - "Adeline, Resplendent Cathar - Synergy (Vigilance)", - "Elesh Norn, Grand Cenobite - Synergy (Vigilance)", - "Tatyova, Benthic Druid - Synergy (Lifegain)", - "Sheoldred, the Apocalypse - Synergy (Lifegain)", - "Vito, Thorn of the Dusk Rose - Synergy (Life Matters)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Angel creatures into play with shared payoffs (e.g., Vigilance and Lifegain)." + "secondary_color": "Black" }, { "theme": "Annihilator", "synergies": [], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Kozilek, Butcher of Truth", - "Ulamog, the Infinite Gyre" - ], - "example_cards": [ - "Artisan of Kozilek", - "Kozilek, Butcher of Truth", - "Ulamog, the Infinite Gyre", - "It That Betrays", - "Pathrazer of Ulamog", - "Flayer of Loyalties", - "Ulamog's Crusher", - "Nulldrifter" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Annihilator theme and its supporting synergies." + "secondary_color": "Red" }, { "theme": "Antelope Kindred", @@ -796,27 +259,7 @@ "Little Fellas" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Grazing Gladehart", - "Totem-Guide Hartebeest", - "Stampeding Wildebeests", - "Stampeding Serow", - "Trained Pronghorn", - "Graceful Antelope", - "Flycatcher Giraffid", - "Ornery Kudu" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Antelope creatures into play with shared payoffs (e.g., Toughness Matters and Little Fellas)." + "secondary_color": "White" }, { "theme": "Ape Kindred", @@ -828,35 +271,7 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Kogla, the Titan Ape", - "Kogla and Yidaro", - "Kibo, Uktabi Prince", - "Grunn, the Lonely King", - "Flopsie, Bumi's Buddy" - ], - "example_cards": [ - "Pongify", - "Simian Spirit Guide", - "Kogla, the Titan Ape", - "Silverback Elder", - "Kogla and Yidaro", - "Thieving Amalgam", - "Treetop Village", - "Kibo, Uktabi Prince" - ], - "synergy_commanders": [ - "Ulamog, the Infinite Gyre - Synergy (Removal)", - "Zacama, Primal Calamity - Synergy (Removal)", - "The Scarab God - Synergy (Removal)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ape creatures into play with shared payoffs (e.g., Removal and Artifacts Matter)." + "secondary_color": "Red" }, { "theme": "Archer Kindred", @@ -868,35 +283,7 @@ "Pingers" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Legolas Greenleaf", - "Finneas, Ace Archer", - "Tor Wauki the Younger", - "Legolas, Counter of Kills", - "Legolas, Master Archer" - ], - "example_cards": [ - "Orcish Bowmasters", - "Firebrand Archer", - "Poison-Tip Archer", - "Legolas Greenleaf", - "Finneas, Ace Archer", - "Tor Wauki the Younger", - "Thornweald Archer", - "Jagged-Scar Archers" - ], - "synergy_commanders": [ - "Six - Synergy (Reach)", - "Kodama of the West Tree - Synergy (Reach)", - "Kodama of the East Tree - Synergy (Reach)", - "Karador, Ghost Chieftain - Synergy (Centaur Kindred)", - "Nikya of the Old Ways - Synergy (Centaur Kindred)", - "Selvala, Heart of the Wilds - Synergy (Elf Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Archer creatures into play with shared payoffs (e.g., Reach and Centaur Kindred)." + "secondary_color": "White" }, { "theme": "Archon Kindred", @@ -908,32 +295,7 @@ "Leave the Battlefield" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Ezrim, Agency Chief", - "Krond the Dawn-Clad", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)" - ], - "example_cards": [ - "Archon of Sun's Grace", - "Archon of Cruelty", - "Archon of Emeria", - "Ashen Rider", - "Archon of Coronation", - "Blazing Archon", - "Archon of Absolution", - "Archon of the Wild Rose" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Archon creatures into play with shared payoffs (e.g., Flying and Big Mana)." + "secondary_color": "Black" }, { "theme": "Aristocrats", @@ -945,43 +307,13 @@ "Persist" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Syr Konrad, the Grim", - "Braids, Arisen Nightmare", - "Sheoldred, the Apocalypse", - "Elas il-Kor, Sadistic Pilgrim", - "Ojer Taq, Deepest Foundation // Temple of Civilization" - ], - "example_cards": [ - "Solemn Simulacrum", - "Skullclamp", - "Ashnod's Altar", - "Victimize", - "Blood Artist", - "Village Rites", - "Zulaport Cutthroat", - "Syr Konrad, the Grim" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Sacrifices expendable creatures and tokens to trigger death payoffs, recursion, and incremental drain. Synergies like Sacrifice and Death Triggers reinforce the plan." + "secondary_color": "Red" }, { "theme": "Armadillo Kindred", "synergies": [], "primary_color": "Green", - "secondary_color": "White", - "example_cards": [ - "Spinewoods Armadillo", - "Armored Armadillo" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Armadillo creatures into play with shared payoffs." + "secondary_color": "White" }, { "theme": "Army Kindred", @@ -993,69 +325,19 @@ "+1/+1 Counters" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Sauron, the Dark Lord", - "Saruman, the White Hand", - "Gothmog, Morgul Lieutenant", - "Mauhúr, Uruk-hai Captain", - "The Mouth of Sauron" - ], - "example_cards": [ - "Dreadhorde Invasion", - "Lazotep Plating", - "Gleaming Overseer", - "Sauron, the Dark Lord", - "Saruman, the White Hand", - "Eternal Skylord", - "Gothmog, Morgul Lieutenant", - "Saruman's Trickery" - ], - "synergy_commanders": [ - "Plargg and Nassari - Synergy (Orc Kindred)", - "Cadira, Caller of the Small - Synergy (Orc Kindred)", - "Neheb, the Eternal - Synergy (Zombie Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Army creatures into play with shared payoffs (e.g., Amass and Orc Kindred)." + "secondary_color": "Blue" }, { "theme": "Artifact Tokens", "synergies": [ + "Tokens Matter", "Treasure", "Servo Kindred", "Powerstone Token", - "Fabricate", - "Junk Token" + "Fabricate" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Lotho, Corrupt Shirriff", - "Peregrin Took", - "Sai, Master Thopterist", - "Old Gnawbone" - ], - "example_cards": [ - "An Offer You Can't Refuse", - "Smothering Tithe", - "Urza's Saga", - "Deadly Dispute", - "Black Market Connections", - "Tireless Provisioner", - "Big Score", - "Professional Face-Breaker" - ], - "synergy_commanders": [ - "Cayth, Famed Mechanist - Synergy (Servo Kindred)", - "Saheeli, the Gifted - Synergy (Servo Kindred)", - "Ashnod, Flesh Mechanist - Synergy (Powerstone Token)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Generates artifact tokens as modular resources—fueling sacrifice, draw, and cost-reduction engines. Synergies like Treasure and Servo Kindred reinforce the plan." + "secondary_color": "Black" }, { "theme": "Artifacts Matter", @@ -1067,32 +349,7 @@ "Artifact Tokens" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Loran of the Third Path", - "Lotho, Corrupt Shirriff", - "Sram, Senior Edificer", - "Emry, Lurker of the Loch" - ], - "example_cards": [ - "Sol Ring", - "Arcane Signet", - "Swiftfoot Boots", - "Lightning Greaves", - "Fellwar Stone", - "Thought Vessel", - "Mind Stone", - "Commander's Sphere" - ], - "synergy_commanders": [ - "Old Gnawbone - Synergy (Treasure Token)", - "Kodama of the West Tree - Synergy (Equipment Matters)", - "Shorikai, Genesis Engine - Synergy (Vehicles)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Leverages dense artifact counts for cost reduction, recursion, and modular scaling payoffs. Synergies like Treasure Token and Equipment Matters reinforce the plan." + "secondary_color": "Red" }, { "theme": "Artificer Kindred", @@ -1104,33 +361,7 @@ "Vedalken Kindred" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Loran of the Third Path", - "Sai, Master Thopterist", - "Urza, Lord High Artificer", - "Padeem, Consul of Innovation", - "Jhoira, Weatherlight Captain" - ], - "example_cards": [ - "Loran of the Third Path", - "Etherium Sculptor", - "Reckless Fireweaver", - "Marionette Apprentice", - "Loyal Apprentice", - "Sai, Master Thopterist", - "Urza, Lord High Artificer", - "Padeem, Consul of Innovation" - ], - "synergy_commanders": [ - "Cayth, Famed Mechanist - Synergy (Fabricate)", - "Saheeli, the Gifted - Synergy (Servo Kindred)", - "Oviya Pashiri, Sage Lifecrafter - Synergy (Servo Kindred)", - "Liberator, Urza's Battlethopter - Synergy (Thopter Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Artificer creatures into play with shared payoffs (e.g., Fabricate and Servo Kindred)." + "secondary_color": "Red" }, { "theme": "Ascend", @@ -1142,30 +373,7 @@ "Human Kindred" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)", - "Talrand, Sky Summoner - Synergy (Creature Tokens)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Creature Tokens)", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)", - "Mondrak, Glory Dominus - Synergy (Token Creation)" - ], - "example_cards": [ - "Wayward Swordtooth", - "Twilight Prophet", - "Ocelot Pride", - "Tendershoot Dryad", - "Illustrious Wanderglyph", - "Arch of Orazca", - "Andúril, Narsil Reforged", - "Vona's Hunger" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Tokens Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Ascend leveraging synergies with Creature Tokens and Token Creation." + "secondary_color": "White" }, { "theme": "Assassin Kindred", @@ -1177,53 +385,12 @@ "Vampire Kindred" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Massacre Girl", - "Mari, the Killing Quill", - "Massacre Girl, Known Killer", - "Queen Marchesa", - "The Lord of Pain" - ], - "example_cards": [ - "Brotherhood Regalia", - "Razorkin Needlehead", - "Massacre Girl", - "Royal Assassin", - "Overpowering Attack", - "Mari, the Killing Quill", - "Massacre Girl, Known Killer", - "Queen Marchesa" - ], - "synergy_commanders": [ - "Achilles Davenport - Synergy (Freerunning)", - "Ezio Auditore da Firenze - Synergy (Freerunning)", - "Jacob Frye - Synergy (Freerunning)", - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)", - "Sheoldred, the Apocalypse - Synergy (Deathtouch)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Assassin creatures into play with shared payoffs (e.g., Freerunning and Outlaw Kindred)." + "secondary_color": "Red" }, { "theme": "Assembly-Worker Kindred", "synergies": [], - "primary_color": "White", - "example_cards": [ - "Academy Manufactor", - "Mishra's Factory", - "Urza's Factory", - "Mishra's Foundry", - "Mishra's Self-Replicator", - "Arcbound Prototype", - "Dutiful Replicator", - "Cogwork Assembler" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Assembly-Worker creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Assist", @@ -1235,30 +402,7 @@ "Interaction" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)" - ], - "example_cards": [ - "Game Plan", - "Play of the Game", - "Out of Bounds", - "The Crowd Goes Wild", - "Gang Up", - "Huddle Up", - "Vampire Charmseeker", - "Skystreamer" - ], - "synergy_commanders": [ - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Assist leveraging synergies with Big Mana and Blink." + "secondary_color": "White" }, { "theme": "Astartes Kindred", @@ -1270,35 +414,7 @@ "Big Mana" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Khârn the Betrayer", - "Marneus Calgar", - "Abaddon the Despoiler", - "Mortarion, Daemon Primarch", - "Belisarius Cawl" - ], - "example_cards": [ - "Thunderhawk Gunship", - "Khârn the Betrayer", - "Marneus Calgar", - "Ultramarines Honour Guard", - "Birth of the Imperium", - "Inquisitorial Rosette", - "Space Marine Devastator", - "Noise Marine" - ], - "synergy_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Krenko, Mob Boss - Synergy (Warrior Kindred)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Astartes creatures into play with shared payoffs (e.g., Warrior Kindred and Blink)." + "secondary_color": "Red" }, { "theme": "Atog Kindred", @@ -1307,30 +423,7 @@ "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Atogatog", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "example_cards": [ - "Atog", - "Auratog", - "Megatog", - "Psychatog", - "Thaumatog", - "Atogatog", - "Lithatog", - "Phantatog" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Atog creatures into play with shared payoffs (e.g., Toughness Matters and Little Fellas)." + "secondary_color": "Red" }, { "theme": "Auras", @@ -1342,47 +435,12 @@ "Umbra armor" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Sram, Senior Edificer", - "Kodama of the West Tree", - "Danitha Capashen, Paragon", - "Ardenn, Intrepid Archaeologist", - "Codsworth, Handy Helper" - ], - "example_cards": [ - "Wild Growth", - "Animate Dead", - "Utopia Sprawl", - "Sram, Senior Edificer", - "Darksteel Mutation", - "Kenrith's Transformation", - "All That Glitters", - "Curiosity" - ], - "synergy_commanders": [ - "Calix, Guided by Fate - Synergy (Constellation)", - "Eutropia the Twice-Favored - Synergy (Constellation)", - "Rishkar, Peema Renegade - Synergy (Voltron)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Stacks enchantment or aura-based value engines (draw, cost reduction, constellation) into compounding board & card advantage." + "secondary_color": "Blue" }, { "theme": "Aurochs Kindred", "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Rimehorn Aurochs", - "Bull Aurochs", - "Aurochs", - "Aurochs Herd" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Aurochs creatures into play with shared payoffs." + "primary_color": "Green" }, { "theme": "Avatar Kindred", @@ -1394,32 +452,7 @@ "Cost Reduction" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Muldrotha, the Gravetide", - "Multani, Yavimaya's Avatar", - "Gishath, Sun's Avatar", - "Gandalf the White", - "The Ur-Dragon" - ], - "example_cards": [ - "Wandering Archaic // Explore the Vastlands", - "Dark Depths", - "Muldrotha, the Gravetide", - "Multani, Yavimaya's Avatar", - "Verdant Sun's Avatar", - "Sepulchral Primordial", - "Gishath, Sun's Avatar", - "Body of Knowledge" - ], - "synergy_commanders": [ - "Ojer Pakpatiq, Deepest Epoch // Temple of Cyclical Time - Synergy (Time Counters)", - "The Tenth Doctor - Synergy (Time Counters)", - "Braids, Arisen Nightmare - Synergy (Politics)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Avatar creatures into play with shared payoffs (e.g., Impending and Time Counters)." + "secondary_color": "Black" }, { "theme": "Awaken", @@ -1431,90 +464,25 @@ "Voltron" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Ashaya, Soul of the Wild - Synergy (Elemental Kindred)", - "Titania, Protector of Argoth - Synergy (Elemental Kindred)", - "Kediss, Emberclaw Familiar - Synergy (Elemental Kindred)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)", - "Tatyova, Benthic Druid - Synergy (Lands Matter)" - ], - "example_cards": [ - "Part the Waterveil", - "Planar Outburst", - "Boiling Earth", - "Scatter to the Winds", - "Ruinous Path", - "Clutch of Currents", - "Encircling Fissure", - "Coastal Discovery" - ], - "synergy_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Awaken leveraging synergies with Elemental Kindred and Lands Matter." + "secondary_color": "White" }, { "theme": "Azra Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Virtus the Veiled", - "Kels, Fight Fixer" - ], - "example_cards": [ - "Mindblade Render", - "Virtus the Veiled", - "Azra Oddsmaker", - "Azra Smokeshaper", - "Quick Fixer", - "Rushblade Commander", - "Kels, Fight Fixer", - "Blaring Captain" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Azra creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Backgrounds Matter", "synergies": [ "Choose a background", + "Historics Matter", + "Legends Matter", "Treasure", - "Treasure Token", - "Dragon Kindred", - "Enchantments Matter" + "Treasure Token" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Jaheira, Friend of the Forest", - "Karlach, Fury of Avernus", - "Lae'zel, Vlaakith's Champion", - "Ganax, Astral Hunter", - "Zellix, Sanity Flayer" - ], - "example_cards": [ - "Jaheira, Friend of the Forest", - "Karlach, Fury of Avernus", - "Lae'zel, Vlaakith's Champion", - "Ganax, Astral Hunter", - "Passionate Archaeologist", - "Agent of the Iron Throne", - "Inspiring Leader", - "Zellix, Sanity Flayer" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Treasure)", - "Lotho, Corrupt Shirriff - Synergy (Treasure)", - "Old Gnawbone - Synergy (Treasure Token)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Pairs a Commander with Backgrounds for modular static buffs & class-style customization. Synergies like Choose a background and Treasure reinforce the plan." + "secondary_color": "Red" }, { "theme": "Backup", @@ -1526,54 +494,13 @@ "Counters Matter" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Bright-Palm, Soul Awakener", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "example_cards": [ - "Archpriest of Shadows", - "Guardian Scalelord", - "Conclave Sledge-Captain", - "Emergent Woodwurm", - "Boon-Bringer Valkyrie", - "Scorn-Blade Berserker", - "Bright-Palm, Soul Awakener", - "Saiba Cryptomancer" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Backup leveraging synergies with +1/+1 Counters and Blink." + "secondary_color": "Green" }, { "theme": "Badger Kindred", "synergies": [], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Greensleeves, Maro-Sorcerer", - "Hugs, Grisly Guardian" - ], - "example_cards": [ - "Greensleeves, Maro-Sorcerer", - "Surly Badgersaur", - "Brightcap Badger // Fungus Frolic", - "Hugs, Grisly Guardian", - "Colossal Badger // Dig Deep", - "Stubborn Burrowfiend", - "Charging Badger", - "Badgermole" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Badger creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Banding", @@ -1585,31 +512,7 @@ "Flying" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Ayesha Tanaka", - "Danitha Capashen, Paragon - Synergy (First strike)", - "Gisela, Blade of Goldnight - Synergy (First strike)", - "Drana, Liberator of Malakir - Synergy (First strike)", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)" - ], - "example_cards": [ - "Benalish Hero", - "Mesa Pegasus", - "Kjeldoran Warrior", - "Kjeldoran Skyknight", - "Teremko Griffin", - "Pikemen", - "Shield Bearer", - "Kjeldoran Knight" - ], - "synergy_commanders": [ - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Banding leveraging synergies with First strike and Soldier Kindred." + "secondary_color": "Green" }, { "theme": "Barbarian Kindred", @@ -1617,39 +520,11 @@ "Haste", "Human Kindred", "Discard Matters", - "Blink", - "Enter the Battlefield" + "Historics Matter", + "Legends Matter" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Karlach, Fury of Avernus", - "Godo, Bandit Warlord", - "Wulfgar of Icewind Dale", - "Lovisa Coldeyes", - "Vrondiss, Rage of Ancients" - ], - "example_cards": [ - "Karlach, Fury of Avernus", - "Dragonspeaker Shaman", - "Godo, Bandit Warlord", - "Reckless Barbarian", - "Wulfgar of Icewind Dale", - "Plundering Barbarian", - "Caves of Chaos Adventurer", - "Lovisa Coldeyes" - ], - "synergy_commanders": [ - "Aurelia, the Warleader - Synergy (Haste)", - "Yahenni, Undying Partisan - Synergy (Haste)", - "Kiki-Jiki, Mirror Breaker - Synergy (Haste)", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Solphim, Mayhem Dominus - Synergy (Discard Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Barbarian creatures into play with shared payoffs (e.g., Haste and Human Kindred)." + "secondary_color": "Black" }, { "theme": "Bard Kindred", @@ -1661,35 +536,7 @@ "Enter the Battlefield" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Korlessa, Scale Singer", - "Kalain, Reclusive Painter", - "Bello, Bard of the Brambles", - "Narci, Fable Singer", - "Tom Bombadil" - ], - "example_cards": [ - "Mockingbird", - "Voice of Victory", - "Crime Novelist", - "Composer of Spring", - "Korlessa, Scale Singer", - "Kalain, Reclusive Painter", - "Bello, Bard of the Brambles", - "Narci, Fable Singer" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Bard creatures into play with shared payoffs (e.g., Toughness Matters and Little Fellas)." + "secondary_color": "Green" }, { "theme": "Bargain", @@ -1701,30 +548,7 @@ "Spells Matter" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Burn)", - "Braids, Arisen Nightmare - Synergy (Burn)", - "Lotho, Corrupt Shirriff - Synergy (Burn)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)" - ], - "example_cards": [ - "Beseech the Mirror", - "Back for Seconds", - "Rowan's Grim Search", - "Ice Out", - "Realm-Scorcher Hellkite", - "Stonesplitter Bolt", - "Thunderous Debut", - "Farsight Ritual" - ], - "synergy_commanders": [ - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Bargain leveraging synergies with Burn and Blink." + "secondary_color": "Blue" }, { "theme": "Basic landcycling", @@ -1736,26 +560,7 @@ "Discard Matters" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Monstrosity of the Lake - Synergy (Landcycling)", - "The Balrog of Moria - Synergy (Cycling)", - "Yidaro, Wandering Monster - Synergy (Cycling)", - "Baral, Chief of Compliance - Synergy (Loot)" - ], - "example_cards": [ - "Ash Barrens", - "Migratory Route", - "Sylvan Reclamation", - "Ancient Excavation", - "Orchard Strider", - "Treacherous Terrain", - "Grave Upheaval", - "Topiary Panther" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Basic landcycling leveraging synergies with Landcycling and Cycling." + "secondary_color": "Black" }, { "theme": "Basilisk Kindred", @@ -1766,30 +571,7 @@ "Aggro", "Combat Matters" ], - "primary_color": "Green", - "example_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Deathtouch)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Deathtouch)", - "The Gitrog Monster - Synergy (Deathtouch)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)" - ], - "example_cards": [ - "Ichorspit Basilisk", - "Underdark Basilisk", - "Turntimber Basilisk", - "Daggerback Basilisk", - "Greater Basilisk", - "Sylvan Basilisk", - "Serpentine Basilisk", - "Stone-Tongue Basilisk" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Basilisk creatures into play with shared payoffs (e.g., Deathtouch and Toughness Matters)." + "primary_color": "Green" }, { "theme": "Bat Kindred", @@ -1801,33 +583,7 @@ "Flying" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Aclazotz, Deepest Betrayal // Temple of the Dead", - "Zoraline, Cosmos Caller", - "Momo, Friendly Flier", - "Momo, Rambunctious Rascal", - "Vilis, Broker of Blood - Synergy (Lifeloss)" - ], - "example_cards": [ - "Mirkwood Bats", - "Aclazotz, Deepest Betrayal // Temple of the Dead", - "Starscape Cleric", - "Mudflat Village", - "Lunar Convocation", - "Screeching Scorchbeast", - "Desecrated Tomb", - "Darkstar Augur" - ], - "synergy_commanders": [ - "Ludevic, Necro-Alchemist - Synergy (Lifeloss)", - "Lich's Mastery - Synergy (Lifeloss)", - "Marina Vendrell's Grimoire - Synergy (Lifeloss Triggers)", - "Tatyova, Benthic Druid - Synergy (Lifegain)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Bat creatures into play with shared payoffs (e.g., Lifeloss and Lifeloss Triggers)." + "secondary_color": "White" }, { "theme": "Battalion", @@ -1839,33 +595,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Paladin Elizabeth Taggerdy", - "Sentinel Sarah Lyons", - "Tajic, Blade of the Legion", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)", - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)" - ], - "example_cards": [ - "Frontline Medic", - "Legion Loyalist", - "Paladin Elizabeth Taggerdy", - "Sentinel Sarah Lyons", - "Tajic, Blade of the Legion", - "Firemane Avenger", - "Sontaran General", - "Boros Elite" - ], - "synergy_commanders": [ - "Odric, Lunarch Marshal - Synergy (Soldier Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Etali, Primal Storm - Synergy (Aggro)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Battalion leveraging synergies with Soldier Kindred and Human Kindred." + "secondary_color": "Red" }, { "theme": "Battle Cry", @@ -1874,32 +604,7 @@ "Combat Matters" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Iraxxa, Empress of Mars", - "Ria Ivor, Bane of Bladehold", - "Rosnakht, Heir of Rohgahh", - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)" - ], - "example_cards": [ - "Hero of Bladehold", - "Signal Pest", - "Iraxxa, Empress of Mars", - "Goblin Wardriver", - "Ria Ivor, Bane of Bladehold", - "Sanguine Evangelist", - "Rosnakht, Heir of Rohgahh", - "Primaris Chaplain" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Combat Matters)", - "Sheoldred, the Apocalypse - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Battle Cry leveraging synergies with Aggro and Combat Matters." + "secondary_color": "White" }, { "theme": "Battles Matter", @@ -1909,30 +614,7 @@ "Big Mana" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Transform)", - "Veyran, Voice of Duality - Synergy (Transform)", - "Braids, Arisen Nightmare - Synergy (Card Draw)", - "Toski, Bearer of Secrets - Synergy (Card Draw)" - ], - "example_cards": [ - "Invasion of Ikoria // Zilortha, Apex of Ikoria", - "Invasion of Zendikar // Awakened Skyclave", - "Invasion of Segovia // Caetus, Sea Tyrant of Segovia", - "Invasion of Fiora // Marchesa, Resolute Monarch", - "Invasion of Kaldheim // Pyre of the World Tree", - "Invasion of Amonkhet // Lazotep Convert", - "Invasion of Tarkir // Defiant Thundermaw", - "Invasion of Theros // Ephara, Ever-Sheltering" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Battles Matter leveraging synergies with Transform and Card Draw." + "secondary_color": "Red" }, { "theme": "Bear Kindred", @@ -1940,39 +622,11 @@ "Druid Kindred", "Trample", "Creature Tokens", - "Token Creation", - "Tokens Matter" + "Historics Matter", + "Legends Matter" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Goreclaw, Terror of Qal Sisma", - "Surrak and Goreclaw", - "Lumra, Bellow of the Woods", - "Doc Aurlock, Grizzled Genius", - "Wilson, Refined Grizzly" - ], - "example_cards": [ - "Goreclaw, Terror of Qal Sisma", - "Surrak and Goreclaw", - "Lumra, Bellow of the Woods", - "Doc Aurlock, Grizzled Genius", - "Argoth, Sanctum of Nature // Titania, Gaea Incarnate", - "Titania's Command", - "Rampaging Yao Guai", - "Wilson, Refined Grizzly" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Druid Kindred)", - "Rishkar, Peema Renegade - Synergy (Druid Kindred)", - "Jaheira, Friend of the Forest - Synergy (Druid Kindred)", - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Bear creatures into play with shared payoffs (e.g., Druid Kindred and Trample)." + "secondary_color": "Black" }, { "theme": "Beast Kindred", @@ -1984,57 +638,17 @@ "Frog Kindred" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Loot, Exuberant Explorer", - "Questing Beast", - "Kona, Rescue Beastie", - "Anara, Wolvid Familiar", - "Nethroi, Apex of Death" - ], - "example_cards": [ - "Rampaging Baloths", - "Craterhoof Behemoth", - "Felidar Retreat", - "Displacer Kitten", - "Ravenous Chupacabra", - "Ezuri's Predation", - "Loot, Exuberant Explorer", - "Cultivator Colossus" - ], - "synergy_commanders": [ - "Brokkos, Apex of Forever - Synergy (Mutate)", - "Illuna, Apex of Wishes - Synergy (Mutate)", - "Flopsie, Bumi's Buddy - Synergy (Goat Kindred)", - "Ilharg, the Raze-Boar - Synergy (Boar Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Beast creatures into play with shared payoffs (e.g., Mutate and Goat Kindred)." + "secondary_color": "Red" }, { "theme": "Beaver Kindred", "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Giant Beaver" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Beaver creatures into play with shared payoffs." + "primary_color": "Green" }, { "theme": "Beeble Kindred", "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Bamboozling Beeble", - "Bouncing Beebles", - "Bubbling Beebles" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Beeble creatures into play with shared payoffs." + "primary_color": "Blue" }, { "theme": "Behold", @@ -2044,51 +658,13 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Sarkhan, Dragon Ascendant", - "Niv-Mizzet, Parun - Synergy (Dragon Kindred)", - "Old Gnawbone - Synergy (Dragon Kindred)", - "Drakuseth, Maw of Flames - Synergy (Dragon Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "example_cards": [ - "Sarkhan, Dragon Ascendant", - "Dispelling Exhale", - "Molten Exhale", - "Piercing Exhale", - "Caustic Exhale", - "Osseous Exhale" - ], - "synergy_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Behold leveraging synergies with Dragon Kindred and Spells Matter." + "secondary_color": "Black" }, { "theme": "Beholder Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Karazikar, the Eye Tyrant", - "Xanathar, Guild Kingpin" - ], - "example_cards": [ - "Karazikar, the Eye Tyrant", - "Death Kiss", - "Xanathar, Guild Kingpin", - "Hive of the Eye Tyrant", - "Death Tyrant", - "Ghastly Death Tyrant", - "Baleful Beholder" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Beholder creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Berserker Kindred", @@ -2100,35 +676,7 @@ "Haste" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Kardur, Doomscourge", - "Magda, Brazen Outlaw", - "Alexios, Deimos of Kosmos", - "Magda, the Hoardmaster", - "Garna, Bloodfist of Keld" - ], - "example_cards": [ - "Kardur, Doomscourge", - "Magda, Brazen Outlaw", - "Alexios, Deimos of Kosmos", - "Magda, the Hoardmaster", - "Garna, Bloodfist of Keld", - "Burning-Rune Demon", - "Bloodbraid Elf", - "Khârn the Betrayer" - ], - "synergy_commanders": [ - "Varragoth, Bloodsky Sire - Synergy (Boast)", - "Sigurd, Jarl of Ravensthorpe - Synergy (Boast)", - "Arni Brokenbrow - Synergy (Boast)", - "Ragavan, Nimble Pilferer - Synergy (Dash)", - "Kolaghan, the Storm's Fury - Synergy (Dash)", - "Sram, Senior Edificer - Synergy (Dwarf Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Berserker creatures into play with shared payoffs (e.g., Boast and Dash)." + "secondary_color": "Black" }, { "theme": "Bestow", @@ -2140,30 +688,7 @@ "Enchantments Matter" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Kestia, the Cultivator", - "Sythis, Harvest's Hand - Synergy (Nymph Kindred)", - "Goldberry, River-Daughter - Synergy (Nymph Kindred)", - "Sram, Senior Edificer - Synergy (Equipment Matters)", - "Kodama of the West Tree - Synergy (Equipment Matters)" - ], - "example_cards": [ - "Springheart Nantuko", - "Eidolon of Countless Battles", - "Nighthowler", - "Nyxborn Hydra", - "Trickster's Elk", - "Indebted Spirit", - "Chromanticore", - "Detective's Phoenix" - ], - "synergy_commanders": [ - "Danitha Capashen, Paragon - Synergy (Auras)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Bestow leveraging synergies with Nymph Kindred and Equipment Matters." + "secondary_color": "Green" }, { "theme": "Big Mana", @@ -2175,34 +700,7 @@ "Leviathan Kindred" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim", - "Etali, Primal Storm", - "Tatyova, Benthic Druid", - "Ghalta, Primal Hunger", - "Sheoldred, Whispering One" - ], - "example_cards": [ - "Path to Exile", - "Blasphemous Act", - "Rampant Growth", - "Nature's Lore", - "Solemn Simulacrum", - "Boseiju, Who Endures", - "Wayfarer's Bauble", - "Sakura-Tribe Elder" - ], - "synergy_commanders": [ - "Emry, Lurker of the Loch - Synergy (Cost Reduction)", - "Goreclaw, Terror of Qal Sisma - Synergy (Cost Reduction)", - "Bennie Bracks, Zoologist - Synergy (Convoke)", - "The Wandering Rescuer - Synergy (Convoke)", - "Urza, Chief Artificer - Synergy (Affinity)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Accelerates mana ahead of curve, then converts surplus into oversized threats or multi-spell bursts. Synergies like Cost Reduction and Convoke reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Bird Kindred", @@ -2214,47 +712,15 @@ "Landfall" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Teshar, Ancestor's Apostle", - "Breena, the Demagogue", - "Balmor, Battlemage Captain", - "Vega, the Watcher", - "Kykar, Wind's Fury" - ], - "example_cards": [ - "Birds of Paradise", - "Swan Song", - "Baleful Strix", - "Gilded Goose", - "Thrummingbird", - "Ledger Shredder", - "Aven Mindcensor", - "Jhoira's Familiar" - ], - "synergy_commanders": [ - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)", - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)", - "Akroma, Angel of Fury - Synergy (Morph)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Bird creatures into play with shared payoffs (e.g., Flying and Soldier Kindred)." + "secondary_color": "Blue" }, { "theme": "Blaze Counters", - "synergies": [], - "primary_color": "Red", - "example_cards": [ - "Obsidian Fireheart", - "Five-Alarm Fire" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates blaze counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Red" }, { "theme": "Blink", @@ -2266,30 +732,7 @@ "Offspring" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Selvala, Heart of the Wilds", - "Sheoldred, Whispering One", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Elesh Norn, Mother of Machines", - "Kodama of the East Tree" - ], - "example_cards": [ - "Solemn Simulacrum", - "The One Ring", - "Eternal Witness", - "Victimize", - "Animate Dead", - "Orcish Bowmasters", - "Mithril Coat", - "Gray Merchant of Asphodel" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Recycles enter-the-battlefield triggers through blink/flicker loops for compounding value and soft locks. Synergies like Enter the Battlefield and Flicker reinforce the plan." + "secondary_color": "White" }, { "theme": "Blitz", @@ -2301,68 +744,19 @@ "Aristocrats" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Jaxis, the Troublemaker", - "Sabin, Master Monk", - "Rishkar, Peema Renegade - Synergy (Midrange)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Midrange)", - "Yawgmoth, Thran Physician - Synergy (Midrange)" - ], - "example_cards": [ - "Jaxis, the Troublemaker", - "Star Athlete", - "Wave of Rats", - "Tenacious Underdog", - "Ziatora's Envoy", - "Mezzio Mugger", - "Sabin, Master Monk", - "Riveteers Requisitioner" - ], - "synergy_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Blitz leveraging synergies with Midrange and Warrior Kindred." + "secondary_color": "Black" }, { "theme": "Blood Token", "synergies": [ + "Tokens Matter", "Bloodthirst", "Bloodrush", "Sacrifice to Draw", - "Vampire Kindred", - "Loot" + "Vampire Kindred" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Old Rutstein", - "Kamber, the Plunderer", - "Strefan, Maurer Progenitor", - "Anje, Maid of Dishonor", - "Shilgengar, Sire of Famine" - ], - "example_cards": [ - "Voldaren Estate", - "Blood for the Blood God!", - "Edgar, Charmed Groom // Edgar Markov's Coffin", - "Old Rutstein", - "Glass-Cast Heart", - "Transmutation Font", - "Voldaren Epicure", - "Font of Agonies" - ], - "synergy_commanders": [ - "Indoraptor, the Perfect Hybrid - Synergy (Bloodthirst)", - "Braids, Arisen Nightmare - Synergy (Sacrifice to Draw)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Bloodthirst and Bloodrush reinforce the plan." + "secondary_color": "Black" }, { "theme": "Bloodrush", @@ -2372,30 +766,7 @@ "Combat Matters" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Old Rutstein - Synergy (Blood Token)", - "Kamber, the Plunderer - Synergy (Blood Token)", - "Strefan, Maurer Progenitor - Synergy (Blood Token)", - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)" - ], - "example_cards": [ - "Wasteland Viper", - "Rubblehulk", - "Ghor-Clan Rampager", - "Skarrg Goliath", - "Pyrewild Shaman", - "Rubblebelt Maaka", - "Wrecking Ogre", - "Skinbrand Goblin" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Uses Blood tokens to loot, set up graveyard recursion, and trigger discard/madness payoffs. Synergies like Blood Token and Aggro reinforce the plan." + "secondary_color": "Green" }, { "theme": "Bloodthirst", @@ -2407,31 +778,7 @@ "Counters Matter" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Indoraptor, the Perfect Hybrid", - "Old Rutstein - Synergy (Blood Token)", - "Kamber, the Plunderer - Synergy (Blood Token)", - "Strefan, Maurer Progenitor - Synergy (Blood Token)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Bloodlord of Vaasgoth", - "Indoraptor, the Perfect Hybrid", - "Carnage Wurm", - "Skarrgan Firebird", - "Furyborn Hellkite", - "Duskhunter Bat", - "Gorehorn Minotaurs", - "Stormblood Berserker" - ], - "synergy_commanders": [ - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Syr Konrad, the Grim - Synergy (Burn)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Uses Blood tokens to loot, set up graveyard recursion, and trigger discard/madness payoffs. Synergies like Blood Token and +1/+1 Counters reinforce the plan." + "secondary_color": "Green" }, { "theme": "Boar Kindred", @@ -2443,33 +790,7 @@ "Creature Tokens" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Ilharg, the Raze-Boar", - "Yasharn, Implacable Earth", - "Raggadragga, Goreguts Boss", - "Loot, Exuberant Explorer - Synergy (Beast Kindred)", - "Questing Beast - Synergy (Beast Kindred)" - ], - "example_cards": [ - "Curse of the Swine", - "End-Raze Forerunners", - "Ilharg, the Raze-Boar", - "Archetype of Endurance", - "Yasharn, Implacable Earth", - "Contraband Livestock", - "Prize Pig", - "Raggadragga, Goreguts Boss" - ], - "synergy_commanders": [ - "Kona, Rescue Beastie - Synergy (Beast Kindred)", - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Boar creatures into play with shared payoffs (e.g., Beast Kindred and Trample)." + "secondary_color": "Red" }, { "theme": "Board Wipes", @@ -2481,33 +802,7 @@ "Sagas Matter" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Syr Konrad, the Grim", - "Purphoros, God of the Forge", - "Ashling, Flame Dancer", - "Emrakul, the World Anew", - "Dragonhawk, Fate's Tempest" - ], - "example_cards": [ - "Blasphemous Act", - "Cyclonic Rift", - "Toxic Deluge", - "Farewell", - "Austere Command", - "Impact Tremors", - "Syr Konrad, the Grim", - "Scavenger Grounds" - ], - "synergy_commanders": [ - "Hokori, Dust Drinker - Synergy (Bracket:MassLandDenial)", - "Myojin of Infinite Rage - Synergy (Bracket:MassLandDenial)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Pingers)", - "Toski, Bearer of Secrets - Synergy (Interaction)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Board Wipes leveraging synergies with Bracket:MassLandDenial and Pingers." + "secondary_color": "White" }, { "theme": "Boast", @@ -2519,33 +814,7 @@ "Aggro" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Varragoth, Bloodsky Sire", - "Sigurd, Jarl of Ravensthorpe", - "Arni Brokenbrow", - "Kardur, Doomscourge - Synergy (Berserker Kindred)", - "Magda, Brazen Outlaw - Synergy (Berserker Kindred)" - ], - "example_cards": [ - "Varragoth, Bloodsky Sire", - "Broadside Bombardiers", - "Eradicator Valkyrie", - "Sigurd, Jarl of Ravensthorpe", - "Dragonkin Berserker", - "Fearless Liberator", - "Arni Brokenbrow", - "Usher of the Fallen" - ], - "synergy_commanders": [ - "Alexios, Deimos of Kosmos - Synergy (Berserker Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Boast leveraging synergies with Berserker Kindred and Warrior Kindred." + "secondary_color": "Black" }, { "theme": "Bolster", @@ -2557,54 +826,15 @@ "Soldier Kindred" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Anafenza, Kin-Tree Spirit", - "Dromoka, the Eternal", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Anafenza, Kin-Tree Spirit", - "Elite Scaleguard", - "Dromoka, the Eternal", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader", - "Map the Wastes", - "Gleam of Authority", - "Dragonscale General", - "Sandsteppe War Riders" - ], - "synergy_commanders": [ - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Samut, Voice of Dissent - Synergy (Combat Tricks)", - "Naru Meha, Master Wizard - Synergy (Combat Tricks)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Bolster leveraging synergies with +1/+1 Counters and Combat Tricks." + "secondary_color": "Green" }, { "theme": "Bounty Counters", - "synergies": [], - "primary_color": "Black", - "example_commanders": [ - "Shay Cormac", - "Chevill, Bane of Monsters", - "Mathas, Fiend Seeker" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "example_cards": [ - "Shay Cormac", - "Bounty Board", - "Termination Facilitator", - "Chevill, Bane of Monsters", - "Mathas, Fiend Seeker", - "Bounty Hunter" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates bounty counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black" }, { "theme": "Bracket:ExtraTurn", @@ -2615,32 +845,7 @@ "Counters Matter" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Medomai the Ageless", - "Ultimecia, Time Sorceress // Ultimecia, Omnipotent", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)" - ], - "example_cards": [ - "Final Fortune", - "Time Warp", - "Teferi, Master of Time", - "Rise of the Eldrazi", - "Nexus of Fate", - "Expropriate", - "Time Sieve", - "Temporal Mastery" - ], - "synergy_commanders": [ - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Bracket:ExtraTurn leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "Red" }, { "theme": "Bracket:GameChanger", @@ -2648,39 +853,11 @@ "Bracket:TutorNonland", "Draw Triggers", "Wheels", - "Topdeck", - "Stax" + "Historics Matter", + "Legends Matter" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Urza, Lord High Artificer", - "Kinnan, Bonder Prodigy", - "Tergrid, God of Fright // Tergrid's Lantern", - "Jin-Gitaxias, Core Augur", - "Vorinclex, Voice of Hunger" - ], - "example_cards": [ - "Rhystic Study", - "Cyclonic Rift", - "Smothering Tithe", - "Demonic Tutor", - "Ancient Tomb", - "Fierce Guardianship", - "The One Ring", - "Teferi's Protection" - ], - "synergy_commanders": [ - "Invasion of Ikoria // Zilortha, Apex of Ikoria - Synergy (Bracket:TutorNonland)", - "Magda, Brazen Outlaw - Synergy (Bracket:TutorNonland)", - "Razaketh, the Foulblooded - Synergy (Bracket:TutorNonland)", - "Braids, Arisen Nightmare - Synergy (Draw Triggers)", - "Loran of the Third Path - Synergy (Draw Triggers)", - "Sheoldred, the Apocalypse - Synergy (Wheels)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Bracket:GameChanger leveraging synergies with Bracket:TutorNonland and Draw Triggers." + "secondary_color": "Black" }, { "theme": "Bracket:MassLandDenial", @@ -2692,32 +869,7 @@ "Big Mana" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Hokori, Dust Drinker", - "Myojin of Infinite Rage", - "Syr Konrad, the Grim - Synergy (Board Wipes)", - "Purphoros, God of the Forge - Synergy (Board Wipes)", - "Ashling, Flame Dancer - Synergy (Board Wipes)" - ], - "example_cards": [ - "Blood Moon", - "Magus of the Moon", - "Winter Orb", - "Winter Moon", - "Armageddon", - "Harbinger of the Seas", - "Back to Basics", - "Static Orb" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Interaction)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Interaction)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Bracket:MassLandDenial leveraging synergies with Board Wipes and Interaction." + "secondary_color": "White" }, { "theme": "Bracket:TutorNonland", @@ -2729,46 +881,12 @@ "Toolbox" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Invasion of Ikoria // Zilortha, Apex of Ikoria", - "Magda, Brazen Outlaw", - "Razaketh, the Foulblooded", - "Varragoth, Bloodsky Sire", - "Sidisi, Undead Vizier" - ], - "example_cards": [ - "Demonic Tutor", - "Vampiric Tutor", - "Enlightened Tutor", - "Urza's Saga", - "Mystical Tutor", - "Worldly Tutor", - "Gamble", - "Diabolic Intent" - ], - "synergy_commanders": [ - "Urza, Lord High Artificer - Synergy (Bracket:GameChanger)", - "Kinnan, Bonder Prodigy - Synergy (Bracket:GameChanger)", - "Kellogg, Dangerous Mind - Synergy (Mercenary Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Bracket:TutorNonland leveraging synergies with Transmute and Bracket:GameChanger." + "secondary_color": "Green" }, { "theme": "Brushwagg Kindred", "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Ornery Tumblewagg", - "Temperamental Oozewagg", - "Almighty Brushwagg", - "Brushwagg" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Brushwagg creatures into play with shared payoffs." + "primary_color": "Green" }, { "theme": "Burn", @@ -2780,32 +898,7 @@ "Extort" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim", - "Braids, Arisen Nightmare", - "Lotho, Corrupt Shirriff", - "Sheoldred, the Apocalypse", - "Vito, Thorn of the Dusk Rose" - ], - "example_cards": [ - "Blasphemous Act", - "Ancient Tomb", - "The One Ring", - "Talisman of Dominance", - "Vampiric Tutor", - "Phyrexian Arena", - "City of Brass", - "Shivan Reef" - ], - "synergy_commanders": [ - "Elas il-Kor, Sadistic Pilgrim - Synergy (Pingers)", - "Niv-Mizzet, Parun - Synergy (Pingers)", - "Indoraptor, the Perfect Hybrid - Synergy (Bloodthirst)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Applies early pressure and combat tempo to close the game before slower value engines stabilize. Synergies like Pingers and Bloodthirst reinforce the plan." + "secondary_color": "Black" }, { "theme": "Bushido", @@ -2813,39 +906,11 @@ "Samurai Kindred", "Fox Kindred", "Human Kindred", - "Little Fellas", - "Toughness Matters" + "Historics Matter", + "Legends Matter" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Toshiro Umezawa", - "Konda, Lord of Eiganjo", - "Sensei Golden-Tail", - "Nagao, Bound by Honor", - "Takeno, Samurai General" - ], - "example_cards": [ - "Jade Avenger", - "Toshiro Umezawa", - "Konda, Lord of Eiganjo", - "Sensei Golden-Tail", - "Samurai of the Pale Curtain", - "Nagao, Bound by Honor", - "Takeno, Samurai General", - "Kentaro, the Smiling Cat" - ], - "synergy_commanders": [ - "Isshin, Two Heavens as One - Synergy (Samurai Kindred)", - "Goro-Goro, Disciple of Ryusei - Synergy (Samurai Kindred)", - "Godo, Bandit Warlord - Synergy (Samurai Kindred)", - "Light-Paws, Emperor's Voice - Synergy (Fox Kindred)", - "Pearl-Ear, Imperial Advisor - Synergy (Fox Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Bushido leveraging synergies with Samurai Kindred and Fox Kindred." + "secondary_color": "Red" }, { "theme": "Buyback", @@ -2857,73 +922,23 @@ "Removal" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "example_cards": [ - "Constant Mists", - "Reiterate", - "Clockspinning", - "Capsize", - "Haze of Rage", - "Walk the Aeons", - "Sprout Swarm", - "Forbid" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Lands Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Loops Buyback spells to convert excess mana into repeatable effects & inevitability. Synergies like Spells Matter and Spellslinger reinforce the plan." + "secondary_color": "Blue" }, { "theme": "C'tan Kindred", "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Shard of the Nightbringer", - "Shard of the Void Dragon" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of C'tan creatures into play with shared payoffs." + "primary_color": "Black" }, { "theme": "Camarid Kindred", "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Sarpadian Empires, Vol. VII", - "Homarid Spawning Bed" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Camarid creatures into play with shared payoffs." + "primary_color": "Blue" }, { "theme": "Camel Kindred", "synergies": [], "primary_color": "White", - "secondary_color": "Black", - "example_cards": [ - "Tasseled Dromedary", - "Steel Dromedary", - "Camel", - "Quarry Hauler", - "Solitary Camel", - "Wretched Camel", - "Dromad Purebred", - "Supply Caravan" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Camel creatures into play with shared payoffs." + "secondary_color": "Black" }, { "theme": "Cantrips", @@ -2935,46 +950,12 @@ "Gift" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Sythis, Harvest's Hand", - "Kwain, Itinerant Meddler", - "Thrasios, Triton Hero", - "The Goose Mother", - "Satoru, the Infiltrator" - ], - "example_cards": [ - "Mind Stone", - "Arcane Denial", - "Esper Sentinel", - "Mystic Remora", - "Ponder", - "Idol of Oblivion", - "Growth Spiral", - "Preordain" - ], - "synergy_commanders": [ - "Lonis, Cryptozoologist - Synergy (Clue Token)", - "Astrid Peth - Synergy (Clue Token)", - "Piper Wright, Publick Reporter - Synergy (Clue Token)", - "Tivit, Seller of Secrets - Synergy (Investigate)", - "Teysa, Opulent Oligarch - Synergy (Investigate)", - "Tatyova, Benthic Druid - Synergy (Unconditional Draw)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Cantrips leveraging synergies with Clue Token and Investigate." + "secondary_color": "White" }, { "theme": "Capybara Kindred", "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Basking Capybara" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Capybara creatures into play with shared payoffs." + "primary_color": "Green" }, { "theme": "Card Draw", @@ -2983,48 +964,10 @@ "Wheels", "Replacement Draw", "Unconditional Draw", - "Conditional Draw", - "Draw Triggers", - "Cantrips", - "Cycling", - "Sacrifice to Draw", - "Connive", - "Landcycling", - "Learn", - "Hellbent", - "Blitz", - "Dredge", - "Basic landcycling", - "Plainscycling" + "Conditional Draw" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Braids, Arisen Nightmare", - "Toski, Bearer of Secrets", - "Loran of the Third Path", - "Kutzil, Malamet Exemplar", - "Tatyova, Benthic Druid" - ], - "example_cards": [ - "Reliquary Tower", - "Thought Vessel", - "Mind Stone", - "Commander's Sphere", - "Solemn Simulacrum", - "Rhystic Study", - "Skullclamp", - "Smothering Tithe" - ], - "synergy_commanders": [ - "Baral, Chief of Compliance - Synergy (Loot)", - "The Locust God - Synergy (Loot)", - "Malcolm, Alluring Scoundrel - Synergy (Loot)", - "Asmodeus the Archfiend - Synergy (Replacement Draw)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Card Draw leveraging synergies with Loot and Wheels." + "secondary_color": "Black" }, { "theme": "Card Selection", @@ -3036,52 +979,14 @@ "Merfolk Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Hakbal of the Surging Soul", - "Amalia Benavides Aguirre", - "Nicanzil, Current Conductor", - "Astrid Peth", - "Francisco, Fowl Marauder" - ], - "example_cards": [ - "Get Lost", - "Hakbal of the Surging Soul", - "Path of Discovery", - "Worldwalker Helm", - "Fanatical Offering", - "Amalia Benavides Aguirre", - "Restless Anchorage", - "Seasoned Dungeoneer" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Scout Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Card Selection leveraging synergies with Explore and Map Token." + "secondary_color": "Black" }, { "theme": "Carrier Kindred", "synergies": [ "Phyrexian Kindred" ], - "primary_color": "Black", - "example_commanders": [ - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)", - "Sheoldred, the Apocalypse - Synergy (Phyrexian Kindred)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Phyrexian Kindred)" - ], - "example_cards": [ - "Phyrexian Plaguelord", - "Plague Engineer", - "Phyrexian Debaser", - "Phyrexian Defiler", - "Phyrexian Denouncer" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Carrier creatures into play with shared payoffs (e.g., Phyrexian Kindred)." + "primary_color": "Black" }, { "theme": "Cascade", @@ -3093,35 +998,7 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Maelstrom Wanderer", - "Imoti, Celebrant of Bounty", - "Zhulodok, Void Gorger", - "Wildsear, Scouring Maw", - "The First Sliver" - ], - "example_cards": [ - "Apex Devastator", - "Wild-Magic Sorcerer", - "Rain of Riches", - "Maelstrom Wanderer", - "Call Forth the Tempest", - "Imoti, Celebrant of Bounty", - "Zhulodok, Void Gorger", - "Volcanic Torrent" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Exile Matters)", - "Ragavan, Nimble Pilferer - Synergy (Exile Matters)", - "Urza, Lord High Artificer - Synergy (Exile Matters)", - "The Reality Chip - Synergy (Topdeck)", - "Loot, Exuberant Explorer - Synergy (Topdeck)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Chains cascade triggers to convert single casts into multi-spell value bursts. Synergies like Exile Matters and Topdeck reinforce the plan." + "secondary_color": "Green" }, { "theme": "Cases Matter", @@ -3129,25 +1006,7 @@ "Enchantments Matter" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Sram, Senior Edificer - Synergy (Enchantments Matter)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)", - "Jaheira, Friend of the Forest - Synergy (Enchantments Matter)" - ], - "example_cards": [ - "Case of the Locked Hothouse", - "Case of the Ransacked Lab", - "Case of the Uneaten Feast", - "Case of the Stashed Skeleton", - "Case of the Shifting Visage", - "Case of the Trampled Garden", - "Case of the Shattered Pact", - "Case of the Crimson Pulse" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Cases Matter leveraging synergies with Enchantments Matter." + "secondary_color": "Blue" }, { "theme": "Casualty", @@ -3159,30 +1018,7 @@ "Spellslinger" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Jin-Gitaxias, Progress Tyrant - Synergy (Spell Copy)", - "Kitsa, Otterball Elite - Synergy (Spell Copy)", - "Krark, the Thumbless - Synergy (Spell Copy)", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Cut Your Losses", - "Ob Nixilis, the Adversary", - "Rob the Archives", - "Illicit Shipment", - "Cut of the Profits", - "A Little Chat", - "Make Disappear", - "Audacious Swap" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Aristocrats)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Casualty leveraging synergies with Spell Copy and Sacrifice Matters." + "secondary_color": "Blue" }, { "theme": "Cat Kindred", @@ -3194,35 +1030,7 @@ "Resource Engine" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Kutzil, Malamet Exemplar", - "Jetmir, Nexus of Revels", - "Sovereign Okinec Ahau", - "Mirri, Weatherlight Duelist", - "Jolrael, Mwonvuli Recluse" - ], - "example_cards": [ - "Kutzil, Malamet Exemplar", - "Felidar Retreat", - "Displacer Kitten", - "Temur Sabertooth", - "Enduring Curiosity", - "Lion Sash", - "Ocelot Pride", - "Felidar Guardian" - ], - "synergy_commanders": [ - "Chatterfang, Squirrel General - Synergy (Forestwalk)", - "Jedit Ojanen of Efrava - Synergy (Forestwalk)", - "Mirri, Cat Warrior - Synergy (Forestwalk)", - "Dr. Madison Li - Synergy (Energy Counters)", - "Satya, Aetherflux Genius - Synergy (Energy Counters)", - "Loran of the Third Path - Synergy (Vigilance)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Cat creatures into play with shared payoffs (e.g., Forestwalk and Energy Counters)." + "secondary_color": "Green" }, { "theme": "Celebration", @@ -3230,27 +1038,7 @@ "Little Fellas" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Ash, Party Crasher", - "Goddric, Cloaked Reveler", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Raging Battle Mouse", - "Ash, Party Crasher", - "Pests of Honor", - "Goddric, Cloaked Reveler", - "Armory Mice", - "Lady of Laughter", - "Bespoke Battlegarb", - "Gallant Pie-Wielder" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Celebration leveraging synergies with Little Fellas." + "secondary_color": "White" }, { "theme": "Centaur Kindred", @@ -3262,35 +1050,7 @@ "Warrior Kindred" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Karador, Ghost Chieftain", - "Nikya of the Old Ways", - "Yarus, Roar of the Old Gods", - "Braulios of Pheres Band", - "Seton, Krosan Protector" - ], - "example_cards": [ - "Courser of Kruphix", - "Herald of the Pantheon", - "Conclave Mentor", - "Hunted Horror", - "Stonehoof Chieftain", - "Rampage of the Clans", - "Karador, Ghost Chieftain", - "Nikya of the Old Ways" - ], - "synergy_commanders": [ - "Legolas Greenleaf - Synergy (Archer Kindred)", - "Finneas, Ace Archer - Synergy (Archer Kindred)", - "Tor Wauki the Younger - Synergy (Archer Kindred)", - "Selvala, Heart of the Wilds - Synergy (Scout Kindred)", - "Delney, Streetwise Lookout - Synergy (Scout Kindred)", - "Tatyova, Benthic Druid - Synergy (Druid Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Centaur creatures into play with shared payoffs (e.g., Archer Kindred and Scout Kindred)." + "secondary_color": "White" }, { "theme": "Champion", @@ -3299,27 +1059,7 @@ "Combat Matters" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Combat Matters)", - "Sheoldred, the Apocalypse - Synergy (Combat Matters)" - ], - "example_cards": [ - "Wren's Run Packmaster", - "Wanderwine Prophets", - "Mistbind Clique", - "Changeling Berserker", - "Lightning Crafter", - "Unstoppable Ash", - "Changeling Titan", - "Boggart Mob" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Champion leveraging synergies with Aggro and Combat Matters." + "secondary_color": "Green" }, { "theme": "Changeling", @@ -3331,31 +1071,7 @@ "Toughness Matters" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Morophon, the Boundless", - "Orvar, the All-Form", - "Moritte of the Frost", - "Omo, Queen of Vesuva - Synergy (Shapeshifter Kindred)", - "Samut, Voice of Dissent - Synergy (Combat Tricks)" - ], - "example_cards": [ - "Realmwalker", - "Changeling Outcast", - "Mirror Entity", - "Taurean Mauler", - "Morophon, the Boundless", - "Bloodline Pretender", - "Masked Vandal", - "Universal Automaton" - ], - "synergy_commanders": [ - "Naru Meha, Master Wizard - Synergy (Combat Tricks)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Changeling leveraging synergies with Shapeshifter Kindred and Combat Tricks." + "secondary_color": "Blue" }, { "theme": "Channel", @@ -3363,87 +1079,29 @@ "Spirit Kindred", "Cost Reduction", "Lands Matter", - "Artifacts Matter", - "Enchantments Matter" + "Historics Matter", + "Legends Matter" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Shigeki, Jukai Visionary", - "Arashi, the Sky Asunder", - "Jiwari, the Earth Aflame", - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)" - ], - "example_cards": [ - "Boseiju, Who Endures", - "Otawara, Soaring City", - "Takenuma, Abandoned Mire", - "Eiganjo, Seat of the Empire", - "Sokenzan, Crucible of Defiance", - "Shigeki, Jukai Visionary", - "Touch the Spirit Realm", - "Colossal Skyturtle" - ], - "synergy_commanders": [ - "Junji, the Midnight Sky - Synergy (Spirit Kindred)", - "Ghalta, Primal Hunger - Synergy (Cost Reduction)", - "Emry, Lurker of the Loch - Synergy (Cost Reduction)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Channel leveraging synergies with Spirit Kindred and Cost Reduction." + "secondary_color": "Blue" }, { "theme": "Charge Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Station", "Mana Rock", - "Counters Matter", - "Artifacts Matter", - "Ramp" + "Artifacts Matter" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Hearthhull, the Worldseed", - "Inspirit, Flagship Vessel", - "Dawnsire, Sunstar Dreadnought", - "The Seriema", - "Infinite Guideline Station" - ], - "example_cards": [ - "Everflowing Chalice", - "Black Market", - "Door of Destinies", - "Blast Zone", - "Astral Cornucopia", - "Primal Amulet // Primal Wellspring", - "Coalition Relic", - "Umezawa's Jitte" - ], - "synergy_commanders": [ - "Codsworth, Handy Helper - Synergy (Mana Rock)", - "Karn, Legacy Reforged - Synergy (Mana Rock)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Accumulates charge counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Blue" }, { "theme": "Child Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Red", - "example_cards": [ - "Wee Champion", - "A Real Handful" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Child creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Chimera Kindred", @@ -3451,82 +1109,25 @@ "Big Mana" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Gnostro, Voice of the Crags", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)" - ], - "example_cards": [ - "Apex Devastator", - "Perplexing Chimera", - "Treeshaker Chimera", - "Horizon Chimera", - "Majestic Myriarch", - "Spellheart Chimera", - "Embermouth Sentinel", - "Riptide Chimera" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Chimera creatures into play with shared payoffs (e.g., Big Mana)." + "secondary_color": "Green" }, { "theme": "Choose a background", "synergies": [ "Backgrounds Matter", + "Historics Matter", + "Legends Matter", "Elf Kindred", - "Cleric Kindred", - "Enchantments Matter", - "Artifact Tokens" + "Cleric Kindred" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Jaheira, Friend of the Forest", - "Karlach, Fury of Avernus", - "Lae'zel, Vlaakith's Champion", - "Ganax, Astral Hunter", - "Zellix, Sanity Flayer" - ], - "example_cards": [ - "Jaheira, Friend of the Forest", - "Karlach, Fury of Avernus", - "Lae'zel, Vlaakith's Champion", - "Ganax, Astral Hunter", - "Zellix, Sanity Flayer", - "Abdel Adrian, Gorion's Ward", - "Wyll, Blade of Frontiers", - "Wilson, Refined Grizzly" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Elf Kindred)", - "Rishkar, Peema Renegade - Synergy (Elf Kindred)", - "Vito, Thorn of the Dusk Rose - Synergy (Cleric Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Pairs a Commander with Backgrounds for modular static buffs & class-style customization. Synergies like Backgrounds Matter and Elf Kindred reinforce the plan." + "secondary_color": "Red" }, { "theme": "Chroma", "synergies": [], "primary_color": "Red", - "secondary_color": "Green", - "example_cards": [ - "Springjack Shepherd", - "Primalcrux", - "Light from Within", - "Sanity Grinding", - "Outrage Shaman", - "Heartlash Cinder", - "Umbra Stalker", - "Phosphorescent Feast" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Chroma theme and its supporting synergies." + "secondary_color": "Green" }, { "theme": "Cipher", @@ -3537,30 +1138,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Combat Matters)", - "Sheoldred, the Apocalypse - Synergy (Combat Matters)" - ], - "example_cards": [ - "Whispering Madness", - "Stolen Identity", - "Hidden Strings", - "Arcane Heist", - "Writ of Return", - "Voidwalk", - "Trait Doctoring", - "Hands of Binding" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Cipher leveraging synergies with Aggro and Combat Matters." + "secondary_color": "Black" }, { "theme": "Citizen Kindred", @@ -3572,34 +1150,7 @@ "Treasure Token" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Peregrin Took", - "Ms. Bumbleflower", - "O'aka, Traveling Merchant", - "Meriadoc Brandybuck", - "Lobelia, Defender of Bag End" - ], - "example_cards": [ - "Delighted Halfling", - "Peregrin Took", - "Witty Roastmaster", - "Prosperous Innkeeper", - "Grand Crescendo", - "Halo Fountain", - "Witness Protection", - "Rabble Rousing" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Halfling Kindred)", - "Rosie Cotton of South Lane - Synergy (Halfling Kindred)", - "Samwise Gamgee - Synergy (Food Token)", - "Farmer Cotton - Synergy (Food Token)", - "Syr Ginger, the Meal Ender - Synergy (Food)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Citizen creatures into play with shared payoffs (e.g., Halfling Kindred and Food Token)." + "secondary_color": "White" }, { "theme": "Clash", @@ -3611,31 +1162,7 @@ "Spells Matter" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Marvo, Deep Operative", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Krenko, Mob Boss - Synergy (Warrior Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Control)" - ], - "example_cards": [ - "Marvo, Deep Operative", - "Research the Deep", - "Revive the Fallen", - "Hoarder's Greed", - "Broken Ambitions", - "Scattering Stroke", - "Captivating Glance", - "Whirlpool Whelm" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Control)", - "Ulamog, the Infinite Gyre - Synergy (Removal)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Clash leveraging synergies with Warrior Kindred and Control." + "secondary_color": "Green" }, { "theme": "Cleave", @@ -3644,27 +1171,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "example_cards": [ - "Wash Away", - "Dig Up", - "Alchemist's Retrieval", - "Alchemist's Gambit", - "Winged Portent", - "Fierce Retribution", - "Path of Peril", - "Lantern Flare" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Cleave leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "Black" }, { "theme": "Cleric Kindred", @@ -3676,55 +1183,13 @@ "Lifegain Triggers" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Vito, Thorn of the Dusk Rose", - "Elas il-Kor, Sadistic Pilgrim", - "Mangara, the Diplomat", - "Yawgmoth, Thran Physician", - "Mikaeus, the Unhallowed" - ], - "example_cards": [ - "Grand Abolisher", - "Ramunap Excavator", - "Vito, Thorn of the Dusk Rose", - "Mother of Runes", - "Soul Warden", - "Elas il-Kor, Sadistic Pilgrim", - "Archivist of Oghma", - "Selfless Spirit" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Lifegain)", - "Sheoldred, the Apocalypse - Synergy (Lifegain)", - "Light-Paws, Emperor's Voice - Synergy (Fox Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Cleric creatures into play with shared payoffs (e.g., Lifegain and Life Matters)." + "secondary_color": "Black" }, { "theme": "Cloak", "synergies": [], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Etrata, Deadly Fugitive", - "Vannifar, Evolved Enigma" - ], - "example_cards": [ - "Unexplained Absence", - "Etrata, Deadly Fugitive", - "Vannifar, Evolved Enigma", - "Ransom Note", - "Hide in Plain Sight", - "Become Anonymous", - "Cryptic Coat", - "Veiled Ascension" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Cloak theme and its supporting synergies." + "secondary_color": "White" }, { "theme": "Clones", @@ -3736,33 +1201,7 @@ "Shapeshifter Kindred" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Mondrak, Glory Dominus", - "Kiki-Jiki, Mirror Breaker", - "Sakashima of a Thousand Faces", - "Feldon of the Third Path", - "Adrix and Nev, Twincasters" - ], - "example_cards": [ - "Scute Swarm", - "Doubling Season", - "Phyrexian Metamorph", - "Anointed Procession", - "Mondrak, Glory Dominus", - "Spark Double", - "Helm of the Host", - "Parallel Lives" - ], - "synergy_commanders": [ - "The Master, Multiplied - Synergy (Myriad)", - "Trostani, Selesnya's Voice - Synergy (Populate)", - "Cayth, Famed Mechanist - Synergy (Populate)", - "Temmet, Vizier of Naktamun - Synergy (Embalm)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Clones leveraging synergies with Myriad and Populate." + "secondary_color": "Green" }, { "theme": "Clown Kindred", @@ -3773,84 +1212,25 @@ "Little Fellas" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "The Jolly Balloon Man", - "Pietra, Crafter of Clowns", - "Codsworth, Handy Helper - Synergy (Robot Kindred)", - "K-9, Mark I - Synergy (Robot Kindred)", - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist - Synergy (Robot Kindred)" - ], - "example_cards": [ - "The Jolly Balloon Man", - "Celebr-8000", - "Circuits Act", - "Complaints Clerk", - "Razorkin Hordecaller", - "Vicious Clown", - "Non-Human Cannonball", - "One-Clown Band" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Mondrak, Glory Dominus - Synergy (Tokens Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Clown creatures into play with shared payoffs (e.g., Robot Kindred and Artifacts Matter)." + "secondary_color": "White" }, { "theme": "Clue Token", "synergies": [ + "Tokens Matter", "Investigate", "Detective Kindred", "Sacrifice to Draw", - "Artifact Tokens", - "Cantrips" + "Artifact Tokens" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Lonis, Cryptozoologist", - "Astrid Peth", - "Piper Wright, Publick Reporter", - "Teysa, Opulent Oligarch", - "Martha Jones" - ], - "example_cards": [ - "Academy Manufactor", - "Tireless Tracker", - "Forensic Gadgeteer", - "Tamiyo's Journal", - "Ethereal Investigator", - "Lonis, Cryptozoologist", - "Wojek Investigator", - "Disorder in the Court" - ], - "synergy_commanders": [ - "Tivit, Seller of Secrets - Synergy (Investigate)", - "Kellan, Inquisitive Prodigy // Tail the Suspect - Synergy (Detective Kindred)", - "Nelly Borca, Impulsive Accuser - Synergy (Detective Kindred)", - "Braids, Arisen Nightmare - Synergy (Sacrifice to Draw)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Investigate and Detective Kindred reinforce the plan." + "secondary_color": "White" }, { "theme": "Cockatrice Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Green", - "example_cards": [ - "Fleetfeather Cockatrice", - "Cockatrice", - "Deathgaze Cockatrice" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Cockatrice creatures into play with shared payoffs." + "secondary_color": "Green" }, { "theme": "Cohort", @@ -3859,27 +1239,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Drana, Liberator of Malakir - Synergy (Ally Kindred)", - "Mina and Denn, Wildborn - Synergy (Ally Kindred)", - "Zada, Hedron Grinder - Synergy (Ally Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)" - ], - "example_cards": [ - "Munda's Vanguard", - "Malakir Soothsayer", - "Zada's Commando", - "Drana's Chosen", - "Akoum Flameseeker", - "Stoneforge Acolyte", - "Ondu War Cleric", - "Spawnbinder Mage" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Cohort leveraging synergies with Ally Kindred and Little Fellas." + "secondary_color": "Black" }, { "theme": "Collect evidence", @@ -3891,31 +1251,7 @@ "Little Fellas" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Izoni, Center of the Web", - "Kellan, Inquisitive Prodigy // Tail the Suspect - Synergy (Detective Kindred)", - "Nelly Borca, Impulsive Accuser - Synergy (Detective Kindred)", - "Piper Wright, Publick Reporter - Synergy (Detective Kindred)", - "Syr Konrad, the Grim - Synergy (Mill)" - ], - "example_cards": [ - "Analyze the Pollen", - "Forensic Researcher", - "Axebane Ferox", - "Detective's Phoenix", - "Deadly Cover-Up", - "Izoni, Center of the Web", - "Extract a Confession", - "Conspiracy Unraveler" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Mill)", - "Etali, Primal Storm - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Collect evidence leveraging synergies with Detective Kindred and Mill." + "secondary_color": "Blue" }, { "theme": "Combat Matters", @@ -3927,32 +1263,7 @@ "Trample" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Etali, Primal Storm", - "Ragavan, Nimble Pilferer", - "Toski, Bearer of Secrets", - "Kutzil, Malamet Exemplar", - "Sheoldred, the Apocalypse" - ], - "example_cards": [ - "Swiftfoot Boots", - "Lightning Greaves", - "Skullclamp", - "Rhythm of the Wild", - "Wild Growth", - "Karn's Bastion", - "Animate Dead", - "Hardened Scales" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)", - "Rishkar, Peema Renegade - Synergy (Voltron)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Combat Matters leveraging synergies with Aggro and Voltron." + "secondary_color": "Red" }, { "theme": "Combat Tricks", @@ -3964,50 +1275,13 @@ "Overload" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Samut, Voice of Dissent", - "Naru Meha, Master Wizard", - "The Wandering Rescuer", - "Ambrosia Whiteheart", - "Deathleaper, Terror Weapon" - ], - "example_cards": [ - "Return of the Wildspeaker", - "Boros Charm", - "Akroma's Will", - "Tyvar's Stand", - "Tragic Slip", - "Defile", - "Dictate of Erebos", - "Dismember" - ], - "synergy_commanders": [ - "Liberator, Urza's Battlethopter - Synergy (Flash)", - "Jin-Gitaxias, Core Augur - Synergy (Flash)", - "Malcolm, Alluring Scoundrel - Synergy (Flash)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Combat Tricks leveraging synergies with Flash and Strive." + "secondary_color": "Green" }, { "theme": "Compleated", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Vraska, Betrayal's Sting", - "Nissa, Ascended Animist", - "Jace, the Perfected Mind", - "Ajani, Sleeper Agent", - "Tamiyo, Compleated Sage", - "Lukka, Bound to Ruin", - "Nahiri, the Unforgiving" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Compleated theme and its supporting synergies." + "secondary_color": "Blue" }, { "theme": "Conditional Draw", @@ -4019,55 +1293,13 @@ "Investigate" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Toski, Bearer of Secrets", - "Kutzil, Malamet Exemplar", - "Sram, Senior Edificer", - "Selvala, Heart of the Wilds", - "Mangara, the Diplomat" - ], - "example_cards": [ - "Rhystic Study", - "Esper Sentinel", - "The One Ring", - "Mystic Remora", - "Garruk's Uprising", - "Beast Whisperer", - "Idol of Oblivion", - "Inspiring Call" - ], - "synergy_commanders": [ - "Mendicant Core, Guidelight - Synergy (Max speed)", - "Vnwxt, Verbose Host - Synergy (Max speed)", - "Zahur, Glory's Past - Synergy (Max speed)", - "The Speed Demon - Synergy (Start your engines!)", - "Hazoret, Godseeker - Synergy (Start your engines!)", - "Jaxis, the Troublemaker - Synergy (Blitz)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Conditional Draw leveraging synergies with Max speed and Start your engines!." + "secondary_color": "Green" }, { "theme": "Conjure", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Rusko, Clockmaker" - ], - "example_cards": [ - "Silvanus's Invoker", - "Rusko, Clockmaker", - "Oracle of the Alpha", - "Sanguine Brushstroke", - "Toralf's Disciple", - "Sigardian Evangel" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Conjure theme and its supporting synergies." + "secondary_color": "Blue" }, { "theme": "Connive", @@ -4079,35 +1311,7 @@ "+1/+1 Counters" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Raffine, Scheming Seer", - "Kamiz, Obscura Oculus", - "Cyclonus, the Saboteur // Cyclonus, Cybertronian Fighter", - "Toluz, Clever Conductor", - "Norman Osborn // Green Goblin" - ], - "example_cards": [ - "Ledger Shredder", - "Spymaster's Vault", - "Lethal Scheme", - "Raffine, Scheming Seer", - "Body Launderer", - "Security Bypass", - "Change of Plans", - "Copycrook" - ], - "synergy_commanders": [ - "Baral, Chief of Compliance - Synergy (Loot)", - "The Locust God - Synergy (Loot)", - "Malcolm, Alluring Scoundrel - Synergy (Loot)", - "Lotho, Corrupt Shirriff - Synergy (Rogue Kindred)", - "Sakashima of a Thousand Faces - Synergy (Rogue Kindred)", - "Solphim, Mayhem Dominus - Synergy (Discard Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Uses Connive looting + counters to sculpt hands, grow threats, and feed recursion lines. Synergies like Loot and Rogue Kindred reinforce the plan." + "secondary_color": "Black" }, { "theme": "Conspire", @@ -4117,30 +1321,7 @@ "Spellslinger" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Jin-Gitaxias, Progress Tyrant - Synergy (Spell Copy)", - "Kitsa, Otterball Elite - Synergy (Spell Copy)", - "Krark, the Thumbless - Synergy (Spell Copy)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Rally the Galadhrim", - "Gleeful Sabotage", - "Mine Excavation", - "Memory Sluice", - "Disturbing Plot", - "Ghastly Discovery", - "Barkshell Blessing", - "Traitor's Roar" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Conspire leveraging synergies with Spell Copy and Spells Matter." + "secondary_color": "Blue" }, { "theme": "Constellation", @@ -4152,32 +1333,7 @@ "Reanimate" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Calix, Guided by Fate", - "Eutropia the Twice-Favored", - "Sythis, Harvest's Hand - Synergy (Nymph Kindred)", - "Goldberry, River-Daughter - Synergy (Nymph Kindred)", - "Kestia, the Cultivator - Synergy (Nymph Kindred)" - ], - "example_cards": [ - "Eidolon of Blossoms", - "Setessan Champion", - "Archon of Sun's Grace", - "Doomwake Giant", - "Grim Guardian", - "Composer of Spring", - "Calix, Guided by Fate", - "Boon of the Spirit Realm" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Enchantments Matter)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Chains enchantment drops to trigger constellation loops in draw, drain, or scaling effects. Synergies like Nymph Kindred and Enchantments Matter reinforce the plan." + "secondary_color": "White" }, { "theme": "Construct Kindred", @@ -4189,30 +1345,7 @@ "Scry" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Urza, Lord High Artificer", - "Jan Jansen, Chaos Crafter", - "Urza, Chief Artificer", - "Traxos, Scourge of Kroog", - "The Peregrine Dynamo" - ], - "example_cards": [ - "Urza's Saga", - "Foundry Inspector", - "Walking Ballista", - "Myr Battlesphere", - "Urza, Lord High Artificer", - "Scrap Trawler", - "Thought Monitor", - "Noxious Gearhulk" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Construct creatures into play with shared payoffs (e.g., Prototype and Unearth)." + "secondary_color": "White" }, { "theme": "Control", @@ -4224,32 +1357,7 @@ "Counterspells" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Lotho, Corrupt Shirriff", - "Sheoldred, Whispering One", - "Talrand, Sky Summoner", - "Niv-Mizzet, Parun", - "Mangara, the Diplomat" - ], - "example_cards": [ - "Counterspell", - "Rhystic Study", - "Cyclonic Rift", - "An Offer You Can't Refuse", - "Negate", - "Arcane Denial", - "Esper Sentinel", - "Fierce Guardianship" - ], - "synergy_commanders": [ - "Tovolar, Dire Overlord // Tovolar, the Midnight Scourge - Synergy (Daybound)", - "Arlinn, the Pack's Hope // Arlinn, the Moon's Fury - Synergy (Daybound)", - "Tivit, Seller of Secrets - Synergy (Council's dilemma)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Trades efficiently, accrues card advantage, and wins via inevitability once the board is stabilized. Synergies like Daybound and Nightbound reinforce the plan." + "secondary_color": "White" }, { "theme": "Converge", @@ -4259,30 +1367,7 @@ "Big Mana" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "example_cards": [ - "Painful Truths", - "Crystalline Crawler", - "Bring to Light", - "Prismatic Ending", - "Radiant Flames", - "Unified Front", - "Sweep the Skies", - "Woodland Wanderer" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Converge leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "Green" }, { "theme": "Convert", @@ -4294,30 +1379,7 @@ "Vehicles" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Starscream, Power Hungry // Starscream, Seeker Leader", - "Ratchet, Field Medic // Ratchet, Rescue Racer", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader" - ], - "example_cards": [ - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Starscream, Power Hungry // Starscream, Seeker Leader", - "Ratchet, Field Medic // Ratchet, Rescue Racer", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader", - "Prowl, Stoic Strategist // Prowl, Pursuit Vehicle", - "Goldbug, Humanity's Ally // Goldbug, Scrappy Scout", - "Megatron, Tyrant // Megatron, Destructive Force" - ], - "synergy_commanders": [ - "Prowl, Stoic Strategist // Prowl, Pursuit Vehicle - Synergy (Eye Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Convert leveraging synergies with Living metal and More Than Meets the Eye." + "secondary_color": "White" }, { "theme": "Convoke", @@ -4329,51 +1391,15 @@ "Removal" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Bennie Bracks, Zoologist", - "The Wandering Rescuer", - "Hogaak, Arisen Necropolis", - "Kasla, the Broken Halo", - "Syr Konrad, the Grim - Synergy (Knight Kindred)" - ], - "example_cards": [ - "Chord of Calling", - "Clever Concealment", - "City on Fire", - "Hour of Reckoning", - "Hoarding Broodlord", - "Lethal Scheme", - "Bennie Bracks, Zoologist", - "March of the Multitudes" - ], - "synergy_commanders": [ - "Adeline, Resplendent Cathar - Synergy (Knight Kindred)", - "Danitha Capashen, Paragon - Synergy (Knight Kindred)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)", - "Junji, the Midnight Sky - Synergy (Toolbox)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Converts creature presence into mana (Convoke) accelerating large or off-color spells. Synergies like Knight Kindred and Big Mana reinforce the plan." + "secondary_color": "Green" }, { "theme": "Corpse Counters", - "synergies": [], - "primary_color": "Black", - "example_commanders": [ - "Isareth the Awakener" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "example_cards": [ - "Crowded Crypt", - "From the Catacombs", - "Isareth the Awakener", - "Scavenging Ghoul" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates corpse counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black" }, { "theme": "Corrupted", @@ -4385,31 +1411,7 @@ "Mill" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Ixhel, Scion of Atraxa", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Poison Counters)", - "Skrelv, Defector Mite - Synergy (Poison Counters)", - "Skithiryx, the Blight Dragon - Synergy (Poison Counters)", - "Yawgmoth, Thran Physician - Synergy (Infect)" - ], - "example_cards": [ - "Skrelv's Hive", - "Glistening Sphere", - "Contaminant Grafter", - "The Seedcore", - "Ixhel, Scion of Atraxa", - "Phyrexian Atlas", - "Geth's Summons", - "Glissa's Retriever" - ], - "synergy_commanders": [ - "Vorinclex, Monstrous Raider - Synergy (Infect)", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Corrupted leveraging synergies with Poison Counters and Infect." + "secondary_color": "Green" }, { "theme": "Cost Reduction", @@ -4421,34 +1423,7 @@ "Leech Kindred" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Ghalta, Primal Hunger", - "Emry, Lurker of the Loch", - "Goreclaw, Terror of Qal Sisma", - "Danitha Capashen, Paragon", - "K'rrik, Son of Yawgmoth" - ], - "example_cards": [ - "Blasphemous Act", - "Boseiju, Who Endures", - "Otawara, Soaring City", - "Herald's Horn", - "Takenuma, Abandoned Mire", - "The Great Henge", - "Foundry Inspector", - "Eiganjo, Seat of the Empire" - ], - "synergy_commanders": [ - "Urza, Chief Artificer - Synergy (Affinity)", - "Nahiri, Forged in Fury - Synergy (Affinity)", - "Achilles Davenport - Synergy (Freerunning)", - "Ezio Auditore da Firenze - Synergy (Freerunning)", - "Katara, Water Tribe's Hope - Synergy (Waterbending)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Cost Reduction leveraging synergies with Affinity and Freerunning." + "secondary_color": "Red" }, { "theme": "Cost Scaling", @@ -4460,23 +1435,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Control)" - ], - "example_cards": [ - "Return the Favor", - "Insatiable Avarice", - "Great Train Heist", - "Three Steps Ahead", - "Requisition Raid", - "Smuggler's Surprise", - "Lively Dirge", - "Final Showdown" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Cost Scaling leveraging synergies with Modal and Spree." + "secondary_color": "White" }, { "theme": "Council's dilemma", @@ -4487,108 +1446,31 @@ "Big Mana" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Tivit, Seller of Secrets", - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)", - "Adeline, Resplendent Cathar - Synergy (Politics)", - "Lotho, Corrupt Shirriff - Synergy (Control)" - ], - "example_cards": [ - "Expropriate", - "Tivit, Seller of Secrets", - "Selvala's Stampede", - "Capital Punishment", - "Travel Through Caradhras", - "Messenger Jays", - "Lieutenants of the Guard", - "Orchard Elemental" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Control)", - "Kutzil, Malamet Exemplar - Synergy (Stax)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Council's dilemma leveraging synergies with Politics and Control." + "secondary_color": "Blue" }, { "theme": "Counters Matter", "synergies": [ + "Proliferate", "+1/+1 Counters", "Adapt", "Outlast", - "Proliferate", "-1/-1 Counters" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Rishkar, Peema Renegade", - "Krenko, Tin Street Kingpin", - "Yawgmoth, Thran Physician", - "Yahenni, Undying Partisan" - ], - "example_cards": [ - "The One Ring", - "Mystic Remora", - "Urza's Saga", - "Gemstone Caverns", - "Rhythm of the Wild", - "Karn's Bastion", - "Hardened Scales", - "Everflowing Chalice" - ], - "synergy_commanders": [ - "Tekuthal, Inquiry Dominus - Synergy (Proliferate)", - "Atraxa, Praetors' Voice - Synergy (Proliferate)", - "Zegana, Utopian Speaker - Synergy (Adapt)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "+1/+1 counters build across the board then get doubled, proliferated, or redistributed for exponential scaling. Synergies like Proliferate and +1/+1 Counters reinforce the plan." + "secondary_color": "White" }, { "theme": "Counterspells", "synergies": [ + "Counters Matter", + "Proliferate", "Control", "Stax", - "Interaction", - "Spells Matter", - "Spellslinger" + "Interaction" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Boromir, Warden of the Tower", - "Baral, Chief of Compliance", - "Kozilek, the Great Distortion", - "Jin-Gitaxias, Progress Tyrant", - "Venser, Shaper Savant" - ], - "example_cards": [ - "Counterspell", - "An Offer You Can't Refuse", - "Negate", - "Arcane Denial", - "Fierce Guardianship", - "Swan Song", - "Mana Drain", - "Force of Will" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Control)", - "Sheoldred, Whispering One - Synergy (Control)", - "Talrand, Sky Summoner - Synergy (Control)", - "Kutzil, Malamet Exemplar - Synergy (Stax)", - "Niv-Mizzet, Parun - Synergy (Stax)", - "Syr Konrad, the Grim - Synergy (Interaction)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Counterspells leveraging synergies with Control and Stax." + "secondary_color": "White" }, { "theme": "Coven", @@ -4600,65 +1482,19 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Leinore, Autumn Sovereign", - "Sigarda, Champion of Light", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Loran of the Third Path - Synergy (Human Kindred)" - ], - "example_cards": [ - "Augur of Autumn", - "Leinore, Autumn Sovereign", - "Redemption Choir", - "Stalwart Pathlighter", - "Ambitious Farmhand // Seasoned Cathar", - "Sigarda, Champion of Light", - "Duel for Dominance", - "Contortionist Troupe" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Coven leveraging synergies with Human Kindred and Blink." + "secondary_color": "Green" }, { "theme": "Coward Kindred", "synergies": [], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Norin, Swift Survivalist" - ], - "example_cards": [ - "Reprobation", - "Norin, Swift Survivalist", - "Kargan Intimidator", - "Boldwyr Intimidator", - "Craven Hulk", - "Scared Stiff" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Coward creatures into play with shared payoffs." + "secondary_color": "Black" }, { "theme": "Coyote Kindred", "synergies": [], "primary_color": "Red", - "secondary_color": "White", - "example_cards": [ - "Cunning Coyote", - "Driftgloom Coyote" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Coyote creatures into play with shared payoffs." + "secondary_color": "White" }, { "theme": "Crab Kindred", @@ -4670,32 +1506,7 @@ "Leave the Battlefield" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Charix, the Raging Isle", - "Red Death, Shipwrecker", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)" - ], - "example_cards": [ - "Ruin Crab", - "Hedron Crab", - "Charix, the Raging Isle", - "Mirelurk Queen", - "Uchuulon", - "Red Death, Shipwrecker", - "Crabomination", - "Hard Evidence" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Crab creatures into play with shared payoffs (e.g., Toughness Matters and Mill)." + "secondary_color": "Black" }, { "theme": "Craft", @@ -4707,69 +1518,19 @@ "Mill" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Tetzin, Gnome Champion // The Golden-Gear Colossus", - "Throne of the Grim Captain // The Grim Captain", - "Octavia, Living Thesis - Synergy (Graveyard Matters)", - "Extus, Oriq Overlord // Awaken the Blood Avatar - Synergy (Graveyard Matters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)" - ], - "example_cards": [ - "Tithing Blade // Consuming Sepulcher", - "The Enigma Jewel // Locus of Enlightenment", - "Unstable Glyphbridge // Sandswirl Wanderglyph", - "Altar of the Wretched // Wretched Bonemass", - "Clay-Fired Bricks // Cosmium Kiln", - "Braided Net // Braided Quipu", - "Eye of Ojer Taq // Apex Observatory", - "Master's Guide-Mural // Master's Manufactory" - ], - "synergy_commanders": [ - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Transform)", - "Etali, Primal Storm - Synergy (Exile Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Transforms / upgrades permanents via Craft, banking latent value until a timing pivot. Synergies like Graveyard Matters and Transform reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Creature Tokens", "synergies": [ + "Tokens Matter", "Token Creation", "Populate", - "Tokens Matter", "For Mirrodin!", "Endure" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Adeline, Resplendent Cathar", - "Talrand, Sky Summoner", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Krenko, Tin Street Kingpin", - "Sai, Master Thopterist" - ], - "example_cards": [ - "Beast Within", - "Generous Gift", - "Swan Song", - "Urza's Saga", - "Black Market Connections", - "Pongify", - "Stroke of Midnight", - "Idol of Oblivion" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Tokens Matter)", - "Mondrak, Glory Dominus - Synergy (Tokens Matter)", - "Lotho, Corrupt Shirriff - Synergy (Tokens Matter)", - "Trostani, Selesnya's Voice - Synergy (Populate)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Tokens Matter and Token Creation reinforce the plan." + "secondary_color": "Green" }, { "theme": "Crew", @@ -4781,33 +1542,7 @@ "Vigilance" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Shorikai, Genesis Engine", - "The Indomitable", - "Weatherlight", - "Skysovereign, Consul Flagship", - "Parhelion II" - ], - "example_cards": [ - "Hedge Shredder", - "Smuggler's Copter", - "Imposter Mech", - "Shorikai, Genesis Engine", - "The Indomitable", - "Weatherlight", - "Skysovereign, Consul Flagship", - "Cultivator's Caravan" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Vehicles)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Lotho, Corrupt Shirriff - Synergy (Treasure Token)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Uses under-costed Vehicles and efficient crew bodies—turning transient artifacts into evasive, hard-to-wipe threats." + "secondary_color": "White" }, { "theme": "Crocodile Kindred", @@ -4819,32 +1554,7 @@ "Big Mana" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "The Pride of Hull Clade", - "Kalakscion, Hunger Tyrant", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Krenko, Tin Street Kingpin - Synergy (Counters Matter)" - ], - "example_cards": [ - "The Pride of Hull Clade", - "Crocanura", - "Kalakscion, Hunger Tyrant", - "Ammit Eternal", - "Injector Crocodile", - "Baleful Ammit", - "Scuttlegator", - "Algae Gharial" - ], - "synergy_commanders": [ - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Yahenni, Undying Partisan - Synergy (+1/+1 Counters)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Crocodile creatures into play with shared payoffs (e.g., Counters Matter and +1/+1 Counters)." + "secondary_color": "Green" }, { "theme": "Cumulative upkeep", @@ -4856,67 +1566,18 @@ "Stax" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Morinfen", - "Gallowbraid", - "Tasha, the Witch Queen - Synergy (Age Counters)", - "Cosima, God of the Voyage // The Omenkeel - Synergy (Age Counters)", - "Mairsil, the Pretender - Synergy (Age Counters)" - ], - "example_cards": [ - "Mystic Remora", - "Glacial Chasm", - "Braid of Fire", - "Phyrexian Soulgorger", - "Wall of Shards", - "Karplusan Minotaur", - "Tombstone Stairwell", - "Sheltering Ancient" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Cumulative upkeep leveraging synergies with Age Counters and Counters Matter." + "secondary_color": "Green" }, { "theme": "Custodes Kindred", "synergies": [], - "primary_color": "White", - "example_cards": [ - "Vexilus Praetor" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Custodes creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Cyberman Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "The Cyber-Controller", - "Missy", - "Ashad, the Lone Cyberman" - ], - "example_cards": [ - "Cybermen Squadron", - "Cyberman Patrol", - "Cyber Conversion", - "Cybership", - "The Cyber-Controller", - "Death in Heaven", - "Missy", - "Ashad, the Lone Cyberman" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Cyberman creatures into play with shared payoffs." + "secondary_color": "Blue" }, { "theme": "Cycling", @@ -4928,27 +1589,7 @@ "Forestcycling" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "The Balrog of Moria", - "Monstrosity of the Lake", - "Yidaro, Wandering Monster", - "Valor's Flagship", - "Gavi, Nest Warden" - ], - "example_cards": [ - "Ash Barrens", - "Jetmir's Garden", - "Ketria Triome", - "Spara's Headquarters", - "Zagoth Triome", - "Raffine's Tower", - "Indatha Triome", - "Xander's Lounge" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Cycling leveraging synergies with Landcycling and Basic landcycling." + "secondary_color": "White" }, { "theme": "Cyclops Kindred", @@ -4960,55 +1601,12 @@ "Aggro" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Okaun, Eye of Chaos", - "Borborygmos Enraged", - "Borborygmos and Fblthp", - "Borborygmos", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "example_cards": [ - "Okaun, Eye of Chaos", - "Borborygmos Enraged", - "Crackling Cyclops", - "Borborygmos and Fblthp", - "Borborygmos", - "Cyclops of Eternal Fury", - "Bloodshot Cyclops", - "Erratic Cyclops" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Cyclops creatures into play with shared payoffs (e.g., Big Mana and Blink)." + "secondary_color": "Black" }, { "theme": "Dalek Kindred", "synergies": [], - "primary_color": "Black", - "example_commanders": [ - "The Dalek Emperor", - "Cult of Skaro" - ], - "example_cards": [ - "Dalek Squadron", - "Dalek Drone", - "Doomsday Confluence", - "The Dalek Emperor", - "Exterminate!", - "Cult of Skaro", - "Ace's Baseball Bat" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Dalek creatures into play with shared payoffs." + "primary_color": "Black" }, { "theme": "Dash", @@ -5020,33 +1618,7 @@ "Aggro" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Kolaghan, the Storm's Fury", - "Zurgo Bellstriker", - "Plargg and Nassari - Synergy (Orc Kindred)", - "Cadira, Caller of the Small - Synergy (Orc Kindred)" - ], - "example_cards": [ - "Ragavan, Nimble Pilferer", - "Flamerush Rider", - "Kolaghan, the Storm's Fury", - "Riders of Rohan", - "Mardu Strike Leader", - "Death-Greeter's Champion", - "Mardu Shadowspear", - "Zurgo Bellstriker" - ], - "synergy_commanders": [ - "Saruman, the White Hand - Synergy (Orc Kindred)", - "Kardur, Doomscourge - Synergy (Berserker Kindred)", - "Magda, Brazen Outlaw - Synergy (Berserker Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Dash leveraging synergies with Orc Kindred and Berserker Kindred." + "secondary_color": "Black" }, { "theme": "Dauthi Kindred", @@ -5056,25 +1628,7 @@ "Combat Matters", "Little Fellas" ], - "primary_color": "Black", - "example_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Combat Matters)" - ], - "example_cards": [ - "Dauthi Voidwalker", - "Dauthi Horror", - "Dauthi Slayer", - "Dauthi Trapper", - "Dauthi Ghoul", - "Dauthi Warlord", - "Dauthi Cutthroat", - "Dauthi Mercenary" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Dauthi creatures into play with shared payoffs (e.g., Shadow and Aggro)." + "primary_color": "Black" }, { "theme": "Daybound", @@ -5086,30 +1640,7 @@ "Toughness Matters" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Tovolar, Dire Overlord // Tovolar, the Midnight Scourge", - "Vincent Valentine // Galian Beast - Synergy (Werewolf Kindred)", - "Ulrich of the Krallenhorde // Ulrich, Uncontested Alpha - Synergy (Werewolf Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Control)", - "Sheoldred, Whispering One - Synergy (Control)" - ], - "example_cards": [ - "Outland Liberator // Frenzied Trapbreaker", - "Tovolar, Dire Overlord // Tovolar, the Midnight Scourge", - "Ill-Tempered Loner // Howlpack Avenger", - "Avabruck Caretaker // Hollowhenge Huntmaster", - "Tovolar's Huntmaster // Tovolar's Packleader", - "Howlpack Piper // Wildsong Howler", - "Kessig Naturalist // Lord of the Ulvenwald", - "Arlinn, the Pack's Hope // Arlinn, the Moon's Fury" - ], - "synergy_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Stax)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Daybound leveraging synergies with Werewolf Kindred and Control." + "secondary_color": "Red" }, { "theme": "Deathtouch", @@ -5121,32 +1652,7 @@ "Spider Kindred" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Sheoldred, the Apocalypse", - "Elas il-Kor, Sadistic Pilgrim", - "The Gitrog Monster", - "Gonti, Lord of Luxury", - "Glissa Sunslayer" - ], - "example_cards": [ - "Baleful Strix", - "Sheoldred, the Apocalypse", - "Elas il-Kor, Sadistic Pilgrim", - "Wurmcoil Engine", - "The Gitrog Monster", - "Acidic Slime", - "Grave Titan", - "Bloodthirsty Conqueror" - ], - "synergy_commanders": [ - "Magda, the Hoardmaster - Synergy (Scorpion Kindred)", - "Akul the Unrepentant - Synergy (Scorpion Kindred)", - "Vraska, the Silencer - Synergy (Gorgon Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Deathtouch leveraging synergies with Basilisk Kindred and Scorpion Kindred." + "secondary_color": "Green" }, { "theme": "Defender", @@ -5158,59 +1664,25 @@ "Illusion Kindred" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "The Pride of Hull Clade", - "Sokrates, Athenian Teacher", - "Pramikon, Sky Rampart", - "Errant, Street Artist", - "Opal-Eye, Konda's Yojimbo" - ], - "example_cards": [ - "Crashing Drawbridge", - "Wall of Omens", - "Electrostatic Field", - "Thermo-Alchemist", - "Sylvan Caryatid", - "Wall of Blossoms", - "Tinder Wall", - "Fog Bank" - ], - "synergy_commanders": [ - "Rammas Echor, Ancient Shield - Synergy (Wall Kindred)", - "Teyo, Geometric Tactician - Synergy (Wall Kindred)", - "Atla Palani, Nest Tender - Synergy (Egg Kindred)", - "Bristly Bill, Spine Sower - Synergy (Plant Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Defender leveraging synergies with Wall Kindred and Egg Kindred." + "secondary_color": "White" }, { "theme": "Defense Counters", - "synergies": [], - "primary_color": "Black", - "secondary_color": "Green", - "example_cards": [ - "Portent Tracker", - "Etched Host Doombringer" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates defense counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black", + "secondary_color": "Green" }, { "theme": "Delay Counters", - "synergies": [], - "primary_color": "Blue", - "secondary_color": "White", - "example_cards": [ - "Delaying Shield", - "Ertai's Meddling" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates delay counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Blue", + "secondary_color": "White" }, { "theme": "Delirium", @@ -5222,34 +1694,7 @@ "Enter the Battlefield" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Ishkanah, Grafwidow", - "The Swarmweaver", - "Winter, Cynical Opportunist", - "Winter, Misanthropic Guide", - "Syr Konrad, the Grim - Synergy (Reanimate)" - ], - "example_cards": [ - "Shifting Woodland", - "Dragon's Rage Channeler", - "Demonic Counsel", - "Fear of Missing Out", - "Drag to the Roots", - "Traverse the Ulvenwald", - "Demolisher Spawn", - "Ishkanah, Grafwidow" - ], - "synergy_commanders": [ - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Six - Synergy (Reanimate)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Kozilek, Butcher of Truth - Synergy (Mill)", - "Mondrak, Glory Dominus - Synergy (Horror Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Diversifies graveyard card types to unlock Delirium power thresholds. Synergies like Reanimate and Mill reinforce the plan." + "secondary_color": "Black" }, { "theme": "Delve", @@ -5261,65 +1706,17 @@ "Flying" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Tasigur, the Golden Fang", - "Hogaak, Arisen Necropolis", - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Emry, Lurker of the Loch - Synergy (Mill)" - ], - "example_cards": [ - "Treasure Cruise", - "Dig Through Time", - "Temporal Trespass", - "Afterlife from the Loam", - "Tasigur, the Golden Fang", - "Murderous Cut", - "Sorcerous Squall", - "Become Immense" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Exiles graveyard cards to pay for Delve spells, converting stocked yard into mana efficiency. Synergies like Mill and Big Mana reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Demigod Kindred", "synergies": [ + "Historics Matter", + "Legends Matter", "Enchantments Matter" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Daxos, Blessed by the Sun", - "Renata, Called to the Hunt", - "Anikthea, Hand of Erebos", - "Anax, Hardened in the Forge", - "Callaphe, Beloved of the Sea" - ], - "example_cards": [ - "Daxos, Blessed by the Sun", - "Renata, Called to the Hunt", - "Anikthea, Hand of Erebos", - "Anax, Hardened in the Forge", - "Altar of the Pantheon", - "Callaphe, Beloved of the Sea", - "Invasion of Theros // Ephara, Ever-Sheltering", - "Tymaret, Chosen from Death" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Enchantments Matter)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)", - "Jaheira, Friend of the Forest - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Demigod creatures into play with shared payoffs (e.g., Enchantments Matter)." + "secondary_color": "Blue" }, { "theme": "Demon Kindred", @@ -5331,35 +1728,7 @@ "Aristocrats" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Kardur, Doomscourge", - "Vilis, Broker of Blood", - "Westvale Abbey // Ormendahl, Profane Prince", - "Razaketh, the Foulblooded", - "Varragoth, Bloodsky Sire" - ], - "example_cards": [ - "Bloodletter of Aclazotz", - "Kardur, Doomscourge", - "Vilis, Broker of Blood", - "Rune-Scarred Demon", - "Westvale Abbey // Ormendahl, Profane Prince", - "Archfiend of Ifnir", - "Harvester of Souls", - "Razaketh, the Foulblooded" - ], - "synergy_commanders": [ - "Kazuul, Tyrant of the Cliffs - Synergy (Ogre Kindred)", - "Heartless Hidetsugu - Synergy (Ogre Kindred)", - "Ruric Thar, the Unbowed - Synergy (Ogre Kindred)", - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Niv-Mizzet, Parun - Synergy (Flying)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Demon creatures into play with shared payoffs (e.g., Ogre Kindred and Trample)." + "secondary_color": "Red" }, { "theme": "Demonstrate", @@ -5369,57 +1738,17 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Jin-Gitaxias, Progress Tyrant - Synergy (Spell Copy)", - "Kitsa, Otterball Elite - Synergy (Spell Copy)", - "Krark, the Thumbless - Synergy (Spell Copy)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Incarnation Technique", - "Replication Technique", - "Creative Technique", - "Healing Technique", - "Excavation Technique", - "Transforming Flourish" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Demonstrate leveraging synergies with Spell Copy and Spells Matter." + "secondary_color": "Black" }, { "theme": "Depletion Counters", "synergies": [ - "Lands Matter", - "Counters Matter" + "Counters Matter", + "Proliferate", + "Lands Matter" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Azusa, Lost but Seeking - Synergy (Lands Matter)", - "Tatyova, Benthic Druid - Synergy (Lands Matter)", - "Sheoldred, Whispering One - Synergy (Lands Matter)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)" - ], - "example_cards": [ - "Sandstone Needle", - "Saprazzan Skerry", - "Peat Bog", - "Hickory Woodlot", - "Remote Farm", - "Decree of Silence", - "Force Bubble", - "River Delta" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates depletion counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "White" }, { "theme": "Descend", @@ -5428,43 +1757,12 @@ "Mill" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "The Ancient One", - "Akawalli, the Seething Tower", - "Uchbenbak, the Great Mistake", - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)" - ], - "example_cards": [ - "The Everflowing Well // The Myriad Pools", - "The Ancient One", - "Starving Revenant", - "Bygone Marvels", - "Akawalli, the Seething Tower", - "Join the Dead", - "Stinging Cave Crawler", - "Wail of the Forgotten" - ], - "synergy_commanders": [ - "Six - Synergy (Reanimate)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Kozilek, Butcher of Truth - Synergy (Mill)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Descend leveraging synergies with Reanimate and Mill." + "secondary_color": "Black" }, { "theme": "Deserter Kindred", "synergies": [], - "primary_color": "White", - "example_cards": [ - "Kjeldoran Home Guard" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Deserter creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Detain", @@ -5475,31 +1773,7 @@ "Leave the Battlefield" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Lavinia of the Tenth", - "Kutzil, Malamet Exemplar - Synergy (Stax)", - "Lotho, Corrupt Shirriff - Synergy (Stax)", - "Talrand, Sky Summoner - Synergy (Stax)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "example_cards": [ - "Lavinia of the Tenth", - "Tax Collector", - "Martial Law", - "Azorius Arrester", - "Lyev Skyknight", - "Inaction Injunction", - "Azorius Justiciar", - "Archon of the Triumvirate" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Detain leveraging synergies with Stax and Blink." + "secondary_color": "Blue" }, { "theme": "Detective Kindred", @@ -5511,33 +1785,7 @@ "Sacrifice to Draw" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Kellan, Inquisitive Prodigy // Tail the Suspect", - "Nelly Borca, Impulsive Accuser", - "Piper Wright, Publick Reporter", - "Mirko, Obsessive Theorist", - "Sarah Jane Smith" - ], - "example_cards": [ - "Aftermath Analyst", - "Forensic Gadgeteer", - "Kellan, Inquisitive Prodigy // Tail the Suspect", - "Wojek Investigator", - "Nelly Borca, Impulsive Accuser", - "Merchant of Truth", - "Piper Wright, Publick Reporter", - "Detective of the Month" - ], - "synergy_commanders": [ - "Izoni, Center of the Web - Synergy (Collect evidence)", - "Tivit, Seller of Secrets - Synergy (Investigate)", - "Lonis, Cryptozoologist - Synergy (Investigate)", - "Astrid Peth - Synergy (Clue Token)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Detective creatures into play with shared payoffs (e.g., Collect evidence and Investigate)." + "secondary_color": "White" }, { "theme": "Dethrone", @@ -5549,31 +1797,7 @@ "Combat Matters" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Marchesa, the Black Rose", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "example_cards": [ - "Scourge of the Throne", - "Treasonous Ogre", - "Marchesa, the Black Rose", - "Park Heights Maverick", - "Marchesa's Infiltrator", - "Marchesa's Smuggler", - "Grenzo's Cutthroat", - "Marchesa's Emissary" - ], - "synergy_commanders": [ - "Yahenni, Undying Partisan - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Dethrone leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "Blue" }, { "theme": "Devil Kindred", @@ -5585,35 +1809,7 @@ "Aristocrats" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Mahadi, Emporium Master", - "Zurzoth, Chaos Rider", - "Raphael, Fiendish Savior", - "Rakdos, the Showstopper", - "Asmodeus the Archfiend" - ], - "example_cards": [ - "Mayhem Devil", - "Mahadi, Emporium Master", - "Witty Roastmaster", - "Devilish Valet", - "Fiendish Duo", - "Hellrider", - "Pain Distributor", - "Zurzoth, Chaos Rider" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Pingers)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Pingers)", - "Niv-Mizzet, Parun - Synergy (Pingers)", - "Aurelia, the Warleader - Synergy (Haste)", - "Yahenni, Undying Partisan - Synergy (Haste)", - "Toski, Bearer of Secrets - Synergy (Conditional Draw)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Devil creatures into play with shared payoffs (e.g., Pingers and Haste)." + "secondary_color": "Black" }, { "theme": "Devoid", @@ -5625,37 +1821,16 @@ "Eldrazi Kindred" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Ulalek, Fused Atrocity", - "Kiora, the Rising Tide - Synergy (Scion Kindred)" - ], - "example_cards": [ - "Slip Through Space", - "Sire of Stagnation", - "Eldrazi Displacer", - "Basking Broodscale", - "Sowing Mycospawn", - "Kozilek's Unsealing", - "Sifter of Skulls", - "Emrakul's Messenger" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Devoid leveraging synergies with Ingest and Processor Kindred." + "secondary_color": "Black" }, { "theme": "Devotion Counters", - "synergies": [], - "primary_color": "Black", - "secondary_color": "White", - "example_cards": [ - "Pious Kitsune", - "Bloodthirsty Ogre" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Concentrates colored pips to unlock Devotion payoffs and scalable static advantages." + "primary_color": "Black", + "secondary_color": "White" }, { "theme": "Devour", @@ -5667,31 +1842,7 @@ "Combat Matters" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Thromok the Insatiable", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "example_cards": [ - "Mycoloth", - "Feasting Hobbit", - "Ravenous Tyrannosaurus", - "Bloodspore Thrinax", - "Fell Beast of Mordor", - "Thromok the Insatiable", - "Skullmulcher", - "Voracious Dragon" - ], - "synergy_commanders": [ - "Yahenni, Undying Partisan - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Devour leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "Red" }, { "theme": "Dinosaur Kindred", @@ -5703,33 +1854,7 @@ "Cycling" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Etali, Primal Storm", - "Ghalta, Primal Hunger", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Nezahal, Primal Tide", - "Invasion of Ikoria // Zilortha, Apex of Ikoria" - ], - "example_cards": [ - "Etali, Primal Storm", - "Ghalta, Primal Hunger", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Wayward Swordtooth", - "Nezahal, Primal Tide", - "Topiary Stomper", - "Invasion of Ikoria // Zilortha, Apex of Ikoria", - "Ghalta, Stampede Tyrant" - ], - "synergy_commanders": [ - "Strong, the Brutish Thespian - Synergy (Enrage)", - "Indoraptor, the Perfect Hybrid - Synergy (Enrage)", - "Vrondiss, Rage of Ancients - Synergy (Enrage)", - "Kogla, the Titan Ape - Synergy (Fight)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Dinosaur creatures into play with shared payoffs (e.g., Enrage and Elder Kindred)." + "secondary_color": "Red" }, { "theme": "Discard Matters", @@ -5741,33 +1866,7 @@ "Cycling" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Solphim, Mayhem Dominus", - "Yawgmoth, Thran Physician", - "Nezahal, Primal Tide", - "Baral, Chief of Compliance", - "Kozilek, the Great Distortion" - ], - "example_cards": [ - "Faithless Looting", - "Frantic Search", - "Ash Barrens", - "Big Score", - "Thrill of Possibility", - "Gamble", - "Jetmir's Garden", - "Ketria Triome" - ], - "synergy_commanders": [ - "The Locust God - Synergy (Loot)", - "Malcolm, Alluring Scoundrel - Synergy (Loot)", - "Braids, Arisen Nightmare - Synergy (Wheels)", - "Loran of the Third Path - Synergy (Wheels)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Discard Matters leveraging synergies with Loot and Wheels." + "secondary_color": "Red" }, { "theme": "Discover", @@ -5779,33 +1878,7 @@ "Big Mana" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Pantlaza, Sun-Favored", - "Caparocti Sunborn", - "Ellie and Alan, Paleontologists", - "Vorinclex // The Grand Evolution - Synergy (Land Types Matter)", - "Karametra, God of Harvests - Synergy (Land Types Matter)" - ], - "example_cards": [ - "Chimil, the Inner Sun", - "Brass's Tunnel-Grinder // Tecutlan, the Searing Rift", - "Trumpeting Carnosaur", - "Hit the Mother Lode", - "Pantlaza, Sun-Favored", - "Monstrous Vortex", - "Hidden Nursery", - "Hidden Volcano" - ], - "synergy_commanders": [ - "Titania, Nature's Force - Synergy (Land Types Matter)", - "Etali, Primal Storm - Synergy (Exile Matters)", - "Ragavan, Nimble Pilferer - Synergy (Exile Matters)", - "The Reality Chip - Synergy (Topdeck)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Leverages Discover to cheat spell mana values, chaining free cascade-like board development. Synergies like Land Types Matter and Exile Matters reinforce the plan." + "secondary_color": "Green" }, { "theme": "Disguise", @@ -5817,33 +1890,7 @@ "Life Matters" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Bayek of Siwa", - "Arno Dorian", - "Aveline de Grandpré", - "Kellan, Inquisitive Prodigy // Tail the Suspect - Synergy (Detective Kindred)", - "Nelly Borca, Impulsive Accuser - Synergy (Detective Kindred)" - ], - "example_cards": [ - "Bayek of Siwa", - "Arno Dorian", - "Hunted Bonebrute", - "Branch of Vitu-Ghazi", - "Experiment Twelve", - "Printlifter Ooze", - "Aveline de Grandpré", - "Boltbender" - ], - "synergy_commanders": [ - "Piper Wright, Publick Reporter - Synergy (Detective Kindred)", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Disguise leveraging synergies with Detective Kindred and Flying." + "secondary_color": "White" }, { "theme": "Disturb", @@ -5855,72 +1902,19 @@ "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Katilda, Dawnhart Martyr // Katilda's Rising Dawn", - "Dennick, Pious Apprentice // Dennick, Pious Apparition", - "Dorothea, Vengeful Victim // Dorothea's Retribution", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Transform)" - ], - "example_cards": [ - "Lunarch Veteran // Luminous Phantom", - "Malevolent Hermit // Benevolent Geist", - "Mirrorhall Mimic // Ghastly Mimicry", - "Katilda, Dawnhart Martyr // Katilda's Rising Dawn", - "Mischievous Catgeist // Catlike Curiosity", - "Faithbound Judge // Sinner's Judgment", - "Twinblade Geist // Twinblade Invocation", - "Dennick, Pious Apprentice // Dennick, Pious Apparition" - ], - "synergy_commanders": [ - "Veyran, Voice of Duality - Synergy (Transform)", - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Syr Konrad, the Grim - Synergy (Mill)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Disturb leveraging synergies with Transform and Spirit Kindred." + "secondary_color": "White" }, { "theme": "Divinity Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Protection", "Spirit Kindred", - "Counters Matter", - "Interaction", - "Big Mana" + "Historics Matter" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Myojin of Life's Web", - "Myojin of Night's Reach", - "Myojin of Seeing Winds", - "Myojin of Cleansing Fire", - "Myojin of Infinite Rage" - ], - "example_cards": [ - "Kindred Boon", - "Myojin of Life's Web", - "Myojin of Night's Reach", - "Myojin of Seeing Winds", - "That Which Was Taken", - "Myojin of Cleansing Fire", - "Myojin of Infinite Rage" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Protection)", - "Purphoros, God of the Forge - Synergy (Protection)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Protection)", - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates divinity counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Black" }, { "theme": "Djinn Kindred", @@ -5932,34 +1926,7 @@ "Big Mana" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Elsha of the Infinite", - "Elsha, Threefold Master", - "Siani, Eye of the Storm", - "Uvilda, Dean of Perfection // Nassari, Dean of Expression", - "Inniaz, the Gale Force" - ], - "example_cards": [ - "Pinnacle Monk // Mystic Peak", - "Haughty Djinn", - "Emberwilde Captain", - "Tidespout Tyrant", - "Elsha of the Infinite", - "Smirking Spelljacker", - "Stratus Dancer", - "Elsha, Threefold Master" - ], - "synergy_commanders": [ - "Kitsa, Otterball Elite - Synergy (Prowess)", - "Bria, Riptide Rogue - Synergy (Prowess)", - "Azusa, Lost but Seeking - Synergy (Monk Kindred)", - "Narset, Enlightened Exile - Synergy (Monk Kindred)", - "Niv-Mizzet, Parun - Synergy (Flying)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Djinn creatures into play with shared payoffs (e.g., Prowess and Monk Kindred)." + "secondary_color": "Red" }, { "theme": "Doctor Kindred", @@ -5968,76 +1935,22 @@ "Sagas Matter", "Lore Counters", "Ore Counters", - "Human Kindred" + "Historics Matter" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "K-9, Mark I", - "The Second Doctor", - "The Thirteenth Doctor", - "The Tenth Doctor", - "The Ninth Doctor" - ], - "example_cards": [ - "K-9, Mark I", - "The Second Doctor", - "The Thirteenth Doctor", - "The Tenth Doctor", - "The Ninth Doctor", - "The Sixth Doctor", - "The Twelfth Doctor", - "The War Doctor" - ], - "synergy_commanders": [ - "Barbara Wright - Synergy (Doctor's companion)", - "Adric, Mathematical Genius - Synergy (Doctor's companion)", - "Jhoira, Weatherlight Captain - Synergy (Sagas Matter)", - "Teshar, Ancestor's Apostle - Synergy (Sagas Matter)", - "Satsuki, the Living Lore - Synergy (Lore Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Doctor creatures into play with shared payoffs (e.g., Doctor's companion and Sagas Matter)." + "secondary_color": "Blue" }, { "theme": "Doctor's companion", "synergies": [ "Doctor Kindred", "Sagas Matter", - "Human Kindred", - "Little Fellas", - "Card Draw" + "Historics Matter", + "Legends Matter", + "Human Kindred" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "K-9, Mark I", - "Barbara Wright", - "Adric, Mathematical Genius", - "Martha Jones", - "Sarah Jane Smith" - ], - "example_cards": [ - "K-9, Mark I", - "Barbara Wright", - "Adric, Mathematical Genius", - "Martha Jones", - "Sarah Jane Smith", - "Donna Noble", - "Clara Oswald", - "Tegan Jovanka" - ], - "synergy_commanders": [ - "The Second Doctor - Synergy (Doctor Kindred)", - "The Thirteenth Doctor - Synergy (Doctor Kindred)", - "Jhoira, Weatherlight Captain - Synergy (Sagas Matter)", - "Teshar, Ancestor's Apostle - Synergy (Sagas Matter)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Doctor's companion leveraging synergies with Doctor Kindred and Sagas Matter." + "secondary_color": "Blue" }, { "theme": "Dog Kindred", @@ -6049,35 +1962,7 @@ "Phyrexian Kindred" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Phelia, Exuberant Shepherd", - "K-9, Mark I", - "Jinnie Fay, Jetmir's Second", - "Yoshimaru, Ever Faithful", - "Rin and Seri, Inseparable" - ], - "example_cards": [ - "Spirited Companion", - "Loyal Warhound", - "Enduring Courage", - "Phelia, Exuberant Shepherd", - "Selfless Savior", - "Komainu Battle Armor", - "K-9, Mark I", - "Animal Sanctuary" - ], - "synergy_commanders": [ - "Junji, the Midnight Sky - Synergy (Menace)", - "Kozilek, the Great Distortion - Synergy (Menace)", - "Massacre Girl - Synergy (Menace)", - "Ashaya, Soul of the Wild - Synergy (Elemental Kindred)", - "Titania, Protector of Argoth - Synergy (Elemental Kindred)", - "Selvala, Heart of the Wilds - Synergy (Scout Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Dog creatures into play with shared payoffs (e.g., Menace and Elemental Kindred)." + "secondary_color": "White" }, { "theme": "Domain", @@ -6089,48 +1974,15 @@ "Spells Matter" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Zar Ojanen, Scion of Efrava", - "Radha, Coalition Warlord", - "Nael, Avizoa Aeronaut", - "Bortuk Bonerattle", - "Azusa, Lost but Seeking - Synergy (Lands Matter)" - ], - "example_cards": [ - "Scion of Draco", - "The Weatherseed Treaty", - "Collective Restraint", - "Draco", - "Leyline Binding", - "Llanowar Greenwidow", - "Briar Hydra", - "Sphinx of Clear Skies" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Lands Matter)", - "Sheoldred, Whispering One - Synergy (Lands Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Ramp)", - "Selvala, Heart of the Wilds - Synergy (Ramp)", - "The Reality Chip - Synergy (Topdeck)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Assembles multiple basic land types rapidly to scale Domain-based effects. Synergies like Lands Matter and Ramp reinforce the plan." + "secondary_color": "Black" }, { "theme": "Doom Counters", - "synergies": [], - "primary_color": "Red", - "example_cards": [ - "Lavabrink Floodgates", - "Armageddon Clock", - "Eye of Doom", - "Imminent Doom" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates doom counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Red" }, { "theme": "Double strike", @@ -6142,35 +1994,7 @@ "Trample" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Zetalpa, Primal Dawn", - "God-Eternal Oketra", - "Kellan, the Fae-Blooded // Birthright Boon", - "Gimli of the Glittering Caves", - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist" - ], - "example_cards": [ - "Lizard Blades", - "Zetalpa, Primal Dawn", - "Bronze Guardian", - "God-Eternal Oketra", - "Angel of Destiny", - "Kellan, the Fae-Blooded // Birthright Boon", - "Gimli of the Glittering Caves", - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Knight Kindred)", - "Adeline, Resplendent Cathar - Synergy (Knight Kindred)", - "Danitha Capashen, Paragon - Synergy (Knight Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Etali, Primal Storm - Synergy (Aggro)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Double strike leveraging synergies with Knight Kindred and Warrior Kindred." + "secondary_color": "Red" }, { "theme": "Dragon Kindred", @@ -6182,32 +2006,7 @@ "Backgrounds Matter" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Niv-Mizzet, Parun", - "Old Gnawbone", - "Drakuseth, Maw of Flames", - "Lathliss, Dragon Queen", - "Junji, the Midnight Sky" - ], - "example_cards": [ - "Goldspan Dragon", - "Terror of the Peaks", - "Niv-Mizzet, Parun", - "Ancient Copper Dragon", - "Old Gnawbone", - "Hellkite Tyrant", - "Steel Hellkite", - "Drakuseth, Maw of Flames" - ], - "synergy_commanders": [ - "Sarkhan, Dragon Ascendant - Synergy (Behold)", - "Etali, Primal Storm - Synergy (Elder Kindred)", - "Ghalta, Primal Hunger - Synergy (Elder Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Dragon creatures into play with shared payoffs (e.g., Behold and Elder Kindred)." + "secondary_color": "Blue" }, { "theme": "Drake Kindred", @@ -6219,46 +2018,12 @@ "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Talrand, Sky Summoner", - "Alandra, Sky Dreamer", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)" - ], - "example_cards": [ - "Talrand, Sky Summoner", - "Peregrine Drake", - "Gilded Drake", - "Volatile Stormdrake", - "Thunderclap Drake", - "Alandra, Sky Dreamer", - "Shrieking Drake", - "Loyal Drake" - ], - "synergy_commanders": [ - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)", - "Sheoldred, the Apocalypse - Synergy (Phyrexian Kindred)", - "Ghalta, Primal Hunger - Synergy (Cost Reduction)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Drake creatures into play with shared payoffs (e.g., Flying and Phyrexian Kindred)." + "secondary_color": "Red" }, { "theme": "Dreadnought Kindred", "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Phyrexian Dreadnought", - "Redemptor Dreadnought", - "Helbrute", - "Depth Charge Colossus" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Dreadnought creatures into play with shared payoffs." + "primary_color": "Blue" }, { "theme": "Dredge", @@ -6270,30 +2035,7 @@ "Spells Matter" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Tatyova, Benthic Druid - Synergy (Unconditional Draw)", - "Yawgmoth, Thran Physician - Synergy (Unconditional Draw)", - "Padeem, Consul of Innovation - Synergy (Unconditional Draw)", - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)" - ], - "example_cards": [ - "Life from the Loam", - "Dakmor Salvage", - "Golgari Grave-Troll", - "Stinkweed Imp", - "Golgari Thug", - "Darkblast", - "Shenanigans", - "Shambling Shell" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Card Draw)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Loads high-impact cards into the graveyard early and reanimates them for explosive tempo or combo loops. Synergies like Unconditional Draw and Reanimate reinforce the plan." + "secondary_color": "Green" }, { "theme": "Drone Kindred", @@ -6305,24 +2047,7 @@ "Eldrazi Kindred" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Magnus the Red - Synergy (Spawn Kindred)", - "Ulalek, Fused Atrocity - Synergy (Devoid)" - ], - "example_cards": [ - "Glaring Fleshraker", - "It That Heralds the End", - "Chittering Dispatcher", - "Kaito, Dancing Shadow", - "Herald of Kozilek", - "Writhing Chrysalis", - "Emrakul's Hatcher", - "Catacomb Sifter" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Drone creatures into play with shared payoffs (e.g., Ingest and Spawn Kindred)." + "secondary_color": "Black" }, { "theme": "Druid Kindred", @@ -6334,32 +2059,7 @@ "Treefolk Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Tatyova, Benthic Druid", - "Rishkar, Peema Renegade", - "Jaheira, Friend of the Forest", - "Bristly Bill, Spine Sower", - "Marwyn, the Nurturer" - ], - "example_cards": [ - "Llanowar Elves", - "Elvish Mystic", - "Beast Whisperer", - "Fyndhorn Elves", - "Bloom Tender", - "Tatyova, Benthic Druid", - "Evolution Sage", - "Arbor Elf" - ], - "synergy_commanders": [ - "Galadriel, Light of Valinor - Synergy (Alliance)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Mana Dork)", - "Selvala, Heart of the Wilds - Synergy (Mana Dork)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Druid creatures into play with shared payoffs (e.g., Alliance and Mana Dork)." + "secondary_color": "Black" }, { "theme": "Dryad Kindred", @@ -6370,35 +2070,7 @@ "Ramp", "Lands Matter" ], - "primary_color": "Green", - "example_commanders": [ - "Dina, Soul Steeper", - "Trostani, Selesnya's Voice", - "Trostani Discordant", - "Zimone and Dina", - "Trostani, Three Whispers" - ], - "example_cards": [ - "Dryad of the Ilysian Grove", - "Sanctum Weaver", - "Dryad Arbor", - "Awaken the Woods", - "Tendershoot Dryad", - "Dina, Soul Steeper", - "Trostani, Selesnya's Voice", - "Nightshade Dryad" - ], - "synergy_commanders": [ - "Chatterfang, Squirrel General - Synergy (Forestwalk)", - "Jedit Ojanen of Efrava - Synergy (Forestwalk)", - "Mirri, Cat Warrior - Synergy (Forestwalk)", - "Sheoldred, Whispering One - Synergy (Landwalk)", - "Wrexial, the Risen Deep - Synergy (Landwalk)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Mana Dork)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Dryad creatures into play with shared payoffs (e.g., Forestwalk and Landwalk)." + "primary_color": "Green" }, { "theme": "Dwarf Kindred", @@ -6410,34 +2082,7 @@ "Treasure Token" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Sram, Senior Edificer", - "Torbran, Thane of Red Fell", - "Magda, Brazen Outlaw", - "Magda, the Hoardmaster", - "Bruenor Battlehammer" - ], - "example_cards": [ - "Storm-Kiln Artist", - "Sram, Senior Edificer", - "Torbran, Thane of Red Fell", - "Magda, Brazen Outlaw", - "Erebor Flamesmith", - "Magda, the Hoardmaster", - "Bruenor Battlehammer", - "Reyav, Master Smith" - ], - "synergy_commanders": [ - "Cayth, Famed Mechanist - Synergy (Servo Kindred)", - "Saheeli, the Gifted - Synergy (Servo Kindred)", - "Oviya Pashiri, Sage Lifecrafter - Synergy (Servo Kindred)", - "Kardur, Doomscourge - Synergy (Berserker Kindred)", - "Loran of the Third Path - Synergy (Artificer Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Dwarf creatures into play with shared payoffs (e.g., Servo Kindred and Berserker Kindred)." + "secondary_color": "White" }, { "theme": "Earthbend", @@ -6449,35 +2094,7 @@ "Blink" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Toph, the First Metalbender", - "Toph, the Blind Bandit", - "Bumi, Eclectic Earthbender", - "Haru, Hidden Talent", - "Avatar Aang // Aang, Master of Elements" - ], - "example_cards": [ - "Toph, the First Metalbender", - "Toph, the Blind Bandit", - "Bumi, Eclectic Earthbender", - "Earthbending Student", - "Earthbending Lesson", - "Haru, Hidden Talent", - "Earth Rumble", - "Badgermole" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Landfall)", - "Aesi, Tyrant of Gyre Strait - Synergy (Landfall)", - "Bristly Bill, Spine Sower - Synergy (Landfall)", - "Drana, Liberator of Malakir - Synergy (Ally Kindred)", - "Mina and Denn, Wildborn - Synergy (Ally Kindred)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Earthbend leveraging synergies with Landfall and Ally Kindred." + "secondary_color": "Black" }, { "theme": "Echo", @@ -6489,30 +2106,7 @@ "Enter the Battlefield" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Aurelia, the Warleader - Synergy (Haste)", - "Yahenni, Undying Partisan - Synergy (Haste)", - "Kiki-Jiki, Mirror Breaker - Synergy (Haste)", - "Krenko, Tin Street Kingpin - Synergy (Goblin Kindred)", - "Krenko, Mob Boss - Synergy (Goblin Kindred)" - ], - "example_cards": [ - "Karmic Guide", - "Mogg War Marshal", - "Bone Shredder", - "Deranged Hermit", - "Extruder", - "Yavimaya Granger", - "Stingscourger", - "Crater Hellion" - ], - "synergy_commanders": [ - "Ashaya, Soul of the Wild - Synergy (Elemental Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Echo leveraging synergies with Haste and Goblin Kindred." + "secondary_color": "Green" }, { "theme": "Eerie", @@ -6524,27 +2118,7 @@ "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Victor, Valgavoth's Seneschal", - "Marina Vendrell - Synergy (Rooms Matter)", - "Sram, Senior Edificer - Synergy (Enchantments Matter)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "example_cards": [ - "Entity Tracker", - "Fear of Sleep Paralysis", - "Ghostly Dancers", - "Victor, Valgavoth's Seneschal", - "Balemurk Leech", - "Gremlin Tamer", - "Optimistic Scavenger", - "Scrabbling Skullcrab" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Eerie leveraging synergies with Rooms Matter and Enchantments Matter." + "secondary_color": "White" }, { "theme": "Efreet Kindred", @@ -6555,35 +2129,7 @@ "Little Fellas" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Veyran, Voice of Duality", - "Plargg and Nassari", - "Yusri, Fortune's Flame", - "Najal, the Storm Runner", - "Uvilda, Dean of Perfection // Nassari, Dean of Expression" - ], - "example_cards": [ - "Veyran, Voice of Duality", - "Plargg and Nassari", - "Yusri, Fortune's Flame", - "Najal, the Storm Runner", - "Frenetic Efreet", - "Efreet Flamepainter", - "Uvilda, Dean of Perfection // Nassari, Dean of Expression", - "Emissary of Grudges" - ], - "synergy_commanders": [ - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Syr Konrad, the Grim - Synergy (Burn)", - "Braids, Arisen Nightmare - Synergy (Burn)", - "Toski, Bearer of Secrets - Synergy (Interaction)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Efreet creatures into play with shared payoffs (e.g., Flying and Burn)." + "secondary_color": "Blue" }, { "theme": "Egg Kindred", @@ -6595,68 +2141,19 @@ "Little Fellas" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Atla Palani, Nest Tender", - "The Pride of Hull Clade - Synergy (Defender)", - "Sokrates, Athenian Teacher - Synergy (Defender)", - "Pramikon, Sky Rampart - Synergy (Defender)", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Nesting Dragon", - "Palani's Hatcher", - "Atla Palani, Nest Tender", - "Dinosaur Egg", - "Smoldering Egg // Ashmouth Dragon", - "Mysterious Egg", - "Dragon Egg", - "Roc Egg" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)", - "Sheoldred, the Apocalypse - Synergy (Aristocrats)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Egg creatures into play with shared payoffs (e.g., Defender and Sacrifice Matters)." + "secondary_color": "Blue" }, { "theme": "Elder Kindred", "synergies": [ "Dinosaur Kindred", "Dragon Kindred", - "Flying", - "Big Mana", - "Aggro" + "Historics Matter", + "Legends Matter", + "Flying" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Etali, Primal Storm", - "Ghalta, Primal Hunger", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Nezahal, Primal Tide", - "Ghalta, Stampede Tyrant" - ], - "example_cards": [ - "Etali, Primal Storm", - "Ghalta, Primal Hunger", - "Ancient Copper Dragon", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Nezahal, Primal Tide", - "Ghalta, Stampede Tyrant", - "Ancient Silver Dragon", - "Uro, Titan of Nature's Wrath" - ], - "synergy_commanders": [ - "Niv-Mizzet, Parun - Synergy (Dragon Kindred)", - "Old Gnawbone - Synergy (Dragon Kindred)", - "Avacyn, Angel of Hope - Synergy (Flying)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Elder creatures into play with shared payoffs (e.g., Dinosaur Kindred and Dragon Kindred)." + "secondary_color": "Blue" }, { "theme": "Eldrazi Kindred", @@ -6668,30 +2165,7 @@ "Drone Kindred" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Kozilek, Butcher of Truth", - "Ulamog, the Infinite Gyre", - "Ulamog, the Ceaseless Hunger", - "Kozilek, the Great Distortion", - "Emrakul, the Promised End" - ], - "example_cards": [ - "Idol of Oblivion", - "Artisan of Kozilek", - "Kozilek, Butcher of Truth", - "Ulamog, the Infinite Gyre", - "Ulamog, the Ceaseless Hunger", - "It That Betrays", - "Kozilek, the Great Distortion", - "Void Winnower" - ], - "synergy_commanders": [ - "Magnus the Red - Synergy (Spawn Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Eldrazi creatures into play with shared payoffs (e.g., Ingest and Processor Kindred)." + "secondary_color": "Green" }, { "theme": "Elemental Kindred", @@ -6703,30 +2177,7 @@ "Fear" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Ashaya, Soul of the Wild", - "Titania, Protector of Argoth", - "Kediss, Emberclaw Familiar", - "Omnath, Locus of Rage", - "Muldrotha, the Gravetide" - ], - "example_cards": [ - "Avenger of Zendikar", - "Forgotten Ancient", - "Mulldrifter", - "Ancient Greenwarden", - "Resculpt", - "Young Pyromancer", - "Destiny Spinner", - "Xorn" - ], - "synergy_commanders": [ - "Idris, Soul of the TARDIS - Synergy (Incarnation Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Elemental creatures into play with shared payoffs (e.g., Evoke and Awaken)." + "secondary_color": "Green" }, { "theme": "Elephant Kindred", @@ -6738,35 +2189,7 @@ "Blink" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Losheel, Clockwork Scholar", - "Hamza, Guardian of Arashin", - "Malcator, Purity Overseer", - "Lulu, Loyal Hollyphant", - "Quintorius, Loremaster" - ], - "example_cards": [ - "Generous Gift", - "Terastodon", - "Losheel, Clockwork Scholar", - "Hamza, Guardian of Arashin", - "Oliphaunt", - "Thorn Mammoth", - "Conclave Sledge-Captain", - "Aggressive Mammoth" - ], - "synergy_commanders": [ - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Ghalta, Stampede Tyrant - Synergy (Trample)", - "Vito, Thorn of the Dusk Rose - Synergy (Cleric Kindred)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Cleric Kindred)", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Elephant creatures into play with shared payoffs (e.g., Trample and Cleric Kindred)." + "secondary_color": "White" }, { "theme": "Elf Kindred", @@ -6778,32 +2201,7 @@ "Scout Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Selvala, Heart of the Wilds", - "Rishkar, Peema Renegade", - "Jaheira, Friend of the Forest", - "Ayara, First of Locthwain", - "Marwyn, the Nurturer" - ], - "example_cards": [ - "Llanowar Elves", - "Elvish Mystic", - "Tireless Provisioner", - "Beast Whisperer", - "Fyndhorn Elves", - "Reclamation Sage", - "Bloom Tender", - "Evolution Sage" - ], - "synergy_commanders": [ - "Galadriel, Light of Valinor - Synergy (Alliance)", - "Tatyova, Benthic Druid - Synergy (Druid Kindred)", - "Halana and Alena, Partners - Synergy (Ranger Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Elf creatures into play with shared payoffs (e.g., Alliance and Druid Kindred)." + "secondary_color": "Black" }, { "theme": "Elk Kindred", @@ -6815,33 +2213,7 @@ "Leave the Battlefield" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Jegantha, the Wellspring", - "The Pride of Hull Clade", - "Beza, the Bounding Spring", - "Tatyova, Benthic Druid - Synergy (Lifegain)", - "Sheoldred, the Apocalypse - Synergy (Lifegain)" - ], - "example_cards": [ - "Burnished Hart", - "Kenrith's Transformation", - "Enduring Vitality", - "Oko, Thief of Crowns", - "Jegantha, the Wellspring", - "Dawnglade Regent", - "The Pride of Hull Clade", - "Beza, the Bounding Spring" - ], - "synergy_commanders": [ - "Vito, Thorn of the Dusk Rose - Synergy (Lifegain)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Life Matters)", - "Mangara, the Diplomat - Synergy (Life Matters)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Elk creatures into play with shared payoffs (e.g., Lifegain and Life Matters)." + "secondary_color": "White" }, { "theme": "Embalm", @@ -6853,31 +2225,7 @@ "Mill" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Temmet, Vizier of Naktamun", - "Mondrak, Glory Dominus - Synergy (Clones)", - "Kiki-Jiki, Mirror Breaker - Synergy (Clones)", - "Sakashima of a Thousand Faces - Synergy (Clones)", - "Neheb, the Eternal - Synergy (Zombie Kindred)" - ], - "example_cards": [ - "Vizier of Many Faces", - "Angel of Sanctions", - "Sacred Cat", - "Aven Wind Guide", - "Anointer Priest", - "Honored Hydra", - "Heart-Piercer Manticore", - "Temmet, Vizier of Naktamun" - ], - "synergy_commanders": [ - "Mikaeus, the Unhallowed - Synergy (Zombie Kindred)", - "Syr Konrad, the Grim - Synergy (Reanimate)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Embalm leveraging synergies with Clones and Zombie Kindred." + "secondary_color": "Blue" }, { "theme": "Emerge", @@ -6887,31 +2235,7 @@ "Toughness Matters" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Herigast, Erupting Nullkite", - "Kozilek, Butcher of Truth - Synergy (Eldrazi Kindred)", - "Ulamog, the Infinite Gyre - Synergy (Eldrazi Kindred)", - "Ulamog, the Ceaseless Hunger - Synergy (Eldrazi Kindred)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "example_cards": [ - "Elder Deep-Fiend", - "Herigast, Erupting Nullkite", - "Crabomination", - "Decimator of the Provinces", - "Cresting Mosasaurus", - "Adipose Offspring", - "Vexing Scuttler", - "Distended Mindbender" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Big Mana)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Emerge leveraging synergies with Eldrazi Kindred and Big Mana." + "secondary_color": "Black" }, { "theme": "Employee Kindred", @@ -6923,35 +2247,7 @@ "Token Creation" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Monoxa, Midway Manager", - "Captain Rex Nebula", - "Dee Kay, Finder of the Lost", - "Truss, Chief Engineer", - "Roxi, Publicist to the Stars" - ], - "example_cards": [ - "Night Shift of the Living Dead", - "Deadbeat Attendant", - "Discourtesy Clerk", - "Monoxa, Midway Manager", - "Quick Fixer", - "Monitor Monitor", - "Soul Swindler", - "Complaints Clerk" - ], - "synergy_commanders": [ - "Myra the Magnificent - Synergy (Open an Attraction)", - "The Most Dangerous Gamer - Synergy (Open an Attraction)", - "Spinnerette, Arachnobat - Synergy (Open an Attraction)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Employee creatures into play with shared payoffs (e.g., Open an Attraction and Blink)." + "secondary_color": "Red" }, { "theme": "Enchant", @@ -6963,63 +2259,19 @@ "Goad" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Katilda, Dawnhart Martyr // Katilda's Rising Dawn", - "Sram, Senior Edificer - Synergy (Auras)", - "Kodama of the West Tree - Synergy (Auras)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)" - ], - "example_cards": [ - "Wild Growth", - "Animate Dead", - "Utopia Sprawl", - "Darksteel Mutation", - "Kenrith's Transformation", - "All That Glitters", - "Curiosity", - "Rancor" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Stacks enchantment-based engines (cost reduction, constellation, aura recursion) for relentless value accrual. Synergies like Umbra armor and Auras reinforce the plan." + "secondary_color": "White" }, { "theme": "Enchantment Tokens", "synergies": [ + "Tokens Matter", "Role token", "Inspired", "Hero Kindred", - "Equipment Matters", - "Scry" + "Equipment Matters" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Heliod, God of the Sun", - "Ellivere of the Wild Court", - "Go-Shintai of Life's Origin", - "Gylwain, Casting Director", - "Daxos the Returned" - ], - "example_cards": [ - "Not Dead After All", - "Court of Vantress", - "Hammer of Purphoros", - "Royal Treatment", - "Witch's Mark", - "Heliod, God of the Sun", - "Charming Scoundrel", - "Monstrous Rage" - ], - "synergy_commanders": [ - "Syr Armont, the Redeemer - Synergy (Role token)", - "King Macar, the Gold-Cursed - Synergy (Inspired)", - "G'raha Tia, Scion Reborn - Synergy (Hero Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Stacks enchantment-based engines (cost reduction, constellation, aura recursion) for relentless value accrual. Synergies like Role token and Inspired reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Enchantments Matter", @@ -7031,32 +2283,7 @@ "Lore Counters" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Sram, Senior Edificer", - "Purphoros, God of the Forge", - "Jaheira, Friend of the Forest", - "Kodama of the West Tree", - "Danitha Capashen, Paragon" - ], - "example_cards": [ - "Rhystic Study", - "Smothering Tithe", - "Mystic Remora", - "Phyrexian Arena", - "Garruk's Uprising", - "Enlightened Tutor", - "Urza's Saga", - "Propaganda" - ], - "synergy_commanders": [ - "Calix, Guided by Fate - Synergy (Constellation)", - "Eutropia the Twice-Favored - Synergy (Constellation)", - "Braids, Arisen Nightmare - Synergy (Card Draw)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Stacks enchantment-based engines (cost reduction, constellation, aura recursion) for relentless value accrual. Synergies like Auras and Constellation reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Encore", @@ -7068,31 +2295,7 @@ "Aggro" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Sliver Gravemother", - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)", - "Adeline, Resplendent Cathar - Synergy (Politics)", - "Ragavan, Nimble Pilferer - Synergy (Pirate Kindred)" - ], - "example_cards": [ - "Impulsive Pilferer", - "Phyrexian Triniform", - "Amphin Mutineer", - "Angel of Indemnity", - "Mist Dancer", - "Rakshasa Debaser", - "Sliver Gravemother", - "Fathom Fleet Swordjack" - ], - "synergy_commanders": [ - "Captain Lannery Storm - Synergy (Pirate Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Encore leveraging synergies with Politics and Pirate Kindred." + "secondary_color": "Blue" }, { "theme": "Endure", @@ -7104,31 +2307,7 @@ "Token Creation" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Anafenza, Unyielding Lineage", - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Junji, the Midnight Sky - Synergy (Spirit Kindred)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)" - ], - "example_cards": [ - "Warden of the Grove", - "Anafenza, Unyielding Lineage", - "Sinkhole Surveyor", - "Fortress Kin-Guard", - "Descendant of Storms", - "Krumar Initiate", - "Inspirited Vanguard", - "Dusyut Earthcarver" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Creature Tokens)", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Endure leveraging synergies with Spirit Kindred and Creature Tokens." + "secondary_color": "Green" }, { "theme": "Energy", @@ -7140,65 +2319,19 @@ "Robot Kindred" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Dr. Madison Li", - "Satya, Aetherflux Genius", - "Liberty Prime, Recharged", - "The Motherlode, Excavator", - "Rex, Cyber-Hound" - ], - "example_cards": [ - "Guide of Souls", - "Volatile Stormdrake", - "Chthonian Nightmare", - "Aether Hub", - "Aetherworks Marvel", - "Gonti's Aether Heart", - "Solar Transformer", - "Decoction Module" - ], - "synergy_commanders": [ - "Cayth, Famed Mechanist - Synergy (Servo Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Accumulates Energy counters as a parallel resource spent for tempo spikes, draw, or scalable removal. Synergies like Resource Engine and Energy Counters reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Energy Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Energy", "Resource Engine", - "Servo Kindred", - "Vedalken Kindred", - "Artificer Kindred" + "Servo Kindred" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Dr. Madison Li", - "Satya, Aetherflux Genius", - "Liberty Prime, Recharged", - "The Motherlode, Excavator", - "Rex, Cyber-Hound" - ], - "example_cards": [ - "Guide of Souls", - "Chthonian Nightmare", - "Aether Hub", - "Aetherworks Marvel", - "Gonti's Aether Heart", - "Solar Transformer", - "Decoction Module", - "Lightning Runner" - ], - "synergy_commanders": [ - "Cayth, Famed Mechanist - Synergy (Servo Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Accumulates Energy counters as a parallel resource spent for tempo spikes, draw, or scalable removal. Synergies like Energy and Resource Engine reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Enlist", @@ -7210,31 +2343,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Aradesh, the Founder", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)", - "Etali, Primal Storm - Synergy (Aggro)" - ], - "example_cards": [ - "Yavimaya Steelcrusher", - "Aradesh, the Founder", - "Guardian of New Benalia", - "Keldon Flamesage", - "Coalition Warbrute", - "Argivian Cavalier", - "Hexbane Tortoise", - "Balduvian Berserker" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Enlist leveraging synergies with Toughness Matters and Aggro." + "secondary_color": "Red" }, { "theme": "Enrage", @@ -7244,33 +2353,7 @@ "Toughness Matters" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Strong, the Brutish Thespian", - "Indoraptor, the Perfect Hybrid", - "Vrondiss, Rage of Ancients", - "Etali, Primal Storm - Synergy (Dinosaur Kindred)", - "Ghalta, Primal Hunger - Synergy (Dinosaur Kindred)" - ], - "example_cards": [ - "Apex Altisaur", - "Ripjaw Raptor", - "Ranging Raptors", - "Polyraptor", - "Silverclad Ferocidons", - "Strong, the Brutish Thespian", - "Bellowing Aegisaur", - "Trapjaw Tyrant" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Dinosaur Kindred)", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Enrage leveraging synergies with Dinosaur Kindred and Big Mana." + "secondary_color": "Red" }, { "theme": "Enter the Battlefield", @@ -7282,32 +2365,7 @@ "Offspring" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Selvala, Heart of the Wilds", - "Sheoldred, Whispering One", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Elesh Norn, Mother of Machines", - "Kodama of the East Tree" - ], - "example_cards": [ - "Solemn Simulacrum", - "The One Ring", - "Eternal Witness", - "Victimize", - "Animate Dead", - "Orcish Bowmasters", - "Mithril Coat", - "Gray Merchant of Asphodel" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Enter the Battlefield leveraging synergies with Blink and Reanimate." + "secondary_color": "White" }, { "theme": "Entwine", @@ -7319,43 +2377,16 @@ "Removal" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Junji, the Midnight Sky - Synergy (Toolbox)", - "Koma, Cosmos Serpent - Synergy (Toolbox)", - "Atsushi, the Blazing Sky - Synergy (Toolbox)", - "Samut, Voice of Dissent - Synergy (Combat Tricks)", - "Naru Meha, Master Wizard - Synergy (Combat Tricks)" - ], - "example_cards": [ - "Tooth and Nail", - "Savage Beating", - "Goblin War Party", - "Kaya's Guile", - "Unbounded Potential", - "Mirage Mockery", - "Journey of Discovery", - "Rude Awakening" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Entwine leveraging synergies with Toolbox and Combat Tricks." + "secondary_color": "Black" }, { "theme": "Eon Counters", - "synergies": [], - "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Out of the Tombs", - "Magosi, the Waterveil" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates eon counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black", + "secondary_color": "Blue" }, { "theme": "Epic", @@ -7366,27 +2397,7 @@ "Spellslinger" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Stax)", - "Lotho, Corrupt Shirriff - Synergy (Stax)", - "Talrand, Sky Summoner - Synergy (Stax)", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)" - ], - "example_cards": [ - "Eternal Dominion", - "Enduring Ideal", - "Endless Swarm", - "Neverending Torment", - "Undying Flames" - ], - "synergy_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Epic leveraging synergies with Stax and Big Mana." + "secondary_color": "Blue" }, { "theme": "Equip", @@ -7398,24 +2409,7 @@ "Germ Kindred" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Halvar, God of Battle // Sword of the Realms", - "Kaldra Compleat - Synergy (Living weapon)" - ], - "example_cards": [ - "Swiftfoot Boots", - "Lightning Greaves", - "Skullclamp", - "Mithril Coat", - "Sword of the Animist", - "Basilisk Collar", - "Blackblade Reforged", - "Whispersilk Cloak" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Equip leveraging synergies with Job select and For Mirrodin!." + "secondary_color": "Red" }, { "theme": "Equipment", @@ -7427,23 +2421,7 @@ "Equip" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "The Reality Chip" - ], - "example_cards": [ - "Swiftfoot Boots", - "Lightning Greaves", - "Skullclamp", - "Mithril Coat", - "Sword of the Animist", - "Basilisk Collar", - "Blackblade Reforged", - "Whispersilk Cloak" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Tutors and reuses equipment to stack stats/keywords onto resilient bodies for persistent pressure. Synergies like Job select and Reconfigure reinforce the plan." + "secondary_color": "White" }, { "theme": "Equipment Matters", @@ -7455,34 +2433,7 @@ "Reconfigure" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Sram, Senior Edificer", - "Kodama of the West Tree", - "Danitha Capashen, Paragon", - "The Reality Chip", - "Ardenn, Intrepid Archaeologist" - ], - "example_cards": [ - "Swiftfoot Boots", - "Lightning Greaves", - "Skullclamp", - "Animate Dead", - "Mithril Coat", - "Sword of the Animist", - "Basilisk Collar", - "Blackblade Reforged" - ], - "synergy_commanders": [ - "Mithril Coat - Synergy (Equipment)", - "Sword of the Animist - Synergy (Equipment)", - "Halvar, God of Battle // Sword of the Realms - Synergy (Equip)", - "Blackblade Reforged - Synergy (Equip)", - "Ellivere of the Wild Court - Synergy (Role token)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Tutors and reuses equipment to stack stats/keywords onto resilient bodies for persistent pressure. Synergies like Equipment and Equip reinforce the plan." + "secondary_color": "Red" }, { "theme": "Escalate", @@ -7492,30 +2443,7 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Interaction)", - "Toski, Bearer of Secrets - Synergy (Interaction)", - "Purphoros, God of the Forge - Synergy (Interaction)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Collective Resistance", - "Collective Effort", - "Collective Defiance", - "Collective Brutality", - "Borrowed Hostility", - "Blessed Alliance", - "Savage Alliance", - "Borrowed Grace" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Selects multiple modes on Escalate spells, trading mana/cards for flexible stacked effects. Synergies like Interaction and Spells Matter reinforce the plan." + "secondary_color": "White" }, { "theme": "Escape", @@ -7527,34 +2455,7 @@ "Voltron" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Uro, Titan of Nature's Wrath", - "Kroxa, Titan of Death's Hunger", - "Phlage, Titan of Fire's Fury", - "Polukranos, Unchained", - "Syr Konrad, the Grim - Synergy (Reanimate)" - ], - "example_cards": [ - "Uro, Titan of Nature's Wrath", - "Woe Strider", - "Kroxa, Titan of Death's Hunger", - "Bloodbraid Challenger", - "From the Catacombs", - "Sentinel's Eyes", - "Cling to Dust", - "Chainweb Aracnir" - ], - "synergy_commanders": [ - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Six - Synergy (Reanimate)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Kozilek, Butcher of Truth - Synergy (Mill)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Escapes threats from the graveyard by exiling spent resources, generating recursive inevitability. Synergies like Reanimate and Mill reinforce the plan." + "secondary_color": "Red" }, { "theme": "Eternalize", @@ -7566,30 +2467,7 @@ "Human Kindred" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Mondrak, Glory Dominus - Synergy (Clones)", - "Kiki-Jiki, Mirror Breaker - Synergy (Clones)", - "Sakashima of a Thousand Faces - Synergy (Clones)", - "Neheb, the Eternal - Synergy (Zombie Kindred)", - "Mikaeus, the Unhallowed - Synergy (Zombie Kindred)" - ], - "example_cards": [ - "Fanatic of Rhonas", - "Timeless Witness", - "Champion of Wits", - "Adorned Pouncer", - "Timeless Dragon", - "Dreamstealer", - "Earthshaker Khenra", - "Sunscourge Champion" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Reanimate)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Eternalize leveraging synergies with Clones and Zombie Kindred." + "secondary_color": "Blue" }, { "theme": "Evoke", @@ -7601,26 +2479,7 @@ "Enter the Battlefield" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Idris, Soul of the TARDIS - Synergy (Incarnation Kindred)", - "Ashaya, Soul of the Wild - Synergy (Elemental Kindred)", - "Titania, Protector of Argoth - Synergy (Elemental Kindred)", - "Liberator, Urza's Battlethopter - Synergy (Flash)" - ], - "example_cards": [ - "Mulldrifter", - "Shriekmaw", - "Endurance", - "Solitude", - "Reveillark", - "Nulldrifter", - "Fury", - "Foundation Breaker" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Evoke leveraging synergies with Incarnation Kindred and Elemental Kindred." + "secondary_color": "Blue" }, { "theme": "Evolve", @@ -7632,31 +2491,7 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Lonis, Genetics Expert", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "example_cards": [ - "Gyre Sage", - "Pollywog Prodigy", - "Fathom Mage", - "Scurry Oak", - "Dinosaur Egg", - "Watchful Radstag", - "Tyranid Prime", - "Experiment One" - ], - "synergy_commanders": [ - "Yahenni, Undying Partisan - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Sequentially upgrades creatures with Evolve counters, then leverages accumulated stats or counter synergies. Synergies like +1/+1 Counters and Counters Matter reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Exalted", @@ -7668,32 +2503,7 @@ "Toughness Matters" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Rafiq of the Many", - "Nefarox, Overlord of Grixis", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Loran of the Third Path - Synergy (Human Kindred)" - ], - "example_cards": [ - "Ignoble Hierarch", - "Noble Hierarch", - "Qasali Pridemage", - "Cathedral of War", - "Sublime Archangel", - "Finest Hour", - "Order of Sacred Dusk", - "Rafiq of the Many" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Exalted leveraging synergies with Human Kindred and Aggro." + "secondary_color": "Black" }, { "theme": "Exert", @@ -7705,27 +2515,7 @@ "Aggro" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Themberchaud", - "Anep, Vizier of Hazoret", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "example_cards": [ - "Combat Celebrant", - "Glorybringer", - "Hydra Trainer", - "Champion of Rhonas", - "Themberchaud", - "Clockwork Droid", - "Rohirrim Chargers", - "Sandstorm Crasher" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Exert leveraging synergies with Jackal Kindred and Warrior Kindred." + "secondary_color": "White" }, { "theme": "Exhaust", @@ -7737,34 +2527,7 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Redshift, Rocketeer Chief", - "Loot, the Pathfinder", - "Winter, Cursed Rider", - "Sita Varma, Masked Racer", - "Sram, Senior Edificer - Synergy (Vehicles)" - ], - "example_cards": [ - "Riverchurn Monument", - "Skyserpent Seeker", - "Peema Trailblazer", - "Redshift, Rocketeer Chief", - "Loot, the Pathfinder", - "Mindspring Merfolk", - "Boommobile", - "Draconautics Engineer" - ], - "synergy_commanders": [ - "Shorikai, Genesis Engine - Synergy (Vehicles)", - "The Indomitable - Synergy (Vehicles)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Exhaust leveraging synergies with Vehicles and +1/+1 Counters." + "secondary_color": "Red" }, { "theme": "Exile Matters", @@ -7776,58 +2539,16 @@ "Plot" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Etali, Primal Storm", - "Ragavan, Nimble Pilferer", - "Urza, Lord High Artificer", - "Atsushi, the Blazing Sky", - "Laelia, the Blade Reforged" - ], - "example_cards": [ - "Jeska's Will", - "Chrome Mox", - "Professional Face-Breaker", - "Etali, Primal Storm", - "Ragavan, Nimble Pilferer", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Ephemerate", - "Dispatch" - ], - "synergy_commanders": [ - "The Tenth Doctor - Synergy (Suspend)", - "Jhoira of the Ghitu - Synergy (Suspend)", - "Ranar the Ever-Watchful - Synergy (Foretell)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Exile Matters leveraging synergies with Impulse and Suspend." + "secondary_color": "Blue" }, { "theme": "Experience Counters", - "synergies": [], + "synergies": [ + "Counters Matter", + "Proliferate" + ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Meren of Clan Nel Toth", - "Otharri, Suns' Glory", - "Minthara, Merciless Soul", - "Ezuri, Claw of Progress", - "Azlask, the Swelling Scourge" - ], - "example_cards": [ - "Meren of Clan Nel Toth", - "Otharri, Suns' Glory", - "Minthara, Merciless Soul", - "Ezuri, Claw of Progress", - "Azlask, the Swelling Scourge", - "Mizzix of the Izmagnus", - "Kelsien, the Plague", - "Daxos the Returned" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds experience counters to scale commander-centric engines into exponential payoffs." + "secondary_color": "White" }, { "theme": "Exploit", @@ -7839,32 +2560,7 @@ "Enter the Battlefield" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Sidisi, Undead Vizier", - "Colonel Autumn", - "Neheb, the Eternal - Synergy (Zombie Kindred)", - "Mikaeus, the Unhallowed - Synergy (Zombie Kindred)", - "Jadar, Ghoulcaller of Nephalia - Synergy (Zombie Kindred)" - ], - "example_cards": [ - "Sidisi, Undead Vizier", - "Overcharged Amalgam", - "Fell Stinger", - "Colonel Autumn", - "Repository Skaab", - "Profaner of the Dead", - "Rot-Tide Gargantua", - "Sidisi's Faithful" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)", - "Sheoldred, the Apocalypse - Synergy (Aristocrats)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Sacrifices creatures on ETB (Exploit) converting fodder into removal, draw, or recursion leverage. Synergies like Zombie Kindred and Sacrifice Matters reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Explore", @@ -7876,30 +2572,7 @@ "Merfolk Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Hakbal of the Surging Soul", - "Amalia Benavides Aguirre", - "Nicanzil, Current Conductor", - "Astrid Peth", - "Francisco, Fowl Marauder" - ], - "example_cards": [ - "Get Lost", - "Hakbal of the Surging Soul", - "Path of Discovery", - "Worldwalker Helm", - "Fanatical Offering", - "Amalia Benavides Aguirre", - "Seasoned Dungeoneer", - "Nicanzil, Current Conductor" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Scout Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Uses Explore triggers to smooth draws, grow creatures, and feed graveyard-adjacent engines. Synergies like Map Token and Card Selection reinforce the plan." + "secondary_color": "Black" }, { "theme": "Extort", @@ -7911,31 +2584,7 @@ "Little Fellas" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Sorin of House Markov // Sorin, Ravenous Neonate", - "Syr Konrad, the Grim - Synergy (Pingers)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Pingers)", - "Niv-Mizzet, Parun - Synergy (Pingers)", - "Braids, Arisen Nightmare - Synergy (Burn)" - ], - "example_cards": [ - "Blind Obedience", - "Crypt Ghast", - "Sorin of House Markov // Sorin, Ravenous Neonate", - "Pontiff of Blight", - "Life Insurance", - "Thrull Parasite", - "Tithe Drinker", - "Basilica Screecher" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Burn)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Extort leveraging synergies with Pingers and Burn." + "secondary_color": "White" }, { "theme": "Eye Kindred", @@ -7943,34 +2592,11 @@ "More Than Meets the Eye", "Convert", "Robot Kindred", - "Flying", - "Artifacts Matter" + "Historics Matter", + "Legends Matter" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Starscream, Power Hungry // Starscream, Seeker Leader", - "Ratchet, Field Medic // Ratchet, Rescue Racer", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader" - ], - "example_cards": [ - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Starscream, Power Hungry // Starscream, Seeker Leader", - "Abhorrent Oculus", - "Ratchet, Field Medic // Ratchet, Rescue Racer", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader", - "Eye of Duskmantle", - "Prowl, Stoic Strategist // Prowl, Pursuit Vehicle" - ], - "synergy_commanders": [ - "Codsworth, Handy Helper - Synergy (Robot Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Eye creatures into play with shared payoffs (e.g., More Than Meets the Eye and Convert)." + "secondary_color": "White" }, { "theme": "Fabricate", @@ -7982,59 +2608,19 @@ "Token Creation" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Cayth, Famed Mechanist", - "Saheeli, the Gifted - Synergy (Servo Kindred)", - "Oviya Pashiri, Sage Lifecrafter - Synergy (Servo Kindred)", - "Loran of the Third Path - Synergy (Artificer Kindred)", - "Sai, Master Thopterist - Synergy (Artificer Kindred)" - ], - "example_cards": [ - "Marionette Apprentice", - "Marionette Master", - "Angel of Invention", - "Cayth, Famed Mechanist", - "Cultivator of Blades", - "Weaponcraft Enthusiast", - "Accomplished Automaton", - "Iron League Steed" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifact Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Fabricate leveraging synergies with Servo Kindred and Artificer Kindred." + "secondary_color": "Green" }, { "theme": "Fade Counters", "synergies": [ - "Fading", "Counters Matter", + "Proliferate", + "Fading", "Enchantments Matter", "Interaction" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Enchantments Matter)" - ], - "example_cards": [ - "Tangle Wire", - "Parallax Wave", - "Saproling Burst", - "Parallax Tide", - "Parallax Dementia", - "Parallax Nexus", - "Blastoderm", - "Jolting Merfolk" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates fade counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Black" }, { "theme": "Fading", @@ -8045,25 +2631,7 @@ "Interaction" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Enchantments Matter)" - ], - "example_cards": [ - "Tangle Wire", - "Parallax Wave", - "Saproling Burst", - "Parallax Tide", - "Parallax Dementia", - "Parallax Nexus", - "Blastoderm", - "Jolting Merfolk" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Fading leveraging synergies with Fade Counters and Counters Matter." + "secondary_color": "Black" }, { "theme": "Faerie Kindred", @@ -8075,34 +2643,7 @@ "Wizard Kindred" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Rankle, Master of Pranks", - "Talion, the Kindly Lord", - "Kellan, the Fae-Blooded // Birthright Boon", - "Obyra, Dreaming Duelist", - "Alela, Cunning Conqueror" - ], - "example_cards": [ - "Faerie Mastermind", - "Bitterblossom", - "Rankle, Master of Pranks", - "Talion, the Kindly Lord", - "Glen Elendra Archmage", - "Cloud of Faeries", - "High Fae Trickster", - "Ancient Gold Dragon" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Rogue Kindred)", - "Sakashima of a Thousand Faces - Synergy (Rogue Kindred)", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Faerie creatures into play with shared payoffs (e.g., Rogue Kindred and Flying)." + "secondary_color": "Black" }, { "theme": "Fateful hour", @@ -8111,56 +2652,18 @@ "Spellslinger" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "example_cards": [ - "Thraben Doomsayer", - "Courageous Resolve", - "Gather the Townsfolk", - "Faith's Shield", - "Spell Snuff", - "Clinging Mists", - "Break of Day", - "Gavony Ironwright" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Fateful hour leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "Green" }, { "theme": "Fateseal", "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Mesmeric Sliver", - "Spin into Myth" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Fateseal theme and its supporting synergies." + "primary_color": "Blue" }, { "theme": "Fathomless descent", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Matzalantli, the Great Door // The Core", - "Squirming Emergence", - "Terror Tide", - "Souls of the Lost", - "Chupacabra Echo", - "Song of Stupefaction" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Fathomless descent theme and its supporting synergies." + "secondary_color": "Blue" }, { "theme": "Fear", @@ -8172,32 +2675,7 @@ "Aggro" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Wort, Boggart Auntie", - "Commander Greven il-Vec", - "Mondrak, Glory Dominus - Synergy (Horror Kindred)", - "Solphim, Mayhem Dominus - Synergy (Horror Kindred)", - "Zopandrel, Hunger Dominus - Synergy (Horror Kindred)" - ], - "example_cards": [ - "Shriekmaw", - "Dimir House Guard", - "Avatar of Woe", - "Shadowmage Infiltrator", - "Guiltfeeder", - "Ratcatcher", - "Desecration Elemental", - "Arcbound Fiend" - ], - "synergy_commanders": [ - "Neheb, the Eternal - Synergy (Zombie Kindred)", - "Mikaeus, the Unhallowed - Synergy (Zombie Kindred)", - "Ashaya, Soul of the Wild - Synergy (Elemental Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Fear leveraging synergies with Horror Kindred and Zombie Kindred." + "secondary_color": "White" }, { "theme": "Ferocious", @@ -8208,41 +2686,12 @@ "Interaction" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Shamanic Revelation", - "Fanatic of Rhonas", - "Temur Battle Rage", - "Stubborn Denial", - "Whisperer of the Wilds", - "Roar of Challenge", - "Icy Blast", - "Winds of Qal Sisma" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Ferocious leveraging synergies with Big Mana and Spells Matter." + "secondary_color": "Red" }, { "theme": "Ferret Kindred", "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Joven's Ferrets" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ferret creatures into play with shared payoffs." + "primary_color": "Green" }, { "theme": "Fight", @@ -8254,75 +2703,19 @@ "Burn" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Kogla, the Titan Ape", - "Kogla and Yidaro", - "Gargos, Vicious Watcher", - "The Tarrasque", - "Ayula, Queen Among Bears" - ], - "example_cards": [ - "Brash Taunter", - "Bridgeworks Battle // Tanglespan Bridgeworks", - "Kogla, the Titan Ape", - "Ezuri's Predation", - "Apex Altisaur", - "Bushwhack", - "Khalni Ambush // Khalni Territory", - "Inscription of Abundance" - ], - "synergy_commanders": [ - "Satsuki, the Living Lore - Synergy (Lore Counters)", - "Tom Bombadil - Synergy (Lore Counters)", - "Clive, Ifrit's Dominant // Ifrit, Warden of Inferno - Synergy (Lore Counters)", - "Jhoira, Weatherlight Captain - Synergy (Sagas Matter)", - "Teshar, Ancestor's Apostle - Synergy (Sagas Matter)", - "Etali, Primal Storm - Synergy (Dinosaur Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Fight leveraging synergies with Lore Counters and Sagas Matter." + "secondary_color": "Red" }, { "theme": "Finality Counters", "synergies": [ - "Mill", "Counters Matter", + "Proliferate", + "Mill", "Blink", - "Enter the Battlefield", - "Leave the Battlefield" + "Enter the Battlefield" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Kastral, the Windcrested", - "Admiral Brass, Unsinkable", - "Yuna, Hope of Spira", - "Shilgengar, Sire of Famine", - "Mirko, Obsessive Theorist" - ], - "example_cards": [ - "Tarrian's Journal // The Tomb of Aclazotz", - "Meathook Massacre II", - "Scavenger's Talent", - "Intrepid Paleontologist", - "Kastral, the Windcrested", - "Osteomancer Adept", - "Emperor of Bones", - "Admiral Brass, Unsinkable" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Emry, Lurker of the Loch - Synergy (Mill)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates finality counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Green" }, { "theme": "Firebending", @@ -8334,34 +2727,7 @@ "Aggro" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Fire Lord Zuko", - "Zuko, Exiled Prince", - "Avatar Aang // Aang, Master of Elements", - "The Rise of Sozin // Fire Lord Sozin", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Mana Dork)" - ], - "example_cards": [ - "Fire Lord Zuko", - "Zuko, Exiled Prince", - "Avatar Aang // Aang, Master of Elements", - "The Rise of Sozin // Fire Lord Sozin", - "Fire Nation Attacks", - "Fire Sages", - "Loyal Fire Sage", - "Rough Rhino Cavalry" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Mana Dork)", - "Rishkar, Peema Renegade - Synergy (Mana Dork)", - "Goreclaw, Terror of Qal Sisma - Synergy (X Spells)", - "Danitha Capashen, Paragon - Synergy (X Spells)", - "Azusa, Lost but Seeking - Synergy (Ramp)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Firebending leveraging synergies with Mana Dork and X Spells." + "secondary_color": "Black" }, { "theme": "First strike", @@ -8373,33 +2739,7 @@ "Minotaur Kindred" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Danitha Capashen, Paragon", - "Gisela, Blade of Goldnight", - "Drana, Liberator of Malakir", - "Thalia, Heretic Cathar", - "Urabrask // The Great Work" - ], - "example_cards": [ - "Knight of the White Orchid", - "Danitha Capashen, Paragon", - "Combustible Gearhulk", - "Gisela, Blade of Goldnight", - "Bonehoard Dracosaur", - "Drana, Liberator of Malakir", - "Thalia, Heretic Cathar", - "Ocelot Pride" - ], - "synergy_commanders": [ - "Ayesha Tanaka - Synergy (Banding)", - "Gaddock Teeg - Synergy (Kithkin Kindred)", - "Brigid, Hero of Kinsbaile - Synergy (Kithkin Kindred)", - "Syr Konrad, the Grim - Synergy (Knight Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around First strike leveraging synergies with Banding and Kithkin Kindred." + "secondary_color": "Red" }, { "theme": "Fish Kindred", @@ -8411,43 +2751,12 @@ "Creature Tokens" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Eluge, the Shoreless Sea", - "Beza, the Bounding Spring", - "Morska, Undersea Sleuth", - "Baral, Chief of Compliance - Synergy (Loot)", - "The Locust God - Synergy (Loot)" - ], - "example_cards": [ - "Into the Flood Maw", - "Fountainport", - "Deepglow Skate", - "Wavebreak Hippocamp", - "Parting Gust", - "Aboleth Spawn", - "Eluge, the Shoreless Sea", - "Tidal Barracuda" - ], - "synergy_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Stax)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Fish creatures into play with shared payoffs (e.g., Gift and Loot)." + "secondary_color": "Black" }, { "theme": "Flagbearer Kindred", "synergies": [], - "primary_color": "White", - "example_cards": [ - "Standard Bearer", - "Coalition Flag", - "Coalition Honor Guard" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Flagbearer creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Flanking", @@ -8457,33 +2766,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Sidar Kondo of Jamuraa", - "Sidar Jabari", - "Telim'Tor", - "Syr Konrad, the Grim - Synergy (Knight Kindred)", - "Adeline, Resplendent Cathar - Synergy (Knight Kindred)" - ], - "example_cards": [ - "Sidar Kondo of Jamuraa", - "Pentarch Paladin", - "Outrider en-Kor", - "Knight of the Holy Nimbus", - "Riftmarked Knight", - "Knight of Sursi", - "Benalish Cavalry", - "Sidar Jabari" - ], - "synergy_commanders": [ - "Danitha Capashen, Paragon - Synergy (Knight Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Loran of the Third Path - Synergy (Human Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Flanking leveraging synergies with Knight Kindred and Human Kindred." + "secondary_color": "Red" }, { "theme": "Flash", @@ -8495,32 +2778,7 @@ "Equip" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Liberator, Urza's Battlethopter", - "Jin-Gitaxias, Core Augur", - "Malcolm, Alluring Scoundrel", - "Venser, Shaper Savant", - "Phelia, Exuberant Shepherd" - ], - "example_cards": [ - "Orcish Bowmasters", - "Mithril Coat", - "Hullbreaker Horror", - "Faerie Mastermind", - "Opposition Agent", - "Archivist of Oghma", - "Dualcaster Mage", - "Hydroelectric Specimen // Hydroelectric Laboratory" - ], - "synergy_commanders": [ - "Samut, Voice of Dissent - Synergy (Combat Tricks)", - "Naru Meha, Master Wizard - Synergy (Combat Tricks)", - "Rankle, Master of Pranks - Synergy (Faerie Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Flash leveraging synergies with Evoke and Combat Tricks." + "secondary_color": "White" }, { "theme": "Flashback", @@ -8532,50 +2790,15 @@ "Clones" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Six - Synergy (Reanimate)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Kozilek, Butcher of Truth - Synergy (Mill)" - ], - "example_cards": [ - "Faithless Looting", - "Sevinne's Reclamation", - "Dread Return", - "Strike It Rich", - "Deep Analysis", - "Past in Flames", - "Seize the Day", - "Army of the Damned" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Replays instants & sorceries from the graveyard (Flashback) for incremental spell velocity. Synergies like Reanimate and Mill reinforce the plan." + "secondary_color": "Green" }, { "theme": "Flood Counters", - "synergies": [], - "primary_color": "Blue", - "example_commanders": [ - "Eluge, the Shoreless Sea", - "Xolatoyac, the Smiling Flood" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "example_cards": [ - "Eluge, the Shoreless Sea", - "Xolatoyac, the Smiling Flood", - "Aquitect's Will", - "The Flood of Mars", - "Bounty of the Luxa", - "Quicksilver Fountain" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates flood counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Blue" }, { "theme": "Flurry", @@ -8586,32 +2809,7 @@ "Little Fellas" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Taigam, Master Opportunist", - "Shiko and Narset, Unified", - "Azusa, Lost but Seeking - Synergy (Monk Kindred)", - "Narset, Enlightened Exile - Synergy (Monk Kindred)", - "Ishai, Ojutai Dragonspeaker - Synergy (Monk Kindred)" - ], - "example_cards": [ - "Cori-Steel Cutter", - "Taigam, Master Opportunist", - "Aligned Heart", - "Shiko and Narset, Unified", - "Devoted Duelist", - "Wingblade Disciple", - "Cori Mountain Stalwart", - "Poised Practitioner" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Flurry leveraging synergies with Monk Kindred and Spells Matter." + "secondary_color": "White" }, { "theme": "Flying", @@ -8623,35 +2821,7 @@ "Hippogriff Kindred" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Niv-Mizzet, Parun", - "Old Gnawbone", - "Avacyn, Angel of Hope", - "Aurelia, the Warleader", - "Drakuseth, Maw of Flames" - ], - "example_cards": [ - "Birds of Paradise", - "Mirkwood Bats", - "Ornithopter of Paradise", - "Baleful Strix", - "Faerie Mastermind", - "Goldspan Dragon", - "Welcoming Vampire", - "Terror of the Peaks" - ], - "synergy_commanders": [ - "Otharri, Suns' Glory - Synergy (Phoenix Kindred)", - "Joshua, Phoenix's Dominant // Phoenix, Warden of Fire - Synergy (Phoenix Kindred)", - "Syrix, Carrier of the Flame - Synergy (Phoenix Kindred)", - "Ezrim, Agency Chief - Synergy (Archon Kindred)", - "Krond the Dawn-Clad - Synergy (Archon Kindred)", - "Aphemia, the Cacophony - Synergy (Harpy Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Flying leveraging synergies with Phoenix Kindred and Archon Kindred." + "secondary_color": "White" }, { "theme": "Food", @@ -8663,67 +2833,19 @@ "Artifact Tokens" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Peregrin Took", - "Rosie Cotton of South Lane", - "Samwise Gamgee", - "Syr Ginger, the Meal Ender", - "Farmer Cotton" - ], - "example_cards": [ - "Tireless Provisioner", - "Academy Manufactor", - "Peregrin Took", - "Gilded Goose", - "The Shire", - "Rosie Cotton of South Lane", - "Gingerbrute", - "Nuka-Cola Vending Machine" - ], - "synergy_commanders": [ - "Camellia, the Seedmiser - Synergy (Forage)", - "Lotho, Corrupt Shirriff - Synergy (Halfling Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Creates Food tokens for life padding and sacrifice loops that translate into drain, draw, or recursion. Synergies like Food Token and Forage reinforce the plan." + "secondary_color": "Black" }, { "theme": "Food Token", "synergies": [ + "Tokens Matter", "Forage", "Food", "Halfling Kindred", - "Squirrel Kindred", - "Peasant Kindred" + "Squirrel Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Peregrin Took", - "Rosie Cotton of South Lane", - "Samwise Gamgee", - "Farmer Cotton", - "The Goose Mother" - ], - "example_cards": [ - "Tireless Provisioner", - "Peregrin Took", - "Gilded Goose", - "The Shire", - "Rosie Cotton of South Lane", - "Nuka-Cola Vending Machine", - "Oko, Thief of Crowns", - "The Battle of Bywater" - ], - "synergy_commanders": [ - "Camellia, the Seedmiser - Synergy (Forage)", - "Lotho, Corrupt Shirriff - Synergy (Halfling Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Forage and Food reinforce the plan." + "secondary_color": "Black" }, { "theme": "For Mirrodin!", @@ -8735,30 +2857,7 @@ "Creature Tokens" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Neyali, Suns' Vanguard - Synergy (Rebel Kindred)", - "Otharri, Suns' Glory - Synergy (Rebel Kindred)", - "Lyse Hext - Synergy (Rebel Kindred)", - "Halvar, God of Battle // Sword of the Realms - Synergy (Equip)", - "Mithril Coat - Synergy (Equip)" - ], - "example_cards": [ - "Hexplate Wallbreaker", - "Glimmer Lens", - "Bladehold War-Whip", - "Kemba's Banner", - "Hexgold Halberd", - "Dragonwing Glider", - "Hexgold Hoverwings", - "Blade of Shared Souls" - ], - "synergy_commanders": [ - "The Reality Chip - Synergy (Equipment)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around For Mirrodin! leveraging synergies with Rebel Kindred and Equip." + "secondary_color": "White" }, { "theme": "Forage", @@ -8770,30 +2869,7 @@ "Mill" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Camellia, the Seedmiser", - "Peregrin Took - Synergy (Food Token)", - "Rosie Cotton of South Lane - Synergy (Food Token)", - "Samwise Gamgee - Synergy (Food Token)", - "Syr Ginger, the Meal Ender - Synergy (Food)" - ], - "example_cards": [ - "Camellia, the Seedmiser", - "Thornvault Forager", - "Feed the Cycle", - "Curious Forager", - "Corpseberry Cultivator", - "Bushy Bodyguard", - "Treetop Sentries" - ], - "synergy_commanders": [ - "Farmer Cotton - Synergy (Food)", - "Tatyova, Benthic Druid - Synergy (Lifegain)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Forage leveraging synergies with Food Token and Food." + "secondary_color": "Black" }, { "theme": "Forecast", @@ -8802,27 +2878,7 @@ "Spellslinger" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "example_cards": [ - "Skyscribing", - "Pride of the Clouds", - "Sky Hussar", - "Spirit en-Dal", - "Piercing Rays", - "Writ of Passage", - "Govern the Guildless", - "Proclamation of Rebirth" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Forecast leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "Blue" }, { "theme": "Forestcycling", @@ -8833,30 +2889,7 @@ "Ramp", "Discard Matters" ], - "primary_color": "Green", - "example_commanders": [ - "Vorinclex // The Grand Evolution - Synergy (Land Types Matter)", - "Karametra, God of Harvests - Synergy (Land Types Matter)", - "Titania, Nature's Force - Synergy (Land Types Matter)", - "The Balrog of Moria - Synergy (Cycling)", - "Monstrosity of the Lake - Synergy (Cycling)" - ], - "example_cards": [ - "Generous Ent", - "Elvish Aberration", - "Nurturing Bristleback", - "Timberland Ancient", - "Slavering Branchsnapper", - "Balamb T-Rexaur", - "Valley Rannet", - "Pale Recluse" - ], - "synergy_commanders": [ - "Baral, Chief of Compliance - Synergy (Loot)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Forestcycling leveraging synergies with Land Types Matter and Cycling." + "primary_color": "Green" }, { "theme": "Forestwalk", @@ -8868,33 +2901,7 @@ "Little Fellas" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Chatterfang, Squirrel General", - "Jedit Ojanen of Efrava", - "Mirri, Cat Warrior", - "Chorus of the Conclave", - "Dina, Soul Steeper - Synergy (Dryad Kindred)" - ], - "example_cards": [ - "Chatterfang, Squirrel General", - "Yavimaya Dryad", - "Jedit Ojanen of Efrava", - "Zodiac Monkey", - "Mirri, Cat Warrior", - "Chorus of the Conclave", - "Zodiac Rabbit", - "Lynx" - ], - "synergy_commanders": [ - "Trostani, Selesnya's Voice - Synergy (Dryad Kindred)", - "Trostani Discordant - Synergy (Dryad Kindred)", - "Sheoldred, Whispering One - Synergy (Landwalk)", - "Kutzil, Malamet Exemplar - Synergy (Cat Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Forestwalk leveraging synergies with Dryad Kindred and Landwalk." + "secondary_color": "Black" }, { "theme": "Foretell", @@ -8906,32 +2913,7 @@ "Control" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Ranar the Ever-Watchful", - "Bohn, Beguiling Balladeer", - "Etali, Primal Storm - Synergy (Exile Matters)", - "Ragavan, Nimble Pilferer - Synergy (Exile Matters)", - "Urza, Lord High Artificer - Synergy (Exile Matters)" - ], - "example_cards": [ - "Delayed Blast Fireball", - "Ravenform", - "Saw It Coming", - "Mystic Reflection", - "Behold the Multiverse", - "Cosmic Intervention", - "Spectral Deluge", - "Alrund's Epiphany" - ], - "synergy_commanders": [ - "Vito, Thorn of the Dusk Rose - Synergy (Cleric Kindred)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Cleric Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Foretells spells early to smooth curve, conceal information, and discount impactful future turns. Synergies like Exile Matters and Cleric Kindred reinforce the plan." + "secondary_color": "White" }, { "theme": "Formidable", @@ -8941,32 +2923,7 @@ "Little Fellas" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Surrak, the Hunt Caller", - "Ultra Magnus, Tactician // Ultra Magnus, Armored Carrier", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Loran of the Third Path - Synergy (Human Kindred)" - ], - "example_cards": [ - "Gimli's Reckless Might", - "Shaman of Forgotten Ways", - "Surrak, the Hunt Caller", - "Dragon-Scarred Bear", - "Ultra Magnus, Tactician // Ultra Magnus, Armored Carrier", - "Dragon Whisperer", - "Stampeding Elk Herd", - "Circle of Elders" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Formidable leveraging synergies with Human Kindred and Toughness Matters." + "secondary_color": "Red" }, { "theme": "Fox Kindred", @@ -8978,35 +2935,7 @@ "Life Matters" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Light-Paws, Emperor's Voice", - "Pearl-Ear, Imperial Advisor", - "Zirda, the Dawnwaker", - "Rune-Tail, Kitsune Ascendant // Rune-Tail's Essence", - "Eight-and-a-Half-Tails" - ], - "example_cards": [ - "Light-Paws, Emperor's Voice", - "Pearl-Ear, Imperial Advisor", - "Zirda, the Dawnwaker", - "Inquisitive Glimmer", - "The Restoration of Eiganjo // Architect of Restoration", - "Filigree Familiar", - "Werefox Bodyguard", - "Rune-Tail, Kitsune Ascendant // Rune-Tail's Essence" - ], - "synergy_commanders": [ - "Toshiro Umezawa - Synergy (Bushido)", - "Konda, Lord of Eiganjo - Synergy (Bushido)", - "Sensei Golden-Tail - Synergy (Bushido)", - "Isshin, Two Heavens as One - Synergy (Samurai Kindred)", - "Goro-Goro, Disciple of Ryusei - Synergy (Samurai Kindred)", - "Vito, Thorn of the Dusk Rose - Synergy (Cleric Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Fox creatures into play with shared payoffs (e.g., Bushido and Samurai Kindred)." + "secondary_color": "Green" }, { "theme": "Fractal Kindred", @@ -9018,33 +2947,7 @@ "Combat Matters" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Esix, Fractal Bloom", - "Zimone, All-Questioning", - "Kianne, Dean of Substance // Imbraham, Dean of Theory", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Esix, Fractal Bloom", - "Oversimplify", - "Paradox Zone", - "Emergent Sequence", - "Kasmina, Enigma Sage", - "Body of Research", - "Zimone, All-Questioning", - "Geometric Nexus" - ], - "synergy_commanders": [ - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Fractal creatures into play with shared payoffs (e.g., +1/+1 Counters and Counters Matter)." + "secondary_color": "Blue" }, { "theme": "Freerunning", @@ -9056,33 +2959,7 @@ "Spellslinger" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Achilles Davenport", - "Ezio Auditore da Firenze", - "Jacob Frye", - "Massacre Girl - Synergy (Assassin Kindred)", - "Mari, the Killing Quill - Synergy (Assassin Kindred)" - ], - "example_cards": [ - "Overpowering Attack", - "Eagle Vision", - "Restart Sequence", - "Viewpoint Synchronization", - "Brotherhood Headquarters", - "Achilles Davenport", - "Chain Assassination", - "Ezio Auditore da Firenze" - ], - "synergy_commanders": [ - "Massacre Girl, Known Killer - Synergy (Assassin Kindred)", - "Ghalta, Primal Hunger - Synergy (Cost Reduction)", - "Emry, Lurker of the Loch - Synergy (Cost Reduction)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Freerunning leveraging synergies with Assassin Kindred and Cost Reduction." + "secondary_color": "Blue" }, { "theme": "Frog Kindred", @@ -9094,47 +2971,15 @@ "Blink" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "The Gitrog Monster", - "Yargle and Multani", - "Thalia and The Gitrog Monster", - "The Gitrog, Ravenous Ride", - "Glarb, Calamity's Augur" - ], - "example_cards": [ - "Rapid Hybridization", - "The Gitrog Monster", - "Spore Frog", - "Pollywog Prodigy", - "Amphibian Downpour", - "Poison Dart Frog", - "Dour Port-Mage", - "Twenty-Toed Toad" - ], - "synergy_commanders": [ - "Six - Synergy (Reach)", - "Kodama of the West Tree - Synergy (Reach)", - "Kodama of the East Tree - Synergy (Reach)", - "Loot, Exuberant Explorer - Synergy (Beast Kindred)", - "Questing Beast - Synergy (Beast Kindred)", - "Emry, Lurker of the Loch - Synergy (Wizard Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Frog creatures into play with shared payoffs (e.g., Reach and Beast Kindred)." + "secondary_color": "Blue" }, { "theme": "Fungus Counters", - "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Sporogenesis", - "Mindbender Spores" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates fungus counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Green" }, { "theme": "Fungus Kindred", @@ -9146,47 +2991,15 @@ "Beast Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Slimefoot, the Stowaway", - "The Mycotyrant", - "Xavier Sal, Infested Captain", - "Slimefoot and Squee", - "Ghave, Guru of Spores" - ], - "example_cards": [ - "Cankerbloom", - "The Skullspore Nexus", - "Corpsejack Menace", - "Mycoloth", - "Insidious Fungus", - "Sporemound", - "Sowing Mycospawn", - "Slimefoot, the Stowaway" - ], - "synergy_commanders": [ - "Thelon of Havenwood - Synergy (Spore Counters)", - "Nemata, Primeval Warden - Synergy (Saproling Kindred)", - "Vorinclex, Monstrous Raider - Synergy (Ore Counters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Fungus creatures into play with shared payoffs (e.g., Spore Counters and Saproling Kindred)." + "secondary_color": "Black" }, { "theme": "Fuse Counters", - "synergies": [], - "primary_color": "Red", - "example_cards": [ - "Goblin Bomb", - "Bomb Squad", - "Pumpkin Bombs", - "Powder Keg", - "Incendiary" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates fuse counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Red" }, { "theme": "Gargoyle Kindred", @@ -9198,30 +3011,7 @@ "Big Mana" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)" - ], - "example_cards": [ - "Wakestone Gargoyle", - "Riddle Gate Gargoyle", - "Vantress Gargoyle", - "Stonecloaker", - "Tyranid Harridan", - "Cloister Gargoyle", - "Gargoyle Flock", - "Nullstone Gargoyle" - ], - "synergy_commanders": [ - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Gargoyle creatures into play with shared payoffs (e.g., Flying and Blink)." + "secondary_color": "Blue" }, { "theme": "Germ Kindred", @@ -9233,27 +3023,7 @@ "Equipment Matters" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Kaldra Compleat - Synergy (Living weapon)", - "Bitterthorn, Nissa's Animus - Synergy (Living weapon)", - "Halvar, God of Battle // Sword of the Realms - Synergy (Equip)", - "Mithril Coat - Synergy (Equip)", - "The Reality Chip - Synergy (Equipment)" - ], - "example_cards": [ - "Nettlecyst", - "Bitterthorn, Nissa's Animus", - "Bonehoard", - "Batterskull", - "Scytheclaw", - "Batterbone", - "Cranial Ram", - "Lashwrithe" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Germ creatures into play with shared payoffs (e.g., Living weapon and Equip)." + "secondary_color": "Green" }, { "theme": "Giant Kindred", @@ -9265,35 +3035,7 @@ "Trample" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Uro, Titan of Nature's Wrath", - "Thryx, the Sudden Storm", - "Bonny Pall, Clearcutter", - "Kroxa, Titan of Death's Hunger", - "Oloro, Ageless Ascetic" - ], - "example_cards": [ - "Sun Titan", - "Grave Titan", - "Uro, Titan of Nature's Wrath", - "Doomwake Giant", - "Archmage of Runes", - "Beanstalk Giant // Fertile Footsteps", - "Diregraf Colossus", - "Tectonic Giant" - ], - "synergy_commanders": [ - "Maester Seymour - Synergy (Monstrosity)", - "Polukranos, World Eater - Synergy (Monstrosity)", - "Hythonia the Cruel - Synergy (Monstrosity)", - "Kardur, Doomscourge - Synergy (Berserker Kindred)", - "Magda, Brazen Outlaw - Synergy (Berserker Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Giant creatures into play with shared payoffs (e.g., Monstrosity and Berserker Kindred)." + "secondary_color": "White" }, { "theme": "Gift", @@ -9305,45 +3047,12 @@ "Tokens Matter" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Eluge, the Shoreless Sea - Synergy (Fish Kindred)", - "Beza, the Bounding Spring - Synergy (Fish Kindred)", - "Morska, Undersea Sleuth - Synergy (Fish Kindred)", - "Tatyova, Benthic Druid - Synergy (Unconditional Draw)", - "Yawgmoth, Thran Physician - Synergy (Unconditional Draw)" - ], - "example_cards": [ - "Dawn's Truce", - "Into the Flood Maw", - "Long River's Pull", - "Parting Gust", - "Starfall Invocation", - "Wear Down", - "Perch Protection", - "Peerless Recycling" - ], - "synergy_commanders": [ - "Sythis, Harvest's Hand - Synergy (Cantrips)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Gift leveraging synergies with Fish Kindred and Unconditional Draw." + "secondary_color": "Black" }, { "theme": "Gith Kindred", "synergies": [], - "primary_color": "White", - "example_commanders": [ - "Lae'zel, Vlaakith's Champion" - ], - "example_cards": [ - "Lae'zel, Vlaakith's Champion", - "Githzerai Monk" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Gith creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Glimmer Kindred", @@ -9355,47 +3064,13 @@ "Enter the Battlefield" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)", - "Sheoldred, the Apocalypse - Synergy (Sacrifice Matters)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Aristocrats)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Aristocrats)" - ], - "example_cards": [ - "Enduring Vitality", - "Enduring Innocence", - "Enduring Curiosity", - "Enduring Tenacity", - "Enduring Courage", - "Inquisitive Glimmer", - "Soaring Lightbringer", - "Grand Entryway // Elegant Rotunda" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Glimmer creatures into play with shared payoffs (e.g., Sacrifice Matters and Aristocrats)." + "secondary_color": "Black" }, { "theme": "Gnoll Kindred", "synergies": [], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Targ Nar, Demon-Fang Gnoll" - ], - "example_cards": [ - "Gnoll War Band", - "Targ Nar, Demon-Fang Gnoll", - "Gnoll Hunter" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Gnoll creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Gnome Kindred", @@ -9407,35 +3082,7 @@ "Tokens Matter" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Anim Pakal, Thousandth Moon", - "Oswald Fiddlebender", - "Jan Jansen, Chaos Crafter", - "Minn, Wily Illusionist", - "Tetzin, Gnome Champion // The Golden-Gear Colossus" - ], - "example_cards": [ - "Anim Pakal, Thousandth Moon", - "Thousand Moons Smithy // Barracks of the Thousand", - "Illustrious Wanderglyph", - "Threefold Thunderhulk", - "Deep Gnome Terramancer", - "Oswald Fiddlebender", - "Jan Jansen, Chaos Crafter", - "Oltec Matterweaver" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifact Tokens)", - "Lotho, Corrupt Shirriff - Synergy (Artifact Tokens)", - "Peregrin Took - Synergy (Artifact Tokens)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)", - "Talrand, Sky Summoner - Synergy (Creature Tokens)", - "Loran of the Third Path - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Gnome creatures into play with shared payoffs (e.g., Artifact Tokens and Creature Tokens)." + "secondary_color": "Blue" }, { "theme": "Goad", @@ -9447,34 +3094,7 @@ "Auras" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Grenzo, Havoc Raiser", - "Glóin, Dwarf Emissary", - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Karazikar, the Eye Tyrant", - "Alela, Cunning Conqueror" - ], - "example_cards": [ - "Disrupt Decorum", - "Shiny Impetus", - "Grenzo, Havoc Raiser", - "Vengeful Ancestor", - "Taunt from the Rampart", - "Bloodthirsty Blade", - "Agitator Ant", - "Spectacular Showdown" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Theft)", - "Gonti, Lord of Luxury - Synergy (Theft)", - "Lotho, Corrupt Shirriff - Synergy (Rogue Kindred)", - "Sakashima of a Thousand Faces - Synergy (Rogue Kindred)", - "Katilda, Dawnhart Martyr // Katilda's Rising Dawn - Synergy (Enchant)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Redirects combat outward by goading opponents’ creatures, destabilizing defenses while you build advantage. Synergies like Theft and Rogue Kindred reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Goat Kindred", @@ -9486,31 +3106,7 @@ "Tokens Matter" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Flopsie, Bumi's Buddy", - "Loot, Exuberant Explorer - Synergy (Beast Kindred)", - "Questing Beast - Synergy (Beast Kindred)", - "Kona, Rescue Beastie - Synergy (Beast Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Woe Strider", - "Trading Post", - "Animal Sanctuary", - "Pathbreaker Ibex", - "Contraband Livestock", - "Clackbridge Troll", - "Capricopian", - "Springjack Pasture" - ], - "synergy_commanders": [ - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Goat creatures into play with shared payoffs (e.g., Beast Kindred and +1/+1 Counters)." + "secondary_color": "Red" }, { "theme": "Goblin Kindred", @@ -9522,111 +3118,31 @@ "Mutant Kindred" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Krenko, Tin Street Kingpin", - "Kiki-Jiki, Mirror Breaker", - "Krenko, Mob Boss", - "Grenzo, Havoc Raiser", - "Squee, the Immortal" - ], - "example_cards": [ - "Guttersnipe", - "Goblin Anarchomancer", - "Ignoble Hierarch", - "Warren Soultrader", - "Goblin Electromancer", - "Krenko, Tin Street Kingpin", - "Brash Taunter", - "Coat of Arms" - ], - "synergy_commanders": [ - "Delina, Wild Mage - Synergy (Shaman Kindred)", - "Meren of Clan Nel Toth - Synergy (Shaman Kindred)", - "Aurelia, the Warleader - Synergy (Haste)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Goblin creatures into play with shared payoffs (e.g., Shaman Kindred and Echo)." + "secondary_color": "Black" }, { "theme": "God Kindred", "synergies": [ "Indestructible", + "Historics Matter", + "Legends Matter", "Protection", - "Midrange", - "Transform", - "Exile Matters" + "Midrange" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Purphoros, God of the Forge", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Heliod, Sun-Crowned", - "Xenagos, God of Revels" - ], - "example_cards": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Purphoros, God of the Forge", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "The World Tree", - "Tyrite Sanctum", - "Heliod, Sun-Crowned", - "Xenagos, God of Revels", - "Thassa, Deep-Dwelling" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Indestructible)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Indestructible)", - "Boromir, Warden of the Tower - Synergy (Protection)", - "Avacyn, Angel of Hope - Synergy (Protection)", - "Rishkar, Peema Renegade - Synergy (Midrange)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of God creatures into play with shared payoffs (e.g., Indestructible and Protection)." + "secondary_color": "White" }, { "theme": "Gold Token", "synergies": [ + "Tokens Matter", "Artifact Tokens", "Token Creation", - "Tokens Matter", "Artifacts Matter", "Aggro" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Goldberry, River-Daughter", - "Golden Argosy", - "King Macar, the Gold-Cursed", - "Goldbug, Humanity's Ally // Goldbug, Scrappy Scout", - "Tetzin, Gnome Champion // The Golden-Gear Colossus" - ], - "example_cards": [ - "Curse of Opulence", - "Dragon's Hoard", - "The Golden Throne", - "Goldberry, River-Daughter", - "The First Iroan Games", - "Golden Argosy", - "Golden Guardian // Gold-Forge Garrison", - "King Macar, the Gold-Cursed" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifact Tokens)", - "Lotho, Corrupt Shirriff - Synergy (Artifact Tokens)", - "Peregrin Took - Synergy (Artifact Tokens)", - "Mondrak, Glory Dominus - Synergy (Token Creation)", - "Adeline, Resplendent Cathar - Synergy (Token Creation)", - "Talrand, Sky Summoner - Synergy (Tokens Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Artifact Tokens and Token Creation reinforce the plan." + "secondary_color": "Black" }, { "theme": "Golem Kindred", @@ -9638,35 +3154,7 @@ "Creature Tokens" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Karn, Legacy Reforged", - "Alibou, Ancient Witness", - "General Ferrous Rokiric", - "Armix, Filigree Thrasher", - "Malcator, Purity Overseer" - ], - "example_cards": [ - "Solemn Simulacrum", - "Roaming Throne", - "Meteor Golem", - "Blightsteel Colossus", - "Gingerbrute", - "Molten Gatekeeper", - "Bronze Guardian", - "Illustrious Wanderglyph" - ], - "synergy_commanders": [ - "Loran of the Third Path - Synergy (Artificer Kindred)", - "Sai, Master Thopterist - Synergy (Artificer Kindred)", - "Urza, Lord High Artificer - Synergy (Artificer Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Artifact Tokens)", - "Lotho, Corrupt Shirriff - Synergy (Artifact Tokens)", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Golem creatures into play with shared payoffs (e.g., Artificer Kindred and Artifact Tokens)." + "secondary_color": "Red" }, { "theme": "Gorgon Kindred", @@ -9677,35 +3165,7 @@ "Stax", "Reanimate" ], - "primary_color": "Black", - "example_commanders": [ - "Vraska, the Silencer", - "Aphelia, Viper Whisperer", - "Damia, Sage of Stone", - "Visara the Dreadful", - "Hythonia the Cruel" - ], - "example_cards": [ - "Vraska, the Silencer", - "Archetype of Finality", - "Rattleback Apothecary", - "Persuasive Interrogators", - "Gorgon Recluse", - "Aphelia, Viper Whisperer", - "Damia, Sage of Stone", - "Visara the Dreadful" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Deathtouch)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Deathtouch)", - "The Gitrog Monster - Synergy (Deathtouch)", - "Ulamog, the Infinite Gyre - Synergy (Removal)", - "Zacama, Primal Calamity - Synergy (Removal)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Gorgon creatures into play with shared payoffs (e.g., Deathtouch and Removal)." + "primary_color": "Black" }, { "theme": "Graft", @@ -9717,104 +3177,34 @@ "Enter the Battlefield" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Agent Frank Horrigan - Synergy (Mutant Kindred)", - "The Wise Mothman - Synergy (Mutant Kindred)", - "The Master, Transcendent - Synergy (Mutant Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Llanowar Reborn", - "Plaxcaster Frogling", - "Vigean Graftmage", - "Cytoplast Manipulator", - "Aquastrand Spider", - "Cytoplast Root-Kin", - "Sporeback Troll", - "Novijen Sages" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Graft leveraging synergies with Mutant Kindred and +1/+1 Counters." + "secondary_color": "Blue" }, { "theme": "Grandeur", - "synergies": [], + "synergies": [ + "Historics Matter", + "Legends Matter" + ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Korlash, Heir to Blackblade", - "Baru, Fist of Krosa", - "Skoa, Embermage", - "Oriss, Samite Guardian", - "Linessa, Zephyr Mage" - ], - "example_cards": [ - "Korlash, Heir to Blackblade", - "Baru, Fist of Krosa", - "Skoa, Embermage", - "Oriss, Samite Guardian", - "Linessa, Zephyr Mage", - "Tarox Bladewing" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Grandeur theme and its supporting synergies." + "secondary_color": "Black" }, { "theme": "Gravestorm", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Follow the Bodies", - "Bitter Ordeal" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds storm count with cheap spells & mana bursts, converting it into a lethal payoff turn." + "secondary_color": "Blue" }, { "theme": "Graveyard Matters", "synergies": [ + "Reanimate", "Mill", "Unearth", "Surveil", - "Reanimate", "Craft" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Octavia, Living Thesis", - "Extus, Oriq Overlord // Awaken the Blood Avatar", - "Tetzin, Gnome Champion // The Golden-Gear Colossus", - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)" - ], - "example_cards": [ - "Professor Onyx", - "Tithing Blade // Consuming Sepulcher", - "Octavia, Living Thesis", - "The Enigma Jewel // Locus of Enlightenment", - "Unstable Glyphbridge // Sandswirl Wanderglyph", - "Altar of the Wretched // Wretched Bonemass", - "Clay-Fired Bricks // Cosmium Kiln", - "Eye of Ojer Taq // Apex Observatory" - ], - "synergy_commanders": [ - "Six - Synergy (Reanimate)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Kozilek, Butcher of Truth - Synergy (Mill)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Loads high-impact cards into the graveyard early and reanimates them for explosive tempo or combo loops. Synergies like Reanimate and Mill reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Gremlin Kindred", @@ -9825,31 +3215,7 @@ "Combat Matters" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Gimbal, Gremlin Prodigy", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Lotho, Corrupt Shirriff - Synergy (Artifacts Matter)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)" - ], - "example_cards": [ - "Blisterspit Gremlin", - "Barbflare Gremlin", - "Irreverent Gremlin", - "Flensermite", - "Gimbal, Gremlin Prodigy", - "Midnight Mayhem", - "Razorkin Hordecaller", - "Territorial Gorger" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Etali, Primal Storm - Synergy (Aggro)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Gremlin creatures into play with shared payoffs (e.g., Artifacts Matter and Little Fellas)." + "secondary_color": "Black" }, { "theme": "Griffin Kindred", @@ -9861,56 +3227,22 @@ "Big Mana" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Zeriam, Golden Wind", - "Zuberi, Golden Feather", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)" - ], - "example_cards": [ - "Transcendent Envoy", - "Bladegriff Prototype", - "Misthollow Griffin", - "Zeriam, Golden Wind", - "Fearless Fledgling", - "Mistmoon Griffin", - "Griffin Protector", - "Griffin Sentinel" - ], - "synergy_commanders": [ - "Loran of the Third Path - Synergy (Vigilance)", - "Adeline, Resplendent Cathar - Synergy (Vigilance)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Griffin creatures into play with shared payoffs (e.g., Flying and Vigilance)." + "secondary_color": "Blue" }, { "theme": "Group Hug", "synergies": [ "Politics", "Card Draw" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accelerates the whole table (cards / mana / tokens) to shape politics, then pivots that shared growth into asymmetric advantage. Synergies like Politics and Card Draw reinforce the plan." + ] }, { "theme": "Growth Counters", - "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Simic Ascendancy", - "Paradox Zone", - "Malignant Growth", - "Momentum" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates growth counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Green" }, { "theme": "Guest Kindred", @@ -9922,53 +3254,13 @@ "Little Fellas" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "The Most Dangerous Gamer", - "The Space Family Goblinson", - "Ambassador Blorpityblorpboop", - "Solaflora, Intergalactic Icon", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "example_cards": [ - "_____ Goblin", - "\"Lifetime\" Pass Holder", - "Line Cutter", - "Vedalken Squirrel-Whacker", - "The Most Dangerous Gamer", - "Wicker Picker", - "The Space Family Goblinson", - "Dissatisfied Customer" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Blink)", - "Elesh Norn, Mother of Machines - Synergy (Enter the Battlefield)", - "Kodama of the East Tree - Synergy (Enter the Battlefield)", - "Nezahal, Primal Tide - Synergy (Leave the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Guest creatures into play with shared payoffs (e.g., Blink and Enter the Battlefield)." + "secondary_color": "Red" }, { "theme": "Hag Kindred", "synergies": [], "primary_color": "Blue", - "secondary_color": "Black", - "example_cards": [ - "Fate Unraveler", - "Sea Hag // Aquatic Ingress", - "Desecrator Hag", - "Gwyllion Hedge-Mage", - "Nip Gwyllion", - "Hag Hedge-Mage", - "Stalker Hag", - "Brine Hag" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Hag creatures into play with shared payoffs." + "secondary_color": "Black" }, { "theme": "Halfling Kindred", @@ -9980,50 +3272,12 @@ "Artifact Tokens" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Lotho, Corrupt Shirriff", - "Peregrin Took", - "Rosie Cotton of South Lane", - "The Gaffer", - "Samwise Gamgee" - ], - "example_cards": [ - "Delighted Halfling", - "Lotho, Corrupt Shirriff", - "Archivist of Oghma", - "Peregrin Took", - "Rosie Cotton of South Lane", - "Prosperous Innkeeper", - "The Gaffer", - "Samwise Gamgee" - ], - "synergy_commanders": [ - "Ms. Bumbleflower - Synergy (Citizen Kindred)", - "Farmer Cotton - Synergy (Food Token)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Halfling creatures into play with shared payoffs (e.g., Peasant Kindred and Citizen Kindred)." + "secondary_color": "Black" }, { "theme": "Hamster Kindred", "synergies": [], - "primary_color": "White", - "example_commanders": [ - "Minsc & Boo, Timeless Heroes", - "Minsc, Beloved Ranger" - ], - "example_cards": [ - "Minsc & Boo, Timeless Heroes", - "Rolling Hamsphere", - "Sword of the Squeak", - "Jolly Gerbils", - "Minsc, Beloved Ranger" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Hamster creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Harmonize", @@ -10033,30 +3287,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Emry, Lurker of the Loch - Synergy (Mill)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Nature's Rhythm", - "Wild Ride", - "Zenith Festival", - "Winternight Stories", - "Roamer's Routine", - "Unending Whisper", - "Synchronized Charge", - "Glacial Dragonhunt" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Harmonize leveraging synergies with Mill and Spells Matter." + "secondary_color": "Green" }, { "theme": "Harpy Kindred", @@ -10065,30 +3296,7 @@ "Little Fellas" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Aphemia, the Cacophony", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "example_cards": [ - "Abhorrent Overlord", - "Mindwrack Harpy", - "Summon: Primal Garuda", - "Cavern Harpy", - "Aphemia, the Cacophony", - "Insatiable Harpy", - "Ravenous Harpy", - "Blood-Toll Harpy" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Harpy creatures into play with shared payoffs (e.g., Flying and Little Fellas)." + "secondary_color": "White" }, { "theme": "Haste", @@ -10100,59 +3308,24 @@ "Minotaur Kindred" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Aurelia, the Warleader", - "Yahenni, Undying Partisan", - "Kiki-Jiki, Mirror Breaker", - "Captain Lannery Storm", - "Vorinclex, Monstrous Raider" - ], - "example_cards": [ - "Anger", - "Craterhoof Behemoth", - "Goldspan Dragon", - "Loyal Apprentice", - "Aurelia, the Warleader", - "Yahenni, Undying Partisan", - "Kiki-Jiki, Mirror Breaker", - "Captain Lannery Storm" - ], - "synergy_commanders": [ - "Obosh, the Preypiercer - Synergy (Hellion Kindred)", - "Ulasht, the Hate Seed - Synergy (Hellion Kindred)", - "Thromok the Insatiable - Synergy (Hellion Kindred)", - "Otharri, Suns' Glory - Synergy (Phoenix Kindred)", - "Joshua, Phoenix's Dominant // Phoenix, Warden of Fire - Synergy (Phoenix Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Haste leveraging synergies with Hellion Kindred and Phoenix Kindred." + "secondary_color": "Green" }, { "theme": "Hatching Counters", - "synergies": [], - "primary_color": "Green", - "example_cards": [ - "The Dragon-Kami Reborn // Dragon-Kami's Egg" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates hatching counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Green" }, { "theme": "Hatchling Counters", - "synergies": [], - "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Eumidian Hatchery", - "Ludevic's Test Subject // Ludevic's Abomination", - "Triassic Egg" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates hatchling counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black", + "secondary_color": "Blue" }, { "theme": "Haunt", @@ -10164,42 +3337,15 @@ "Leave the Battlefield" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)", - "Sheoldred, the Apocalypse - Synergy (Sacrifice Matters)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Aristocrats)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Aristocrats)" - ], - "example_cards": [ - "Blind Hunter", - "Belfry Spirit", - "Cry of Contrition", - "Orzhov Pontiff", - "Orzhov Euthanist", - "Benediction of Moons", - "Seize the Soul", - "Absolver Thrull" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Haunt leveraging synergies with Sacrifice Matters and Aristocrats." + "secondary_color": "White" }, { "theme": "Healing Counters", - "synergies": [], - "primary_color": "White", - "example_cards": [ - "Ursine Fylgja", - "Fylgja" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates healing counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "White" }, { "theme": "Hellbent", @@ -10210,30 +3356,7 @@ "Burn" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Braids, Arisen Nightmare - Synergy (Draw Triggers)", - "Loran of the Third Path - Synergy (Draw Triggers)", - "Sheoldred, the Apocalypse - Synergy (Draw Triggers)", - "Selvala, Heart of the Wilds - Synergy (Wheels)", - "Niv-Mizzet, Parun - Synergy (Wheels)" - ], - "example_cards": [ - "Gibbering Descent", - "Demonfire", - "Infernal Tutor", - "Keldon Megaliths", - "Taste for Mayhem", - "Tragic Fall", - "Anthem of Rakdos", - "Bladeback Sliver" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Card Draw)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Hellbent leveraging synergies with Draw Triggers and Wheels." + "secondary_color": "Red" }, { "theme": "Hellion Kindred", @@ -10244,33 +3367,7 @@ "Enter the Battlefield", "Leave the Battlefield" ], - "primary_color": "Red", - "example_commanders": [ - "Obosh, the Preypiercer", - "Ulasht, the Hate Seed", - "Thromok the Insatiable", - "Aurelia, the Warleader - Synergy (Haste)", - "Yahenni, Undying Partisan - Synergy (Haste)" - ], - "example_cards": [ - "Obosh, the Preypiercer", - "Ulasht, the Hate Seed", - "Embermaw Hellion", - "Thromok the Insatiable", - "Volcano Hellion", - "Molten Monstrosity", - "Crater Hellion", - "Chandra's Firemaw" - ], - "synergy_commanders": [ - "Kiki-Jiki, Mirror Breaker - Synergy (Haste)", - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Hellion creatures into play with shared payoffs (e.g., Haste and Trample)." + "primary_color": "Red" }, { "theme": "Hero Kindred", @@ -10282,30 +3379,7 @@ "Equipment" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "G'raha Tia, Scion Reborn", - "Tellah, Great Sage", - "Flash Thompson, Spider-Fan", - "Ellivere of the Wild Court - Synergy (Role token)", - "Gylwain, Casting Director - Synergy (Role token)" - ], - "example_cards": [ - "Black Mage's Rod", - "Dancer's Chakrams", - "Zanarkand, Ancient Metropolis // Lasting Fayth", - "Champions from Beyond", - "Astrologian's Planisphere", - "G'raha Tia, Scion Reborn", - "Machinist's Arsenal", - "Samurai's Katana" - ], - "synergy_commanders": [ - "Heliod, God of the Sun - Synergy (Enchantment Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Hero creatures into play with shared payoffs (e.g., Job select and Role token)." + "secondary_color": "Red" }, { "theme": "Heroic", @@ -10317,35 +3391,7 @@ "Wizard Kindred" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Rosnakht, Heir of Rohgahh", - "Brigone, Soldier of Meletis", - "Anax and Cymede", - "Cleon, Merry Champion", - "Anthousa, Setessan Hero" - ], - "example_cards": [ - "Hero of Iroas", - "Sage of Hours", - "Akroan Crusader", - "Phalanx Leader", - "Rosnakht, Heir of Rohgahh", - "Brigone, Soldier of Meletis", - "Battlefield Thaumaturge", - "Triton Fortune Hunter" - ], - "synergy_commanders": [ - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)", - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)", - "Odric, Lunarch Marshal - Synergy (Soldier Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Heroic leveraging synergies with Soldier Kindred and Warrior Kindred." + "secondary_color": "Blue" }, { "theme": "Hexproof", @@ -10357,33 +3403,7 @@ "Beast Kindred" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "General Ferrous Rokiric", - "Silumgar, the Drifting Death", - "Lazav, Dimir Mastermind", - "Elenda, Saint of Dusk", - "Sigarda, Host of Herons" - ], - "example_cards": [ - "Lotus Field", - "Valgavoth's Lair", - "Sylvan Caryatid", - "Volatile Stormdrake", - "Invisible Stalker", - "Slippery Bogbonder", - "General Ferrous Rokiric", - "Silumgar, the Drifting Death" - ], - "synergy_commanders": [ - "Niv-Mizzet, Guildpact - Synergy (Hexproof from)", - "Toski, Bearer of Secrets - Synergy (Protection)", - "Purphoros, God of the Forge - Synergy (Protection)", - "Kutzil, Malamet Exemplar - Synergy (Stax)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Hexproof leveraging synergies with Hexproof from and Protection." + "secondary_color": "Blue" }, { "theme": "Hexproof from", @@ -10393,34 +3413,7 @@ "Interaction" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "General Ferrous Rokiric", - "Elenda, Saint of Dusk", - "Niv-Mizzet, Guildpact", - "Niv-Mizzet, Supreme", - "Nevinyrral, Urborg Tyrant" - ], - "example_cards": [ - "Volatile Stormdrake", - "General Ferrous Rokiric", - "Breaker of Creation", - "Elenda, Saint of Dusk", - "Eradicator Valkyrie", - "Sporeweb Weaver", - "Niv-Mizzet, Guildpact", - "Niv-Mizzet, Supreme" - ], - "synergy_commanders": [ - "Silumgar, the Drifting Death - Synergy (Hexproof)", - "Lazav, Dimir Mastermind - Synergy (Hexproof)", - "Toski, Bearer of Secrets - Synergy (Protection)", - "Purphoros, God of the Forge - Synergy (Protection)", - "Syr Konrad, the Grim - Synergy (Interaction)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Hexproof from leveraging synergies with Hexproof and Protection." + "secondary_color": "Green" }, { "theme": "Hideaway", @@ -10429,50 +3422,13 @@ "Lands Matter" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "The Reality Chip - Synergy (Topdeck)", - "Loot, Exuberant Explorer - Synergy (Topdeck)", - "Kinnan, Bonder Prodigy - Synergy (Topdeck)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)", - "Tatyova, Benthic Druid - Synergy (Lands Matter)" - ], - "example_cards": [ - "Mosswort Bridge", - "Windbrisk Heights", - "Spinerock Knoll", - "Cemetery Tampering", - "Rabble Rousing", - "Fight Rigging", - "Evercoat Ursine", - "Watcher for Tomorrow" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Hideaway leveraging synergies with Topdeck and Lands Matter." + "secondary_color": "Green" }, { "theme": "Hippo Kindred", "synergies": [], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Keruga, the Macrosage", - "Phelddagrif" - ], - "example_cards": [ - "Keruga, the Macrosage", - "Mouth // Feed", - "Phelddagrif", - "Questing Phelddagrif", - "Rampaging Hippo", - "Defiant Greatmaw", - "Pygmy Hippo", - "Bull Hippo" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Hippo creatures into play with shared payoffs." + "secondary_color": "Black" }, { "theme": "Hippogriff Kindred", @@ -10481,27 +3437,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)" - ], - "example_cards": [ - "Hushwing Gryff", - "Blessed Hippogriff // Tyr's Blessing", - "Congregation Gryff", - "Loyal Gryff", - "Wretched Gryff", - "Razor Hippogriff", - "Soul-Guide Gryff", - "Galedrifter // Waildrifter" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Hippogriff creatures into play with shared payoffs (e.g., Flying and Little Fellas)." + "secondary_color": "Blue" }, { "theme": "Historics Matter", @@ -10513,74 +3449,22 @@ "Doctor's companion" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim", - "Etali, Primal Storm", - "Ragavan, Nimble Pilferer", - "Braids, Arisen Nightmare", - "Azusa, Lost but Seeking" - ], - "example_cards": [ - "Urborg, Tomb of Yawgmoth", - "Yavimaya, Cradle of Growth", - "Boseiju, Who Endures", - "The One Ring", - "Otawara, Soaring City", - "Delighted Halfling", - "Nykthos, Shrine to Nyx", - "Gemstone Caverns" - ], - "synergy_commanders": [ - "Daretti, Scrap Savant - Synergy (Superfriends)", - "Freyalise, Llanowar's Fury - Synergy (Superfriends)", - "Jaheira, Friend of the Forest - Synergy (Backgrounds Matter)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Casts a dense mix of artifacts, legendaries, and sagas to trigger Historic-matter payoffs repeatedly." + "secondary_color": "Black" }, { "theme": "Hit Counters", - "synergies": [], - "primary_color": "Black", - "example_commanders": [ - "Mari, the Killing Quill", - "Etrata, the Silencer" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "example_cards": [ - "Mari, the Killing Quill", - "Ravenloft Adventurer", - "Etrata, the Silencer" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates hit counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black" }, { "theme": "Homarid Kindred", "synergies": [ "Little Fellas" ], - "primary_color": "Blue", - "example_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Deepmuck Desperado", - "Homarid Explorer", - "Homarid Shaman", - "Viscerid Deepwalker", - "Deep Spawn", - "Viscerid Drone", - "Homarid", - "Homarid Warrior" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Homarid creatures into play with shared payoffs (e.g., Little Fellas)." + "primary_color": "Blue" }, { "theme": "Homunculus Kindred", @@ -10590,35 +3474,7 @@ "Card Draw" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Fblthp, Lost on the Range", - "Vnwxt, Verbose Host", - "Fblthp, the Lost", - "Zndrsplt, Eye of Wisdom", - "Borborygmos and Fblthp" - ], - "example_cards": [ - "Homunculus Horde", - "Fblthp, Lost on the Range", - "Vnwxt, Verbose Host", - "Fblthp, the Lost", - "Curious Homunculus // Voracious Reader", - "Filigree Attendant", - "Riddlekeeper", - "Zndrsplt, Eye of Wisdom" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)", - "Braids, Arisen Nightmare - Synergy (Card Draw)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Homunculus creatures into play with shared payoffs (e.g., Little Fellas and Toughness Matters)." + "secondary_color": "White" }, { "theme": "Horror Kindred", @@ -10630,128 +3486,40 @@ "Swampwalk" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Mondrak, Glory Dominus", - "Solphim, Mayhem Dominus", - "Zopandrel, Hunger Dominus", - "The Gitrog Monster", - "K'rrik, Son of Yawgmoth" - ], - "example_cards": [ - "Hullbreaker Horror", - "Mondrak, Glory Dominus", - "Psychosis Crawler", - "Chasm Skulker", - "Solphim, Mayhem Dominus", - "Thrummingbird", - "Ravenous Chupacabra", - "Spellskite" - ], - "synergy_commanders": [ - "Wort, Boggart Auntie - Synergy (Fear)", - "Commander Greven il-Vec - Synergy (Fear)", - "Iraxxa, Empress of Mars - Synergy (Alien Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Horror creatures into play with shared payoffs (e.g., Impending and Fear)." + "secondary_color": "Blue" }, { "theme": "Horse Kindred", "synergies": [ "Saddle", "Mount Kindred", - "Blink", - "Enter the Battlefield", - "Leave the Battlefield" + "Historics Matter", + "Legends Matter", + "Blink" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Keleth, Sunmane Familiar", - "Calamity, Galloping Inferno", - "Bill the Pony", - "Shadowfax, Lord of Horses", - "Thurid, Mare of Destiny" - ], - "example_cards": [ - "Wavebreak Hippocamp", - "The Spear of Leonidas", - "Crested Sunmare", - "Akroan Horse", - "Keleth, Sunmane Familiar", - "Calamity, Galloping Inferno", - "Motivated Pony", - "Caustic Bronco" - ], - "synergy_commanders": [ - "The Gitrog, Ravenous Ride - Synergy (Saddle)", - "Fortune, Loyal Steed - Synergy (Saddle)", - "Kolodin, Triumph Caster - Synergy (Mount Kindred)", - "Miriam, Herd Whisperer - Synergy (Mount Kindred)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Horse creatures into play with shared payoffs (e.g., Saddle and Mount Kindred)." + "secondary_color": "Black" }, { "theme": "Horsemanship", "synergies": [ "Soldier Kindred", "Human Kindred", - "Warrior Kindred", - "Big Mana", - "Little Fellas" + "Historics Matter", + "Legends Matter", + "Warrior Kindred" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Lu Xun, Scholar General", - "Xiahou Dun, the One-Eyed", - "Lu Bu, Master-at-Arms", - "Guan Yu, Sainted Warrior", - "Yuan Shao, the Indecisive" - ], - "example_cards": [ - "Herald of Hoofbeats", - "Lu Xun, Scholar General", - "Xiahou Dun, the One-Eyed", - "Wu Scout", - "Wei Scout", - "Lu Bu, Master-at-Arms", - "Wu Light Cavalry", - "Guan Yu, Sainted Warrior" - ], - "synergy_commanders": [ - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)", - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)", - "Odric, Lunarch Marshal - Synergy (Soldier Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Horsemanship leveraging synergies with Soldier Kindred and Human Kindred." + "secondary_color": "Blue" }, { "theme": "Hour Counters", - "synergies": [], + "synergies": [ + "Counters Matter", + "Proliferate" + ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Rusko, Clockmaker" - ], - "example_cards": [ - "Midnight Clock", - "Midnight Oil", - "Rusko, Clockmaker" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates hour counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Blue" }, { "theme": "Human Kindred", @@ -10763,34 +3531,7 @@ "Firebending" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Syr Konrad, the Grim", - "Azusa, Lost but Seeking", - "Loran of the Third Path", - "Adeline, Resplendent Cathar", - "Mangara, the Diplomat" - ], - "example_cards": [ - "Esper Sentinel", - "Eternal Witness", - "Stroke of Midnight", - "Zulaport Cutthroat", - "Syr Konrad, the Grim", - "Professional Face-Breaker", - "Grand Abolisher", - "Pitiless Plunderer" - ], - "synergy_commanders": [ - "Lu Xun, Scholar General - Synergy (Horsemanship)", - "Xiahou Dun, the One-Eyed - Synergy (Horsemanship)", - "Lu Bu, Master-at-Arms - Synergy (Horsemanship)", - "Torens, Fist of the Angels - Synergy (Training)", - "Jenny Flint - Synergy (Training)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Human creatures into play with shared payoffs (e.g., Horsemanship and Training)." + "secondary_color": "Red" }, { "theme": "Hydra Kindred", @@ -10802,80 +3543,22 @@ "Counters Matter" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "The Goose Mother", - "Gargos, Vicious Watcher", - "Zaxara, the Exemplary", - "Progenitus", - "Grakmaw, Skyclave Ravager" - ], - "example_cards": [ - "Managorger Hydra", - "Apex Devastator", - "Kalonian Hydra", - "Mossborn Hydra", - "Hydroid Krasis", - "Goldvein Hydra", - "Genesis Hydra", - "Ulvenwald Hydra" - ], - "synergy_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (X Spells)", - "Goreclaw, Terror of Qal Sisma - Synergy (X Spells)", - "Danitha Capashen, Paragon - Synergy (X Spells)", - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Hydra creatures into play with shared payoffs (e.g., X Spells and Trample)." + "secondary_color": "Red" }, { "theme": "Hyena Kindred", "synergies": [], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Yannik, Scavenging Sentinel" - ], - "example_cards": [ - "Yannik, Scavenging Sentinel", - "Cackling Prowler", - "Kuldotha Cackler", - "Trusty Companion", - "Hyena Pack", - "Gibbering Hyenas" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Hyena creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Ice Counters", "synergies": [ - "Counters Matter" + "Counters Matter", + "Proliferate" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Krenko, Tin Street Kingpin - Synergy (Counters Matter)" - ], - "example_cards": [ - "Dark Depths", - "Thing in the Ice // Awoken Horror", - "Draugr Necromancer", - "Rimefeather Owl", - "Rimescale Dragon", - "Iceberg", - "Woolly Razorback" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates ice counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Black" }, { "theme": "Illusion Kindred", @@ -10887,33 +3570,7 @@ "Draw Triggers" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Meloku the Clouded Mirror", - "Toothy, Imaginary Friend", - "Kianne, Corrupted Memory", - "Pol Jamaar, Illusionist", - "Cromat" - ], - "example_cards": [ - "Spark Double", - "Phantasmal Image", - "Skyclave Apparition", - "Murmuring Mystic", - "Titan of Littjara", - "Meloku the Clouded Mirror", - "Toothy, Imaginary Friend", - "Hover Barrier" - ], - "synergy_commanders": [ - "Akroma, Angel of Fury - Synergy (Morph)", - "Pramikon, Sky Rampart - Synergy (Wall Kindred)", - "Rammas Echor, Ancient Shield - Synergy (Wall Kindred)", - "The Pride of Hull Clade - Synergy (Defender)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Illusion creatures into play with shared payoffs (e.g., Morph and Wall Kindred)." + "secondary_color": "Black" }, { "theme": "Imp Kindred", @@ -10925,33 +3582,7 @@ "Burn" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Judith, Carnage Connoisseur", - "Rakdos, the Showstopper", - "Blim, Comedic Genius", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)", - "Sheoldred, the Apocalypse - Synergy (Phyrexian Kindred)" - ], - "example_cards": [ - "Stinkweed Imp", - "Skirge Familiar", - "Judith, Carnage Connoisseur", - "Rakdos, the Showstopper", - "Putrid Imp", - "Cadaver Imp", - "Flesh-Eater Imp", - "Kitchen Imp" - ], - "synergy_commanders": [ - "Elas il-Kor, Sadistic Pilgrim - Synergy (Phyrexian Kindred)", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Solphim, Mayhem Dominus - Synergy (Discard Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Imp creatures into play with shared payoffs (e.g., Phyrexian Kindred and Flying)." + "secondary_color": "Red" }, { "theme": "Impending", @@ -10963,49 +3594,13 @@ "Enchantments Matter" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Muldrotha, the Gravetide - Synergy (Avatar Kindred)", - "Multani, Yavimaya's Avatar - Synergy (Avatar Kindred)", - "Gishath, Sun's Avatar - Synergy (Avatar Kindred)", - "Ojer Pakpatiq, Deepest Epoch // Temple of Cyclical Time - Synergy (Time Counters)", - "The Tenth Doctor - Synergy (Time Counters)" - ], - "example_cards": [ - "Overlord of the Hauntwoods", - "Overlord of the Balemurk", - "Overlord of the Floodpits", - "Overlord of the Mistmoors", - "Overlord of the Boilerbilges" - ], - "synergy_commanders": [ - "Mondrak, Glory Dominus - Synergy (Horror Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Impending leveraging synergies with Avatar Kindred and Time Counters." + "secondary_color": "Blue" }, { "theme": "Imprint", "synergies": [], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Idris, Soul of the TARDIS" - ], - "example_cards": [ - "Chrome Mox", - "Isochron Scepter", - "Extraplanar Lens", - "Mimic Vat", - "Duplicant", - "Semblance Anvil", - "Ugin's Labyrinth", - "River Song's Diary" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Imprint theme and its supporting synergies." + "secondary_color": "Red" }, { "theme": "Improvise", @@ -11016,30 +3611,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Lotho, Corrupt Shirriff - Synergy (Artifacts Matter)", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)" - ], - "example_cards": [ - "Kappa Cannoneer", - "Whir of Invention", - "Organic Extinction", - "Bottle-Cap Blast", - "Universal Surveillance", - "Reverse Engineer", - "Synth Infiltrator", - "Saheeli's Directive" - ], - "synergy_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Taps artifacts as pseudo-mana (Improvise) to deploy oversized non-artifact spells ahead of curve. Synergies like Artifacts Matter and Big Mana reinforce the plan." + "secondary_color": "Red" }, { "theme": "Impulse", @@ -11051,34 +3623,7 @@ "Treasure" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Etali, Primal Storm", - "Ragavan, Nimble Pilferer", - "Urza, Lord High Artificer", - "Atsushi, the Blazing Sky", - "Laelia, the Blade Reforged" - ], - "example_cards": [ - "Jeska's Will", - "Professional Face-Breaker", - "Etali, Primal Storm", - "Ragavan, Nimble Pilferer", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Urza, Lord High Artificer", - "Light Up the Stage", - "Bonehoard Dracosaur" - ], - "synergy_commanders": [ - "Rose, Cutthroat Raider - Synergy (Junk Tokens)", - "Veronica, Dissident Scribe - Synergy (Junk Tokens)", - "Dogmeat, Ever Loyal - Synergy (Junk Tokens)", - "Commander Sofia Daguerre - Synergy (Junk Token)", - "Duchess, Wayward Tavernkeep - Synergy (Junk Token)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Impulse leveraging synergies with Junk Tokens and Junk Token." + "secondary_color": "Blue" }, { "theme": "Incarnation Kindred", @@ -11090,26 +3635,7 @@ "Big Mana" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Idris, Soul of the TARDIS", - "Ashaya, Soul of the Wild - Synergy (Elemental Kindred)", - "Titania, Protector of Argoth - Synergy (Elemental Kindred)", - "Syr Konrad, the Grim - Synergy (Reanimate)" - ], - "example_cards": [ - "Anger", - "Wonder", - "Vigor", - "Endurance", - "Brawn", - "Solitude", - "Fury", - "Filth" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Incarnation creatures into play with shared payoffs (e.g., Evoke and Elemental Kindred)." + "secondary_color": "Green" }, { "theme": "Incubate", @@ -11121,96 +3647,31 @@ "+1/+1 Counters" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Brimaz, Blight of Oreskos", - "Glissa, Herald of Predation", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Transform)", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)" - ], - "example_cards": [ - "Chrome Host Seedshark", - "Sunfall", - "Elesh Norn // The Argent Etchings", - "Excise the Imperfect", - "Brimaz, Blight of Oreskos", - "Phyrexian Awakening", - "Progenitor Exarch", - "Essence of Orthodoxy" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Banks Incubator tokens then transforms them into delayed board presence & artifact synergy triggers. Synergies like Incubator Token and Transform reinforce the plan." + "secondary_color": "Black" }, { "theme": "Incubator Token", "synergies": [ + "Tokens Matter", "Incubate", "Transform", "Phyrexian Kindred", - "Artifact Tokens", - "+1/+1 Counters" + "Artifact Tokens" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Brimaz, Blight of Oreskos", - "Glissa, Herald of Predation", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Transform)", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)" - ], - "example_cards": [ - "Chrome Host Seedshark", - "Sunfall", - "Elesh Norn // The Argent Etchings", - "Excise the Imperfect", - "Brimaz, Blight of Oreskos", - "Phyrexian Awakening", - "Progenitor Exarch", - "Essence of Orthodoxy" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Incubate and Transform reinforce the plan." + "secondary_color": "Black" }, { "theme": "Indestructible", "synergies": [ "God Kindred", "Protection", - "Interaction", - "Lifegain", - "Life Matters" + "Historics Matter", + "Legends Matter", + "Interaction" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Toski, Bearer of Secrets", - "Purphoros, God of the Forge", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Avacyn, Angel of Hope", - "Heliod, Sun-Crowned" - ], - "example_cards": [ - "The One Ring", - "Mithril Coat", - "Darksteel Citadel", - "Toski, Bearer of Secrets", - "Purphoros, God of the Forge", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Brash Taunter", - "Avacyn, Angel of Hope" - ], - "synergy_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (God Kindred)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (God Kindred)", - "Syr Konrad, the Grim - Synergy (Interaction)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Indestructible leveraging synergies with God Kindred and Protection." + "secondary_color": "Black" }, { "theme": "Infect", @@ -11222,46 +3683,16 @@ "Mite Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Yawgmoth, Thran Physician", - "Skrelv, Defector Mite", - "Vorinclex, Monstrous Raider", - "Lae'zel, Vlaakith's Champion" - ], - "example_cards": [ - "Karn's Bastion", - "Doubling Season", - "Evolution Sage", - "Cankerbloom", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Yawgmoth, Thran Physician", - "Thrummingbird", - "Tezzeret's Gambit" - ], - "synergy_commanders": [ - "Skithiryx, the Blight Dragon - Synergy (Poison Counters)", - "Tekuthal, Inquiry Dominus - Synergy (Proliferate)", - "Karumonix, the Rat King - Synergy (Toxic)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Leverages Infect/Toxic pressure and proliferate to accelerate poison win thresholds. Synergies like Poison Counters and Proliferate reinforce the plan." + "secondary_color": "Black" }, { "theme": "Infection Counters", - "synergies": [], - "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Genestealer Patriarch", - "Festering Wound", - "Diseased Vermin" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Leverages Infect/Toxic pressure and proliferate to accelerate poison win thresholds." + "primary_color": "Black", + "secondary_color": "Blue" }, { "theme": "Ingest", @@ -11273,49 +3704,13 @@ "Combat Matters" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Kaito, Dancing Shadow - Synergy (Drone Kindred)", - "Ulalek, Fused Atrocity - Synergy (Devoid)", - "Kozilek, Butcher of Truth - Synergy (Eldrazi Kindred)" - ], - "example_cards": [ - "Fathom Feeder", - "Benthic Infiltrator", - "Ruination Guide", - "Vile Aggregate", - "Salvage Drone", - "Mist Intruder", - "Dominator Drone", - "Sludge Crawler" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Ingest leveraging synergies with Drone Kindred and Devoid." + "secondary_color": "Black" }, { "theme": "Inkling Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Fain, the Broker", - "Shadrix Silverquill", - "Felisa, Fang of Silverquill" - ], - "example_cards": [ - "Inkshield", - "Fain, the Broker", - "Shadrix Silverquill", - "Felisa, Fang of Silverquill", - "Combat Calligrapher", - "Blot Out the Sky", - "Dramatic Finale", - "Mascot Exhibition" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Inkling creatures into play with shared payoffs." + "secondary_color": "White" }, { "theme": "Insect Kindred", @@ -11327,35 +3722,7 @@ "Time Counters" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "The Locust God", - "Mazirek, Kraul Death Priest", - "Old Rutstein", - "The Wise Mothman", - "Izoni, Thousand-Eyed" - ], - "example_cards": [ - "Scute Swarm", - "Darksteel Mutation", - "Haywire Mite", - "Springheart Nantuko", - "Swarmyard", - "Luminous Broodmoth", - "Hornet Queen", - "The Locust God" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Landfall)", - "Aesi, Tyrant of Gyre Strait - Synergy (Landfall)", - "Bristly Bill, Spine Sower - Synergy (Landfall)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Poison Counters)", - "Skrelv, Defector Mite - Synergy (Poison Counters)", - "Rishkar, Peema Renegade - Synergy (Druid Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Insect creatures into play with shared payoffs (e.g., Landfall and Poison Counters)." + "secondary_color": "Black" }, { "theme": "Inspired", @@ -11367,31 +3734,7 @@ "Toughness Matters" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "King Macar, the Gold-Cursed", - "Heliod, God of the Sun - Synergy (Enchantment Tokens)", - "Ellivere of the Wild Court - Synergy (Enchantment Tokens)", - "Go-Shintai of Life's Origin - Synergy (Enchantment Tokens)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)" - ], - "example_cards": [ - "King Macar, the Gold-Cursed", - "Felhide Spiritbinder", - "Daring Thief", - "Arbiter of the Ideal", - "Pain Seer", - "Disciple of Deceit", - "Siren of the Silent Song", - "Oreskos Sun Guide" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Creature Tokens)", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Inspired leveraging synergies with Enchantment Tokens and Creature Tokens." + "secondary_color": "Blue" }, { "theme": "Interaction", @@ -11403,34 +3746,7 @@ "Counterspells" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim", - "Toski, Bearer of Secrets", - "Purphoros, God of the Forge", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Boromir, Warden of the Tower" - ], - "example_cards": [ - "Swords to Plowshares", - "Path to Exile", - "Counterspell", - "Blasphemous Act", - "Beast Within", - "Bojuka Bog", - "Heroic Intervention", - "Cyclonic Rift" - ], - "synergy_commanders": [ - "Ulamog, the Infinite Gyre - Synergy (Removal)", - "Zacama, Primal Calamity - Synergy (Removal)", - "The Scarab God - Synergy (Removal)", - "Samut, Voice of Dissent - Synergy (Combat Tricks)", - "Naru Meha, Master Wizard - Synergy (Combat Tricks)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Interaction leveraging synergies with Removal and Combat Tricks." + "secondary_color": "Blue" }, { "theme": "Intimidate", @@ -11442,33 +3758,7 @@ "Big Mana" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Mikaeus, the Unhallowed", - "Geth, Lord of the Vault", - "Elbrus, the Binding Blade // Withengar Unbound", - "Vela the Night-Clad", - "Neheb, the Eternal - Synergy (Zombie Kindred)" - ], - "example_cards": [ - "Mikaeus, the Unhallowed", - "Sepulchral Primordial", - "Bellowing Tanglewurm", - "Geth, Lord of the Vault", - "Immerwolf", - "Elbrus, the Binding Blade // Withengar Unbound", - "Vela the Night-Clad", - "Krenko's Enforcer" - ], - "synergy_commanders": [ - "Jadar, Ghoulcaller of Nephalia - Synergy (Zombie Kindred)", - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Intimidate leveraging synergies with Zombie Kindred and Reanimate." + "secondary_color": "Red" }, { "theme": "Investigate", @@ -11480,33 +3770,7 @@ "Cantrips" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Tivit, Seller of Secrets", - "Lonis, Cryptozoologist", - "Piper Wright, Publick Reporter", - "Teysa, Opulent Oligarch", - "Martha Jones" - ], - "example_cards": [ - "Tireless Tracker", - "Forensic Gadgeteer", - "Tamiyo's Journal", - "Ethereal Investigator", - "Tivit, Seller of Secrets", - "Lonis, Cryptozoologist", - "Kellan, Inquisitive Prodigy // Tail the Suspect", - "Wojek Investigator" - ], - "synergy_commanders": [ - "Astrid Peth - Synergy (Clue Token)", - "Kellan, Inquisitive Prodigy // Tail the Suspect - Synergy (Detective Kindred)", - "Nelly Borca, Impulsive Accuser - Synergy (Detective Kindred)", - "Braids, Arisen Nightmare - Synergy (Sacrifice to Draw)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Banks Clue tokens for delayed card draw while fueling artifact & token synergies. Synergies like Clue Token and Detective Kindred reinforce the plan." + "secondary_color": "White" }, { "theme": "Islandcycling", @@ -11517,26 +3781,7 @@ "Ramp", "Discard Matters" ], - "primary_color": "Blue", - "example_commanders": [ - "Monstrosity of the Lake", - "The Balrog of Moria - Synergy (Cycling)", - "Yidaro, Wandering Monster - Synergy (Cycling)", - "Baral, Chief of Compliance - Synergy (Loot)" - ], - "example_cards": [ - "Lórien Revealed", - "Monstrosity of the Lake", - "Marauding Brinefang", - "Tidal Terror", - "Daggermaw Megalodon", - "Jhessian Zombies", - "Ice Flan", - "Sanctum Plowbeast" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Islandcycling leveraging synergies with Landcycling and Cycling." + "primary_color": "Blue" }, { "theme": "Islandwalk", @@ -11548,33 +3793,7 @@ "Toughness Matters" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Wrexial, the Risen Deep", - "Thada Adel, Acquisitor", - "Adrestia", - "Sygg, River Guide", - "Sheoldred, Whispering One - Synergy (Landwalk)" - ], - "example_cards": [ - "Cold-Eyed Selkie", - "Stormtide Leviathan", - "Stonybrook Banneret", - "Inkwell Leviathan", - "Wrexial, the Risen Deep", - "Thada Adel, Acquisitor", - "The Flood of Mars", - "Adrestia" - ], - "synergy_commanders": [ - "Chatterfang, Squirrel General - Synergy (Landwalk)", - "Tatyova, Benthic Druid - Synergy (Merfolk Kindred)", - "Emry, Lurker of the Loch - Synergy (Merfolk Kindred)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Islandwalk leveraging synergies with Landwalk and Merfolk Kindred." + "secondary_color": "Green" }, { "theme": "Jackal Kindred", @@ -11586,27 +3805,7 @@ "Little Fellas" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Anep, Vizier of Hazoret", - "Themberchaud - Synergy (Exert)", - "Neheb, the Eternal - Synergy (Zombie Kindred)", - "Mikaeus, the Unhallowed - Synergy (Zombie Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)" - ], - "example_cards": [ - "Khenra Spellspear // Gitaxian Spellstalker", - "Miasmic Mummy", - "Champion of Rhonas", - "Khenra Charioteer", - "Tattered Mummy", - "Dreadhorde Twins", - "Wildfire Eternal", - "Anep, Vizier of Hazoret" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Jackal creatures into play with shared payoffs (e.g., Exert and Zombie Kindred)." + "secondary_color": "Black" }, { "theme": "Jellyfish Kindred", @@ -11618,35 +3817,7 @@ "Enter the Battlefield" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "The Reality Chip", - "Gluntch, the Bestower", - "Mm'menon, the Right Hand", - "Cynette, Jelly Drover", - "Mm'menon, Uthros Exile" - ], - "example_cards": [ - "The Reality Chip", - "Hydroid Krasis", - "Flumph", - "Gluntch, the Bestower", - "Man-o'-War", - "Guard Gomazoa", - "Mm'menon, the Right Hand", - "Cynette, Jelly Drover" - ], - "synergy_commanders": [ - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Jellyfish creatures into play with shared payoffs (e.g., Flying and Toughness Matters)." + "secondary_color": "White" }, { "theme": "Job select", @@ -11658,79 +3829,27 @@ "Creature Tokens" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "G'raha Tia, Scion Reborn - Synergy (Hero Kindred)", - "Tellah, Great Sage - Synergy (Hero Kindred)", - "Flash Thompson, Spider-Fan - Synergy (Hero Kindred)", - "Halvar, God of Battle // Sword of the Realms - Synergy (Equip)", - "Mithril Coat - Synergy (Equip)" - ], - "example_cards": [ - "Black Mage's Rod", - "Dancer's Chakrams", - "Astrologian's Planisphere", - "Reaper's Scythe", - "Machinist's Arsenal", - "Blue Mage's Cane", - "Samurai's Katana", - "Summoner's Grimoire" - ], - "synergy_commanders": [ - "The Reality Chip - Synergy (Equipment)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Job select leveraging synergies with Hero Kindred and Equip." + "secondary_color": "Black" }, { "theme": "Join forces", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Minds Aglow", - "Collective Voyage", - "Alliance of Arms", - "Mana-Charged Dragon", - "Shared Trauma" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Join forces theme and its supporting synergies." + "secondary_color": "Blue" }, { "theme": "Judgment Counters", - "synergies": [], - "primary_color": "White", - "example_cards": [ - "Faithbound Judge // Sinner's Judgment" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates judgment counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "White" }, { "theme": "Juggernaut Kindred", "synergies": [], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Graaz, Unstoppable Juggernaut" - ], - "example_cards": [ - "Terisian Mindbreaker", - "Darksteel Juggernaut", - "Arcbound Crusher", - "Graaz, Unstoppable Juggernaut", - "Leveler", - "Extruder", - "Phyrexian Juggernaut", - "Gruul War Plow" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Juggernaut creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Jump", @@ -11742,30 +3861,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Cid, Freeflier Pilot", - "Freya Crescent", - "Kain, Traitorous Dragoon", - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)" - ], - "example_cards": [ - "Quasiduplicate", - "Cid, Freeflier Pilot", - "Chemister's Insight", - "Radical Idea", - "Risk Factor", - "Freya Crescent", - "Gravitic Punch", - "Beacon Bolt" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Card Draw)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Jump leveraging synergies with Jump-start and Mill." + "secondary_color": "Red" }, { "theme": "Jump-start", @@ -11776,104 +3872,31 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Cid, Freeflier Pilot - Synergy (Jump)", - "Freya Crescent - Synergy (Jump)", - "Kain, Traitorous Dragoon - Synergy (Jump)", - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)" - ], - "example_cards": [ - "Quasiduplicate", - "Chemister's Insight", - "Radical Idea", - "Risk Factor", - "Gravitic Punch", - "Beacon Bolt", - "Dihada's Ploy", - "Start the TARDIS" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Jump-start leveraging synergies with Jump and Mill." + "secondary_color": "Red" }, { "theme": "Junk Token", "synergies": [ + "Tokens Matter", "Junk Tokens", "Impulse", "Artifact Tokens", - "Exile Matters", - "Token Creation" + "Exile Matters" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Rose, Cutthroat Raider", - "Veronica, Dissident Scribe", - "Dogmeat, Ever Loyal", - "Commander Sofia Daguerre", - "Duchess, Wayward Tavernkeep" - ], - "example_cards": [ - "Rose, Cutthroat Raider", - "Veronica, Dissident Scribe", - "Mister Gutsy", - "Dogmeat, Ever Loyal", - "Junktown", - "Junk Jet", - "Crimson Caravaneer", - "Commander Sofia Daguerre" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Impulse)", - "Ragavan, Nimble Pilferer - Synergy (Impulse)", - "Lotho, Corrupt Shirriff - Synergy (Artifact Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Junk Tokens and Impulse reinforce the plan." + "secondary_color": "Green" }, { "theme": "Junk Tokens", "synergies": [ + "Tokens Matter", "Junk Token", "Impulse", "Artifact Tokens", - "Exile Matters", - "Token Creation" + "Exile Matters" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Rose, Cutthroat Raider", - "Veronica, Dissident Scribe", - "Dogmeat, Ever Loyal", - "Commander Sofia Daguerre", - "Duchess, Wayward Tavernkeep" - ], - "example_cards": [ - "Rose, Cutthroat Raider", - "Veronica, Dissident Scribe", - "Mister Gutsy", - "Dogmeat, Ever Loyal", - "Junktown", - "Junk Jet", - "Crimson Caravaneer", - "Commander Sofia Daguerre" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Impulse)", - "Ragavan, Nimble Pilferer - Synergy (Impulse)", - "Lotho, Corrupt Shirriff - Synergy (Artifact Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Junk Token and Impulse reinforce the plan." + "secondary_color": "Green" }, { "theme": "Kavu Kindred", @@ -11885,72 +3908,19 @@ "Counters Matter" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Tannuk, Memorial Ensign", - "Jared Carthalion", - "Tannuk, Steadfast Second", - "Slinn Voda, the Rising Deep - Synergy (Kicker)", - "Tourach, Dread Cantor - Synergy (Kicker)" - ], - "example_cards": [ - "Defiler of Instinct", - "Tannuk, Memorial Ensign", - "Jared Carthalion", - "Tannuk, Steadfast Second", - "Flametongue Kavu", - "Pygmy Kavu", - "Thunderscape Familiar", - "Flametongue Yearling" - ], - "synergy_commanders": [ - "Josu Vess, Lich Knight - Synergy (Kicker)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Kavu creatures into play with shared payoffs (e.g., Kicker and +1/+1 Counters)." + "secondary_color": "Green" }, { "theme": "Ki Counters", "synergies": [ - "Spirit Kindred", "Counters Matter", - "Human Kindred", - "Little Fellas" + "Proliferate", + "Spirit Kindred", + "Historics Matter", + "Legends Matter" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Callow Jushi // Jaraku the Interloper", - "Cunning Bandit // Azamuki, Treachery Incarnate", - "Budoka Pupil // Ichiga, Who Topples Oaks", - "Faithful Squire // Kaiso, Memory of Loyalty", - "Hired Muscle // Scarmaker" - ], - "example_cards": [ - "Petalmane Baku", - "Baku Altar", - "Waxmane Baku", - "Callow Jushi // Jaraku the Interloper", - "Cunning Bandit // Azamuki, Treachery Incarnate", - "Skullmane Baku", - "Blademane Baku", - "Budoka Pupil // Ichiga, Who Topples Oaks" - ], - "synergy_commanders": [ - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Junji, the Midnight Sky - Synergy (Spirit Kindred)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates ki counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Blue" }, { "theme": "Kicker", @@ -11962,35 +3932,7 @@ "Combat Tricks" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Slinn Voda, the Rising Deep", - "Tourach, Dread Cantor", - "Josu Vess, Lich Knight", - "Verdeloth the Ancient", - "Verix Bladewing" - ], - "example_cards": [ - "Rite of Replication", - "Tear Asunder", - "Maddening Cacophony", - "Galadriel's Dismissal", - "Thieving Skydiver", - "Skyclave Relic", - "Inscription of Abundance", - "Sowing Mycospawn" - ], - "synergy_commanders": [ - "Tannuk, Memorial Ensign - Synergy (Kavu Kindred)", - "Jared Carthalion - Synergy (Kavu Kindred)", - "Tannuk, Steadfast Second - Synergy (Kavu Kindred)", - "Tatyova, Benthic Druid - Synergy (Merfolk Kindred)", - "Emry, Lurker of the Loch - Synergy (Merfolk Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Kicker / Multikicker spells scale flexibly—paying extra mana for amplified late-game impact. Synergies like Kavu Kindred and Merfolk Kindred reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Kinship", @@ -12000,68 +3942,19 @@ "Little Fellas" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Kiki-Jiki, Mirror Breaker - Synergy (Shaman Kindred)", - "Delina, Wild Mage - Synergy (Shaman Kindred)", - "Meren of Clan Nel Toth - Synergy (Shaman Kindred)", - "The Reality Chip - Synergy (Topdeck)", - "Loot, Exuberant Explorer - Synergy (Topdeck)" - ], - "example_cards": [ - "Wolf-Skull Shaman", - "Leaf-Crowned Elder", - "Sensation Gorger", - "Nightshade Schemers", - "Mudbutton Clanger", - "Waterspout Weavers", - "Ink Dissolver", - "Squeaking Pie Grubfellows" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Kinship leveraging synergies with Shaman Kindred and Topdeck." + "secondary_color": "Red" }, { "theme": "Kirin Kindred", "synergies": [ "Spirit Kindred", "Flying", + "Historics Matter", + "Legends Matter", "Little Fellas" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Hinata, Dawn-Crowned", - "Infernal Kirin", - "Bounteous Kirin", - "Celestial Kirin", - "Skyfire Kirin" - ], - "example_cards": [ - "Cloudsteel Kirin", - "Hinata, Dawn-Crowned", - "Infernal Kirin", - "Sunpearl Kirin", - "Bounteous Kirin", - "Celestial Kirin", - "Skyfire Kirin", - "Guardian Kirin" - ], - "synergy_commanders": [ - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Junji, the Midnight Sky - Synergy (Spirit Kindred)", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Kirin creatures into play with shared payoffs (e.g., Spirit Kindred and Flying)." + "secondary_color": "Black" }, { "theme": "Kithkin Kindred", @@ -12073,32 +3966,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Gaddock Teeg", - "Brigid, Hero of Kinsbaile", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)", - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)", - "Odric, Lunarch Marshal - Synergy (Soldier Kindred)" - ], - "example_cards": [ - "Kinsbaile Cavalier", - "Preeminent Captain", - "Gaddock Teeg", - "Ballyrush Banneret", - "Mistmeadow Witch", - "Thistledown Liege", - "Galepowder Mage", - "Order of Whiteclay" - ], - "synergy_commanders": [ - "Danitha Capashen, Paragon - Synergy (First strike)", - "Gisela, Blade of Goldnight - Synergy (First strike)", - "Vito, Thorn of the Dusk Rose - Synergy (Cleric Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Kithkin creatures into play with shared payoffs (e.g., Soldier Kindred and First strike)." + "secondary_color": "Green" }, { "theme": "Knight Kindred", @@ -12110,32 +3978,7 @@ "Kithkin Kindred" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim", - "Adeline, Resplendent Cathar", - "Danitha Capashen, Paragon", - "Elenda, the Dusk Rose", - "Bartolomé del Presidio" - ], - "example_cards": [ - "Syr Konrad, the Grim", - "Adeline, Resplendent Cathar", - "Knight of the White Orchid", - "Puresteel Paladin", - "Danitha Capashen, Paragon", - "Midnight Reaper", - "Elenda, the Dusk Rose", - "Moonshaker Cavalry" - ], - "synergy_commanders": [ - "Sidar Kondo of Jamuraa - Synergy (Flanking)", - "Sidar Jabari - Synergy (Flanking)", - "Telim'Tor - Synergy (Flanking)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Knight creatures into play with shared payoffs (e.g., Flanking and Adamant)." + "secondary_color": "Black" }, { "theme": "Kobold Kindred", @@ -12145,35 +3988,7 @@ "Aggro", "Combat Matters" ], - "primary_color": "Red", - "example_commanders": [ - "Rograkh, Son of Rohgahh", - "Nogi, Draco-Zealot", - "Prossh, Skyraider of Kher", - "Rosnakht, Heir of Rohgahh", - "Rohgahh, Kher Keep Overlord" - ], - "example_cards": [ - "Kher Keep", - "Rograkh, Son of Rohgahh", - "Minion of the Mighty", - "Nogi, Draco-Zealot", - "Prossh, Skyraider of Kher", - "Taunting Kobold", - "Crookshank Kobolds", - "Crimson Kobolds" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Etali, Primal Storm - Synergy (Aggro)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Kobold creatures into play with shared payoffs (e.g., Toughness Matters and Little Fellas)." + "primary_color": "Red" }, { "theme": "Kor Kindred", @@ -12185,35 +4000,7 @@ "Equipment Matters" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Elas il-Kor, Sadistic Pilgrim", - "Ardenn, Intrepid Archaeologist", - "Akiri, Fearless Voyager", - "Nahiri, Forged in Fury", - "Ayli, Eternal Pilgrim" - ], - "example_cards": [ - "Elas il-Kor, Sadistic Pilgrim", - "Skyclave Apparition", - "Stoneforge Mystic", - "Ondu Spiritdancer", - "Giver of Runes", - "Ardenn, Intrepid Archaeologist", - "Kor Spiritdancer", - "Akiri, Fearless Voyager" - ], - "synergy_commanders": [ - "Drana, Liberator of Malakir - Synergy (Ally Kindred)", - "Mina and Denn, Wildborn - Synergy (Ally Kindred)", - "Zada, Hedron Grinder - Synergy (Ally Kindred)", - "Selvala, Heart of the Wilds - Synergy (Scout Kindred)", - "Delney, Streetwise Lookout - Synergy (Scout Kindred)", - "Vito, Thorn of the Dusk Rose - Synergy (Cleric Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Kor creatures into play with shared payoffs (e.g., Ally Kindred and Scout Kindred)." + "secondary_color": "Blue" }, { "theme": "Kraken Kindred", @@ -12225,60 +4012,17 @@ "Stax" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Arixmethes, Slumbering Isle", - "Gyruda, Doom of Depths", - "Tromokratis", - "Wrexial, the Risen Deep", - "Monstrosity of the Lake" - ], - "example_cards": [ - "Hullbreaker Horror", - "Ominous Seas", - "Arixmethes, Slumbering Isle", - "Scourge of Fleets", - "Nadir Kraken", - "Spawning Kraken", - "Gyruda, Doom of Depths", - "Kiora Bests the Sea God" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Draw Triggers)", - "Loran of the Third Path - Synergy (Draw Triggers)", - "Sheoldred, the Apocalypse - Synergy (Draw Triggers)", - "Selvala, Heart of the Wilds - Synergy (Wheels)", - "Niv-Mizzet, Parun - Synergy (Wheels)", - "Toski, Bearer of Secrets - Synergy (Protection)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Kraken creatures into play with shared payoffs (e.g., Draw Triggers and Wheels)." + "secondary_color": "Black" }, { "theme": "Lamia Kindred", "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Gravebreaker Lamia", - "Thoughtrender Lamia" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Lamia creatures into play with shared payoffs." + "primary_color": "Black" }, { "theme": "Lammasu Kindred", "synergies": [], - "primary_color": "White", - "example_cards": [ - "Hunted Lammasu", - "Absolving Lammasu", - "Venerable Lammasu" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Lammasu creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Land Types Matter", @@ -12290,27 +4034,7 @@ "Discover" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Vorinclex // The Grand Evolution", - "Karametra, God of Harvests", - "Titania, Nature's Force", - "Hazezon, Shaper of Sand", - "Harold and Bob, First Numens" - ], - "example_cards": [ - "Farseek", - "Nature's Lore", - "Misty Rainforest", - "Three Visits", - "Flooded Strand", - "Verdant Catacombs", - "Bloodstained Mire", - "Windswept Heath" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Land Types Matter leveraging synergies with Plainscycling and Mountaincycling." + "secondary_color": "White" }, { "theme": "Landcycling", @@ -12322,24 +4046,7 @@ "Ramp" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Monstrosity of the Lake", - "The Balrog of Moria - Synergy (Cycling)" - ], - "example_cards": [ - "Ash Barrens", - "Lórien Revealed", - "Monstrosity of the Lake", - "Migratory Route", - "Sojourner's Companion", - "Sylvan Reclamation", - "Ancient Excavation", - "Orchard Strider" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Landcycling leveraging synergies with Basic landcycling and Islandcycling." + "secondary_color": "Green" }, { "theme": "Landfall", @@ -12351,34 +4058,7 @@ "Quest Counters" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Tatyova, Benthic Druid", - "Aesi, Tyrant of Gyre Strait", - "Bristly Bill, Spine Sower", - "Moraug, Fury of Akoum", - "Omnath, Locus of Rage" - ], - "example_cards": [ - "Tireless Provisioner", - "Scute Swarm", - "Avenger of Zendikar", - "Lotus Cobra", - "Rampaging Baloths", - "Tatyova, Benthic Druid", - "Felidar Retreat", - "Evolution Sage" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Lands Matter)", - "Sheoldred, Whispering One - Synergy (Lands Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Ramp)", - "Selvala, Heart of the Wilds - Synergy (Ramp)", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Abuses extra land drops and recursion to chain Landfall triggers and scale permanent-based payoffs. Synergies like Lands Matter and Ramp reinforce the plan." + "secondary_color": "Red" }, { "theme": "Lands Matter", @@ -12390,33 +4070,7 @@ "Landwalk" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Azusa, Lost but Seeking", - "Tatyova, Benthic Druid", - "Sheoldred, Whispering One", - "Six", - "Kodama of the West Tree" - ], - "example_cards": [ - "Command Tower", - "Exotic Orchard", - "Reliquary Tower", - "Path of Ancestry", - "Path to Exile", - "Evolving Wilds", - "Cultivate", - "Rogue's Passage" - ], - "synergy_commanders": [ - "Aesi, Tyrant of Gyre Strait - Synergy (Landfall)", - "Bristly Bill, Spine Sower - Synergy (Landfall)", - "Zar Ojanen, Scion of Efrava - Synergy (Domain)", - "Radha, Coalition Warlord - Synergy (Domain)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Abuses extra land drops and recursion to chain Landfall triggers and scale permanent-based payoffs. Synergies like Landfall and Domain reinforce the plan." + "secondary_color": "Red" }, { "theme": "Landwalk", @@ -12428,31 +4082,7 @@ "Wraith Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Sheoldred, Whispering One", - "Chatterfang, Squirrel General", - "Wrexial, the Risen Deep", - "Thada Adel, Acquisitor", - "Lord Windgrace" - ], - "example_cards": [ - "Sheoldred, Whispering One", - "Chasm Skulker", - "Trailblazer's Boots", - "Chatterfang, Squirrel General", - "Cold-Eyed Selkie", - "Stormtide Leviathan", - "Stonybrook Banneret", - "Zombie Master" - ], - "synergy_commanders": [ - "Sol'kanar the Swamp King - Synergy (Swampwalk)", - "Adrestia - Synergy (Islandwalk)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Landwalk leveraging synergies with Swampwalk and Islandwalk." + "secondary_color": "Black" }, { "theme": "Learn", @@ -12464,30 +4094,7 @@ "Life Matters" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Solphim, Mayhem Dominus - Synergy (Discard Matters)", - "Yawgmoth, Thran Physician - Synergy (Discard Matters)", - "Nezahal, Primal Tide - Synergy (Discard Matters)", - "Tatyova, Benthic Druid - Synergy (Unconditional Draw)", - "Padeem, Consul of Innovation - Synergy (Unconditional Draw)" - ], - "example_cards": [ - "First Day of Class", - "Eyetwitch", - "Divide by Zero", - "Sparring Regimen", - "Poet's Quill", - "Academic Dispute", - "Field Trip", - "Overgrown Arch" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Card Draw)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Uses Learn to toolbox from side selections (or discard/draw) enhancing adaptability & consistency. Synergies like Discard Matters and Unconditional Draw reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Leave the Battlefield", @@ -12499,30 +4106,7 @@ "Fabricate" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Selvala, Heart of the Wilds", - "Sheoldred, Whispering One", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Elesh Norn, Mother of Machines", - "Kodama of the East Tree" - ], - "example_cards": [ - "Solemn Simulacrum", - "The One Ring", - "Eternal Witness", - "Victimize", - "Animate Dead", - "Orcish Bowmasters", - "Mithril Coat", - "Gray Merchant of Asphodel" - ], - "synergy_commanders": [ - "Sidisi, Undead Vizier - Synergy (Exploit)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Leave the Battlefield leveraging synergies with Blink and Enter the Battlefield." + "secondary_color": "White" }, { "theme": "Leech Kindred", @@ -12534,31 +4118,7 @@ "Big Mana" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Fumulus, the Infestation", - "Ghalta, Primal Hunger - Synergy (Cost Reduction)", - "Emry, Lurker of the Loch - Synergy (Cost Reduction)", - "Goreclaw, Terror of Qal Sisma - Synergy (Cost Reduction)", - "Tatyova, Benthic Druid - Synergy (Lifegain)" - ], - "example_cards": [ - "Fumulus, the Infestation", - "Balemurk Leech", - "Curse of Leeches // Leeching Lurker", - "Leech Gauntlet", - "Squelching Leeches", - "Festerleech", - "Abundant Maw", - "Monstrous War-Leech" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Lifegain)", - "Vito, Thorn of the Dusk Rose - Synergy (Life Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Leech creatures into play with shared payoffs (e.g., Cost Reduction and Lifegain)." + "secondary_color": "Green" }, { "theme": "Legends Matter", @@ -12570,62 +4130,19 @@ "Doctor's companion" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim", - "Etali, Primal Storm", - "Ragavan, Nimble Pilferer", - "Braids, Arisen Nightmare", - "Azusa, Lost but Seeking" - ], - "example_cards": [ - "Urborg, Tomb of Yawgmoth", - "Yavimaya, Cradle of Growth", - "Boseiju, Who Endures", - "The One Ring", - "Otawara, Soaring City", - "Delighted Halfling", - "Nykthos, Shrine to Nyx", - "Gemstone Caverns" - ], - "synergy_commanders": [ - "Daretti, Scrap Savant - Synergy (Superfriends)", - "Freyalise, Llanowar's Fury - Synergy (Superfriends)", - "Jaheira, Friend of the Forest - Synergy (Backgrounds Matter)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Legends Matter leveraging synergies with Historics Matter and Superfriends." + "secondary_color": "Black" }, { "theme": "Level Counters", "synergies": [ - "Level Up", "Counters Matter", + "Proliferate", + "Level Up", "Wizard Kindred", - "Warrior Kindred", - "Human Kindred" + "Warrior Kindred" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Emry, Lurker of the Loch - Synergy (Wizard Kindred)" - ], - "example_cards": [ - "Joraga Treespeaker", - "Hexdrinker", - "Coralhelm Commander", - "Guul Draz Assassin", - "Lighthouse Chronologist", - "Kazandu Tuskcaller", - "Enclave Cryptologist", - "Echo Mage" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates level counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "White" }, { "theme": "Level Up", @@ -12637,25 +4154,7 @@ "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)" - ], - "example_cards": [ - "Joraga Treespeaker", - "Hexdrinker", - "Coralhelm Commander", - "Guul Draz Assassin", - "Lighthouse Chronologist", - "Kazandu Tuskcaller", - "Enclave Cryptologist", - "Echo Mage" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Level Up leveraging synergies with Level Counters and Counters Matter." + "secondary_color": "White" }, { "theme": "Leviathan Kindred", @@ -12667,35 +4166,7 @@ "Leave the Battlefield" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Charix, the Raging Isle", - "Slinn Voda, the Rising Deep", - "Xyris, the Writhing Storm", - "Sin, Unending Cataclysm", - "Kiora, Sovereign of the Deep" - ], - "example_cards": [ - "Stormtide Leviathan", - "Charix, the Raging Isle", - "Spawning Kraken", - "Nemesis of Reason", - "Slinn Voda, the Rising Deep", - "Xyris, the Writhing Storm", - "Inkwell Leviathan", - "Aethersquall Ancient" - ], - "synergy_commanders": [ - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Ghalta, Stampede Tyrant - Synergy (Trample)", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Leviathan creatures into play with shared payoffs (e.g., Trample and Big Mana)." + "secondary_color": "Green" }, { "theme": "Lhurgoyf Kindred", @@ -12704,30 +4175,7 @@ "Combat Matters" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Disa the Restless", - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Combat Matters)" - ], - "example_cards": [ - "Necrogoyf", - "Barrowgoyf", - "Mortivore", - "Polygoyf", - "Pyrogoyf", - "Lhurgoyf", - "Tarmogoyf Nest", - "Disa the Restless" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Lhurgoyf creatures into play with shared payoffs (e.g., Aggro and Combat Matters)." + "secondary_color": "Black" }, { "theme": "Licid Kindred", @@ -12739,30 +4187,7 @@ "Voltron" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Sram, Senior Edificer - Synergy (Equipment Matters)", - "Kodama of the West Tree - Synergy (Equipment Matters)", - "Danitha Capashen, Paragon - Synergy (Equipment Matters)", - "Ardenn, Intrepid Archaeologist - Synergy (Auras)", - "Codsworth, Handy Helper - Synergy (Auras)" - ], - "example_cards": [ - "Tempting Licid", - "Dominating Licid", - "Transmogrifying Licid", - "Nurturing Licid", - "Convulsing Licid", - "Enraging Licid", - "Corrupting Licid", - "Calming Licid" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Licid creatures into play with shared payoffs (e.g., Equipment Matters and Auras)." + "secondary_color": "Black" }, { "theme": "Lieutenant", @@ -12773,30 +4198,7 @@ "Big Mana" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)" - ], - "example_cards": [ - "Loyal Apprentice", - "Thunderfoot Baloth", - "Loyal Guardian", - "Skyhunter Strike Force", - "Siege-Gang Lieutenant", - "Tyrant's Familiar", - "Angelic Field Marshal", - "Loyal Subordinate" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Lieutenant leveraging synergies with Flying and Aggro." + "secondary_color": "Red" }, { "theme": "Life Matters", @@ -12808,30 +4210,7 @@ "Lifelink" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Tatyova, Benthic Druid", - "Sheoldred, the Apocalypse", - "Vito, Thorn of the Dusk Rose", - "Elas il-Kor, Sadistic Pilgrim", - "Mangara, the Diplomat" - ], - "example_cards": [ - "Swords to Plowshares", - "Blood Artist", - "Tireless Provisioner", - "Mirkwood Bats", - "Zulaport Cutthroat", - "Akroma's Will", - "Gray Merchant of Asphodel", - "The Great Henge" - ], - "synergy_commanders": [ - "Sorin of House Markov // Sorin, Ravenous Neonate - Synergy (Extort)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Life Matters leveraging synergies with Lifegain and Lifedrain." + "secondary_color": "Black" }, { "theme": "Life to Draw", @@ -12839,31 +4218,7 @@ "Card Draw", "Enchantments Matter" ], - "primary_color": "Black", - "example_commanders": [ - "Erebos, God of the Dead", - "The Last Ride", - "Braids, Arisen Nightmare - Synergy (Card Draw)", - "Toski, Bearer of Secrets - Synergy (Card Draw)", - "Loran of the Third Path - Synergy (Card Draw)" - ], - "example_cards": [ - "Staff of Compleation", - "Greed", - "Erebos, God of the Dead", - "Lunar Convocation", - "Underworld Connections", - "Arguel's Blood Fast // Temple of Aclazotz", - "Bonecache Overseer", - "Unfulfilled Desires" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Enchantments Matter)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Life to Draw leveraging synergies with Card Draw and Enchantments Matter." + "primary_color": "Black" }, { "theme": "Lifegain", @@ -12875,30 +4230,7 @@ "Lifelink" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Tatyova, Benthic Druid", - "Sheoldred, the Apocalypse", - "Vito, Thorn of the Dusk Rose", - "Elas il-Kor, Sadistic Pilgrim", - "Mangara, the Diplomat" - ], - "example_cards": [ - "Swords to Plowshares", - "Blood Artist", - "Tireless Provisioner", - "Mirkwood Bats", - "Zulaport Cutthroat", - "Akroma's Will", - "Gray Merchant of Asphodel", - "The Great Henge" - ], - "synergy_commanders": [ - "Sorin of House Markov // Sorin, Ravenous Neonate - Synergy (Extort)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Turns repeat lifegain triggers into card draw, scaling bodies, or drain-based win pressure. Synergies like Life Matters and Lifedrain reinforce the plan." + "secondary_color": "Black" }, { "theme": "Lifegain Triggers", @@ -12910,34 +4242,7 @@ "Cleric Kindred" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Vito, Thorn of the Dusk Rose", - "Heliod, Sun-Crowned", - "Dina, Soul Steeper", - "Treebeard, Gracious Host", - "Amalia Benavides Aguirre" - ], - "example_cards": [ - "Sanguine Bond", - "Vito, Thorn of the Dusk Rose", - "Alhammarret's Archive", - "Well of Lost Dreams", - "Heliod, Sun-Crowned", - "Marauding Blight-Priest", - "Enduring Tenacity", - "Cleric Class" - ], - "synergy_commanders": [ - "Yahenni, Undying Partisan - Synergy (Vampire Kindred)", - "Elenda, the Dusk Rose - Synergy (Vampire Kindred)", - "Mangara, the Diplomat - Synergy (Lifelink)", - "Danitha Capashen, Paragon - Synergy (Lifelink)", - "Tatyova, Benthic Druid - Synergy (Lifegain)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Turns repeat lifegain triggers into card draw, scaling bodies, or drain-based win pressure. Synergies like Vampire Kindred and Lifelink reinforce the plan." + "secondary_color": "Black" }, { "theme": "Lifelink", @@ -12949,33 +4254,7 @@ "Angel Kindred" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Vito, Thorn of the Dusk Rose", - "Mangara, the Diplomat", - "Danitha Capashen, Paragon", - "Heliod, Sun-Crowned", - "Elenda, the Dusk Rose" - ], - "example_cards": [ - "Akroma's Will", - "Basilisk Collar", - "Shadowspear", - "Vault of the Archangel", - "Vito, Thorn of the Dusk Rose", - "Exquisite Blood", - "Mangara, the Diplomat", - "Whip of Erebos" - ], - "synergy_commanders": [ - "Dina, Soul Steeper - Synergy (Lifegain Triggers)", - "Tatyova, Benthic Druid - Synergy (Lifegain)", - "Sheoldred, the Apocalypse - Synergy (Lifegain)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Life Matters)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Lifelink leveraging synergies with Lifegain Triggers and Lifegain." + "secondary_color": "Black" }, { "theme": "Lifeloss", @@ -12987,30 +4266,7 @@ "Flying" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Vilis, Broker of Blood", - "Ludevic, Necro-Alchemist", - "Lich's Mastery - Synergy (Lifeloss Triggers)", - "Aclazotz, Deepest Betrayal // Temple of the Dead - Synergy (Bat Kindred)", - "Zoraline, Cosmos Caller - Synergy (Bat Kindred)" - ], - "example_cards": [ - "Vilis, Broker of Blood", - "Lunar Convocation", - "Essence Channeler", - "Lich's Mastery", - "Marina Vendrell's Grimoire", - "Star Charter", - "Starseer Mentor", - "Starlit Soothsayer" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Life Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Channels symmetrical life loss into card flow, recursion, and inevitability drains. Synergies like Lifeloss Triggers and Bat Kindred reinforce the plan." + "secondary_color": "White" }, { "theme": "Lifeloss Triggers", @@ -13022,30 +4278,7 @@ "Flying" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Vilis, Broker of Blood", - "Ludevic, Necro-Alchemist", - "Lich's Mastery - Synergy (Lifeloss)", - "Aclazotz, Deepest Betrayal // Temple of the Dead - Synergy (Bat Kindred)", - "Zoraline, Cosmos Caller - Synergy (Bat Kindred)" - ], - "example_cards": [ - "Vilis, Broker of Blood", - "Lunar Convocation", - "Essence Channeler", - "Lich's Mastery", - "Marina Vendrell's Grimoire", - "Star Charter", - "Starseer Mentor", - "Starlit Soothsayer" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Life Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Channels symmetrical life loss into card flow, recursion, and inevitability drains. Synergies like Lifeloss and Bat Kindred reinforce the plan." + "secondary_color": "White" }, { "theme": "Little Fellas", @@ -13057,67 +4290,19 @@ "Training" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Azusa, Lost but Seeking", - "Toski, Bearer of Secrets", - "Loran of the Third Path", - "Lotho, Corrupt Shirriff" - ], - "example_cards": [ - "Solemn Simulacrum", - "Birds of Paradise", - "Llanowar Elves", - "Esper Sentinel", - "Eternal Witness", - "Sakura-Tribe Elder", - "Elvish Mystic", - "Blood Artist" - ], - "synergy_commanders": [ - "Ayesha Tanaka - Synergy (Banding)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Little Fellas leveraging synergies with Banding and Licid Kindred." + "secondary_color": "Blue" }, { "theme": "Living metal", "synergies": [ "Convert", "Vehicles", - "Artifacts Matter", - "Toughness Matters", - "Aggro" + "Historics Matter", + "Legends Matter", + "Artifacts Matter" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Starscream, Power Hungry // Starscream, Seeker Leader", - "Ratchet, Field Medic // Ratchet, Rescue Racer", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader" - ], - "example_cards": [ - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Starscream, Power Hungry // Starscream, Seeker Leader", - "Ratchet, Field Medic // Ratchet, Rescue Racer", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader", - "Prowl, Stoic Strategist // Prowl, Pursuit Vehicle", - "Goldbug, Humanity's Ally // Goldbug, Scrappy Scout", - "Megatron, Tyrant // Megatron, Destructive Force" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Vehicles)", - "Shorikai, Genesis Engine - Synergy (Vehicles)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Living metal leveraging synergies with Convert and Vehicles." + "secondary_color": "White" }, { "theme": "Living weapon", @@ -13129,26 +4314,7 @@ "Equipment Matters" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Bitterthorn, Nissa's Animus - Synergy (Germ Kindred)", - "Halvar, God of Battle // Sword of the Realms - Synergy (Equip)", - "Mithril Coat - Synergy (Equip)", - "The Reality Chip - Synergy (Equipment)" - ], - "example_cards": [ - "Nettlecyst", - "Kaldra Compleat", - "Bitterthorn, Nissa's Animus", - "Bonehoard", - "Batterskull", - "Scytheclaw", - "Batterbone", - "Cranial Ram" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Living weapon leveraging synergies with Germ Kindred and Equip." + "secondary_color": "Green" }, { "theme": "Lizard Kindred", @@ -13160,35 +4326,7 @@ "Warrior Kindred" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Kediss, Emberclaw Familiar", - "Rivaz of the Claw", - "Laughing Jasper Flint", - "Gev, Scaled Scorch", - "Ognis, the Dragon's Lash" - ], - "example_cards": [ - "Rapid Hybridization", - "Kediss, Emberclaw Familiar", - "Lizard Blades", - "Agate Instigator", - "Rivaz of the Claw", - "Basking Broodscale", - "Party Thrasher", - "Mudflat Village" - ], - "synergy_commanders": [ - "Junji, the Midnight Sky - Synergy (Menace)", - "Kozilek, the Great Distortion - Synergy (Menace)", - "Massacre Girl - Synergy (Menace)", - "Kiki-Jiki, Mirror Breaker - Synergy (Shaman Kindred)", - "Delina, Wild Mage - Synergy (Shaman Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Lizard creatures into play with shared payoffs (e.g., Menace and Shaman Kindred)." + "secondary_color": "Green" }, { "theme": "Loot", @@ -13200,111 +4338,31 @@ "Connive" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Baral, Chief of Compliance", - "The Locust God", - "Malcolm, Alluring Scoundrel", - "Shorikai, Genesis Engine", - "Kitsa, Otterball Elite" - ], - "example_cards": [ - "Faithless Looting", - "Frantic Search", - "Ash Barrens", - "Jetmir's Garden", - "Ketria Triome", - "Spara's Headquarters", - "Zagoth Triome", - "Raffine's Tower" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Card Draw)", - "Toski, Bearer of Secrets - Synergy (Card Draw)", - "Loran of the Third Path - Synergy (Card Draw)", - "Solphim, Mayhem Dominus - Synergy (Discard Matters)", - "Yawgmoth, Thran Physician - Synergy (Discard Matters)", - "Syr Konrad, the Grim - Synergy (Reanimate)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Loot leveraging synergies with Card Draw and Discard Matters." + "secondary_color": "Black" }, { "theme": "Lore Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Read Ahead", "Sagas Matter", - "Ore Counters", - "Doctor Kindred", - "Fight" + "Ore Counters" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Satsuki, the Living Lore", - "Tom Bombadil", - "Clive, Ifrit's Dominant // Ifrit, Warden of Inferno", - "Barbara Wright", - "Dion, Bahamut's Dominant // Bahamut, Warden of Light" - ], - "example_cards": [ - "Urza's Saga", - "Binding the Old Gods", - "Urabrask // The Great Work", - "Sheoldred // The True Scriptures", - "Fable of the Mirror-Breaker // Reflection of Kiki-Jiki", - "The Eldest Reborn", - "There and Back Again", - "The Mending of Dominaria" - ], - "synergy_commanders": [ - "Jhoira, Weatherlight Captain - Synergy (Sagas Matter)", - "Teshar, Ancestor's Apostle - Synergy (Sagas Matter)", - "Vorinclex, Monstrous Raider - Synergy (Ore Counters)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Accumulates lore counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Green" }, { "theme": "Loyalty Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Superfriends", "Planeswalkers", - "Super Friends", - "Counters Matter", - "Draw Triggers" + "Super Friends" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Jeska, Thrice Reborn", - "Commodore Guff", - "Mila, Crafty Companion // Lukka, Wayward Bonder", - "Heart of Kiran", - "Daretti, Scrap Savant - Synergy (Superfriends)" - ], - "example_cards": [ - "Spark Double", - "Vraska, Betrayal's Sting", - "Grist, the Hunger Tide", - "Forge of Heroes", - "Semester's End", - "Brokers Ascendancy", - "Elspeth Conquers Death", - "Teferi, Temporal Pilgrim" - ], - "synergy_commanders": [ - "Freyalise, Llanowar's Fury - Synergy (Superfriends)", - "Dihada, Binder of Wills - Synergy (Superfriends)", - "Adeline, Resplendent Cathar - Synergy (Planeswalkers)", - "Yawgmoth, Thran Physician - Synergy (Planeswalkers)", - "Vorinclex, Monstrous Raider - Synergy (Super Friends)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Protects and reuses planeswalkers—amplifying loyalty via proliferate and recursion for inevitability. Synergies like Superfriends and Planeswalkers reinforce the plan." + "secondary_color": "Black" }, { "theme": "Madness", @@ -13316,31 +4374,7 @@ "Lifegain" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Emrakul, the World Anew", - "Solphim, Mayhem Dominus - Synergy (Discard Matters)", - "Yawgmoth, Thran Physician - Synergy (Discard Matters)", - "Nezahal, Primal Tide - Synergy (Discard Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Vampire Kindred)" - ], - "example_cards": [ - "Necrogoyf", - "Emrakul, the World Anew", - "Markov Baron", - "Big Game Hunter", - "Shadowgrange Archfiend", - "Stensia Masquerade", - "Curse of Fool's Wisdom", - "Call to the Netherworld" - ], - "synergy_commanders": [ - "Yahenni, Undying Partisan - Synergy (Vampire Kindred)", - "Syr Konrad, the Grim - Synergy (Reanimate)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Turns discard into mana-efficient Madness casts, leveraging looting & Blood token filtering. Synergies like Discard Matters and Vampire Kindred reinforce the plan." + "secondary_color": "Red" }, { "theme": "Magecraft", @@ -13352,34 +4386,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Veyran, Voice of Duality", - "Ashling, Flame Dancer", - "Octavia, Living Thesis", - "Deekah, Fractal Theorist", - "Jadzi, Oracle of Arcavios // Journey to the Oracle" - ], - "example_cards": [ - "Storm-Kiln Artist", - "Archmage Emeritus", - "Veyran, Voice of Duality", - "Professor Onyx", - "Ashling, Flame Dancer", - "Sedgemoor Witch", - "Witherbloom Apprentice", - "Octavia, Living Thesis" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Transform)", - "Emry, Lurker of the Loch - Synergy (Wizard Kindred)", - "Talrand, Sky Summoner - Synergy (Wizard Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Chains cheap instants & sorceries for velocity—converting triggers into scalable damage or card advantage before a finisher. Synergies like Transform and Wizard Kindred reinforce the plan." + "secondary_color": "White" }, { "theme": "Mana Dork", @@ -13391,34 +4398,7 @@ "Myr Kindred" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Selvala, Heart of the Wilds", - "Rishkar, Peema Renegade", - "Jaheira, Friend of the Forest", - "Urza, Lord High Artificer" - ], - "example_cards": [ - "Birds of Paradise", - "Llanowar Elves", - "Elvish Mystic", - "Delighted Halfling", - "Fyndhorn Elves", - "Ornithopter of Paradise", - "Kami of Whispered Hopes", - "Simian Spirit Guide" - ], - "synergy_commanders": [ - "Fire Lord Zuko - Synergy (Firebending)", - "Zuko, Exiled Prince - Synergy (Firebending)", - "Avatar Aang // Aang, Master of Elements - Synergy (Firebending)", - "Kiora, the Rising Tide - Synergy (Scion Kindred)", - "Magnus the Red - Synergy (Spawn Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Mana Dork leveraging synergies with Firebending and Scion Kindred." + "secondary_color": "Red" }, { "theme": "Mana Rock", @@ -13430,34 +4410,7 @@ "Mana Dork" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Codsworth, Handy Helper", - "Karn, Legacy Reforged", - "Ramos, Dragon Engine", - "Roxanne, Starfall Savant", - "Rose, Cutthroat Raider" - ], - "example_cards": [ - "Sol Ring", - "Arcane Signet", - "Fellwar Stone", - "Thought Vessel", - "Mind Stone", - "Commander's Sphere", - "Chromatic Lantern", - "Talisman of Dominance" - ], - "synergy_commanders": [ - "Brudiclad, Telchor Engineer - Synergy (Myr Kindred)", - "Urtet, Remnant of Memnarch - Synergy (Myr Kindred)", - "Hearthhull, the Worldseed - Synergy (Charge Counters)", - "Inspirit, Flagship Vessel - Synergy (Charge Counters)", - "Azusa, Lost but Seeking - Synergy (Ramp)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Mana Rock leveraging synergies with Myr Kindred and Charge Counters." + "secondary_color": "Red" }, { "theme": "Manifest", @@ -13469,30 +4422,7 @@ "Mill" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Kozilek, the Broken Reality", - "Zimone, Mystery Unraveler", - "Omarthis, Ghostfire Initiate", - "The Reality Chip - Synergy (Topdeck)", - "Loot, Exuberant Explorer - Synergy (Topdeck)" - ], - "example_cards": [ - "Reality Shift", - "Kozilek, the Broken Reality", - "Scroll of Fate", - "Ugin's Mastery", - "Orochi Soul-Reaver", - "Thieving Amalgam", - "Whisperwood Elemental", - "Primordial Mist" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Equipment Matters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Manifest leveraging synergies with Manifest dread and Topdeck." + "secondary_color": "Blue" }, { "theme": "Manifest dread", @@ -13504,30 +4434,7 @@ "+1/+1 Counters" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Zimone, Mystery Unraveler", - "Kozilek, the Broken Reality - Synergy (Manifest)", - "Omarthis, Ghostfire Initiate - Synergy (Manifest)", - "The Reality Chip - Synergy (Topdeck)", - "Loot, Exuberant Explorer - Synergy (Topdeck)" - ], - "example_cards": [ - "They Came from the Pipes", - "Zimone, Mystery Unraveler", - "Abhorrent Oculus", - "Hauntwoods Shrieker", - "Threats Around Every Corner", - "Curator Beastie", - "Moldering Gym // Weight Room", - "Valgavoth's Onslaught" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Reanimate)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Manifest dread leveraging synergies with Manifest and Topdeck." + "secondary_color": "Blue" }, { "theme": "Manticore Kindred", @@ -13538,65 +4445,19 @@ "Leave the Battlefield" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Burn)", - "Braids, Arisen Nightmare - Synergy (Burn)", - "Lotho, Corrupt Shirriff - Synergy (Burn)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)" - ], - "example_cards": [ - "Chromanticore", - "Conquering Manticore", - "Heart-Piercer Manticore", - "Invading Manticore", - "Manticore", - "Dreamstalker Manticore", - "Manticore Eternal", - "Mount Velus Manticore" - ], - "synergy_commanders": [ - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Manticore creatures into play with shared payoffs (e.g., Burn and Blink)." + "secondary_color": "Black" }, { "theme": "Map Token", "synergies": [ + "Tokens Matter", "Explore", "Card Selection", "Artifact Tokens", - "Token Creation", - "Tokens Matter" + "Token Creation" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Hakbal of the Surging Soul - Synergy (Explore)", - "Amalia Benavides Aguirre - Synergy (Explore)", - "Nicanzil, Current Conductor - Synergy (Explore)", - "Astrid Peth - Synergy (Card Selection)", - "Francisco, Fowl Marauder - Synergy (Card Selection)" - ], - "example_cards": [ - "Get Lost", - "Treasure Map // Treasure Cove", - "Pip-Boy 3000", - "Worldwalker Helm", - "Fanatical Offering", - "Restless Anchorage", - "Topography Tracker", - "Spyglass Siren" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifact Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Explore and Card Selection reinforce the plan." + "secondary_color": "Green" }, { "theme": "Max speed", @@ -13608,32 +4469,7 @@ "Burn" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Mendicant Core, Guidelight", - "Vnwxt, Verbose Host", - "Zahur, Glory's Past", - "Far Fortune, End Boss", - "The Speed Demon - Synergy (Start your engines!)" - ], - "example_cards": [ - "Muraganda Raceway", - "Amonkhet Raceway", - "Mendicant Core, Guidelight", - "Avishkar Raceway", - "Vnwxt, Verbose Host", - "Howlsquad Heavy", - "Racers' Scoreboard", - "Starting Column" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Vehicles)", - "Shorikai, Genesis Engine - Synergy (Vehicles)", - "Selvala, Heart of the Wilds - Synergy (Scout Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Max speed leveraging synergies with Start your engines! and Vehicles." + "secondary_color": "Red" }, { "theme": "Mayhem", @@ -13642,33 +4478,7 @@ "Mill" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Chameleon, Master of Disguise", - "Carnage, Crimson Chaos", - "Ultimate Green Goblin", - "Swarm, Being of Bees", - "Solphim, Mayhem Dominus - Synergy (Discard Matters)" - ], - "example_cards": [ - "Chameleon, Master of Disguise", - "Carnage, Crimson Chaos", - "Ultimate Green Goblin", - "Oscorp Industries", - "Rocket-Powered Goblin Glider", - "Prison Break", - "Electro's Bolt", - "Swarm, Being of Bees" - ], - "synergy_commanders": [ - "Yawgmoth, Thran Physician - Synergy (Discard Matters)", - "Nezahal, Primal Tide - Synergy (Discard Matters)", - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Mayhem leveraging synergies with Discard Matters and Mill." + "secondary_color": "Red" }, { "theme": "Megamorph", @@ -13680,55 +4490,13 @@ "Voltron" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Niv-Mizzet, Parun - Synergy (Dragon Kindred)", - "Old Gnawbone - Synergy (Dragon Kindred)", - "Drakuseth, Maw of Flames - Synergy (Dragon Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Den Protector", - "Gudul Lurker", - "Ainok Survivalist", - "Deathmist Raptor", - "Stratus Dancer", - "Kadena's Silencer", - "Silumgar Assassin", - "Salt Road Ambushers" - ], - "synergy_commanders": [ - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Midrange)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Megamorph leveraging synergies with Dragon Kindred and +1/+1 Counters." + "secondary_color": "Green" }, { "theme": "Meld", "synergies": [], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Gisela, the Broken Blade // Brisela, Voice of Nightmares", - "Titania, Voice of Gaea // Titania, Gaea Incarnate", - "Urza, Lord Protector // Urza, Planeswalker", - "Mishra, Claimed by Gix // Mishra, Lost to Phyrexia", - "Vanille, Cheerful l'Cie // Ragnarok, Divine Deliverance" - ], - "example_cards": [ - "Gisela, the Broken Blade // Brisela, Voice of Nightmares", - "Hanweir Battlements // Hanweir, the Writhing Township", - "Titania, Voice of Gaea // Titania, Gaea Incarnate", - "Urza, Lord Protector // Urza, Planeswalker", - "Mishra, Claimed by Gix // Mishra, Lost to Phyrexia", - "Vanille, Cheerful l'Cie // Ragnarok, Divine Deliverance", - "Graf Rats // Chittering Host" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Meld theme and its supporting synergies." + "secondary_color": "Green" }, { "theme": "Melee", @@ -13739,33 +4507,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Adriana, Captain of the Guard", - "Wulfgar of Icewind Dale", - "Tifa, Martial Artist", - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)" - ], - "example_cards": [ - "Skyhunter Strike Force", - "Adriana, Captain of the Guard", - "Wulfgar of Icewind Dale", - "Tifa, Martial Artist", - "Drogskol Reinforcements", - "Grenzo's Ruffians", - "Custodi Soulcaller", - "Wings of the Guard" - ], - "synergy_commanders": [ - "Adeline, Resplendent Cathar - Synergy (Politics)", - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Melee leveraging synergies with Politics and Aggro." + "secondary_color": "Green" }, { "theme": "Menace", @@ -13777,35 +4519,7 @@ "Werewolf Kindred" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Junji, the Midnight Sky", - "Kozilek, the Great Distortion", - "Massacre Girl", - "Tergrid, God of Fright // Tergrid's Lantern", - "Sheoldred // The True Scriptures" - ], - "example_cards": [ - "Professional Face-Breaker", - "Noxious Gearhulk", - "Junji, the Midnight Sky", - "Kozilek, the Great Distortion", - "Massacre Girl", - "Tergrid, God of Fright // Tergrid's Lantern", - "Sheoldred // The True Scriptures", - "Stormfist Crusader" - ], - "synergy_commanders": [ - "Saryth, the Viper's Fang - Synergy (Warlock Kindred)", - "Honest Rutstein - Synergy (Warlock Kindred)", - "Breena, the Demagogue - Synergy (Warlock Kindred)", - "Old Rutstein - Synergy (Blood Token)", - "Kamber, the Plunderer - Synergy (Blood Token)", - "Ragavan, Nimble Pilferer - Synergy (Pirate Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Menace leveraging synergies with Warlock Kindred and Blood Token." + "secondary_color": "Red" }, { "theme": "Mentor", @@ -13817,34 +4531,7 @@ "Aggro" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Danny Pink", - "Felisa, Fang of Silverquill", - "Tajic, Legion's Edge", - "Aurelia, Exemplar of Justice", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)" - ], - "example_cards": [ - "Legion Warboss", - "Danny Pink", - "Felisa, Fang of Silverquill", - "Tributary Instructor", - "Tajic, Legion's Edge", - "Aurelia, Exemplar of Justice", - "Truefire Captain", - "Nyxborn Unicorn" - ], - "synergy_commanders": [ - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)", - "Odric, Lunarch Marshal - Synergy (Soldier Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Mentor leveraging synergies with Soldier Kindred and +1/+1 Counters." + "secondary_color": "Red" }, { "theme": "Mercenary Kindred", @@ -13856,35 +4543,7 @@ "Human Kindred" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Kellogg, Dangerous Mind", - "Cloud, Midgar Mercenary", - "Rakdos, the Muscle", - "The Infamous Cruelclaw", - "Gev, Scaled Scorch" - ], - "example_cards": [ - "Black Market Connections", - "Claim Jumper", - "Kellogg, Dangerous Mind", - "Doomed Necromancer", - "Cloud, Midgar Mercenary", - "Rakdos, the Muscle", - "The Infamous Cruelclaw", - "Howlsquad Heavy" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)", - "Captain Lannery Storm - Synergy (Outlaw Kindred)", - "Invasion of Ikoria // Zilortha, Apex of Ikoria - Synergy (Bracket:TutorNonland)", - "Magda, Brazen Outlaw - Synergy (Bracket:TutorNonland)", - "Mondrak, Glory Dominus - Synergy (Horror Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Mercenary creatures into play with shared payoffs (e.g., Outlaw Kindred and Bracket:TutorNonland)." + "secondary_color": "Red" }, { "theme": "Merfolk Kindred", @@ -13896,35 +4555,7 @@ "Landwalk" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Tatyova, Benthic Druid", - "Emry, Lurker of the Loch", - "Talrand, Sky Summoner", - "Adrix and Nev, Twincasters", - "Thrasios, Triton Hero" - ], - "example_cards": [ - "Thassa's Oracle", - "Tatyova, Benthic Druid", - "Emry, Lurker of the Loch", - "Talrand, Sky Summoner", - "Herald of Secret Streams", - "World Shaper", - "Adrix and Nev, Twincasters", - "Kiora's Follower" - ], - "synergy_commanders": [ - "Wrexial, the Risen Deep - Synergy (Islandwalk)", - "Thada Adel, Acquisitor - Synergy (Islandwalk)", - "Adrestia - Synergy (Islandwalk)", - "Hakbal of the Surging Soul - Synergy (Explore)", - "Amalia Benavides Aguirre - Synergy (Explore)", - "Nicanzil, Current Conductor - Synergy (Card Selection)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Merfolk creatures into play with shared payoffs (e.g., Islandwalk and Explore)." + "secondary_color": "Green" }, { "theme": "Metalcraft", @@ -13936,56 +4567,14 @@ "Toughness Matters" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Jor Kadeen, the Prevailer", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Transform)", - "Veyran, Voice of Duality - Synergy (Transform)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)" - ], - "example_cards": [ - "Mox Opal", - "Dispatch", - "Puresteel Paladin", - "Urza's Workshop", - "Molten Psyche", - "Galvanic Blast", - "Indomitable Archangel", - "Stoic Rebuttal" - ], - "synergy_commanders": [ - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Maintains ≥3 artifacts to turn on Metalcraft efficiencies and scaling bonuses. Synergies like Transform and Artifacts Matter reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Metathran Kindred", "synergies": [ "Little Fellas" ], - "primary_color": "Blue", - "example_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Metathran Soldier", - "Stormscape Battlemage", - "Metathran Transport", - "Metathran Zombie", - "Metathran Elite", - "Metathran Aerostat", - "Sky Weaver", - "Living Airship" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Metathran creatures into play with shared payoffs (e.g., Little Fellas)." + "primary_color": "Blue" }, { "theme": "Midrange", @@ -13997,32 +4586,7 @@ "-1/-1 Counters" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Rishkar, Peema Renegade", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Yawgmoth, Thran Physician", - "Shalai, Voice of Plenty", - "Drana, Liberator of Malakir" - ], - "example_cards": [ - "Eternal Witness", - "Karn's Bastion", - "Avenger of Zendikar", - "Malakir Rebirth // Malakir Mire", - "Felidar Retreat", - "Unbreakable Formation", - "Evolution Sage", - "Cathars' Crusade" - ], - "synergy_commanders": [ - "Tekuthal, Inquiry Dominus - Synergy (Proliferate)", - "Atraxa, Praetors' Voice - Synergy (Proliferate)", - "Jaxis, the Troublemaker - Synergy (Blitz)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Uses flexible value threats & interaction, pivoting between pressure and attrition based on table texture. Synergies like Proliferate and Support reinforce the plan." + "secondary_color": "Green" }, { "theme": "Mill", @@ -14034,34 +4598,7 @@ "Delve" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim", - "Sheoldred, Whispering One", - "Emry, Lurker of the Loch", - "Six", - "Kozilek, Butcher of Truth" - ], - "example_cards": [ - "Reanimate", - "Eternal Witness", - "Faithless Looting", - "Victimize", - "Mystic Sanctuary", - "Buried Ruin", - "Takenuma, Abandoned Mire", - "Syr Konrad, the Grim" - ], - "synergy_commanders": [ - "Glarb, Calamity's Augur - Synergy (Surveil)", - "Desmond Miles - Synergy (Surveil)", - "Fandaniel, Telophoroi Ascian - Synergy (Surveil)", - "Kiora, the Rising Tide - Synergy (Threshold)", - "Ishkanah, Grafwidow - Synergy (Delirium)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Attacks libraries as a resource—looping self-mill or opponent mill into recursion and payoff engines. Synergies like Surveil and Threshold reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Minion Kindred", @@ -14073,33 +4610,7 @@ "Sacrifice Matters" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "K'rrik, Son of Yawgmoth", - "Chainer, Nightmare Adept", - "Xantcha, Sleeper Agent", - "Chainer, Dementia Master", - "Phage the Untouchable" - ], - "example_cards": [ - "K'rrik, Son of Yawgmoth", - "Chainer, Nightmare Adept", - "Xantcha, Sleeper Agent", - "Chainer, Dementia Master", - "Priest of Gix", - "Phage the Untouchable", - "Bone Shredder", - "Braids, Cabal Minion" - ], - "synergy_commanders": [ - "Kiora, the Rising Tide - Synergy (Threshold)", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)", - "Sheoldred, the Apocalypse - Synergy (Phyrexian Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Minion creatures into play with shared payoffs (e.g., Threshold and Phyrexian Kindred)." + "secondary_color": "Blue" }, { "theme": "Minotaur Kindred", @@ -14111,35 +4622,7 @@ "First strike" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Moraug, Fury of Akoum", - "Neheb, the Eternal", - "Neheb, Dreadhorde Champion", - "Zedruu the Greathearted", - "Gornog, the Red Reaper" - ], - "example_cards": [ - "Moraug, Fury of Akoum", - "Neheb, the Eternal", - "Glint-Horn Buccaneer", - "Neheb, Dreadhorde Champion", - "Fanatic of Mogis", - "Boros Reckoner", - "Etherium-Horn Sorcerer", - "Zedruu the Greathearted" - ], - "synergy_commanders": [ - "Kardur, Doomscourge - Synergy (Berserker Kindred)", - "Magda, Brazen Outlaw - Synergy (Berserker Kindred)", - "Alexios, Deimos of Kosmos - Synergy (Berserker Kindred)", - "Kiki-Jiki, Mirror Breaker - Synergy (Shaman Kindred)", - "Delina, Wild Mage - Synergy (Shaman Kindred)", - "Aurelia, the Warleader - Synergy (Haste)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Minotaur creatures into play with shared payoffs (e.g., Berserker Kindred and Shaman Kindred)." + "secondary_color": "Black" }, { "theme": "Miracle", @@ -14150,30 +4633,7 @@ "Spellslinger" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "The Reality Chip - Synergy (Topdeck)", - "Loot, Exuberant Explorer - Synergy (Topdeck)", - "Kinnan, Bonder Prodigy - Synergy (Topdeck)", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)" - ], - "example_cards": [ - "Reforge the Soul", - "Temporal Mastery", - "Devastation Tide", - "Metamorphosis Fanatic", - "Redress Fate", - "Entreat the Angels", - "Terminus", - "Zephyrim" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Manipulates topdecks / draw timing to exploit Miracle cost reductions on splashy spells. Synergies like Topdeck and Big Mana reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Mite Kindred", @@ -14185,32 +4645,7 @@ "Creature Tokens" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Skrelv, Defector Mite", - "Vishgraz, the Doomhive", - "Ria Ivor, Bane of Bladehold", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Poison Counters)", - "Skithiryx, the Blight Dragon - Synergy (Poison Counters)" - ], - "example_cards": [ - "Skrelv, Defector Mite", - "White Sun's Twilight", - "Skrelv's Hive", - "Mirrex", - "Crawling Chorus", - "Vishgraz, the Doomhive", - "Ria Ivor, Bane of Bladehold", - "Infested Fleshcutter" - ], - "synergy_commanders": [ - "Yawgmoth, Thran Physician - Synergy (Infect)", - "Vorinclex, Monstrous Raider - Synergy (Infect)", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Mite creatures into play with shared payoffs (e.g., Poison Counters and Infect)." + "secondary_color": "Black" }, { "theme": "Mobilize", @@ -14222,32 +4657,7 @@ "Toughness Matters" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Zurgo Stormrender", - "Zurgo, Thunder's Decree", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Krenko, Mob Boss - Synergy (Warrior Kindred)" - ], - "example_cards": [ - "Voice of Victory", - "Zurgo Stormrender", - "Avenger of the Fallen", - "Bone-Cairn Butcher", - "Zurgo, Thunder's Decree", - "Venerated Stormsinger", - "Stadium Headliner", - "Dalkovan Packbeasts" - ], - "synergy_commanders": [ - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)", - "Talrand, Sky Summoner - Synergy (Creature Tokens)", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Mobilize leveraging synergies with Warrior Kindred and Creature Tokens." + "secondary_color": "Red" }, { "theme": "Modal", @@ -14259,23 +4669,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Control)" - ], - "example_cards": [ - "Return the Favor", - "Insatiable Avarice", - "Great Train Heist", - "Three Steps Ahead", - "Requisition Raid", - "Smuggler's Surprise", - "Lively Dirge", - "Final Showdown" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Modal leveraging synergies with Cost Scaling and Spree." + "secondary_color": "White" }, { "theme": "Modular", @@ -14287,32 +4681,7 @@ "Counters Matter" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Zabaz, the Glimmerwasp", - "Blaster, Combat DJ // Blaster, Morale Booster", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)", - "Sheoldred, the Apocalypse - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Power Depot", - "Arcbound Ravager", - "Scrapyard Recombiner", - "Arcbound Crusher", - "Arcbound Reclaimer", - "Arcbound Worker", - "Arcbound Shikari", - "Arcbound Stinger" - ], - "synergy_commanders": [ - "Elas il-Kor, Sadistic Pilgrim - Synergy (Aristocrats)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Aristocrats)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Modular leveraging synergies with Sacrifice Matters and Aristocrats." + "secondary_color": "White" }, { "theme": "Mole Kindred", @@ -14320,26 +4689,7 @@ "Little Fellas" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Anzrag, the Quake-Mole", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Anzrag, the Quake-Mole", - "Three Tree Rootweaver", - "Drillworks Mole", - "Graf Mole", - "Tunnel Tipster", - "Pothole Mole", - "Ravenous Gigamole", - "Badgermole" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Mole creatures into play with shared payoffs (e.g., Little Fellas)." + "secondary_color": "Black" }, { "theme": "Monarch", @@ -14351,33 +4701,7 @@ "Soldier Kindred" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Queen Marchesa", - "Aragorn, King of Gondor", - "Éomer, King of Rohan", - "Faramir, Steward of Gondor", - "Starscream, Power Hungry // Starscream, Seeker Leader" - ], - "example_cards": [ - "Court of Grace", - "Court of Garenbrig", - "Regal Behemoth", - "Court of Ambition", - "Court of Cunning", - "Queen Marchesa", - "Court of Vantress", - "Court of Ire" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)", - "Adeline, Resplendent Cathar - Synergy (Politics)", - "Toski, Bearer of Secrets - Synergy (Card Draw)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Claims and defends the Monarch for sustained card draw with evasion & deterrents. Synergies like Politics and Group Hug reinforce the plan." + "secondary_color": "Black" }, { "theme": "Monger Kindred", @@ -14385,37 +4709,13 @@ "Politics" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)", - "Adeline, Resplendent Cathar - Synergy (Politics)" - ], - "example_cards": [ - "Warmonger", - "Wishmonger", - "Squallmonger", - "Scandalmonger", - "Sailmonger" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Monger creatures into play with shared payoffs (e.g., Politics)." + "secondary_color": "Blue" }, { "theme": "Mongoose Kindred", "synergies": [], "primary_color": "Green", - "secondary_color": "Red", - "example_cards": [ - "Nimble Mongoose", - "Blurred Mongoose", - "Karoo Meerkat", - "Mongoose Lizard" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Mongoose creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Monk Kindred", @@ -14427,33 +4727,7 @@ "Midrange" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Azusa, Lost but Seeking", - "Narset, Enlightened Exile", - "Ishai, Ojutai Dragonspeaker", - "Tifa Lockhart", - "Elsha of the Infinite" - ], - "example_cards": [ - "Azusa, Lost but Seeking", - "Avacyn's Pilgrim", - "Pinnacle Monk // Mystic Peak", - "Serra Ascendant", - "Springheart Nantuko", - "Third Path Iconoclast", - "Jukai Naturalist", - "Monastery Mentor" - ], - "synergy_commanders": [ - "Taigam, Master Opportunist - Synergy (Flurry)", - "Shiko and Narset, Unified - Synergy (Flurry)", - "Kitsa, Otterball Elite - Synergy (Prowess)", - "Bria, Riptide Rogue - Synergy (Prowess)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Monk creatures into play with shared payoffs (e.g., Flurry and Prowess)." + "secondary_color": "Green" }, { "theme": "Monkey Kindred", @@ -14463,34 +4737,7 @@ "Combat Matters" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Kari Zev, Skyship Raider", - "Baral and Kari Zev", - "Kibo, Uktabi Prince", - "Rashmi and Ragavan" - ], - "example_cards": [ - "Ragavan, Nimble Pilferer", - "Kari Zev, Skyship Raider", - "Baral and Kari Zev", - "Kibo, Uktabi Prince", - "Rashmi and Ragavan", - "Scrounging Bandar", - "Clockwork Percussionist", - "Simian Sling" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Etali, Primal Storm - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Aggro)", - "Sheoldred, the Apocalypse - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Monkey creatures into play with shared payoffs (e.g., Little Fellas and Aggro)." + "secondary_color": "Green" }, { "theme": "Monstrosity", @@ -14502,33 +4749,7 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Maester Seymour", - "Polukranos, World Eater", - "Hythonia the Cruel", - "Uro, Titan of Nature's Wrath - Synergy (Giant Kindred)", - "Thryx, the Sudden Storm - Synergy (Giant Kindred)" - ], - "example_cards": [ - "Giggling Skitterspike", - "Hydra Broodmaster", - "Death Kiss", - "Alpha Deathclaw", - "Maester Seymour", - "Shipbreaker Kraken", - "Colossus of Akros", - "Fleecemane Lion" - ], - "synergy_commanders": [ - "Bonny Pall, Clearcutter - Synergy (Giant Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Monstrosity leveraging synergies with Giant Kindred and +1/+1 Counters." + "secondary_color": "Red" }, { "theme": "Moonfolk Kindred", @@ -14539,35 +4760,7 @@ "Artifacts Matter", "Little Fellas" ], - "primary_color": "Blue", - "example_commanders": [ - "Meloku the Clouded Mirror", - "Kotori, Pilot Prodigy", - "Katsumasa, the Animator", - "Tamiyo, Inquisitive Student // Tamiyo, Seasoned Scholar", - "Tameshi, Reality Architect" - ], - "example_cards": [ - "Research Thief", - "Meloku the Clouded Mirror", - "Kotori, Pilot Prodigy", - "Katsumasa, the Animator", - "Tamiyo, Inquisitive Student // Tamiyo, Seasoned Scholar", - "Inventive Iteration // Living Breakthrough", - "Tameshi, Reality Architect", - "Oboro Breezecaller" - ], - "synergy_commanders": [ - "Emry, Lurker of the Loch - Synergy (Wizard Kindred)", - "Talrand, Sky Summoner - Synergy (Wizard Kindred)", - "Niv-Mizzet, Parun - Synergy (Wizard Kindred)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Moonfolk creatures into play with shared payoffs (e.g., Wizard Kindred and Flying)." + "primary_color": "Blue" }, { "theme": "Morbid", @@ -14579,30 +4772,7 @@ "Blink" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)" - ], - "example_cards": [ - "Tragic Slip", - "Deathreap Ritual", - "Grim Reaper's Sprint", - "Vashta Nerada", - "Séance Board", - "Reaper from the Abyss", - "Muster the Departed", - "Malicious Affliction" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Morbid leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "Black" }, { "theme": "More Than Meets the Eye", @@ -14610,33 +4780,11 @@ "Convert", "Eye Kindred", "Robot Kindred", - "Artifacts Matter" + "Historics Matter", + "Legends Matter" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Starscream, Power Hungry // Starscream, Seeker Leader", - "Ratchet, Field Medic // Ratchet, Rescue Racer", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader" - ], - "example_cards": [ - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Starscream, Power Hungry // Starscream, Seeker Leader", - "Ratchet, Field Medic // Ratchet, Rescue Racer", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant", - "Optimus Prime, Hero // Optimus Prime, Autobot Leader", - "Prowl, Stoic Strategist // Prowl, Pursuit Vehicle", - "Goldbug, Humanity's Ally // Goldbug, Scrappy Scout", - "Megatron, Tyrant // Megatron, Destructive Force" - ], - "synergy_commanders": [ - "Codsworth, Handy Helper - Synergy (Robot Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around More Than Meets the Eye leveraging synergies with Convert and Eye Kindred." + "secondary_color": "White" }, { "theme": "Morph", @@ -14648,31 +4796,7 @@ "Bird Kindred" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Akroma, Angel of Fury", - "Loot, Exuberant Explorer - Synergy (Beast Kindred)", - "Questing Beast - Synergy (Beast Kindred)", - "Kona, Rescue Beastie - Synergy (Beast Kindred)", - "Meloku the Clouded Mirror - Synergy (Illusion Kindred)" - ], - "example_cards": [ - "Grim Haruspex", - "Hooded Hydra", - "Aphetto Alchemist", - "Rattleclaw Mystic", - "Gift of Doom", - "Vesuvan Shapeshifter", - "Zoetic Cavern", - "Akroma, Angel of Fury" - ], - "synergy_commanders": [ - "Toothy, Imaginary Friend - Synergy (Illusion Kindred)", - "Emry, Lurker of the Loch - Synergy (Wizard Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Morph leveraging synergies with Beast Kindred and Illusion Kindred." + "secondary_color": "Green" }, { "theme": "Mount Kindred", @@ -14684,32 +4808,7 @@ "Vigilance" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "The Gitrog, Ravenous Ride", - "Calamity, Galloping Inferno", - "Fortune, Loyal Steed", - "Kolodin, Triumph Caster", - "Miriam, Herd Whisperer" - ], - "example_cards": [ - "The Gitrog, Ravenous Ride", - "Ornery Tumblewagg", - "Calamity, Galloping Inferno", - "Caustic Bronco", - "Fortune, Loyal Steed", - "Bulwark Ox", - "District Mascot", - "One Last Job" - ], - "synergy_commanders": [ - "Shorikai, Genesis Engine - Synergy (Pilot Kindred)", - "Cid, Freeflier Pilot - Synergy (Pilot Kindred)", - "Keleth, Sunmane Familiar - Synergy (Horse Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Mount creatures into play with shared payoffs (e.g., Saddle and Pilot Kindred)." + "secondary_color": "Green" }, { "theme": "Mountaincycling", @@ -14720,30 +4819,7 @@ "Ramp", "Discard Matters" ], - "primary_color": "Red", - "example_commanders": [ - "Vorinclex // The Grand Evolution - Synergy (Land Types Matter)", - "Karametra, God of Harvests - Synergy (Land Types Matter)", - "Titania, Nature's Force - Synergy (Land Types Matter)", - "The Balrog of Moria - Synergy (Cycling)", - "Monstrosity of the Lake - Synergy (Cycling)" - ], - "example_cards": [ - "Oliphaunt", - "Ruin Grinder", - "Seismic Monstrosaur", - "Bedhead Beastie", - "Furnace Host Charger", - "Valley Rannet", - "Hill Gigas", - "Igneous Pouncer" - ], - "synergy_commanders": [ - "Baral, Chief of Compliance - Synergy (Loot)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Mountaincycling leveraging synergies with Land Types Matter and Cycling." + "primary_color": "Red" }, { "theme": "Mountainwalk", @@ -14753,30 +4829,7 @@ "Little Fellas" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Sheoldred, Whispering One - Synergy (Landwalk)", - "Chatterfang, Squirrel General - Synergy (Landwalk)", - "Wrexial, the Risen Deep - Synergy (Landwalk)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)", - "Tatyova, Benthic Druid - Synergy (Lands Matter)" - ], - "example_cards": [ - "Dwarven Grunt", - "Goblin Mountaineer", - "Mountain Goat", - "Goblins of the Flarg", - "Canyon Wildcat", - "Goblin Spelunkers", - "Zodiac Dog", - "Zodiac Goat" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Mountainwalk leveraging synergies with Landwalk and Lands Matter." + "secondary_color": "White" }, { "theme": "Mouse Kindred", @@ -14788,30 +4841,7 @@ "Toughness Matters" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Arthur, Marigold Knight", - "Mabel, Heir to Cragflame", - "Tusk and Whiskers", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)", - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)" - ], - "example_cards": [ - "Sword of the Squeak", - "Lupinflower Village", - "Three Blind Mice", - "Rockface Village", - "Steelburr Champion", - "Arthur, Marigold Knight", - "Heartfire Hero", - "Valley Flamecaller" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Mouse creatures into play with shared payoffs (e.g., Valiant and Soldier Kindred)." + "secondary_color": "Red" }, { "theme": "Multikicker", @@ -14823,31 +4853,7 @@ "Leave the Battlefield" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Zethi, Arcane Blademaster", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "example_cards": [ - "Everflowing Chalice", - "Comet Storm", - "Marshal's Anthem", - "Joraga Warcaller", - "Wolfbriar Elemental", - "Zethi, Arcane Blademaster", - "Strength of the Tajuru", - "Bloodhusk Ritualist" - ], - "synergy_commanders": [ - "Yahenni, Undying Partisan - Synergy (Counters Matter)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Kicker / Multikicker spells scale flexibly—paying extra mana for amplified late-game impact. Synergies like +1/+1 Counters and Counters Matter reinforce the plan." + "secondary_color": "Red" }, { "theme": "Multiple Copies", @@ -14855,27 +4861,7 @@ "Little Fellas" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Lord of the Nazgûl", - "Cid, Timeless Artificer", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Nazgûl", - "Lord of the Nazgûl", - "Nazgûl Battle-Mace", - "Rat Colony", - "Hare Apparent", - "Slime Against Humanity", - "Dragon's Approach", - "Shadowborn Apostle" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Multiple Copies leveraging synergies with Little Fellas." + "secondary_color": "Red" }, { "theme": "Mutant Kindred", @@ -14887,30 +4873,7 @@ "+1/+1 Counters" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Agent Frank Horrigan", - "The Wise Mothman", - "The Master, Transcendent", - "Raul, Trouble Shooter", - "Sliver Overlord" - ], - "example_cards": [ - "Evolution Witness", - "Master Biomancer", - "Rampaging Yao Guai", - "Biomancer's Familiar", - "Agent Frank Horrigan", - "Feral Ghoul", - "The Wise Mothman", - "Tato Farmer" - ], - "synergy_commanders": [ - "Neheb, the Eternal - Synergy (Zombie Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Mutant creatures into play with shared payoffs (e.g., Graft and Rad Counters)." + "secondary_color": "Blue" }, { "theme": "Mutate", @@ -14922,35 +4885,7 @@ "Aggro" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Nethroi, Apex of Death", - "Brokkos, Apex of Forever", - "Illuna, Apex of Wishes", - "Otrimi, the Ever-Playful", - "Vadrok, Apex of Thunder" - ], - "example_cards": [ - "Gemrazer", - "Sea-Dasher Octopus", - "Migratory Greathorn", - "Nethroi, Apex of Death", - "Sawtusk Demolisher", - "Auspicious Starrix", - "Dreamtail Heron", - "Pouncing Shoreshark" - ], - "synergy_commanders": [ - "Loot, Exuberant Explorer - Synergy (Beast Kindred)", - "Questing Beast - Synergy (Beast Kindred)", - "Kona, Rescue Beastie - Synergy (Beast Kindred)", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Stacks mutate layers to reuse mutate triggers and build a resilient evolving threat. Synergies like Beast Kindred and Flying reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Myr Kindred", @@ -14962,32 +4897,7 @@ "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Brudiclad, Telchor Engineer", - "Urtet, Remnant of Memnarch", - "Codsworth, Handy Helper - Synergy (Mana Rock)", - "Karn, Legacy Reforged - Synergy (Mana Rock)", - "Ramos, Dragon Engine - Synergy (Mana Rock)" - ], - "example_cards": [ - "Palladium Myr", - "Myr Battlesphere", - "Myr Retriever", - "Iron Myr", - "Shimmer Myr", - "Silver Myr", - "Gold Myr", - "Leaden Myr" - ], - "synergy_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Mana Dork)", - "Selvala, Heart of the Wilds - Synergy (Mana Dork)", - "Azusa, Lost but Seeking - Synergy (Ramp)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Myr creatures into play with shared payoffs (e.g., Mana Rock and Mana Dork)." + "secondary_color": "White" }, { "theme": "Myriad", @@ -14999,31 +4909,7 @@ "Aggro" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "The Master, Multiplied", - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)", - "Adeline, Resplendent Cathar - Synergy (Politics)", - "Mondrak, Glory Dominus - Synergy (Clones)" - ], - "example_cards": [ - "Battle Angels of Tyr", - "Scion of Calamity", - "The Master, Multiplied", - "Wizards of Thay", - "Goldlust Triad", - "Elturel Survivors", - "Scurry of Squirrels", - "Chittering Dispatcher" - ], - "synergy_commanders": [ - "Kiki-Jiki, Mirror Breaker - Synergy (Clones)", - "Yawgmoth, Thran Physician - Synergy (Planeswalkers)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Myriad leveraging synergies with Politics and Clones." + "secondary_color": "Green" }, { "theme": "Mystic Kindred", @@ -15032,41 +4918,13 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Loran of the Third Path - Synergy (Human Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Mystic Enforcer", - "Mystic Crusader", - "Mystic Penitent", - "Mystic Zealot", - "Taoist Mystic", - "Mystic Visionary", - "Taoist Hermit" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Mystic creatures into play with shared payoffs (e.g., Human Kindred and Little Fellas)." + "secondary_color": "Green" }, { "theme": "Nautilus Kindred", "synergies": [], "primary_color": "Blue", - "secondary_color": "Black", - "example_cards": [ - "Hermitic Nautilus", - "Monoist Circuit-Feeder", - "Crystalline Nautilus", - "Chambered Nautilus" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Nautilus creatures into play with shared payoffs." + "secondary_color": "Black" }, { "theme": "Necron Kindred", @@ -15077,45 +4935,15 @@ "Mill", "Blink" ], - "primary_color": "Black", - "example_commanders": [ - "Imotekh the Stormlord", - "Illuminor Szeras", - "Anrakyr the Traveller", - "Trazyn the Infinite", - "Szarekh, the Silent King" - ], - "example_cards": [ - "Biotransference", - "Necron Deathmark", - "Imotekh the Stormlord", - "Illuminor Szeras", - "Anrakyr the Traveller", - "Chronomancer", - "Skorpekh Lord", - "Psychomancer" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Emry, Lurker of the Loch - Synergy (Wizard Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Necron creatures into play with shared payoffs (e.g., Unearth and Artifacts Matter)." + "primary_color": "Black" }, { "theme": "Net Counters", - "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Braided Net // Braided Quipu", - "Magnetic Web", - "Merseine" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates net counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Blue" }, { "theme": "Nightbound", @@ -15127,30 +4955,7 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Tovolar, Dire Overlord // Tovolar, the Midnight Scourge", - "Vincent Valentine // Galian Beast - Synergy (Werewolf Kindred)", - "Ulrich of the Krallenhorde // Ulrich, Uncontested Alpha - Synergy (Werewolf Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Control)", - "Sheoldred, Whispering One - Synergy (Control)" - ], - "example_cards": [ - "Outland Liberator // Frenzied Trapbreaker", - "Tovolar, Dire Overlord // Tovolar, the Midnight Scourge", - "Ill-Tempered Loner // Howlpack Avenger", - "Avabruck Caretaker // Hollowhenge Huntmaster", - "Tovolar's Huntmaster // Tovolar's Packleader", - "Howlpack Piper // Wildsong Howler", - "Kessig Naturalist // Lord of the Ulvenwald", - "Arlinn, the Pack's Hope // Arlinn, the Moon's Fury" - ], - "synergy_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Stax)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Nightbound leveraging synergies with Werewolf Kindred and Control." + "secondary_color": "Red" }, { "theme": "Nightmare Kindred", @@ -15162,34 +4967,7 @@ "Enter the Battlefield" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Braids, Arisen Nightmare", - "Lurrus of the Dream-Den", - "Sephiroth, Fabled SOLDIER // Sephiroth, One-Winged Angel", - "The Mindskinner", - "Ovika, Enigma Goliath" - ], - "example_cards": [ - "Braids, Arisen Nightmare", - "Doom Whisperer", - "Dread Presence", - "Lurrus of the Dream-Den", - "Sephiroth, Fabled SOLDIER // Sephiroth, One-Winged Angel", - "The Mindskinner", - "Ovika, Enigma Goliath", - "Ancient Cellarspawn" - ], - "synergy_commanders": [ - "Mondrak, Glory Dominus - Synergy (Horror Kindred)", - "Solphim, Mayhem Dominus - Synergy (Horror Kindred)", - "Zopandrel, Hunger Dominus - Synergy (Horror Kindred)", - "Loot, Exuberant Explorer - Synergy (Beast Kindred)", - "Questing Beast - Synergy (Beast Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Nightmare creatures into play with shared payoffs (e.g., Horror Kindred and Beast Kindred)." + "secondary_color": "Blue" }, { "theme": "Nightstalker Kindred", @@ -15197,27 +4975,7 @@ "Little Fellas", "Big Mana" ], - "primary_color": "Black", - "example_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)" - ], - "example_cards": [ - "Abyssal Nightstalker", - "Urborg Panther", - "Feral Shadow", - "Breathstealer", - "Shimian Night Stalker", - "Predatory Nightstalker", - "Prowling Nightstalker", - "Nightstalker Engine" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Nightstalker creatures into play with shared payoffs (e.g., Little Fellas and Big Mana)." + "primary_color": "Black" }, { "theme": "Ninja Kindred", @@ -15229,33 +4987,7 @@ "Aggro" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Nashi, Moon Sage's Scion", - "Yuriko, the Tiger's Shadow", - "Ink-Eyes, Servant of Oni", - "Satoru, the Infiltrator", - "Satoru Umezawa" - ], - "example_cards": [ - "Nashi, Moon Sage's Scion", - "Fallen Shinobi", - "Prosperous Thief", - "Thousand-Faced Shadow", - "Yuriko, the Tiger's Shadow", - "Silver-Fur Master", - "Silent-Blade Oni", - "Ingenious Infiltrator" - ], - "synergy_commanders": [ - "Higure, the Still Wind - Synergy (Ninjutsu)", - "Lord Skitter, Sewer King - Synergy (Rat Kindred)", - "Marrow-Gnawer - Synergy (Rat Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ninja creatures into play with shared payoffs (e.g., Ninjutsu and Rat Kindred)." + "secondary_color": "Black" }, { "theme": "Ninjutsu", @@ -15267,72 +4999,19 @@ "Aggro" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Nashi, Moon Sage's Scion", - "Ink-Eyes, Servant of Oni", - "Higure, the Still Wind", - "Yuffie, Materia Hunter", - "Yuriko, the Tiger's Shadow - Synergy (Ninja Kindred)" - ], - "example_cards": [ - "Nashi, Moon Sage's Scion", - "Fallen Shinobi", - "Prosperous Thief", - "Thousand-Faced Shadow", - "Silver-Fur Master", - "Silent-Blade Oni", - "Ingenious Infiltrator", - "Ink-Eyes, Servant of Oni" - ], - "synergy_commanders": [ - "Lord Skitter, Sewer King - Synergy (Rat Kindred)", - "Marrow-Gnawer - Synergy (Rat Kindred)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Ninjutsu leveraging synergies with Ninja Kindred and Rat Kindred." + "secondary_color": "Blue" }, { "theme": "Noble Kindred", "synergies": [ "Vampire Kindred", + "Historics Matter", + "Legends Matter", "Lifelink", - "Elf Kindred", - "Human Kindred", - "Lifegain" + "Elf Kindred" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Ayara, First of Locthwain", - "Torbran, Thane of Red Fell", - "Loot, Exuberant Explorer", - "Talion, the Kindly Lord", - "Arwen, Weaver of Hope" - ], - "example_cards": [ - "Ayara, First of Locthwain", - "Torbran, Thane of Red Fell", - "Loot, Exuberant Explorer", - "Talion, the Kindly Lord", - "Falkenrath Noble", - "Arwen, Weaver of Hope", - "Charming Prince", - "Brago, King Eternal" - ], - "synergy_commanders": [ - "Vito, Thorn of the Dusk Rose - Synergy (Vampire Kindred)", - "Yahenni, Undying Partisan - Synergy (Vampire Kindred)", - "Elenda, the Dusk Rose - Synergy (Vampire Kindred)", - "Mangara, the Diplomat - Synergy (Lifelink)", - "Danitha Capashen, Paragon - Synergy (Lifelink)", - "Selvala, Heart of the Wilds - Synergy (Elf Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Noble creatures into play with shared payoffs (e.g., Vampire Kindred and Lifelink)." + "secondary_color": "White" }, { "theme": "Nomad Kindred", @@ -15344,27 +5023,7 @@ "Mill" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Pianna, Nomad Captain", - "Kiora, the Rising Tide - Synergy (Threshold)", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Emry, Lurker of the Loch - Synergy (Reanimate)" - ], - "example_cards": [ - "Weathered Wayfarer", - "Tireless Tribe", - "Nomad Mythmaker", - "Nomads en-Kor", - "Spurnmage Advocate", - "Dwarven Nomad", - "Avalanche Riders", - "Pianna, Nomad Captain" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Nomad creatures into play with shared payoffs (e.g., Threshold and Human Kindred)." + "secondary_color": "Red" }, { "theme": "Nymph Kindred", @@ -15376,31 +5035,7 @@ "Auras" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Sythis, Harvest's Hand", - "Goldberry, River-Daughter", - "Kestia, the Cultivator", - "Psemilla, Meletian Poet", - "Calix, Guided by Fate - Synergy (Constellation)" - ], - "example_cards": [ - "Dryad of the Ilysian Grove", - "Sythis, Harvest's Hand", - "Alseid of Life's Bounty", - "Goldberry, River-Daughter", - "Naiad of Hidden Coves", - "Lampad of Death's Vigil", - "Kestia, the Cultivator", - "Forgeborn Oreads" - ], - "synergy_commanders": [ - "Eutropia the Twice-Favored - Synergy (Constellation)", - "Sram, Senior Edificer - Synergy (Equipment Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Nymph creatures into play with shared payoffs (e.g., Constellation and Bestow)." + "secondary_color": "Green" }, { "theme": "Octopus Kindred", @@ -15412,72 +5047,19 @@ "Discard Matters" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Kiora, the Rising Tide", - "Queza, Augur of Agonies", - "Octavia, Living Thesis", - "Lorthos, the Tidemaker", - "Marvo, Deep Operative" - ], - "example_cards": [ - "Spawning Kraken", - "Sea-Dasher Octopus", - "Kiora, the Rising Tide", - "Queza, Augur of Agonies", - "Octavia, Living Thesis", - "Octomancer", - "Omen Hawker", - "Cephalid Facetaker" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Rogue Kindred)", - "Sakashima of a Thousand Faces - Synergy (Rogue Kindred)", - "Rankle, Master of Pranks - Synergy (Rogue Kindred)", - "Baral, Chief of Compliance - Synergy (Loot)", - "The Locust God - Synergy (Loot)", - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Octopus creatures into play with shared payoffs (e.g., Rogue Kindred and Loot)." + "secondary_color": "Black" }, { "theme": "Offering", "synergies": [ "Spirit Kindred", + "Historics Matter", + "Legends Matter", "Big Mana", - "Spells Matter", - "Spellslinger" + "Spells Matter" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Patron of the Moon", - "Patron of the Orochi", - "Patron of the Nezumi", - "Patron of the Kitsune", - "Patron of the Akki" - ], - "example_cards": [ - "Blast-Furnace Hellkite", - "Patron of the Moon", - "Patron of the Orochi", - "Patron of the Nezumi", - "Patron of the Kitsune", - "Patron of the Akki" - ], - "synergy_commanders": [ - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Junji, the Midnight Sky - Synergy (Spirit Kindred)", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Offering leveraging synergies with Spirit Kindred and Big Mana." + "secondary_color": "Black" }, { "theme": "Offspring", @@ -15489,30 +5071,7 @@ "Leave the Battlefield" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Pingers)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Pingers)", - "Niv-Mizzet, Parun - Synergy (Pingers)", - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)" - ], - "example_cards": [ - "Coruscation Mage", - "Agate Instigator", - "Starscape Cleric", - "Iridescent Vinelasher", - "Darkstar Augur", - "Tender Wildguide", - "Warren Warleader", - "Prosperous Bandit" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Offspring leveraging synergies with Pingers and Outlaw Kindred." + "secondary_color": "Black" }, { "theme": "Ogre Kindred", @@ -15524,85 +5083,28 @@ "Outlaw Kindred" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Kazuul, Tyrant of the Cliffs", - "Heartless Hidetsugu", - "Ruric Thar, the Unbowed", - "Obeka, Splitter of Seconds", - "Obeka, Brute Chronologist" - ], - "example_cards": [ - "Ogre Slumlord", - "Kazuul, Tyrant of the Cliffs", - "Treasonous Ogre", - "Heartless Hidetsugu", - "Ogre Battledriver", - "Hoarding Ogre", - "Rose Room Treasurer", - "Ruric Thar, the Unbowed" - ], - "synergy_commanders": [ - "Kardur, Doomscourge - Synergy (Demon Kindred)", - "Vilis, Broker of Blood - Synergy (Demon Kindred)", - "Westvale Abbey // Ormendahl, Profane Prince - Synergy (Demon Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Kiki-Jiki, Mirror Breaker - Synergy (Shaman Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ogre creatures into play with shared payoffs (e.g., Demon Kindred and Warrior Kindred)." + "secondary_color": "Black" }, { "theme": "Oil Counters", "synergies": [ - "Phyrexian Kindred", "Counters Matter", + "Proliferate", + "Phyrexian Kindred", "Artifacts Matter", - "Warrior Kindred", - "Wizard Kindred" + "Warrior Kindred" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Migloz, Maze Crusher", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)", - "Sheoldred, the Apocalypse - Synergy (Phyrexian Kindred)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Phyrexian Kindred)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "example_cards": [ - "Vat of Rebirth", - "Urabrask's Forge", - "Mindsplice Apparatus", - "Armored Scrapgorger", - "Mercurial Spelldancer", - "Norn's Wellspring", - "Archfiend of the Dross", - "Sawblade Scamp" - ], - "synergy_commanders": [ - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates oil counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Blue" }, { "theme": "Omen Counters", - "synergies": [], - "primary_color": "Blue", - "secondary_color": "White", - "example_cards": [ - "Foreboding Statue // Forsaken Thresher", - "Celestial Convergence", - "Soulcipher Board // Cipherbound Spirit" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates omen counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Blue", + "secondary_color": "White" }, { "theme": "Ooze Kindred", @@ -15614,35 +5116,7 @@ "Voltron" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Felix Five-Boots", - "The Mimeoplasm", - "Aeve, Progenitor Ooze", - "Vannifar, Evolved Enigma", - "Prime Speaker Vannifar" - ], - "example_cards": [ - "Acidic Slime", - "Scavenging Ooze", - "Necrotic Ooze", - "Green Slime", - "Felix Five-Boots", - "Uchuulon", - "Ochre Jelly", - "Slime Against Humanity" - ], - "synergy_commanders": [ - "Mondrak, Glory Dominus - Synergy (Clones)", - "Kiki-Jiki, Mirror Breaker - Synergy (Clones)", - "Sakashima of a Thousand Faces - Synergy (Clones)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ooze creatures into play with shared payoffs (e.g., Clones and +1/+1 Counters)." + "secondary_color": "Black" }, { "theme": "Open an Attraction", @@ -15654,44 +5128,12 @@ "Little Fellas" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Myra the Magnificent", - "The Most Dangerous Gamer", - "Spinnerette, Arachnobat", - "Dee Kay, Finder of the Lost", - "Monoxa, Midway Manager - Synergy (Employee Kindred)" - ], - "example_cards": [ - "\"Lifetime\" Pass Holder", - "Deadbeat Attendant", - "Discourtesy Clerk", - "Command Performance", - "Quick Fixer", - "Monitor Monitor", - "Myra the Magnificent", - "Soul Swindler" - ], - "synergy_commanders": [ - "Captain Rex Nebula - Synergy (Employee Kindred)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Open an Attraction leveraging synergies with Employee Kindred and Blink." + "secondary_color": "Blue" }, { "theme": "Orb Kindred", "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Phantasmal Sphere" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Orb creatures into play with shared payoffs." + "primary_color": "Blue" }, { "theme": "Orc Kindred", @@ -15703,85 +5145,24 @@ "Treasure" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Plargg and Nassari", - "Cadira, Caller of the Small", - "Saruman, the White Hand", - "Gothmog, Morgul Lieutenant", - "Zurgo Stormrender" - ], - "example_cards": [ - "Orcish Bowmasters", - "Wild-Magic Sorcerer", - "Port Razer", - "Plargg and Nassari", - "Merciless Executioner", - "Coercive Recruiter", - "White Plume Adventurer", - "Cadira, Caller of the Small" - ], - "synergy_commanders": [ - "Sauron, the Dark Lord - Synergy (Army Kindred)", - "Sauron, Lord of the Rings - Synergy (Amass)", - "Grishnákh, Brash Instigator - Synergy (Amass)", - "Ragavan, Nimble Pilferer - Synergy (Dash)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Orc creatures into play with shared payoffs (e.g., Army Kindred and Amass)." + "secondary_color": "Black" }, { "theme": "Ore Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Lore Counters", "Spore Counters", - "Read Ahead", - "Sagas Matter", - "Saproling Kindred" + "Read Ahead" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Vorinclex, Monstrous Raider", - "Lae'zel, Vlaakith's Champion", - "Danny Pink", - "Nils, Discipline Enforcer", - "Goldberry, River-Daughter" - ], - "example_cards": [ - "Urza's Saga", - "Doubling Season", - "Innkeeper's Talent", - "Vorinclex, Monstrous Raider", - "Binding the Old Gods", - "Lae'zel, Vlaakith's Champion", - "Brass's Tunnel-Grinder // Tecutlan, the Searing Rift", - "Urabrask // The Great Work" - ], - "synergy_commanders": [ - "Satsuki, the Living Lore - Synergy (Lore Counters)", - "Tom Bombadil - Synergy (Lore Counters)", - "Clive, Ifrit's Dominant // Ifrit, Warden of Inferno - Synergy (Lore Counters)", - "Thelon of Havenwood - Synergy (Spore Counters)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Accumulates ore counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "White" }, { "theme": "Orgg Kindred", "synergies": [], - "primary_color": "Red", - "example_cards": [ - "Soulgorger Orgg", - "Butcher Orgg", - "Trained Orgg", - "Orgg" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Orgg creatures into play with shared payoffs." + "primary_color": "Red" }, { "theme": "Otter Kindred", @@ -15793,33 +5174,7 @@ "Leave the Battlefield" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Kitsa, Otterball Elite", - "Bria, Riptide Rogue", - "Alania, Divergent Storm", - "Emry, Lurker of the Loch - Synergy (Wizard Kindred)", - "Talrand, Sky Summoner - Synergy (Wizard Kindred)" - ], - "example_cards": [ - "Valley Floodcaller", - "Coruscation Mage", - "Stormcatch Mentor", - "Kitsa, Otterball Elite", - "Ral, Crackling Wit", - "Bria, Riptide Rogue", - "Splash Portal", - "Lilypad Village" - ], - "synergy_commanders": [ - "Niv-Mizzet, Parun - Synergy (Wizard Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Otter creatures into play with shared payoffs (e.g., Wizard Kindred and Artifacts Matter)." + "secondary_color": "Red" }, { "theme": "Ouphe Kindred", @@ -15828,27 +5183,7 @@ "Little Fellas" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Stax)", - "Lotho, Corrupt Shirriff - Synergy (Stax)", - "Talrand, Sky Summoner - Synergy (Stax)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)" - ], - "example_cards": [ - "Collector Ouphe", - "Knickknack Ouphe", - "Kitchen Finks", - "Dusk Urchins", - "Spellwild Ouphe", - "Gilder Bairn", - "Glimmer Bairn", - "Troublemaker Ouphe" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ouphe creatures into play with shared payoffs (e.g., Stax and Little Fellas)." + "secondary_color": "Black" }, { "theme": "Outlast", @@ -15860,30 +5195,7 @@ "Human Kindred" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)" - ], - "example_cards": [ - "Abzan Falconer", - "Envoy of the Ancestors", - "Abzan Battle Priest", - "Tuskguard Captain", - "Ainok Bond-Kin", - "Longshot Squad", - "Arcus Acolyte", - "Mer-Ek Nightblade" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Outlast leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "Black" }, { "theme": "Outlaw Kindred", @@ -15895,31 +5207,7 @@ "Mercenary Kindred" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Lotho, Corrupt Shirriff", - "Captain Lannery Storm", - "Saryth, the Viper's Fang", - "Sakashima of a Thousand Faces" - ], - "example_cards": [ - "Zulaport Cutthroat", - "Pitiless Plunderer", - "Ragavan, Nimble Pilferer", - "Morbid Opportunist", - "Dauthi Voidwalker", - "Faerie Mastermind", - "Lotho, Corrupt Shirriff", - "Opposition Agent" - ], - "synergy_commanders": [ - "Honest Rutstein - Synergy (Warlock Kindred)", - "Breena, the Demagogue - Synergy (Warlock Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Outlaw creatures into play with shared payoffs (e.g., Warlock Kindred and Pirate Kindred)." + "secondary_color": "Blue" }, { "theme": "Overload", @@ -15931,30 +5219,7 @@ "Interaction" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Samut, Voice of Dissent - Synergy (Combat Tricks)", - "Naru Meha, Master Wizard - Synergy (Combat Tricks)", - "The Wandering Rescuer - Synergy (Combat Tricks)", - "Ulamog, the Infinite Gyre - Synergy (Removal)", - "Zacama, Primal Calamity - Synergy (Removal)" - ], - "example_cards": [ - "Cyclonic Rift", - "Vandalblast", - "Damn", - "Mizzix's Mastery", - "Winds of Abandon", - "Eldritch Immunity", - "Mizzium Mortars", - "Spectacular Showdown" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Overloads modal spells into one-sided board impacts or mass disruption swings. Synergies like Combat Tricks and Removal reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Ox Kindred", @@ -15966,43 +5231,12 @@ "Aggro" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Bonny Pall, Clearcutter", - "Bruse Tarl, Roving Rancher", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)", - "Mondrak, Glory Dominus - Synergy (Token Creation)", - "Lotho, Corrupt Shirriff - Synergy (Token Creation)" - ], - "example_cards": [ - "Animal Sanctuary", - "Restless Bivouac", - "Bonny Pall, Clearcutter", - "Bovine Intervention", - "Contraband Livestock", - "Transmogrifying Wand", - "Summon: Kujata", - "Dalkovan Packbeasts" - ], - "synergy_commanders": [ - "Adeline, Resplendent Cathar - Synergy (Tokens Matter)", - "Talrand, Sky Summoner - Synergy (Tokens Matter)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ox creatures into play with shared payoffs (e.g., Token Creation and Tokens Matter)." + "secondary_color": "Red" }, { "theme": "Oyster Kindred", "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Giant Oyster" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Oyster creatures into play with shared payoffs." + "primary_color": "Blue" }, { "theme": "Pack tactics", @@ -16011,46 +5245,13 @@ "Combat Matters" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Targ Nar, Demon-Fang Gnoll", - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Combat Matters)" - ], - "example_cards": [ - "Battle Cry Goblin", - "Minion of the Mighty", - "Werewolf Pack Leader", - "Targ Nar, Demon-Fang Gnoll", - "Hobgoblin Captain", - "Intrepid Outlander", - "Gnoll Hunter", - "Tiger-Tribe Hunter" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Pack tactics leveraging synergies with Aggro and Combat Matters." + "secondary_color": "Green" }, { "theme": "Pangolin Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Green", - "example_cards": [ - "Ridgescale Tusker", - "Oreplate Pangolin", - "Gloom Pangolin", - "Prowling Pangolin", - "Reckless Pangolin" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Pangolin creatures into play with shared payoffs." + "secondary_color": "Green" }, { "theme": "Paradox", @@ -16059,33 +5260,7 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "The Thirteenth Doctor", - "Iraxxa, Empress of Mars", - "Osgood, Operation Double", - "Graham O'Brien", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "example_cards": [ - "Flaming Tyrannosaurus", - "The Thirteenth Doctor", - "Iraxxa, Empress of Mars", - "Surge of Brilliance", - "Memory Worm", - "Impending Flux", - "Sisterhood of Karn", - "Osgood, Operation Double" - ], - "synergy_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Paradox leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "Blue" }, { "theme": "Parley", @@ -16096,112 +5271,31 @@ "Card Draw" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Selvala, Explorer Returned", - "Phabine, Boss's Confidant", - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)", - "Adeline, Resplendent Cathar - Synergy (Politics)" - ], - "example_cards": [ - "Selvala, Explorer Returned", - "Storm Fleet Negotiator", - "Phabine, Boss's Confidant", - "Cutthroat Negotiator", - "Innocuous Researcher", - "Rousing of Souls", - "Selvala's Charge", - "Selvala's Enforcer" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Draw Triggers)", - "Selvala, Heart of the Wilds - Synergy (Draw Triggers)", - "Niv-Mizzet, Parun - Synergy (Wheels)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Parley leveraging synergies with Politics and Draw Triggers." + "secondary_color": "Blue" }, { "theme": "Partner", "synergies": [ "Partner with", "Performer Kindred", - "Pirate Kindred", - "Artificer Kindred", - "Planeswalkers" + "Historics Matter", + "Legends Matter", + "Pirate Kindred" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Kodama of the East Tree", - "Sakashima of a Thousand Faces", - "Kediss, Emberclaw Familiar", - "Ardenn, Intrepid Archaeologist", - "Thrasios, Triton Hero" - ], - "example_cards": [ - "Kodama of the East Tree", - "Sakashima of a Thousand Faces", - "Kediss, Emberclaw Familiar", - "Ardenn, Intrepid Archaeologist", - "Thrasios, Triton Hero", - "Rograkh, Son of Rohgahh", - "Malcolm, Keen-Eyed Navigator", - "Prava of the Steel Legion" - ], - "synergy_commanders": [ - "Pippin, Warden of Isengard - Synergy (Partner with)", - "Merry, Warden of Isengard - Synergy (Partner with)", - "Pir, Imaginative Rascal - Synergy (Partner with)", - "Magar of the Magic Strings - Synergy (Performer Kindred)", - "Myra the Magnificent - Synergy (Performer Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Pirate Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Partner leveraging synergies with Partner with and Performer Kindred." + "secondary_color": "Black" }, { "theme": "Partner with", "synergies": [ "Partner", + "Historics Matter", + "Legends Matter", "Blink", - "Enter the Battlefield", - "Leave the Battlefield", - "Conditional Draw" + "Enter the Battlefield" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Pippin, Warden of Isengard", - "Merry, Warden of Isengard", - "Pir, Imaginative Rascal", - "Frodo, Adventurous Hobbit", - "Toothy, Imaginary Friend" - ], - "example_cards": [ - "Pippin, Warden of Isengard", - "Merry, Warden of Isengard", - "Pir, Imaginative Rascal", - "Frodo, Adventurous Hobbit", - "Toothy, Imaginary Friend", - "Brallin, Skyshark Rider", - "Sam, Loyal Attendant", - "Shabraz, the Skyshark" - ], - "synergy_commanders": [ - "Kodama of the East Tree - Synergy (Partner)", - "Sakashima of a Thousand Faces - Synergy (Partner)", - "Kediss, Emberclaw Familiar - Synergy (Partner)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Partner with leveraging synergies with Partner and Blink." + "secondary_color": "Red" }, { "theme": "Peasant Kindred", @@ -16213,32 +5307,7 @@ "Transform" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Rosie Cotton of South Lane", - "The Gaffer", - "Samwise Gamgee", - "Thrakkus the Butcher", - "Farmer Cotton" - ], - "example_cards": [ - "Rosie Cotton of South Lane", - "The Gaffer", - "Samwise Gamgee", - "Thrakkus the Butcher", - "Farmer Cotton", - "Experimental Confectioner", - "Old Rutstein", - "Tato Farmer" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Halfling Kindred)", - "Peregrin Took - Synergy (Halfling Kindred)", - "Syr Ginger, the Meal Ender - Synergy (Food)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Peasant creatures into play with shared payoffs (e.g., Halfling Kindred and Food Token)." + "secondary_color": "Green" }, { "theme": "Pegasus Kindred", @@ -16248,71 +5317,19 @@ "Toughness Matters" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Thurid, Mare of Destiny", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "example_cards": [ - "Archon of Sun's Grace", - "Starnheim Courser", - "Storm Herd", - "Vryn Wingmare", - "Boreas Charger", - "Pegasus Guardian // Rescue the Foal", - "Cavalry Pegasus", - "Thurid, Mare of Destiny" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Pegasus creatures into play with shared payoffs (e.g., Flying and Little Fellas)." + "secondary_color": "Black" }, { "theme": "Performer Kindred", "synergies": [ "Partner", + "Historics Matter", + "Legends Matter", "Blink", - "Enter the Battlefield", - "Leave the Battlefield", - "Human Kindred" + "Enter the Battlefield" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Magar of the Magic Strings", - "Myra the Magnificent", - "Spinnerette, Arachnobat", - "Mary Jane Watson", - "MJ, Rising Star" - ], - "example_cards": [ - "Dancer's Chakrams", - "Magar of the Magic Strings", - "Myra the Magnificent", - "Centaur of Attention", - "Spinnerette, Arachnobat", - "Atomwheel Acrobats", - "Chicken Troupe", - "Done for the Day" - ], - "synergy_commanders": [ - "Kodama of the East Tree - Synergy (Partner)", - "Sakashima of a Thousand Faces - Synergy (Partner)", - "Kediss, Emberclaw Familiar - Synergy (Partner)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Performer creatures into play with shared payoffs (e.g., Partner and Blink)." + "secondary_color": "Blue" }, { "theme": "Persist", @@ -16324,30 +5341,7 @@ "Enter the Battlefield" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Yawgmoth, Thran Physician - Synergy (-1/-1 Counters)", - "Vorinclex, Monstrous Raider - Synergy (-1/-1 Counters)", - "Lae'zel, Vlaakith's Champion - Synergy (-1/-1 Counters)", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Glen Elendra Archmage", - "Puppeteer Clique", - "Woodfall Primus", - "River Kelpie", - "Persistent Constrictor", - "Murderous Redcap", - "Putrid Goblin", - "Lesser Masticore" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Aristocrats)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Persist leveraging synergies with -1/-1 Counters and Sacrifice Matters." + "secondary_color": "Blue" }, { "theme": "Pest Kindred", @@ -16359,33 +5353,7 @@ "Tokens Matter" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Beledros Witherbloom", - "Valentin, Dean of the Vein // Lisette, Dean of the Root", - "Blex, Vexing Pest // Search for Blex", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Beledros Witherbloom", - "Sedgemoor Witch", - "Blight Mound", - "Signal Pest", - "Callous Bloodmage", - "Valentin, Dean of the Vein // Lisette, Dean of the Root", - "Blex, Vexing Pest // Search for Blex", - "Nuisance Engine" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Sacrifice Matters)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Aristocrats)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Aristocrats)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Pest creatures into play with shared payoffs (e.g., Sacrifice Matters and Aristocrats)." + "secondary_color": "Green" }, { "theme": "Phasing", @@ -16394,30 +5362,7 @@ "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Taniwha", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "example_cards": [ - "Taniwha", - "Teferi's Isle", - "Katabatic Winds", - "Shimmering Efreet", - "Ertai's Familiar", - "Merfolk Raiders", - "Teferi's Imp", - "Sandbar Crocodile" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Phasing leveraging synergies with Flying and Little Fellas." + "secondary_color": "Green" }, { "theme": "Phoenix Kindred", @@ -16428,33 +5373,7 @@ "Mill", "Blink" ], - "primary_color": "Red", - "example_commanders": [ - "Otharri, Suns' Glory", - "Joshua, Phoenix's Dominant // Phoenix, Warden of Fire", - "Syrix, Carrier of the Flame", - "Aurelia, the Warleader - Synergy (Haste)", - "Yahenni, Undying Partisan - Synergy (Haste)" - ], - "example_cards": [ - "Otharri, Suns' Glory", - "Aurora Phoenix", - "Phoenix Chick", - "Jaya's Phoenix", - "Joshua, Phoenix's Dominant // Phoenix, Warden of Fire", - "Detective's Phoenix", - "Flamewake Phoenix", - "Everquill Phoenix" - ], - "synergy_commanders": [ - "Kiki-Jiki, Mirror Breaker - Synergy (Haste)", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Rishkar, Peema Renegade - Synergy (Midrange)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Phoenix creatures into play with shared payoffs (e.g., Haste and Flying)." + "primary_color": "Red" }, { "theme": "Phyrexian Kindred", @@ -16466,31 +5385,7 @@ "Incubator Token" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Mondrak, Glory Dominus", - "Sheoldred, the Apocalypse", - "Elas il-Kor, Sadistic Pilgrim", - "Sheoldred, Whispering One", - "Elesh Norn, Grand Cenobite" - ], - "example_cards": [ - "Phyrexian Metamorph", - "Mondrak, Glory Dominus", - "Psychosis Crawler", - "Sheoldred, the Apocalypse", - "Massacre Wurm", - "Elas il-Kor, Sadistic Pilgrim", - "Cankerbloom", - "Sheoldred, Whispering One" - ], - "synergy_commanders": [ - "Bitterthorn, Nissa's Animus - Synergy (Germ Kindred)", - "Kaldra Compleat - Synergy (Living weapon)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Phyrexian creatures into play with shared payoffs (e.g., Germ Kindred and Carrier Kindred)." + "secondary_color": "Green" }, { "theme": "Pillowfort", @@ -16502,35 +5397,7 @@ "Pingers" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Baird, Steward of Argive", - "Teysa, Envoy of Ghosts", - "Sivitri, Dragon Master", - "Isperia, Supreme Judge", - "Thantis, the Warweaver" - ], - "example_cards": [ - "Propaganda", - "Ghostly Prison", - "Sphere of Safety", - "Windborn Muse", - "Inkshield", - "Promise of Loyalty", - "Silent Arbiter", - "Crawlspace" - ], - "synergy_commanders": [ - "Adeline, Resplendent Cathar - Synergy (Planeswalkers)", - "Yawgmoth, Thran Physician - Synergy (Planeswalkers)", - "Vorinclex, Monstrous Raider - Synergy (Planeswalkers)", - "Lae'zel, Vlaakith's Champion - Synergy (Super Friends)", - "Tekuthal, Inquiry Dominus - Synergy (Super Friends)", - "Lotho, Corrupt Shirriff - Synergy (Control)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Deploys deterrents and taxation effects to deflect aggression while assembling a protected win route. Synergies like Planeswalkers and Super Friends reinforce the plan." + "secondary_color": "Green" }, { "theme": "Pilot Kindred", @@ -16542,34 +5409,7 @@ "Token Creation" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Shorikai, Genesis Engine", - "Cid, Freeflier Pilot", - "Kotori, Pilot Prodigy", - "Tannuk, Memorial Ensign", - "Sazh Katzroy" - ], - "example_cards": [ - "Shorikai, Genesis Engine", - "Mech Hangar", - "Reckoner Bankbuster", - "Cid, Freeflier Pilot", - "Kotori, Pilot Prodigy", - "Elvish Mariner", - "Prodigy's Prototype", - "Defend the Rider" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Vehicles)", - "The Indomitable - Synergy (Vehicles)", - "The Gitrog, Ravenous Ride - Synergy (Mount Kindred)", - "Calamity, Galloping Inferno - Synergy (Mount Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Pilot creatures into play with shared payoffs (e.g., Vehicles and Mount Kindred)." + "secondary_color": "Red" }, { "theme": "Pingers", @@ -16581,32 +5421,7 @@ "Role token" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Syr Konrad, the Grim", - "Elas il-Kor, Sadistic Pilgrim", - "Niv-Mizzet, Parun", - "Ayara, First of Locthwain", - "Kardur, Doomscourge" - ], - "example_cards": [ - "Talisman of Dominance", - "City of Brass", - "Shivan Reef", - "Caves of Koilos", - "Talisman of Creativity", - "Battlefield Forge", - "Talisman of Indulgence", - "Yavimaya Coast" - ], - "synergy_commanders": [ - "Sorin of House Markov // Sorin, Ravenous Neonate - Synergy (Extort)", - "Mahadi, Emporium Master - Synergy (Devil Kindred)", - "Zurzoth, Chaos Rider - Synergy (Devil Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Pingers leveraging synergies with Extort and Devil Kindred." + "secondary_color": "Black" }, { "theme": "Pirate Kindred", @@ -16618,46 +5433,15 @@ "Explore" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Captain Lannery Storm", - "Malcolm, Alluring Scoundrel", - "Breeches, Eager Pillager", - "Malcolm, Keen-Eyed Navigator" - ], - "example_cards": [ - "Pitiless Plunderer", - "Ragavan, Nimble Pilferer", - "Siren Stormtamer", - "Captain Lannery Storm", - "Hostage Taker", - "Impulsive Pilferer", - "Malcolm, Alluring Scoundrel", - "Spectral Sailor" - ], - "synergy_commanders": [ - "Malcolm, the Eyes - Synergy (Siren Kindred)", - "Alesha, Who Laughs at Fate - Synergy (Raid)", - "Rose, Cutthroat Raider - Synergy (Raid)", - "Sliver Gravemother - Synergy (Encore)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Pirate creatures into play with shared payoffs (e.g., Siren Kindred and Raid)." + "secondary_color": "Red" }, { "theme": "Plague Counters", - "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Plague Boiler", - "Traveling Plague", - "Withering Hex" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates plague counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black" }, { "theme": "Plainscycling", @@ -16668,45 +5452,13 @@ "Ramp", "Discard Matters" ], - "primary_color": "White", - "example_commanders": [ - "Vorinclex // The Grand Evolution - Synergy (Land Types Matter)", - "Karametra, God of Harvests - Synergy (Land Types Matter)", - "Titania, Nature's Force - Synergy (Land Types Matter)", - "The Balrog of Moria - Synergy (Cycling)", - "Monstrosity of the Lake - Synergy (Cycling)" - ], - "example_cards": [ - "Angel of the Ruins", - "Eagles of the North", - "Timeless Dragon", - "Eternal Dragon", - "Soaring Sandwing", - "Alabaster Host Intercessor", - "Cloudbound Moogle", - "Shepherding Spirits" - ], - "synergy_commanders": [ - "Baral, Chief of Compliance - Synergy (Loot)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Plainscycling leveraging synergies with Land Types Matter and Cycling." + "primary_color": "White" }, { "theme": "Plainswalk", "synergies": [], "primary_color": "White", - "secondary_color": "Green", - "example_cards": [ - "Zodiac Rooster", - "Graceful Antelope", - "Boggart Arsonists", - "Righteous Avengers" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Plainswalk theme and its supporting synergies." + "secondary_color": "Green" }, { "theme": "Planeswalkers", @@ -16718,32 +5470,7 @@ "Loyalty Counters" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Adeline, Resplendent Cathar", - "Yawgmoth, Thran Physician", - "Vorinclex, Monstrous Raider", - "Lae'zel, Vlaakith's Champion", - "Tekuthal, Inquiry Dominus" - ], - "example_cards": [ - "Karn's Bastion", - "Doubling Season", - "Spark Double", - "Evolution Sage", - "Plaza of Heroes", - "Adeline, Resplendent Cathar", - "Minamo, School at Water's Edge", - "Cankerbloom" - ], - "synergy_commanders": [ - "Atraxa, Praetors' Voice - Synergy (Proliferate)", - "Daretti, Scrap Savant - Synergy (Superfriends)", - "Freyalise, Llanowar's Fury - Synergy (Superfriends)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Protects and reuses planeswalkers—amplifying loyalty via proliferate and recursion for inevitability. Synergies like Proliferate and Superfriends reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Plant Kindred", @@ -16755,35 +5482,7 @@ "Mana Dork" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Bristly Bill, Spine Sower", - "The Necrobloom", - "Phylath, World Sculptor", - "Yuma, Proud Protector", - "Grismold, the Dreadsower" - ], - "example_cards": [ - "Avenger of Zendikar", - "Topiary Stomper", - "Bristly Bill, Spine Sower", - "Insidious Roots", - "Cultivator Colossus", - "Ilysian Caryatid", - "Sylvan Caryatid", - "Dowsing Dagger // Lost Vale" - ], - "synergy_commanders": [ - "The Pride of Hull Clade - Synergy (Defender)", - "Sokrates, Athenian Teacher - Synergy (Defender)", - "Pramikon, Sky Rampart - Synergy (Defender)", - "Rammas Echor, Ancient Shield - Synergy (Wall Kindred)", - "Teyo, Geometric Tactician - Synergy (Wall Kindred)", - "Tatyova, Benthic Druid - Synergy (Landfall)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Plant creatures into play with shared payoffs (e.g., Defender and Wall Kindred)." + "secondary_color": "Black" }, { "theme": "Plot", @@ -16795,69 +5494,19 @@ "Card Draw" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Doc Aurlock, Grizzled Genius", - "Fblthp, Lost on the Range", - "Lilah, Undefeated Slickshot", - "Etali, Primal Storm - Synergy (Exile Matters)", - "Ragavan, Nimble Pilferer - Synergy (Exile Matters)" - ], - "example_cards": [ - "Aven Interrupter", - "Railway Brawler", - "Doc Aurlock, Grizzled Genius", - "Outcaster Trailblazer", - "Fblthp, Lost on the Range", - "Lock and Load", - "Highway Robbery", - "Pitiless Carnage" - ], - "synergy_commanders": [ - "Urza, Lord High Artificer - Synergy (Exile Matters)", - "Lotho, Corrupt Shirriff - Synergy (Rogue Kindred)", - "Sakashima of a Thousand Faces - Synergy (Rogue Kindred)", - "Captain Lannery Storm - Synergy (Outlaw Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Plot leveraging synergies with Exile Matters and Rogue Kindred." + "secondary_color": "Red" }, { "theme": "Poison Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Toxic", "Corrupted", - "Mite Kindred", - "Infect", - "Phyrexian Kindred" + "Mite Kindred" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Skrelv, Defector Mite", - "Skithiryx, the Blight Dragon", - "Fynn, the Fangbearer", - "Karumonix, the Rat King" - ], - "example_cards": [ - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Skrelv, Defector Mite", - "Triumph of the Hordes", - "Vraska, Betrayal's Sting", - "White Sun's Twilight", - "Skrelv's Hive", - "Plague Myr", - "Grafted Exoskeleton" - ], - "synergy_commanders": [ - "Ixhel, Scion of Atraxa - Synergy (Toxic)", - "Vishgraz, the Doomhive - Synergy (Mite Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Leverages Infect/Toxic pressure and proliferate to accelerate poison win thresholds. Synergies like Toxic and Corrupted reinforce the plan." + "secondary_color": "Green" }, { "theme": "Politics", @@ -16869,33 +5518,7 @@ "Monger Kindred" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Braids, Arisen Nightmare", - "Loran of the Third Path", - "Adeline, Resplendent Cathar", - "Selvala, Explorer Returned", - "Queen Marchesa" - ], - "example_cards": [ - "Braids, Arisen Nightmare", - "Geier Reach Sanitarium", - "Loran of the Third Path", - "Faerie Mastermind", - "Adeline, Resplendent Cathar", - "Tempt with Discovery", - "Blade of Selves", - "Grasp of Fate" - ], - "synergy_commanders": [ - "Sliver Gravemother - Synergy (Encore)", - "Adriana, Captain of the Guard - Synergy (Melee)", - "Wulfgar of Icewind Dale - Synergy (Melee)", - "Tivit, Seller of Secrets - Synergy (Council's dilemma)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Politics leveraging synergies with Encore and Melee." + "secondary_color": "White" }, { "theme": "Populate", @@ -16907,153 +5530,48 @@ "Enchantments Matter" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Trostani, Selesnya's Voice", - "Cayth, Famed Mechanist", - "Xavier Sal, Infested Captain", - "Ghired, Conclave Exile", - "Mondrak, Glory Dominus - Synergy (Clones)" - ], - "example_cards": [ - "Rootborn Defenses", - "Sundering Growth", - "Nesting Dovehawk", - "Trostani, Selesnya's Voice", - "Druid's Deliverance", - "Determined Iteration", - "Growing Ranks", - "Cayth, Famed Mechanist" - ], - "synergy_commanders": [ - "Kiki-Jiki, Mirror Breaker - Synergy (Clones)", - "Sakashima of a Thousand Faces - Synergy (Clones)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)", - "Talrand, Sky Summoner - Synergy (Creature Tokens)", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Populate leveraging synergies with Clones and Creature Tokens." + "secondary_color": "Green" }, { "theme": "Porcupine Kindred", "synergies": [], "primary_color": "Blue", - "secondary_color": "Red", - "example_cards": [ - "Quilled Charger", - "Treacherous Trapezist" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Porcupine creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Possum Kindred", "synergies": [], "primary_color": "Green", - "secondary_color": "White", - "example_cards": [ - "Tender Wildguide", - "Rambling Possum", - "Brightfield Glider" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Possum creatures into play with shared payoffs." + "secondary_color": "White" }, { "theme": "Powerstone Token", "synergies": [ + "Tokens Matter", "Artifact Tokens", "Artificer Kindred", "Mana Dork", - "Ramp", - "Token Creation" + "Ramp" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Ashnod, Flesh Mechanist", - "Urza, Powerstone Prodigy", - "Ragavan, Nimble Pilferer - Synergy (Artifact Tokens)", - "Lotho, Corrupt Shirriff - Synergy (Artifact Tokens)", - "Peregrin Took - Synergy (Artifact Tokens)" - ], - "example_cards": [ - "Cityscape Leveler", - "Karn, Living Legacy", - "Hall of Tagsin", - "Terisiare's Devastation", - "Visions of Phyrexia", - "Slagstone Refinery", - "Urza's Command", - "Thran Spider" - ], - "synergy_commanders": [ - "Loran of the Third Path - Synergy (Artificer Kindred)", - "Sai, Master Thopterist - Synergy (Artificer Kindred)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Mana Dork)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Artifact Tokens and Artificer Kindred reinforce the plan." + "secondary_color": "Red" }, { "theme": "Praetor Kindred", "synergies": [ "Phyrexian Kindred", "Transform", - "Big Mana", - "Blink", - "Enter the Battlefield" + "Historics Matter", + "Legends Matter", + "Big Mana" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Sheoldred, the Apocalypse", - "Sheoldred, Whispering One", - "Elesh Norn, Grand Cenobite", - "Elesh Norn, Mother of Machines", - "Vorinclex, Monstrous Raider" - ], - "example_cards": [ - "Sheoldred, the Apocalypse", - "Sheoldred, Whispering One", - "Elesh Norn, Grand Cenobite", - "Elesh Norn, Mother of Machines", - "Vorinclex, Monstrous Raider", - "Urabrask // The Great Work", - "Jin-Gitaxias, Progress Tyrant", - "Sheoldred // The True Scriptures" - ], - "synergy_commanders": [ - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Phyrexian Kindred)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Transform)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Praetor creatures into play with shared payoffs (e.g., Phyrexian Kindred and Transform)." + "secondary_color": "Blue" }, { "theme": "Primarch Kindred", "synergies": [], - "primary_color": "Black", - "example_commanders": [ - "Magnus the Red", - "Mortarion, Daemon Primarch" - ], - "example_cards": [ - "Magnus the Red", - "Mortarion, Daemon Primarch" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Primarch creatures into play with shared payoffs." + "primary_color": "Black" }, { "theme": "Processor Kindred", @@ -17063,65 +5581,19 @@ "Exile Matters" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Ulalek, Fused Atrocity - Synergy (Devoid)", - "Kozilek, Butcher of Truth - Synergy (Eldrazi Kindred)", - "Ulamog, the Infinite Gyre - Synergy (Eldrazi Kindred)", - "Etali, Primal Storm - Synergy (Exile Matters)" - ], - "example_cards": [ - "Ulamog's Nullifier", - "Blight Herder", - "Void Attendant", - "Ulamog's Despoiler", - "Ruin Processor", - "Wasteland Strangler", - "Ulamog's Reclaimer", - "Mind Raker" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Processor creatures into play with shared payoffs (e.g., Devoid and Eldrazi Kindred)." + "secondary_color": "Black" }, { "theme": "Proliferate", "synergies": [ + "Counters Matter", "+1/+1 Counters", "Planeswalkers", - "Counters Matter", "Infect", "-1/-1 Counters" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Yawgmoth, Thran Physician", - "Tekuthal, Inquiry Dominus", - "Atraxa, Praetors' Voice", - "Ezuri, Stalker of Spheres", - "Agent Frank Horrigan" - ], - "example_cards": [ - "Karn's Bastion", - "Evolution Sage", - "Cankerbloom", - "Yawgmoth, Thran Physician", - "Thrummingbird", - "Tezzeret's Gambit", - "Inexorable Tide", - "Flux Channeler" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Krenko, Tin Street Kingpin - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (+1/+1 Counters)", - "Adeline, Resplendent Cathar - Synergy (Planeswalkers)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Multiplies diverse counters (e.g., +1/+1, loyalty, poison) to escalate board state and inevitability. Synergies like Counters Matter and +1/+1 Counters reinforce the plan." + "secondary_color": "Green" }, { "theme": "Protection", @@ -17133,34 +5605,7 @@ "Divinity Counters" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Toski, Bearer of Secrets", - "Purphoros, God of the Forge", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Boromir, Warden of the Tower", - "Avacyn, Angel of Hope" - ], - "example_cards": [ - "Heroic Intervention", - "The One Ring", - "Teferi's Protection", - "Roaming Throne", - "Boros Charm", - "Flawless Maneuver", - "Akroma's Will", - "Mithril Coat" - ], - "synergy_commanders": [ - "Adrix and Nev, Twincasters - Synergy (Ward)", - "Miirym, Sentinel Wyrm - Synergy (Ward)", - "Ulamog, the Defiler - Synergy (Ward)", - "General Ferrous Rokiric - Synergy (Hexproof)", - "Silumgar, the Drifting Death - Synergy (Hexproof)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Protection leveraging synergies with Ward and Hexproof." + "secondary_color": "Green" }, { "theme": "Prototype", @@ -17172,30 +5617,7 @@ "Enter the Battlefield" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Urza, Lord High Artificer - Synergy (Construct Kindred)", - "Jan Jansen, Chaos Crafter - Synergy (Construct Kindred)", - "Urza, Chief Artificer - Synergy (Construct Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)" - ], - "example_cards": [ - "Steel Seraph", - "Skitterbeam Battalion", - "Hulking Metamorph", - "Cradle Clearcutter", - "Frogmyr Enforcer", - "Phyrexian Fleshgorger", - "Combat Thresher", - "Rootwire Amalgam" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Prototype leveraging synergies with Construct Kindred and Artifacts Matter." + "secondary_color": "Blue" }, { "theme": "Provoke", @@ -17205,30 +5627,7 @@ "Big Mana" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Combat Matters)", - "Sheoldred, the Apocalypse - Synergy (Combat Matters)" - ], - "example_cards": [ - "Goblin Grappler", - "Deftblade Elite", - "Krosan Vorine", - "Feral Throwback", - "Brontotherium", - "Crested Craghorn", - "Swooping Talon", - "Lowland Tracker" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Provoke leveraging synergies with Aggro and Combat Matters." + "secondary_color": "White" }, { "theme": "Prowess", @@ -17240,33 +5639,7 @@ "Artifacts Matter" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Kitsa, Otterball Elite", - "Bria, Riptide Rogue", - "Elsha of the Infinite", - "Eris, Roar of the Storm", - "Lyse Hext" - ], - "example_cards": [ - "Harmonic Prodigy", - "Pinnacle Monk // Mystic Peak", - "Stormcatch Mentor", - "Monastery Mentor", - "Kitsa, Otterball Elite", - "Bria, Riptide Rogue", - "Riptide Gearhulk", - "Elsha of the Infinite" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spellslinger)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spellslinger)", - "Talrand, Sky Summoner - Synergy (Spellslinger)", - "Azusa, Lost but Seeking - Synergy (Monk Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Chains cheap instants & sorceries for velocity—converting triggers into scalable damage or card advantage before a finisher. Synergies like Spellslinger and Noncreature Spells reinforce the plan." + "secondary_color": "Red" }, { "theme": "Prowl", @@ -17278,70 +5651,19 @@ "Spells Matter" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Rogue Kindred)", - "Sakashima of a Thousand Faces - Synergy (Rogue Kindred)", - "Rankle, Master of Pranks - Synergy (Rogue Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Captain Lannery Storm - Synergy (Outlaw Kindred)" - ], - "example_cards": [ - "Notorious Throng", - "Enigma Thief", - "Stinkdrinker Bandit", - "Knowledge Exploitation", - "Latchkey Faerie", - "Thieves' Fortune", - "Earwig Squad", - "Auntie's Snitch" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Enables Prowl cost reductions via tribe-based combat connections, accelerating tempo sequencing. Synergies like Rogue Kindred and Outlaw Kindred reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Quest Counters", "synergies": [ - "Landfall", "Counters Matter", + "Proliferate", + "Landfall", "Enchantments Matter", - "Lands Matter", - "Token Creation" + "Lands Matter" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Yes Man, Personal Securitron", - "Craig Boone, Novac Guard", - "ED-E, Lonesome Eyebot", - "Sierra, Nuka's Biggest Fan", - "Overseer of Vault 76" - ], - "example_cards": [ - "Beastmaster Ascension", - "Bloodchief Ascension", - "Khalni Heart Expedition", - "Luminarch Ascension", - "Quest for Renewal", - "Yes Man, Personal Securitron", - "Quest for the Goblin Lord", - "Craig Boone, Novac Guard" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Landfall)", - "Aesi, Tyrant of Gyre Strait - Synergy (Landfall)", - "Bristly Bill, Spine Sower - Synergy (Landfall)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates quest counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Black" }, { "theme": "Rabbit Kindred", @@ -17353,35 +5675,7 @@ "Tokens Matter" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Kwain, Itinerant Meddler", - "Baylen, the Haymaker", - "Cadira, Caller of the Small", - "Preston, the Vanisher", - "Ms. Bumbleflower" - ], - "example_cards": [ - "Claim Jumper", - "Kwain, Itinerant Meddler", - "Tempt with Bunnies", - "Jacked Rabbit", - "Baylen, the Haymaker", - "Cadira, Caller of the Small", - "Oakhollow Village", - "Preston, the Vanisher" - ], - "synergy_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Krenko, Mob Boss - Synergy (Warrior Kindred)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)", - "Talrand, Sky Summoner - Synergy (Creature Tokens)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Rabbit creatures into play with shared payoffs (e.g., Warrior Kindred and Creature Tokens)." + "secondary_color": "Green" }, { "theme": "Raccoon Kindred", @@ -17393,69 +5687,19 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Bello, Bard of the Brambles", - "Muerra, Trash Tactician", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Krenko, Mob Boss - Synergy (Warrior Kindred)" - ], - "example_cards": [ - "Bramble Familiar // Fetch Quest", - "Oakhollow Village", - "Trailtracker Scout", - "Bello, Bard of the Brambles", - "Wandertale Mentor", - "Prosperous Bandit", - "Valley Mightcaller", - "Rockface Village" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Raccoon creatures into play with shared payoffs (e.g., Warrior Kindred and Blink)." + "secondary_color": "Red" }, { "theme": "Rad Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Mutant Kindred", "Zombie Kindred", - "Mill", - "Counters Matter", - "+1/+1 Counters" + "Mill" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "The Wise Mothman", - "The Master, Transcendent", - "Strong, the Brutish Thespian", - "Harold and Bob, First Numens", - "Agent Frank Horrigan - Synergy (Mutant Kindred)" - ], - "example_cards": [ - "Struggle for Project Purity", - "Nuclear Fallout", - "Feral Ghoul", - "The Wise Mothman", - "Tato Farmer", - "Screeching Scorchbeast", - "Mirelurk Queen", - "Glowing One" - ], - "synergy_commanders": [ - "Neheb, the Eternal - Synergy (Zombie Kindred)", - "Mikaeus, the Unhallowed - Synergy (Zombie Kindred)", - "Syr Konrad, the Grim - Synergy (Mill)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates rad counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Green" }, { "theme": "Radiance", @@ -17464,27 +5708,7 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "example_cards": [ - "Bathe in Light", - "Brightflame", - "Rally the Righteous", - "Leave No Trace", - "Wojek Embermage", - "Surge of Zeal", - "Cleansing Beam", - "Incite Hysteria" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Radiance leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "White" }, { "theme": "Raid", @@ -17496,33 +5720,7 @@ "Warrior Kindred" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Alesha, Who Laughs at Fate", - "Rose, Cutthroat Raider", - "Lara Croft, Tomb Raider", - "Ragavan, Nimble Pilferer - Synergy (Pirate Kindred)", - "Captain Lannery Storm - Synergy (Pirate Kindred)" - ], - "example_cards": [ - "Alesha, Who Laughs at Fate", - "Bloodsoaked Champion", - "Rose, Cutthroat Raider", - "Raiders' Wake", - "Searslicer Goblin", - "Wingmate Roc", - "Perforating Artist", - "Brazen Cannonade" - ], - "synergy_commanders": [ - "Malcolm, Alluring Scoundrel - Synergy (Pirate Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)", - "Saryth, the Viper's Fang - Synergy (Outlaw Kindred)", - "Braids, Arisen Nightmare - Synergy (Draw Triggers)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Raid leveraging synergies with Pirate Kindred and Outlaw Kindred." + "secondary_color": "Black" }, { "theme": "Rally", @@ -17531,30 +5729,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Munda, Ambush Leader", - "Drana, Liberator of Malakir - Synergy (Ally Kindred)", - "Mina and Denn, Wildborn - Synergy (Ally Kindred)", - "Zada, Hedron Grinder - Synergy (Ally Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "example_cards": [ - "Hero of Goma Fada", - "Kalastria Healer", - "Lantern Scout", - "Resolute Blademaster", - "Chasm Guide", - "Firemantle Mage", - "Ondu Champion", - "Kor Bladewhirl" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Rally leveraging synergies with Ally Kindred and Little Fellas." + "secondary_color": "Red" }, { "theme": "Ramp", @@ -17566,32 +5741,7 @@ "Landcycling" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Azusa, Lost but Seeking", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Selvala, Heart of the Wilds", - "Six", - "Rishkar, Peema Renegade" - ], - "example_cards": [ - "Sol Ring", - "Arcane Signet", - "Evolving Wilds", - "Fellwar Stone", - "Cultivate", - "Thought Vessel", - "Myriad Landscape", - "Farseek" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Treasure Token)", - "Lotho, Corrupt Shirriff - Synergy (Treasure Token)", - "Old Gnawbone - Synergy (Treasure Token)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Accelerates mana ahead of curve, then converts surplus into oversized threats or multi-spell bursts. Synergies like Treasure Token and Land Tutors reinforce the plan." + "secondary_color": "Red" }, { "theme": "Rampage", @@ -17599,30 +5749,7 @@ "Big Mana" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Chromium", - "Marhault Elsdragon", - "Hunding Gjornersen", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)" - ], - "example_cards": [ - "Varchild's War-Riders", - "Gorilla Berserkers", - "Teeka's Dragon", - "Chromium", - "Craw Giant", - "Wolverine Pack", - "Marhault Elsdragon", - "Aerathi Berserker" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accelerates mana ahead of curve, then converts surplus into oversized threats or multi-spell bursts. Synergies like Big Mana reinforce the plan." + "secondary_color": "Green" }, { "theme": "Ranger Kindred", @@ -17634,35 +5761,7 @@ "Lands Matter" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Halana and Alena, Partners", - "Cadira, Caller of the Small", - "Erinis, Gloom Stalker", - "Yuma, Proud Protector", - "Wylie Duke, Atiin Hero" - ], - "example_cards": [ - "Ranger-Captain of Eos", - "Halana and Alena, Partners", - "Quirion Ranger", - "Cadira, Caller of the Small", - "Thornvault Forager", - "Temur Battlecrier", - "Verge Rangers", - "Scryb Ranger" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Elf Kindred)", - "Rishkar, Peema Renegade - Synergy (Elf Kindred)", - "Jaheira, Friend of the Forest - Synergy (Elf Kindred)", - "Delney, Streetwise Lookout - Synergy (Scout Kindred)", - "Gwenna, Eyes of Gaea - Synergy (Scout Kindred)", - "Six - Synergy (Reach)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Ranger creatures into play with shared payoffs (e.g., Elf Kindred and Scout Kindred)." + "secondary_color": "White" }, { "theme": "Rat Kindred", @@ -17674,33 +5773,7 @@ "Poison Counters" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Nashi, Moon Sage's Scion", - "Lord Skitter, Sewer King", - "Ink-Eyes, Servant of Oni", - "Marrow-Gnawer", - "Karumonix, the Rat King" - ], - "example_cards": [ - "Swarmyard", - "Ogre Slumlord", - "Song of Totentanz", - "Nashi, Moon Sage's Scion", - "Lord Skitter, Sewer King", - "Blightbelly Rat", - "Burglar Rat", - "Silver-Fur Master" - ], - "synergy_commanders": [ - "Higure, the Still Wind - Synergy (Ninjutsu)", - "Yuriko, the Tiger's Shadow - Synergy (Ninja Kindred)", - "Satoru, the Infiltrator - Synergy (Ninja Kindred)", - "Kiora, the Rising Tide - Synergy (Threshold)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Rat creatures into play with shared payoffs (e.g., Ninjutsu and Ninja Kindred)." + "secondary_color": "Blue" }, { "theme": "Ravenous", @@ -17712,30 +5785,7 @@ "Voltron" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Ghyrson Starn, Kelermorph - Synergy (Tyranid Kindred)", - "Old One Eye - Synergy (Tyranid Kindred)", - "Magus Lucea Kane - Synergy (Tyranid Kindred)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (X Spells)", - "Goreclaw, Terror of Qal Sisma - Synergy (X Spells)" - ], - "example_cards": [ - "Jacked Rabbit", - "Sporocyst", - "Tyrant Guard", - "Tervigon", - "Aberrant", - "Termagant Swarm", - "Exocrine", - "Zoanthrope" - ], - "synergy_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Ravenous leveraging synergies with Tyranid Kindred and X Spells." + "secondary_color": "Red" }, { "theme": "Reach", @@ -17747,35 +5797,7 @@ "Frog Kindred" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Six", - "Kodama of the West Tree", - "Kodama of the East Tree", - "Zopandrel, Hunger Dominus", - "Invasion of Ikoria // Zilortha, Apex of Ikoria" - ], - "example_cards": [ - "Ancient Greenwarden", - "Six", - "Kodama of the West Tree", - "Kodama of the East Tree", - "Zopandrel, Hunger Dominus", - "Invasion of Ikoria // Zilortha, Apex of Ikoria", - "Arasta of the Endless Web", - "Zacama, Primal Calamity" - ], - "synergy_commanders": [ - "Arasta of the Endless Web - Synergy (Spider Kindred)", - "Shelob, Dread Weaver - Synergy (Spider Kindred)", - "Shelob, Child of Ungoliant - Synergy (Spider Kindred)", - "Legolas Greenleaf - Synergy (Archer Kindred)", - "Finneas, Ace Archer - Synergy (Archer Kindred)", - "Bristly Bill, Spine Sower - Synergy (Plant Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Reach leveraging synergies with Spider Kindred and Archer Kindred." + "secondary_color": "Red" }, { "theme": "Read Ahead", @@ -17787,68 +5809,19 @@ "Creature Tokens" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Satsuki, the Living Lore - Synergy (Lore Counters)", - "Tom Bombadil - Synergy (Lore Counters)", - "Clive, Ifrit's Dominant // Ifrit, Warden of Inferno - Synergy (Lore Counters)", - "Jhoira, Weatherlight Captain - Synergy (Sagas Matter)", - "Teshar, Ancestor's Apostle - Synergy (Sagas Matter)" - ], - "example_cards": [ - "The Cruelty of Gix", - "The Weatherseed Treaty", - "Love Song of Night and Day", - "The Elder Dragon War", - "The Phasing of Zhalfir", - "The World Spell", - "Braids's Frightful Return", - "Urza Assembles the Titans" - ], - "synergy_commanders": [ - "Vorinclex, Monstrous Raider - Synergy (Ore Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Read Ahead leveraging synergies with Lore Counters and Sagas Matter." + "secondary_color": "Blue" }, { "theme": "Reanimate", "synergies": [ "Mill", - "Enter the Battlefield", "Graveyard Matters", + "Enter the Battlefield", "Zombie Kindred", "Flashback" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim", - "Emry, Lurker of the Loch", - "Six", - "Kozilek, Butcher of Truth", - "The Gitrog Monster" - ], - "example_cards": [ - "Reanimate", - "Faithless Looting", - "Victimize", - "Takenuma, Abandoned Mire", - "Animate Dead", - "Syr Konrad, the Grim", - "Gray Merchant of Asphodel", - "Guardian Project" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Mill)", - "Octavia, Living Thesis - Synergy (Graveyard Matters)", - "Extus, Oriq Overlord // Awaken the Blood Avatar - Synergy (Graveyard Matters)", - "Selvala, Heart of the Wilds - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Loads high-impact cards into the graveyard early and reanimates them for explosive tempo or combo loops. Synergies like Mill and Graveyard Matters reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Rebel Kindred", @@ -17860,32 +5833,7 @@ "Equipment Matters" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Neyali, Suns' Vanguard", - "Otharri, Suns' Glory", - "Lyse Hext", - "Firion, Wild Rose Warrior", - "Jor Kadeen, First Goldwarden" - ], - "example_cards": [ - "Flesh Duplicate", - "Neyali, Suns' Vanguard", - "Hexplate Wallbreaker", - "Otharri, Suns' Glory", - "Big Game Hunter", - "Glimmer Lens", - "Bladehold War-Whip", - "Children of Korlis" - ], - "synergy_commanders": [ - "Halvar, God of Battle // Sword of the Realms - Synergy (Equip)", - "Mithril Coat - Synergy (Equip)", - "The Reality Chip - Synergy (Equipment)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Rebel creatures into play with shared payoffs (e.g., For Mirrodin! and Equip)." + "secondary_color": "Red" }, { "theme": "Rebound", @@ -17897,30 +5845,7 @@ "Big Mana" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Etali, Primal Storm - Synergy (Exile Matters)", - "Ragavan, Nimble Pilferer - Synergy (Exile Matters)", - "Urza, Lord High Artificer - Synergy (Exile Matters)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Ephemerate", - "Quantum Misalignment", - "World at War", - "Fevered Suspicion", - "Transpose", - "Into the Time Vortex", - "Distortion Strike", - "Terramorph" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Uses Rebound to double-cast value spells, banking a delayed second resolution. Synergies like Exile Matters and Spells Matter reinforce the plan." + "secondary_color": "White" }, { "theme": "Reconfigure", @@ -17932,30 +5857,7 @@ "Aggro" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "The Reality Chip", - "Mithril Coat - Synergy (Equipment)", - "Sword of the Animist - Synergy (Equipment)", - "Sram, Senior Edificer - Synergy (Equipment Matters)", - "Kodama of the West Tree - Synergy (Equipment Matters)" - ], - "example_cards": [ - "The Reality Chip", - "Lizard Blades", - "Lion Sash", - "Komainu Battle Armor", - "Rabbit Battery", - "Cloudsteel Kirin", - "Tanuki Transplanter", - "Razorfield Ripper" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Reconfigure leveraging synergies with Equipment and Equipment Matters." + "secondary_color": "Black" }, { "theme": "Recover", @@ -17967,48 +5869,13 @@ "Spellslinger" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Six - Synergy (Reanimate)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Kozilek, Butcher of Truth - Synergy (Mill)" - ], - "example_cards": [ - "Garza's Assassin", - "Grim Harvest", - "Icefall", - "Controvert", - "Resize", - "Sun's Bounty", - "Krovikan Rot" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Interaction)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Recover leveraging synergies with Reanimate and Mill." + "secondary_color": "Blue" }, { "theme": "Reflection Kindred", "synergies": [], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Alirios, Enraptured" - ], - "example_cards": [ - "Mirror Room // Fractured Realm", - "Cryptolith Fragment // Aurora of Emrakul", - "The Apprentice's Folly", - "Alirios, Enraptured", - "Spirit Mirror" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Reflection creatures into play with shared payoffs." + "secondary_color": "White" }, { "theme": "Reinforce", @@ -18020,30 +5887,7 @@ "Combat Matters" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)" - ], - "example_cards": [ - "Wren's Run Hydra", - "Brighthearth Banneret", - "Break Ties", - "Hunting Triad", - "Fowl Strike", - "Bannerhide Krushok", - "Rustic Clachan", - "Mosquito Guard" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Reinforce leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "White" }, { "theme": "Removal", @@ -18055,33 +5899,7 @@ "Replicate" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Ulamog, the Infinite Gyre", - "Zacama, Primal Calamity", - "The Scarab God", - "Glissa Sunslayer", - "Honest Rutstein" - ], - "example_cards": [ - "Swords to Plowshares", - "Path to Exile", - "Beast Within", - "Bojuka Bog", - "Cyclonic Rift", - "Generous Gift", - "Feed the Swarm", - "Eternal Witness" - ], - "synergy_commanders": [ - "He Who Hungers - Synergy (Soulshift)", - "Syr Konrad, the Grim - Synergy (Interaction)", - "Toski, Bearer of Secrets - Synergy (Interaction)", - "Lotho, Corrupt Shirriff - Synergy (Control)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Removal leveraging synergies with Soulshift and Interaction." + "secondary_color": "White" }, { "theme": "Renew", @@ -18093,30 +5911,7 @@ "Aggro" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Emry, Lurker of the Loch - Synergy (Mill)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Qarsi Revenant", - "Kheru Goldkeeper", - "Naga Fleshcrafter", - "Rot-Curse Rakshasa", - "Lasyd Prowler", - "Sage of the Fang", - "Champion of Dusan", - "Alchemist's Assistant" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Renew leveraging synergies with Mill and +1/+1 Counters." + "secondary_color": "Green" }, { "theme": "Renown", @@ -18128,30 +5923,7 @@ "Human Kindred" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)", - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)" - ], - "example_cards": [ - "Relic Seeker", - "Constable of the Realm", - "Scab-Clan Berserker", - "Honored Hierarch", - "Outland Colossus", - "Goblin Glory Chaser", - "Consul's Lieutenant", - "Valeron Wardens" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Renown leveraging synergies with +1/+1 Counters and Soldier Kindred." + "secondary_color": "Green" }, { "theme": "Replacement Draw", @@ -18159,27 +5931,7 @@ "Card Draw" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Asmodeus the Archfiend", - "Ormos, Archive Keeper", - "Braids, Arisen Nightmare - Synergy (Card Draw)", - "Toski, Bearer of Secrets - Synergy (Card Draw)", - "Loran of the Third Path - Synergy (Card Draw)" - ], - "example_cards": [ - "Sylvan Library", - "Alhammarret's Archive", - "Jace, Wielder of Mysteries", - "Notion Thief", - "Alms Collector", - "Izzet Generatorium", - "Asmodeus the Archfiend", - "Island Sanctuary" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Replacement Draw leveraging synergies with Card Draw." + "secondary_color": "Blue" }, { "theme": "Replicate", @@ -18191,30 +5943,7 @@ "Spells Matter" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Jin-Gitaxias, Progress Tyrant - Synergy (Spell Copy)", - "Kitsa, Otterball Elite - Synergy (Spell Copy)", - "Krark, the Thumbless - Synergy (Spell Copy)", - "Lotho, Corrupt Shirriff - Synergy (Control)", - "Sheoldred, Whispering One - Synergy (Control)" - ], - "example_cards": [ - "Hatchery Sliver", - "Mists of Lórien", - "Shattering Spree", - "Exterminate!", - "Consign to Memory", - "Psionic Ritual", - "Lose Focus", - "Gigadrowse" - ], - "synergy_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Stax)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Replicate leveraging synergies with Spell Copy and Control." + "secondary_color": "Red" }, { "theme": "Resource Engine", @@ -18226,30 +5955,7 @@ "Robot Kindred" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Dr. Madison Li", - "Satya, Aetherflux Genius", - "Liberty Prime, Recharged", - "The Motherlode, Excavator", - "Rex, Cyber-Hound" - ], - "example_cards": [ - "Guide of Souls", - "Volatile Stormdrake", - "Chthonian Nightmare", - "Aether Hub", - "Aetherworks Marvel", - "Gonti's Aether Heart", - "Solar Transformer", - "Decoction Module" - ], - "synergy_commanders": [ - "Cayth, Famed Mechanist - Synergy (Servo Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Resource Engine leveraging synergies with Energy and Energy Counters." + "secondary_color": "Blue" }, { "theme": "Retrace", @@ -18259,30 +5965,7 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Emry, Lurker of the Loch - Synergy (Mill)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Throes of Chaos", - "Formless Genesis", - "Embrace the Unknown", - "Decaying Time Loop", - "Reality Scramble", - "Spitting Image", - "Waves of Aggression", - "Worm Harvest" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Turns dead land draws into fuel by recasting Retrace spells for attrition resilience. Synergies like Mill and Spells Matter reinforce the plan." + "secondary_color": "Green" }, { "theme": "Revolt", @@ -18294,30 +5977,7 @@ "Leave the Battlefield" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)", - "Chatterfang, Squirrel General - Synergy (Warrior Kindred)", - "Krenko, Mob Boss - Synergy (Warrior Kindred)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Fatal Push", - "Hidden Stockpile", - "Call for Unity", - "Aether Revolt", - "Narnam Renegade", - "Aid from the Cowl", - "Solemn Recruit", - "Renegade Rallier" - ], - "synergy_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Revolt leveraging synergies with Warrior Kindred and +1/+1 Counters." + "secondary_color": "White" }, { "theme": "Rhino Kindred", @@ -18329,45 +5989,12 @@ "Big Mana" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Mr. Orfeo, the Boulder", - "Ghired, Conclave Exile", - "Roon of the Hidden Realm", - "Perrie, the Pulverizer", - "Ghalta, Primal Hunger - Synergy (Trample)" - ], - "example_cards": [ - "Rhox Faithmender", - "Loyal Guardian", - "Railway Brawler", - "Master of Ceremonies", - "Titan of Industry", - "Killer Service", - "Vivien on the Hunt", - "Mr. Orfeo, the Boulder" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Ghalta, Stampede Tyrant - Synergy (Trample)", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)", - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Rhino creatures into play with shared payoffs (e.g., Trample and Soldier Kindred)." + "secondary_color": "White" }, { "theme": "Rigger Kindred", "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Moriok Rigger" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Rigger creatures into play with shared payoffs." + "primary_color": "Black" }, { "theme": "Riot", @@ -18379,30 +6006,7 @@ "Combat Matters" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)" - ], - "example_cards": [ - "Skarrgan Hellkite", - "Arcbound Slasher", - "Ravager Wurm", - "Gruul Spellbreaker", - "Clamor Shaman", - "Burning-Tree Vandal", - "Wrecking Beast", - "Frenzied Arynx" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Riot leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "Green" }, { "theme": "Ripple", @@ -18410,22 +6014,7 @@ "Topdeck" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "The Reality Chip - Synergy (Topdeck)", - "Loot, Exuberant Explorer - Synergy (Topdeck)", - "Kinnan, Bonder Prodigy - Synergy (Topdeck)" - ], - "example_cards": [ - "Surging Dementia", - "Surging Flame", - "Surging Might", - "Surging Sentinels", - "Surging Aether" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Ripple leveraging synergies with Topdeck." + "secondary_color": "Blue" }, { "theme": "Robot Kindred", @@ -18437,34 +6026,7 @@ "Warp" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Codsworth, Handy Helper", - "K-9, Mark I", - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Yes Man, Personal Securitron", - "Rose, Cutthroat Raider" - ], - "example_cards": [ - "Codsworth, Handy Helper", - "K-9, Mark I", - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist", - "Clown Car", - "Securitron Squadron", - "Voyager Quickwelder", - "Yes Man, Personal Securitron", - "Rose, Cutthroat Raider" - ], - "synergy_commanders": [ - "Starscream, Power Hungry // Starscream, Seeker Leader - Synergy (More Than Meets the Eye)", - "Ratchet, Field Medic // Ratchet, Rescue Racer - Synergy (More Than Meets the Eye)", - "The Jolly Balloon Man - Synergy (Clown Kindred)", - "Pietra, Crafter of Clowns - Synergy (Clown Kindred)", - "Blitzwing, Cruel Tormentor // Blitzwing, Adaptive Assailant - Synergy (Convert)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Robot creatures into play with shared payoffs (e.g., More Than Meets the Eye and Clown Kindred)." + "secondary_color": "Red" }, { "theme": "Rogue Kindred", @@ -18476,82 +6038,25 @@ "Tiefling Kindred" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Lotho, Corrupt Shirriff", - "Sakashima of a Thousand Faces", - "Rankle, Master of Pranks", - "Tetsuko Umezawa, Fugitive", - "Gonti, Lord of Luxury" - ], - "example_cards": [ - "Zulaport Cutthroat", - "Morbid Opportunist", - "Dauthi Voidwalker", - "Faerie Mastermind", - "Lotho, Corrupt Shirriff", - "Opposition Agent", - "Bitterblossom", - "Grim Hireling" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Raffine, Scheming Seer - Synergy (Connive)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Rogue creatures into play with shared payoffs (e.g., Prowl and Outlaw Kindred)." + "secondary_color": "Blue" }, { "theme": "Role token", "synergies": [ + "Tokens Matter", "Enchantment Tokens", "Hero Kindred", "Equipment Matters", - "Auras", - "Scry" + "Auras" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Ellivere of the Wild Court", - "Gylwain, Casting Director", - "Syr Armont, the Redeemer", - "Heliod, God of the Sun - Synergy (Enchantment Tokens)", - "Go-Shintai of Life's Origin - Synergy (Enchantment Tokens)" - ], - "example_cards": [ - "Not Dead After All", - "Royal Treatment", - "Witch's Mark", - "Charming Scoundrel", - "Monstrous Rage", - "Ellivere of the Wild Court", - "Lord Skitter's Blessing", - "Asinine Antics" - ], - "synergy_commanders": [ - "G'raha Tia, Scion Reborn - Synergy (Hero Kindred)", - "Tellah, Great Sage - Synergy (Hero Kindred)", - "Sram, Senior Edificer - Synergy (Equipment Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Enchantment Tokens and Hero Kindred reinforce the plan." + "secondary_color": "Red" }, { "theme": "Roll to Visit Your Attractions", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "\"Lifetime\" Pass Holder", - "Command Performance", - "Line Cutter" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Roll to Visit Your Attractions theme and its supporting synergies." + "secondary_color": "Blue" }, { "theme": "Rooms Matter", @@ -18563,27 +6068,7 @@ "Spirit Kindred" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Victor, Valgavoth's Seneschal", - "Marina Vendrell", - "Sram, Senior Edificer - Synergy (Enchantments Matter)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "example_cards": [ - "Dazzling Theater // Prop Room", - "Walk-In Closet // Forgotten Cellar", - "Funeral Room // Awakening Hall", - "Entity Tracker", - "Dollmaker's Shop // Porcelain Gallery", - "Mirror Room // Fractured Realm", - "Unholy Annex // Ritual Chamber", - "Charred Foyer // Warped Space" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Rooms Matter leveraging synergies with Eerie and Enchantments Matter." + "secondary_color": "Black" }, { "theme": "Sacrifice Matters", @@ -18595,31 +6080,7 @@ "Blitz" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Syr Konrad, the Grim", - "Braids, Arisen Nightmare", - "Sheoldred, the Apocalypse", - "Elas il-Kor, Sadistic Pilgrim", - "Ojer Taq, Deepest Foundation // Temple of Civilization" - ], - "example_cards": [ - "Solemn Simulacrum", - "Skullclamp", - "Ashnod's Altar", - "Victimize", - "Blood Artist", - "Village Rites", - "Zulaport Cutthroat", - "Syr Konrad, the Grim" - ], - "synergy_commanders": [ - "Zabaz, the Glimmerwasp - Synergy (Modular)", - "Blaster, Combat DJ // Blaster, Morale Booster - Synergy (Modular)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Leverages sacrifice outlets and death triggers to grind incremental value and drain opponents. Synergies like Persist and Modular reinforce the plan." + "secondary_color": "Red" }, { "theme": "Sacrifice to Draw", @@ -18631,35 +6092,7 @@ "Artifact Tokens" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Braids, Arisen Nightmare", - "Peregrin Took", - "Ayara, First of Locthwain", - "Sai, Master Thopterist", - "Toxrill, the Corrosive" - ], - "example_cards": [ - "Mind Stone", - "Commander's Sphere", - "Deadly Dispute", - "Village Rites", - "Braids, Arisen Nightmare", - "Hedron Archive", - "Demand Answers", - "Tireless Tracker" - ], - "synergy_commanders": [ - "Lonis, Cryptozoologist - Synergy (Clue Token)", - "Astrid Peth - Synergy (Clue Token)", - "Piper Wright, Publick Reporter - Synergy (Clue Token)", - "Tivit, Seller of Secrets - Synergy (Investigate)", - "Teysa, Opulent Oligarch - Synergy (Investigate)", - "Old Rutstein - Synergy (Blood Token)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Leverages sacrifice outlets and death triggers to grind incremental value and drain opponents. Synergies like Clue Token and Investigate reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Saddle", @@ -18671,31 +6104,7 @@ "+1/+1 Counters" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "The Gitrog, Ravenous Ride", - "Calamity, Galloping Inferno", - "Fortune, Loyal Steed", - "Lagorin, Soul of Alacria", - "Keleth, Sunmane Familiar - Synergy (Horse Kindred)" - ], - "example_cards": [ - "The Gitrog, Ravenous Ride", - "Ornery Tumblewagg", - "Calamity, Galloping Inferno", - "Caustic Bronco", - "Fortune, Loyal Steed", - "Bulwark Ox", - "District Mascot", - "Guardian Sunmare" - ], - "synergy_commanders": [ - "Bill the Pony - Synergy (Horse Kindred)", - "Etali, Primal Storm - Synergy (Aggro)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Saddle leveraging synergies with Mount Kindred and Horse Kindred." + "secondary_color": "Green" }, { "theme": "Sagas Matter", @@ -18707,33 +6116,7 @@ "Doctor's companion" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Jhoira, Weatherlight Captain", - "Teshar, Ancestor's Apostle", - "Samwise Gamgee", - "Weatherlight", - "Glóin, Dwarf Emissary" - ], - "example_cards": [ - "Urza's Saga", - "Jhoira's Familiar", - "Jhoira, Weatherlight Captain", - "Excalibur, Sword of Eden", - "Binding the Old Gods", - "Urabrask // The Great Work", - "Sheoldred // The True Scriptures", - "Fable of the Mirror-Breaker // Reflection of Kiki-Jiki" - ], - "synergy_commanders": [ - "Satsuki, the Living Lore - Synergy (Lore Counters)", - "Tom Bombadil - Synergy (Lore Counters)", - "Clive, Ifrit's Dominant // Ifrit, Warden of Inferno - Synergy (Lore Counters)", - "Vorinclex, Monstrous Raider - Synergy (Ore Counters)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Loops and resets Sagas to repeatedly harvest chapter-based value sequences. Synergies like Lore Counters and Read Ahead reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Salamander Kindred", @@ -18745,32 +6128,7 @@ "Combat Matters" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Xolatoyac, the Smiling Flood", - "Gor Muldrak, Amphinologist", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Amphin Mutineer", - "Xolatoyac, the Smiling Flood", - "Gudul Lurker", - "Sojourner's Companion", - "Gor Muldrak, Amphinologist", - "Archmage's Newt", - "Pteramander", - "The Sea Devils" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Salamander creatures into play with shared payoffs (e.g., Little Fellas and Mill)." + "secondary_color": "Red" }, { "theme": "Samurai Kindred", @@ -18778,57 +6136,16 @@ "Bushido", "Fox Kindred", "Equipment Matters", - "Human Kindred", - "Vigilance" + "Historics Matter", + "Legends Matter" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Isshin, Two Heavens as One", - "Goro-Goro, Disciple of Ryusei", - "Godo, Bandit Warlord", - "Chishiro, the Shattered Blade", - "Raiyuu, Storm's Edge" - ], - "example_cards": [ - "The Eternal Wanderer", - "Isshin, Two Heavens as One", - "Goro-Goro, Disciple of Ryusei", - "Godo, Bandit Warlord", - "Akki Battle Squad", - "Summon: Yojimbo", - "Chishiro, the Shattered Blade", - "The Wandering Emperor" - ], - "synergy_commanders": [ - "Toshiro Umezawa - Synergy (Bushido)", - "Konda, Lord of Eiganjo - Synergy (Bushido)", - "Sensei Golden-Tail - Synergy (Bushido)", - "Light-Paws, Emperor's Voice - Synergy (Fox Kindred)", - "Pearl-Ear, Imperial Advisor - Synergy (Fox Kindred)", - "Sram, Senior Edificer - Synergy (Equipment Matters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Samurai creatures into play with shared payoffs (e.g., Bushido and Fox Kindred)." + "secondary_color": "Red" }, { "theme": "Sand Kindred", "synergies": [], - "primary_color": "Green", - "example_commanders": [ - "Hazezon Tamar", - "Sandman, Shifting Scoundrel" - ], - "example_cards": [ - "Desert Warfare", - "Dune-Brood Nephilim", - "Hazezon Tamar", - "Sandman, Shifting Scoundrel" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Sand creatures into play with shared payoffs." + "primary_color": "Green" }, { "theme": "Saproling Kindred", @@ -18840,32 +6157,7 @@ "Token Creation" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Nemata, Primeval Warden", - "Slimefoot, the Stowaway", - "Verdeloth the Ancient", - "Slimefoot and Squee", - "Shroofus Sproutsire" - ], - "example_cards": [ - "Tendershoot Dryad", - "Artifact Mutation", - "Mycoloth", - "Aura Mutation", - "Sporemound", - "Nemata, Primeval Warden", - "Slimefoot, the Stowaway", - "Verdant Force" - ], - "synergy_commanders": [ - "Thelon of Havenwood - Synergy (Spore Counters)", - "The Mycotyrant - Synergy (Fungus Kindred)", - "Vorinclex, Monstrous Raider - Synergy (Ore Counters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Saproling creatures into play with shared payoffs (e.g., Spore Counters and Fungus Kindred)." + "secondary_color": "Black" }, { "theme": "Satyr Kindred", @@ -18877,56 +6169,13 @@ "Little Fellas" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Anax, Hardened in the Forge", - "Gallia of the Endless Dance", - "Azusa, Lost but Seeking - Synergy (Ramp)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Ramp)", - "Selvala, Heart of the Wilds - Synergy (Ramp)" - ], - "example_cards": [ - "Satyr Wayfinder", - "Satyr Enchanter", - "Composer of Spring", - "Gruff Triplets", - "Xenagos, the Reveler", - "Tanglespan Lookout", - "Anax, Hardened in the Forge", - "Nessian Wanderer" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Lands Matter)", - "Sheoldred, Whispering One - Synergy (Lands Matter)", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Satyr creatures into play with shared payoffs (e.g., Ramp and Lands Matter)." + "secondary_color": "Red" }, { "theme": "Scarecrow Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Rendmaw, Creaking Nest", - "The Swarmweaver", - "Reaper King" - ], - "example_cards": [ - "Scaretiller", - "Pili-Pala", - "Rendmaw, Creaking Nest", - "The Swarmweaver", - "Painter's Servant", - "Scarecrone", - "Scuttlemutt", - "Osseous Sticktwister" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Scarecrow creatures into play with shared payoffs." + "secondary_color": "Blue" }, { "theme": "Scavenge", @@ -18938,68 +6187,19 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)" - ], - "example_cards": [ - "Boneyard Mycodrax", - "Dodgy Jalopy", - "Deadbridge Goliath", - "Golgari Decoy", - "Slitherhead", - "Dreg Mangler", - "Bannerhide Krushok", - "Sewer Shambler" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Scavenge leveraging synergies with +1/+1 Counters and Mill." + "secondary_color": "Black" }, { "theme": "Scientist Kindred", "synergies": [ + "Historics Matter", + "Legends Matter", "Toughness Matters", "Human Kindred", "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Dr. Madison Li", - "Shaun, Father of Synths", - "Davros, Dalek Creator", - "Professor Hojo", - "James, Wandering Dad // Follow Him" - ], - "example_cards": [ - "Dr. Madison Li", - "Shaun, Father of Synths", - "Davros, Dalek Creator", - "Professor Hojo", - "James, Wandering Dad // Follow Him", - "Ian Malcolm, Chaotician", - "Owen Grady, Raptor Trainer", - "Ian Chesterton" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Vito, Thorn of the Dusk Rose - Synergy (Toughness Matters)", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Loran of the Third Path - Synergy (Human Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Scientist creatures into play with shared payoffs (e.g., Toughness Matters and Human Kindred)." + "secondary_color": "Green" }, { "theme": "Scion Kindred", @@ -19011,27 +6211,7 @@ "Ramp" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Kiora, the Rising Tide", - "Ulalek, Fused Atrocity - Synergy (Devoid)", - "Kozilek, Butcher of Truth - Synergy (Eldrazi Kindred)", - "Ulamog, the Infinite Gyre - Synergy (Eldrazi Kindred)", - "Kaito, Dancing Shadow - Synergy (Drone Kindred)" - ], - "example_cards": [ - "Warping Wail", - "Sifter of Skulls", - "Spawnbed Protector", - "Eldrazi Confluence", - "Spawning Bed", - "From Beyond", - "Kiora, the Rising Tide", - "Drowner of Hope" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Scion creatures into play with shared payoffs (e.g., Devoid and Eldrazi Kindred)." + "secondary_color": "Blue" }, { "theme": "Scorpion Kindred", @@ -19043,33 +6223,7 @@ "Little Fellas" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Magda, the Hoardmaster", - "Akul the Unrepentant", - "Scorpion, Seething Striker", - "Sheoldred, the Apocalypse - Synergy (Deathtouch)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Deathtouch)" - ], - "example_cards": [ - "Magda, the Hoardmaster", - "Tlincalli Hunter // Retrieve Prey", - "Fell Stinger", - "Serrated Scorpion", - "Sedge Scorpion", - "Dross Scorpion", - "Akul the Unrepentant", - "Toxic Scorpion" - ], - "synergy_commanders": [ - "The Gitrog Monster - Synergy (Deathtouch)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Scorpion creatures into play with shared payoffs (e.g., Deathtouch and Blink)." + "secondary_color": "Green" }, { "theme": "Scout Kindred", @@ -19081,47 +6235,15 @@ "Ranger Kindred" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Selvala, Heart of the Wilds", - "Delney, Streetwise Lookout", - "Gwenna, Eyes of Gaea", - "Ardenn, Intrepid Archaeologist", - "Nissa, Resurgent Animist" - ], - "example_cards": [ - "Tireless Provisioner", - "Selvala, Heart of the Wilds", - "Wood Elves", - "Tireless Tracker", - "Delney, Streetwise Lookout", - "Gwenna, Eyes of Gaea", - "Ardenn, Intrepid Archaeologist", - "Nissa, Resurgent Animist" - ], - "synergy_commanders": [ - "Hakbal of the Surging Soul - Synergy (Explore)", - "Amalia Benavides Aguirre - Synergy (Explore)", - "Nicanzil, Current Conductor - Synergy (Explore)", - "Astrid Peth - Synergy (Card Selection)", - "Francisco, Fowl Marauder - Synergy (Card Selection)", - "Mendicant Core, Guidelight - Synergy (Max speed)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Scout creatures into play with shared payoffs (e.g., Explore and Card Selection)." + "secondary_color": "White" }, { "theme": "Scream Counters", - "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Endless Scream", - "All Hallow's Eve" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates scream counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black" }, { "theme": "Scry", @@ -19133,77 +6255,23 @@ "Construct Kindred" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "The Scarab God", - "Thassa, God of the Sea", - "Thrasios, Triton Hero", - "Yenna, Redtooth Regent", - "Syr Ginger, the Meal Ender" - ], - "example_cards": [ - "Path of Ancestry", - "Preordain", - "Opt", - "Viscera Seer", - "Temple of Epiphany", - "Temple of Silence", - "Temple of Mystery", - "Temple of Triumph" - ], - "synergy_commanders": [ - "The Reality Chip - Synergy (Topdeck)", - "Loot, Exuberant Explorer - Synergy (Topdeck)", - "Kinnan, Bonder Prodigy - Synergy (Topdeck)", - "Ellivere of the Wild Court - Synergy (Role token)", - "Gylwain, Casting Director - Synergy (Role token)", - "Heliod, God of the Sun - Synergy (Enchantment Tokens)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Scry leveraging synergies with Topdeck and Role token." + "secondary_color": "White" }, { "theme": "Sculpture Kindred", "synergies": [], - "primary_color": "White", - "example_cards": [ - "Doomed Artisan" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Sculpture creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Secret council", "synergies": [], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Círdan the Shipwright", - "Elrond of the White Council" - ], - "example_cards": [ - "Mob Verdict", - "Círdan the Shipwright", - "Trap the Trespassers", - "Elrond of the White Council", - "Truth or Consequences" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Secret council theme and its supporting synergies." + "secondary_color": "Red" }, { "theme": "Serf Kindred", "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Sengir Autocrat" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Serf creatures into play with shared payoffs." + "primary_color": "Black" }, { "theme": "Serpent Kindred", @@ -19215,35 +6283,7 @@ "Big Mana" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Aesi, Tyrant of Gyre Strait", - "Koma, Cosmos Serpent", - "Koma, World-Eater", - "Yorion, Sky Nomad", - "Xolatoyac, the Smiling Flood" - ], - "example_cards": [ - "Aesi, Tyrant of Gyre Strait", - "Koma, Cosmos Serpent", - "Junk Winder", - "Koma, World-Eater", - "Spawning Kraken", - "Yorion, Sky Nomad", - "Benthic Anomaly", - "Xolatoyac, the Smiling Flood" - ], - "synergy_commanders": [ - "The Balrog of Moria - Synergy (Cycling)", - "Monstrosity of the Lake - Synergy (Cycling)", - "Yidaro, Wandering Monster - Synergy (Cycling)", - "Ghalta, Primal Hunger - Synergy (Cost Reduction)", - "Emry, Lurker of the Loch - Synergy (Cost Reduction)", - "Kutzil, Malamet Exemplar - Synergy (Stax)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Serpent creatures into play with shared payoffs (e.g., Cycling and Cost Reduction)." + "secondary_color": "Red" }, { "theme": "Servo Kindred", @@ -19255,30 +6295,7 @@ "Resource Engine" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Cayth, Famed Mechanist", - "Saheeli, the Gifted", - "Oviya Pashiri, Sage Lifecrafter", - "Loran of the Third Path - Synergy (Artificer Kindred)", - "Sai, Master Thopterist - Synergy (Artificer Kindred)" - ], - "example_cards": [ - "Marionette Apprentice", - "Marionette Master", - "Saheeli, Sublime Artificer", - "Animation Module", - "Angel of Invention", - "Cayth, Famed Mechanist", - "Retrofitter Foundry", - "Hidden Stockpile" - ], - "synergy_commanders": [ - "Dr. Madison Li - Synergy (Energy Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Servo creatures into play with shared payoffs (e.g., Fabricate and Artificer Kindred)." + "secondary_color": "Black" }, { "theme": "Shade Kindred", @@ -19289,31 +6306,7 @@ "Counters Matter" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Ihsan's Shade", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Niv-Mizzet, Parun - Synergy (Flying)" - ], - "example_cards": [ - "Nirkana Revenant", - "Accursed Duneyard", - "Author of Shadows", - "Skyclave Shade", - "Misery's Shadow", - "Liliana's Shade", - "Evernight Shade", - "Chilling Shade" - ], - "synergy_commanders": [ - "Old Gnawbone - Synergy (Flying)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Shade creatures into play with shared payoffs (e.g., Little Fellas and Flying)." + "secondary_color": "White" }, { "theme": "Shadow", @@ -19325,20 +6318,7 @@ "Aggro" ], "primary_color": "Black", - "secondary_color": "White", - "example_cards": [ - "Dauthi Voidwalker", - "Nether Traitor", - "Vashta Nerada", - "Looter il-Kor", - "Stronghold Rats", - "Dauthi Horror", - "Dauthi Slayer", - "Soltari Visionary" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Shadow leveraging synergies with Dauthi Kindred and Soltari Kindred." + "secondary_color": "White" }, { "theme": "Shaman Kindred", @@ -19350,32 +6330,7 @@ "Ogre Kindred" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Kiki-Jiki, Mirror Breaker", - "Delina, Wild Mage", - "Meren of Clan Nel Toth", - "Juri, Master of the Revue", - "Sarkhan, Soul Aflame" - ], - "example_cards": [ - "Eternal Witness", - "Sakura-Tribe Elder", - "Storm-Kiln Artist", - "Reclamation Sage", - "Guttersnipe", - "Goblin Anarchomancer", - "Oracle of Mul Daya", - "Deathrite Shaman" - ], - "synergy_commanders": [ - "Moraug, Fury of Akoum - Synergy (Minotaur Kindred)", - "Neheb, the Eternal - Synergy (Minotaur Kindred)", - "Gyome, Master Chef - Synergy (Troll Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Shaman creatures into play with shared payoffs (e.g., Kinship and Minotaur Kindred)." + "secondary_color": "Green" }, { "theme": "Shapeshifter Kindred", @@ -19387,32 +6342,7 @@ "Protection" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Morophon, the Boundless", - "Omo, Queen of Vesuva", - "Orvar, the All-Form", - "Moritte of the Frost", - "Lazav, Dimir Mastermind" - ], - "example_cards": [ - "Black Market Connections", - "Phyrexian Metamorph", - "Maskwood Nexus", - "Realmwalker", - "Changeling Outcast", - "Mirror Entity", - "Taurean Mauler", - "Metallic Mimic" - ], - "synergy_commanders": [ - "Mondrak, Glory Dominus - Synergy (Clones)", - "Kiki-Jiki, Mirror Breaker - Synergy (Clones)", - "Liberator, Urza's Battlethopter - Synergy (Flash)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Shapeshifter creatures into play with shared payoffs (e.g., Changeling and Clones)." + "secondary_color": "Green" }, { "theme": "Shark Kindred", @@ -19424,123 +6354,35 @@ "Aggro" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Brallin, Skyshark Rider", - "Shabraz, the Skyshark", - "Captain Howler, Sea Scourge", - "Kutzil, Malamet Exemplar - Synergy (Stax)", - "Lotho, Corrupt Shirriff - Synergy (Stax)" - ], - "example_cards": [ - "Chrome Host Seedshark", - "Restless Reef", - "Brallin, Skyshark Rider", - "Shabraz, the Skyshark", - "Pouncing Shoreshark", - "Marauding Mako", - "Captain Howler, Sea Scourge", - "Fisher's Talent" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Stax)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)", - "Syr Konrad, the Grim - Synergy (Interaction)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Shark creatures into play with shared payoffs (e.g., Stax and Toughness Matters)." + "secondary_color": "Red" }, { "theme": "Sheep Kindred", "synergies": [], "primary_color": "White", - "secondary_color": "Blue", - "example_cards": [ - "Enduring Innocence", - "Nyx-Fleece Ram", - "Gatebreaker Ram", - "Bridled Bighorn", - "Ovinomancer", - "Baaallerina", - "Rustspore Ram" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Sheep creatures into play with shared payoffs." + "secondary_color": "Blue" }, { "theme": "Shield Counters", "synergies": [ - "Soldier Kindred", "Counters Matter", + "Proliferate", + "Soldier Kindred", "Lifegain", - "Life Matters", - "Human Kindred" + "Life Matters" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Falco Spara, Pactweaver", - "Kros, Defense Contractor", - "Rigo, Streetwise Mentor", - "Perrie, the Pulverizer", - "Boromir, Warden of the Tower - Synergy (Soldier Kindred)" - ], - "example_cards": [ - "Diamond City", - "Titan of Industry", - "Elspeth Resplendent", - "Singer of Swift Rivers", - "Undercover Operative", - "Summon: Magus Sisters", - "Protection Magic", - "Falco Spara, Pactweaver" - ], - "synergy_commanders": [ - "Anim Pakal, Thousandth Moon - Synergy (Soldier Kindred)", - "Odric, Lunarch Marshal - Synergy (Soldier Kindred)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Tatyova, Benthic Druid - Synergy (Lifegain)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Applies shield counters to insulate threats and create lopsided removal trades. Synergies like Soldier Kindred and Counters Matter reinforce the plan." + "secondary_color": "Green" }, { "theme": "Shrines Matter", "synergies": [ + "Historics Matter", + "Legends Matter", "Enchantments Matter" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Go-Shintai of Life's Origin", - "Go-Shintai of Shared Purpose", - "Go-Shintai of Hidden Cruelty", - "Go-Shintai of Ancient Wars", - "Go-Shintai of Boundless Vigor" - ], - "example_cards": [ - "Sanctum of Stone Fangs", - "Honden of Infinite Rage", - "Go-Shintai of Life's Origin", - "Honden of Seeing Winds", - "Sanctum of Fruitful Harvest", - "Sanctum of Calm Waters", - "Honden of Night's Reach", - "Go-Shintai of Shared Purpose" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Enchantments Matter)", - "Purphoros, God of the Forge - Synergy (Enchantments Matter)", - "Jaheira, Friend of the Forest - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates Shrines whose upkeep triggers scale multiplicatively into inevitability. Synergies like Enchantments Matter reinforce the plan." + "secondary_color": "Black" }, { "theme": "Shroud", @@ -19552,33 +6394,7 @@ "Counters Matter" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Multani, Maro-Sorcerer", - "Kodama of the North Tree", - "Autumn Willow", - "Toski, Bearer of Secrets - Synergy (Protection)", - "Purphoros, God of the Forge - Synergy (Protection)" - ], - "example_cards": [ - "Argothian Enchantress", - "Wall of Denial", - "Helix Pinnacle", - "Inkwell Leviathan", - "Diplomatic Immunity", - "Simic Sky Swallower", - "Multani, Maro-Sorcerer", - "Neurok Commando" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Protection)", - "Syr Konrad, the Grim - Synergy (Interaction)", - "Boromir, Warden of the Tower - Synergy (Interaction)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Shroud leveraging synergies with Protection and Interaction." + "secondary_color": "Blue" }, { "theme": "Siren Kindred", @@ -19589,33 +6405,7 @@ "Artifacts Matter", "Toughness Matters" ], - "primary_color": "Blue", - "example_commanders": [ - "Malcolm, Alluring Scoundrel", - "Malcolm, Keen-Eyed Navigator", - "Malcolm, the Eyes", - "Maeve, Insidious Singer", - "Ragavan, Nimble Pilferer - Synergy (Pirate Kindred)" - ], - "example_cards": [ - "Siren Stormtamer", - "Malcolm, Alluring Scoundrel", - "Malcolm, Keen-Eyed Navigator", - "Spyglass Siren", - "Storm Fleet Negotiator", - "Malcolm, the Eyes", - "Zephyr Singer", - "Oaken Siren" - ], - "synergy_commanders": [ - "Captain Lannery Storm - Synergy (Pirate Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)", - "Saryth, the Viper's Fang - Synergy (Outlaw Kindred)", - "Niv-Mizzet, Parun - Synergy (Flying)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Siren creatures into play with shared payoffs (e.g., Pirate Kindred and Outlaw Kindred)." + "primary_color": "Blue" }, { "theme": "Skeleton Kindred", @@ -19627,35 +6417,7 @@ "Blink" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Skithiryx, the Blight Dragon", - "Tinybones, the Pickpocket", - "Tinybones, Bauble Burglar", - "Tinybones, Trinket Thief", - "Bladewing, Deathless Tyrant" - ], - "example_cards": [ - "Reassembling Skeleton", - "Golgari Grave-Troll", - "Skithiryx, the Blight Dragon", - "Tinybones, the Pickpocket", - "Eaten by Piranhas", - "Forsaken Miner", - "Accursed Duneyard", - "Tinybones, Bauble Burglar" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)", - "Captain Lannery Storm - Synergy (Outlaw Kindred)", - "Etali, Primal Storm - Synergy (Exile Matters)", - "Urza, Lord High Artificer - Synergy (Exile Matters)", - "Syr Konrad, the Grim - Synergy (Mill)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Skeleton creatures into play with shared payoffs (e.g., Outlaw Kindred and Exile Matters)." + "secondary_color": "Blue" }, { "theme": "Skulk", @@ -19665,60 +6427,21 @@ "Combat Matters" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Gollum, Obsessed Stalker", - "Gregor, Shrewd Magistrate", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Forgotten Creation", - "Ingenious Prodigy", - "Gollum, Obsessed Stalker", - "Wharf Infiltrator", - "Vampire Cutthroat", - "Time Beetle", - "Rancid Rats", - "Cybermat" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Aggro)", - "Sheoldred, the Apocalypse - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Skulk leveraging synergies with Little Fellas and Aggro." + "secondary_color": "Black" }, { "theme": "Skunk Kindred", "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Downwind Ambusher" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Skunk creatures into play with shared payoffs." + "primary_color": "Black" }, { "theme": "Slime Counters", - "synergies": [], + "synergies": [ + "Counters Matter", + "Proliferate" + ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Toxrill, the Corrosive" - ], - "example_cards": [ - "Toxrill, the Corrosive", - "Sludge Monster", - "Gutter Grime" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates slime counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Green" }, { "theme": "Slith Kindred", @@ -19730,30 +6453,7 @@ "Combat Matters" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)" - ], - "example_cards": [ - "Arcbound Slith", - "Etched Slith", - "Hexgold Slith", - "Slith Ascendant", - "Slith Strider", - "Slith Firewalker", - "Slith Predator", - "Slith Bloodletter" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Slith creatures into play with shared payoffs (e.g., +1/+1 Counters and Counters Matter)." + "secondary_color": "White" }, { "theme": "Sliver Kindred", @@ -19762,52 +6462,13 @@ "Pingers" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Sliver Hivelord", - "The First Sliver", - "Sliver Legion", - "Sliver Overlord", - "Sliver Gravemother" - ], - "example_cards": [ - "Gemhide Sliver", - "Manaweft Sliver", - "Cloudshredder Sliver", - "Sliver Hivelord", - "Harmonic Sliver", - "Galerider Sliver", - "Shifting Sliver", - "Diffusion Sliver" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Syr Konrad, the Grim - Synergy (Pingers)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Pingers)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Sliver creatures into play with shared payoffs (e.g., Little Fellas and Pingers)." + "secondary_color": "Red" }, { "theme": "Sloth Kindred", "synergies": [], "primary_color": "Green", - "secondary_color": "White", - "example_cards": [ - "Arboreal Grazer", - "Lumbering Megasloth", - "Complaints Clerk", - "Unswerving Sloth", - "Hungry Megasloth", - "Relic Sloth", - "Aardvark Sloth" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Sloth creatures into play with shared payoffs." + "secondary_color": "White" }, { "theme": "Slug Kindred", @@ -19815,42 +6476,12 @@ "Little Fellas" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Toxrill, the Corrosive", - "Fumulus, the Infestation", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Toxrill, the Corrosive", - "Fumulus, the Infestation", - "Thermopod", - "Morkrut Necropod", - "Molder Slug", - "Gluttonous Slug", - "Catacomb Slug", - "Giant Slug" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Slug creatures into play with shared payoffs (e.g., Little Fellas)." + "secondary_color": "Green" }, { "theme": "Snail Kindred", "synergies": [], - "primary_color": "Black", - "example_commanders": [ - "Wick, the Whorled Mind" - ], - "example_cards": [ - "Wick, the Whorled Mind", - "Skullcap Snail" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Snail creatures into play with shared payoffs." + "primary_color": "Black" }, { "theme": "Snake Kindred", @@ -19862,35 +6493,7 @@ "Shaman Kindred" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Shigeki, Jukai Visionary", - "Sidisi, Undead Vizier", - "Imoti, Celebrant of Bounty", - "Sidisi, Brood Tyrant", - "Lonis, Cryptozoologist" - ], - "example_cards": [ - "Sakura-Tribe Elder", - "Lotus Cobra", - "Ramunap Excavator", - "Ohran Frostfang", - "Fanatic of Rhonas", - "Ophiomancer", - "Coiling Oracle", - "Enduring Tenacity" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Swampwalk)", - "Wrexial, the Risen Deep - Synergy (Swampwalk)", - "Sol'kanar the Swamp King - Synergy (Swampwalk)", - "Sheoldred, the Apocalypse - Synergy (Deathtouch)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Deathtouch)", - "Legolas Greenleaf - Synergy (Archer Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Snake creatures into play with shared payoffs (e.g., Swampwalk and Deathtouch)." + "secondary_color": "Black" }, { "theme": "Soldier Kindred", @@ -19902,35 +6505,7 @@ "Banding" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Boromir, Warden of the Tower", - "Anim Pakal, Thousandth Moon", - "Odric, Lunarch Marshal", - "Myrel, Shield of Argive", - "Thalia, Heretic Cathar" - ], - "example_cards": [ - "Esper Sentinel", - "Bastion of Remembrance", - "Mentor of the Meek", - "Elspeth, Sun's Champion", - "Ranger-Captain of Eos", - "Boromir, Warden of the Tower", - "Bastion Protector", - "Charismatic Conqueror" - ], - "synergy_commanders": [ - "Lu Xun, Scholar General - Synergy (Horsemanship)", - "Xiahou Dun, the One-Eyed - Synergy (Horsemanship)", - "Lu Bu, Master-at-Arms - Synergy (Horsemanship)", - "Paladin Elizabeth Taggerdy - Synergy (Battalion)", - "Sentinel Sarah Lyons - Synergy (Battalion)", - "Danny Pink - Synergy (Mentor)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Soldier creatures into play with shared payoffs (e.g., Horsemanship and Battalion)." + "secondary_color": "Red" }, { "theme": "Soltari Kindred", @@ -19940,42 +6515,15 @@ "Aggro", "Combat Matters" ], - "primary_color": "White", - "example_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Etali, Primal Storm - Synergy (Aggro)" - ], - "example_cards": [ - "Soltari Visionary", - "Soltari Foot Soldier", - "Soltari Champion", - "Soltari Trooper", - "Soltari Monk", - "Soltari Priest", - "Soltari Lancer", - "Soltari Guerrillas" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Soltari creatures into play with shared payoffs (e.g., Shadow and Little Fellas)." + "primary_color": "White" }, { "theme": "Soul Counters", - "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Séance Board", - "Ravenous Amulet", - "Reaper's Scythe", - "Netherborn Altar", - "Hostile Hostel // Creeping Inn", - "Malefic Scythe", - "Obscura Ascendancy" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates soul counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black" }, { "theme": "Soulbond", @@ -19986,31 +6534,7 @@ "Big Mana" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Donna Noble", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Loran of the Third Path - Synergy (Human Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "example_cards": [ - "Deadeye Navigator", - "Tandem Lookout", - "Mirage Phalanx", - "Wingcrafter", - "Breathkeeper Seraph", - "Doom Weaver", - "Silverblade Paladin", - "Thundering Mightmare" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Little Fellas)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Soulbond leveraging synergies with Human Kindred and Little Fellas." + "secondary_color": "Blue" }, { "theme": "Soulshift", @@ -20022,31 +6546,7 @@ "Interaction" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "He Who Hungers", - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Junji, the Midnight Sky - Synergy (Spirit Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Control)" - ], - "example_cards": [ - "Thief of Hope", - "He Who Hungers", - "Elder Pine of Jukai", - "Harbinger of Spring", - "Forked-Branch Garami", - "Promised Kannushi", - "Pus Kami", - "Body of Jukai" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Control)", - "Ulamog, the Infinite Gyre - Synergy (Removal)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Soulshift leveraging synergies with Spirit Kindred and Control." + "secondary_color": "Black" }, { "theme": "Spawn Kindred", @@ -20058,30 +6558,7 @@ "Ramp" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Magnus the Red", - "Kozilek, Butcher of Truth - Synergy (Eldrazi Kindred)", - "Ulamog, the Infinite Gyre - Synergy (Eldrazi Kindred)", - "Ulamog, the Ceaseless Hunger - Synergy (Eldrazi Kindred)", - "Kaito, Dancing Shadow - Synergy (Drone Kindred)" - ], - "example_cards": [ - "Glaring Fleshraker", - "Awakening Zone", - "Pawn of Ulamog", - "Basking Broodscale", - "Kozilek's Command", - "Kozilek's Unsealing", - "Glimpse the Impossible", - "Emrakul's Messenger" - ], - "synergy_commanders": [ - "Ulalek, Fused Atrocity - Synergy (Devoid)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Spawn creatures into play with shared payoffs (e.g., Eldrazi Kindred and Drone Kindred)." + "secondary_color": "Blue" }, { "theme": "Spectacle", @@ -20093,30 +6570,7 @@ "Spellslinger" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Burn)", - "Braids, Arisen Nightmare - Synergy (Burn)", - "Lotho, Corrupt Shirriff - Synergy (Burn)", - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)" - ], - "example_cards": [ - "Light Up the Stage", - "Body Count", - "Skewer the Critics", - "Spawn of Mayhem", - "Dead Revels", - "Rix Maadi Reveler", - "Drill Bit", - "Blade Juggler" - ], - "synergy_commanders": [ - "Toski, Bearer of Secrets - Synergy (Combat Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Spectacle leveraging synergies with Burn and Aggro." + "secondary_color": "Red" }, { "theme": "Specter Kindred", @@ -20127,31 +6581,7 @@ "Card Draw", "Burn" ], - "primary_color": "Black", - "example_commanders": [ - "Urgoros, the Empty One", - "Braids, Arisen Nightmare - Synergy (Draw Triggers)", - "Loran of the Third Path - Synergy (Draw Triggers)", - "Sheoldred, the Apocalypse - Synergy (Draw Triggers)", - "Selvala, Heart of the Wilds - Synergy (Wheels)" - ], - "example_cards": [ - "Thief of Sanity", - "Accursed Duneyard", - "Fell Specter", - "Nightveil Specter", - "Hypnotic Specter", - "Liliana's Specter", - "Whispering Specter", - "Hollow Marauder" - ], - "synergy_commanders": [ - "Niv-Mizzet, Parun - Synergy (Wheels)", - "Old Gnawbone - Synergy (Flying)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Specter creatures into play with shared payoffs (e.g., Draw Triggers and Wheels)." + "primary_color": "Black" }, { "theme": "Spell Copy", @@ -20163,32 +6593,7 @@ "Conspire" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Jin-Gitaxias, Progress Tyrant", - "Kitsa, Otterball Elite", - "Krark, the Thumbless", - "Zada, Hedron Grinder", - "Stella Lee, Wild Card" - ], - "example_cards": [ - "Flusterstorm", - "Strionic Resonator", - "Reflections of Littjara", - "Dualcaster Mage", - "Grapeshot", - "Mizzix's Mastery", - "Brain Freeze", - "Narset's Reversal" - ], - "synergy_commanders": [ - "Aeve, Progenitor Ooze - Synergy (Storm)", - "Ral, Crackling Wit - Synergy (Storm)", - "Ob Nixilis, the Adversary - Synergy (Casualty)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Builds around Spell Copy leveraging synergies with Storm and Replicate." + "secondary_color": "Red" }, { "theme": "Spell mastery", @@ -20200,30 +6605,7 @@ "Interaction" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Six - Synergy (Reanimate)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Kozilek, Butcher of Truth - Synergy (Mill)" - ], - "example_cards": [ - "Nissa's Pilgrimage", - "Animist's Awakening", - "Dark Petition", - "Olórin's Searing Light", - "Talent of the Telepath", - "Dark Dabbling", - "Ravaging Blaze", - "Calculated Dismissal" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Spell mastery leveraging synergies with Reanimate and Mill." + "secondary_color": "Blue" }, { "theme": "Spells Matter", @@ -20235,32 +6617,7 @@ "Flashback" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Lotho, Corrupt Shirriff", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Talrand, Sky Summoner", - "Niv-Mizzet, Parun", - "Mangara, the Diplomat" - ], - "example_cards": [ - "Swords to Plowshares", - "Path to Exile", - "Counterspell", - "Cultivate", - "Farseek", - "Blasphemous Act", - "Beast Within", - "Mind Stone" - ], - "synergy_commanders": [ - "Sythis, Harvest's Hand - Synergy (Cantrips)", - "Kwain, Itinerant Meddler - Synergy (Cantrips)", - "Boromir, Warden of the Tower - Synergy (Counterspells)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Chains cheap instants & sorceries for velocity—converting triggers into scalable damage or card advantage before a finisher. Synergies like Spellslinger and Cantrips reinforce the plan." + "secondary_color": "Red" }, { "theme": "Spellshaper Kindred", @@ -20272,35 +6629,7 @@ "Removal" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Jaya Ballard, Task Mage", - "Jolrael, Empress of Beasts", - "Mageta the Lion", - "Alexi, Zephyr Mage", - "Greel, Mind Raker" - ], - "example_cards": [ - "Dreamscape Artist", - "Bog Witch", - "Invasion of Mercadia // Kyren Flamewright", - "Undertaker", - "Llanowar Mentor", - "Jaya Ballard, Task Mage", - "Jolrael, Empress of Beasts", - "Greenseeker" - ], - "synergy_commanders": [ - "Solphim, Mayhem Dominus - Synergy (Discard Matters)", - "Yawgmoth, Thran Physician - Synergy (Discard Matters)", - "Nezahal, Primal Tide - Synergy (Discard Matters)", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Spellshaper creatures into play with shared payoffs (e.g., Discard Matters and Human Kindred)." + "secondary_color": "Black" }, { "theme": "Spellslinger", @@ -20312,31 +6641,7 @@ "Counterspells" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Lotho, Corrupt Shirriff", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Talrand, Sky Summoner", - "Niv-Mizzet, Parun", - "Mangara, the Diplomat" - ], - "example_cards": [ - "Swords to Plowshares", - "Path to Exile", - "Counterspell", - "Cultivate", - "Farseek", - "Blasphemous Act", - "Beast Within", - "Mind Stone" - ], - "synergy_commanders": [ - "Kitsa, Otterball Elite - Synergy (Prowess)", - "Bria, Riptide Rogue - Synergy (Prowess)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Chains cheap instants & sorceries for velocity—converting triggers into scalable damage or card advantage before a finisher. Synergies like Spells Matter and Prowess reinforce the plan." + "secondary_color": "Red" }, { "theme": "Sphinx Kindred", @@ -20348,35 +6653,7 @@ "Draw Triggers" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Tivit, Seller of Secrets", - "Raffine, Scheming Seer", - "Elenda and Azor", - "Sharuum the Hegemon", - "Medomai the Ageless" - ], - "example_cards": [ - "Consecrated Sphinx", - "Sphinx of the Second Sun", - "Sharding Sphinx", - "Tivit, Seller of Secrets", - "Sandstone Oracle", - "Defiler of Dreams", - "Raffine, Scheming Seer", - "Dazzling Sphinx" - ], - "synergy_commanders": [ - "The Scarab God - Synergy (Scry)", - "Thassa, God of the Sea - Synergy (Scry)", - "Thrasios, Triton Hero - Synergy (Scry)", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "The Reality Chip - Synergy (Topdeck)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Sphinx creatures into play with shared payoffs (e.g., Scry and Flying)." + "secondary_color": "White" }, { "theme": "Spider Kindred", @@ -20388,35 +6665,7 @@ "+1/+1 Counters" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Arasta of the Endless Web", - "Shelob, Dread Weaver", - "Shelob, Child of Ungoliant", - "Ishkanah, Grafwidow", - "Izoni, Center of the Web" - ], - "example_cards": [ - "Arasta of the Endless Web", - "Swarmyard", - "Nyx Weaver", - "Arachnogenesis", - "Twitching Doll", - "Swarmyard Massacre", - "Canoptek Spyder", - "Sweet-Gum Recluse" - ], - "synergy_commanders": [ - "Six - Synergy (Reach)", - "Kodama of the West Tree - Synergy (Reach)", - "Kodama of the East Tree - Synergy (Reach)", - "Sheoldred, the Apocalypse - Synergy (Deathtouch)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Deathtouch)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Spider creatures into play with shared payoffs (e.g., Reach and Deathtouch)." + "secondary_color": "Black" }, { "theme": "Spike Kindred", @@ -20428,30 +6677,7 @@ "Combat Matters" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)" - ], - "example_cards": [ - "Spike Feeder", - "Spike Weaver", - "Spike Cannibal", - "Spike Drone", - "Spike Rogue", - "Spike Breeder", - "Spike Tiller", - "Spike Worker" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Spike creatures into play with shared payoffs (e.g., +1/+1 Counters and Counters Matter)." + "secondary_color": "Black" }, { "theme": "Spirit Kindred", @@ -20463,33 +6689,7 @@ "Zubera Kindred" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Kodama of the West Tree", - "Kodama of the East Tree", - "Junji, the Midnight Sky", - "Miirym, Sentinel Wyrm", - "Atsushi, the Blazing Sky" - ], - "example_cards": [ - "Seedborn Muse", - "Kami of Whispered Hopes", - "Simian Spirit Guide", - "Crypt Ghast", - "Forbidden Orchard", - "Selfless Spirit", - "Eidolon of Blossoms", - "Sokenzan, Crucible of Defiance" - ], - "synergy_commanders": [ - "He Who Hungers - Synergy (Soulshift)", - "Callow Jushi // Jaraku the Interloper - Synergy (Ki Counters)", - "Cunning Bandit // Azamuki, Treachery Incarnate - Synergy (Ki Counters)", - "Anafenza, Unyielding Lineage - Synergy (Endure)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Spirit creatures into play with shared payoffs (e.g., Soulshift and Ki Counters)." + "secondary_color": "Blue" }, { "theme": "Splice", @@ -20500,30 +6700,7 @@ "Interaction" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "example_cards": [ - "Desperate Ritual", - "Goryo's Vengeance", - "Fell Beast's Shriek", - "Veil of Secrecy", - "Blessed Breath", - "Overblaze", - "Reweave", - "Shifting Borders" - ], - "synergy_commanders": [ - "Ulamog, the Infinite Gyre - Synergy (Removal)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Splice leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "Red" }, { "theme": "Split second", @@ -20535,78 +6712,24 @@ "Spellslinger" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Stax)", - "Lotho, Corrupt Shirriff - Synergy (Stax)", - "Talrand, Sky Summoner - Synergy (Stax)", - "Samut, Voice of Dissent - Synergy (Combat Tricks)", - "Naru Meha, Master Wizard - Synergy (Combat Tricks)" - ], - "example_cards": [ - "Krosan Grip", - "Legolas's Quick Reflexes", - "Sudden Spoiling", - "Angel's Grace", - "Inventory Management", - "Siege Smash", - "V.A.T.S.", - "Trickbind" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Interaction)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Split second leveraging synergies with Stax and Combat Tricks." + "secondary_color": "Blue" }, { "theme": "Sponge Kindred", "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Thought Sponge", - "Walking Sponge" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Sponge creatures into play with shared payoffs." + "primary_color": "Blue" }, { "theme": "Spore Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Fungus Kindred", "Saproling Kindred", - "Ore Counters", - "Creature Tokens", - "Token Creation" + "Ore Counters" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Thelon of Havenwood", - "Slimefoot, the Stowaway - Synergy (Fungus Kindred)", - "The Mycotyrant - Synergy (Fungus Kindred)", - "Xavier Sal, Infested Captain - Synergy (Fungus Kindred)", - "Nemata, Primeval Warden - Synergy (Saproling Kindred)" - ], - "example_cards": [ - "Utopia Mycon", - "Deathspore Thallid", - "Psychotrope Thallid", - "Sporesower Thallid", - "Sporoloth Ancient", - "Thallid", - "Thallid Shell-Dweller", - "Thallid Germinator" - ], - "synergy_commanders": [ - "Verdeloth the Ancient - Synergy (Saproling Kindred)", - "Vorinclex, Monstrous Raider - Synergy (Ore Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates spore counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "White" }, { "theme": "Spree", @@ -20618,23 +6741,7 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Control)" - ], - "example_cards": [ - "Return the Favor", - "Insatiable Avarice", - "Great Train Heist", - "Three Steps Ahead", - "Requisition Raid", - "Smuggler's Surprise", - "Lively Dirge", - "Final Showdown" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Spree leveraging synergies with Cost Scaling and Modal." + "secondary_color": "White" }, { "theme": "Squad", @@ -20646,55 +6753,14 @@ "Tokens Matter" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Blink)", - "Elesh Norn, Mother of Machines - Synergy (Enter the Battlefield)", - "Kodama of the East Tree - Synergy (Enter the Battlefield)" - ], - "example_cards": [ - "Galadhrim Brigade", - "Securitron Squadron", - "Ultramarines Honour Guard", - "Sicarian Infiltrator", - "Space Marine Devastator", - "Vanguard Suppressor", - "Wasteland Raider", - "Powder Ganger" - ], - "synergy_commanders": [ - "Nezahal, Primal Tide - Synergy (Leave the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Squad leveraging synergies with Blink and Enter the Battlefield." + "secondary_color": "Black" }, { "theme": "Squid Kindred", "synergies": [ "Little Fellas" ], - "primary_color": "Blue", - "example_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Chasm Skulker", - "Oneirophage", - "Cephalopod Sentry", - "Coral Barrier", - "Skyclave Squid", - "Sand Squid", - "Gulf Squid", - "Fylamarid" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Squid creatures into play with shared payoffs (e.g., Little Fellas)." + "primary_color": "Blue" }, { "theme": "Squirrel Kindred", @@ -20706,54 +6772,13 @@ "Token Creation" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Toski, Bearer of Secrets", - "Chatterfang, Squirrel General", - "Camellia, the Seedmiser", - "Hazel of the Rootbloom", - "The Odd Acorn Gang" - ], - "example_cards": [ - "Toski, Bearer of Secrets", - "Chatterfang, Squirrel General", - "Swarmyard", - "Scurry Oak", - "Swarmyard Massacre", - "Ravenous Squirrel", - "Hazel's Brewmaster", - "Valley Rotcaller" - ], - "synergy_commanders": [ - "Peregrin Took - Synergy (Food Token)", - "Rosie Cotton of South Lane - Synergy (Food Token)", - "Samwise Gamgee - Synergy (Food Token)", - "Syr Ginger, the Meal Ender - Synergy (Food)", - "Farmer Cotton - Synergy (Food)", - "Saryth, the Viper's Fang - Synergy (Warlock Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Squirrel creatures into play with shared payoffs (e.g., Food Token and Food)." + "secondary_color": "Black" }, { "theme": "Starfish Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Plagon, Lord of the Beach" - ], - "example_cards": [ - "Sinister Starfish", - "Sigiled Starfish", - "Plagon, Lord of the Beach", - "Spiny Starfish", - "Purple Pentapus" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Starfish creatures into play with shared payoffs." + "secondary_color": "Blue" }, { "theme": "Start your engines!", @@ -20765,49 +6790,16 @@ "Burn" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Mendicant Core, Guidelight", - "Vnwxt, Verbose Host", - "The Speed Demon", - "Hazoret, Godseeker", - "Zahur, Glory's Past" - ], - "example_cards": [ - "Muraganda Raceway", - "Amonkhet Raceway", - "Mendicant Core, Guidelight", - "Avishkar Raceway", - "Vnwxt, Verbose Host", - "Howlsquad Heavy", - "The Speed Demon", - "Racers' Scoreboard" - ], - "synergy_commanders": [ - "Sram, Senior Edificer - Synergy (Vehicles)", - "Shorikai, Genesis Engine - Synergy (Vehicles)", - "Selvala, Heart of the Wilds - Synergy (Scout Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Start your engines! leveraging synergies with Max speed and Vehicles." + "secondary_color": "Red" }, { "theme": "Stash Counters", - "synergies": [], + "synergies": [ + "Counters Matter", + "Proliferate" + ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Tinybones, Bauble Burglar" - ], - "example_cards": [ - "Glittering Stockpile", - "Tinybones, Bauble Burglar", - "Hoarder's Overflow" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates stash counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Black" }, { "theme": "Station", @@ -20819,32 +6811,7 @@ "Lands Matter" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Hearthhull, the Worldseed", - "Inspirit, Flagship Vessel", - "Dawnsire, Sunstar Dreadnought", - "The Seriema", - "Infinite Guideline Station" - ], - "example_cards": [ - "Exploration Broodship", - "Evendo, Waking Haven", - "Uthros, Titanic Godcore", - "Uthros Research Craft", - "The Eternity Elevator", - "Adagia, Windswept Bastion", - "Susur Secundi, Void Altar", - "Hearthhull, the Worldseed" - ], - "synergy_commanders": [ - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Station leveraging synergies with Charge Counters and Flying." + "secondary_color": "Green" }, { "theme": "Stax", @@ -20856,91 +6823,30 @@ "Epic" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Kutzil, Malamet Exemplar", - "Lotho, Corrupt Shirriff", - "Talrand, Sky Summoner", - "Niv-Mizzet, Parun", - "Elesh Norn, Grand Cenobite" - ], - "example_cards": [ - "Exotic Orchard", - "Swiftfoot Boots", - "Fellwar Stone", - "Counterspell", - "Rhystic Study", - "Cyclonic Rift", - "An Offer You Can't Refuse", - "Negate" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Applies asymmetric resource denial (tax, tap, sacrifice, lock pieces) to throttle opponents while advancing a resilient engine. Synergies like Taxing Effects and Hatebears reinforce the plan." + "secondary_color": "White" }, { "theme": "Storage Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Age Counters", - "Lands Matter", - "Counters Matter" + "Lands Matter" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Tasha, the Witch Queen - Synergy (Age Counters)", - "Cosima, God of the Voyage // The Omenkeel - Synergy (Age Counters)", - "Mairsil, the Pretender - Synergy (Age Counters)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)", - "Tatyova, Benthic Druid - Synergy (Lands Matter)" - ], - "example_cards": [ - "Crucible of the Spirit Dragon", - "Mage-Ring Network", - "Molten Slagheap", - "Dreadship Reef", - "Calciform Pools", - "Saltcrusted Steppe", - "Fungal Reaches", - "Bottomless Vault" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates storage counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Blue" }, { "theme": "Storm", "synergies": [ - "Spellslinger", - "Rituals", - "Copy Spells", "Spell Copy", - "Control" + "Control", + "Stax", + "Spells Matter", + "Spellslinger" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Aeve, Progenitor Ooze", - "Lotho, Corrupt Shirriff - Synergy (Spellslinger)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spellslinger)", - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "example_cards": [ - "Flusterstorm", - "Grapeshot", - "Brain Freeze", - "Amphibian Downpour", - "Empty the Warrens", - "Radstorm", - "Ral, Crackling Wit", - "Chatterstorm" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds storm count with cheap spells & mana bursts, converting it into a lethal payoff turn. Synergies like Spellslinger and Rituals reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Strive", @@ -20951,70 +6857,19 @@ "Interaction" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Samut, Voice of Dissent - Synergy (Combat Tricks)", - "Naru Meha, Master Wizard - Synergy (Combat Tricks)", - "The Wandering Rescuer - Synergy (Combat Tricks)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Twinflame", - "Call the Coppercoats", - "Solidarity of Heroes", - "Launch the Fleet", - "Setessan Tactics", - "Ajani's Presence", - "Harness by Force", - "Consign to Dust" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Strive leveraging synergies with Combat Tricks and Spells Matter." + "secondary_color": "Blue" }, { "theme": "Stun Counters", "synergies": [ "Counters Matter", + "Proliferate", "Stax", "Wizard Kindred", - "Blink", - "Enter the Battlefield" + "Blink" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Monstrosity of the Lake", - "The Watcher in the Water", - "Lulu, Stern Guardian", - "Sharae of Numbing Depths", - "The Beast, Deathless Prince" - ], - "example_cards": [ - "Unstoppable Slasher", - "Mjölnir, Storm Hammer", - "Fear of Sleep Paralysis", - "Scroll of Isildur", - "Pugnacious Hammerskull", - "Monstrosity of the Lake", - "The Watcher in the Water", - "Summon: Valefor" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Krenko, Tin Street Kingpin - Synergy (Counters Matter)", - "Kutzil, Malamet Exemplar - Synergy (Stax)", - "Lotho, Corrupt Shirriff - Synergy (Stax)", - "Emry, Lurker of the Loch - Synergy (Wizard Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Accumulates stun counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "White" }, { "theme": "Super Friends", @@ -21026,31 +6881,7 @@ "Loyalty Counters" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Adeline, Resplendent Cathar", - "Yawgmoth, Thran Physician", - "Vorinclex, Monstrous Raider", - "Lae'zel, Vlaakith's Champion", - "Tekuthal, Inquiry Dominus" - ], - "example_cards": [ - "Karn's Bastion", - "Doubling Season", - "Spark Double", - "Evolution Sage", - "Plaza of Heroes", - "Adeline, Resplendent Cathar", - "Minamo, School at Water's Edge", - "Cankerbloom" - ], - "synergy_commanders": [ - "Daretti, Scrap Savant - Synergy (Superfriends)", - "Freyalise, Llanowar's Fury - Synergy (Superfriends)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Super Friends leveraging synergies with Planeswalkers and Superfriends." + "secondary_color": "Blue" }, { "theme": "Superfriends", @@ -21062,35 +6893,7 @@ "Super Friends" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Daretti, Scrap Savant", - "Freyalise, Llanowar's Fury", - "Dihada, Binder of Wills", - "Tevesh Szat, Doom of Fools", - "Minsc & Boo, Timeless Heroes" - ], - "example_cards": [ - "Elspeth, Sun's Champion", - "Narset, Parter of Veils", - "Liliana, Dreadhorde General", - "Ugin, the Ineffable", - "Jace, Wielder of Mysteries", - "Teferi, Time Raveler", - "Chandra, Torch of Defiance", - "Ugin, the Spirit Dragon" - ], - "synergy_commanders": [ - "Adeline, Resplendent Cathar - Synergy (Planeswalkers)", - "Yawgmoth, Thran Physician - Synergy (Planeswalkers)", - "Vorinclex, Monstrous Raider - Synergy (Planeswalkers)", - "Tekuthal, Inquiry Dominus - Synergy (Proliferate)", - "Atraxa, Praetors' Voice - Synergy (Proliferate)", - "Ragavan, Nimble Pilferer - Synergy (Token Creation)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Protects and reuses planeswalkers—amplifying loyalty via proliferate and recursion for inevitability. Synergies like Planeswalkers and Proliferate reinforce the plan." + "secondary_color": "White" }, { "theme": "Support", @@ -21102,30 +6905,7 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (Midrange)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Midrange)", - "Yawgmoth, Thran Physician - Synergy (Midrange)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yahenni, Undying Partisan - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Together Forever", - "Generous Patron", - "Blitzball Stadium", - "Skyboon Evangelist", - "Aerie Auxiliary", - "Gladehart Cavalry", - "Captured by Lagacs", - "Shoulder to Shoulder" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Support leveraging synergies with Midrange and +1/+1 Counters." + "secondary_color": "White" }, { "theme": "Surge", @@ -21135,45 +6915,13 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Crush of Tentacles", - "Fall of the Titans", - "Reckless Bushwhacker", - "Overwhelming Denial", - "Comparative Analysis", - "Goblin Freerunner", - "Grip of the Roil", - "Tyrant of Valakut" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Surge leveraging synergies with Big Mana and Spells Matter." + "secondary_color": "Red" }, { "theme": "Surrakar Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Surrakar Spellblade", - "Surrakar Marauder", - "Surrakar Banisher", - "Shoreline Salvager" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Surrakar creatures into play with shared payoffs." + "secondary_color": "Blue" }, { "theme": "Surveil", @@ -21185,35 +6933,7 @@ "Rogue Kindred" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Glarb, Calamity's Augur", - "Desmond Miles", - "Fandaniel, Telophoroi Ascian", - "Aminatou, Veil Piercer", - "Victor, Valgavoth's Seneschal" - ], - "example_cards": [ - "Consider", - "Undercity Sewers", - "Underground Mortuary", - "Hedge Maze", - "Shadowy Backstreet", - "Raucous Theater", - "Commercial District", - "Thundering Falls" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Mill)", - "Sheoldred, Whispering One - Synergy (Mill)", - "Emry, Lurker of the Loch - Synergy (Mill)", - "Six - Synergy (Reanimate)", - "Kozilek, Butcher of Truth - Synergy (Reanimate)", - "Octavia, Living Thesis - Synergy (Graveyard Matters)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Continuously filters with Surveil to sculpt draws, fuel recursion, and enable graveyard synergies. Synergies like Mill and Reanimate reinforce the plan." + "secondary_color": "Black" }, { "theme": "Survival", @@ -21222,27 +6942,7 @@ "Human Kindred" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Kona, Rescue Beastie", - "Rip, Spawn Hunter", - "Varchild, Betrayer of Kjeldor - Synergy (Survivor Kindred)", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)" - ], - "example_cards": [ - "Kona, Rescue Beastie", - "Reluctant Role Model", - "Cynical Loner", - "Rip, Spawn Hunter", - "House Cartographer", - "Glimmer Seeker", - "Defiant Survivor", - "Savior of the Small" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Survival leveraging synergies with Survivor Kindred and Human Kindred." + "secondary_color": "White" }, { "theme": "Survivor Kindred", @@ -21251,27 +6951,7 @@ "Human Kindred" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Kona, Rescue Beastie", - "Varchild, Betrayer of Kjeldor", - "Rip, Spawn Hunter", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)" - ], - "example_cards": [ - "Kona, Rescue Beastie", - "Reluctant Role Model", - "Varchild, Betrayer of Kjeldor", - "Cynical Loner", - "Rip, Spawn Hunter", - "Varchild's War-Riders", - "House Cartographer", - "Glimmer Seeker" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Survivor creatures into play with shared payoffs (e.g., Survival and Human Kindred)." + "secondary_color": "White" }, { "theme": "Suspect", @@ -21281,31 +6961,7 @@ "Leave the Battlefield" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Agrus Kos, Spirit of Justice", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Blink)", - "Elesh Norn, Mother of Machines - Synergy (Enter the Battlefield)" - ], - "example_cards": [ - "Barbed Servitor", - "Case of the Stashed Skeleton", - "Agrus Kos, Spirit of Justice", - "Presumed Dead", - "Frantic Scapegoat", - "Caught Red-Handed", - "It Doesn't Add Up", - "Repeat Offender" - ], - "synergy_commanders": [ - "Kodama of the East Tree - Synergy (Enter the Battlefield)", - "Nezahal, Primal Tide - Synergy (Leave the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Suspect leveraging synergies with Blink and Enter the Battlefield." + "secondary_color": "Red" }, { "theme": "Suspend", @@ -21317,31 +6973,7 @@ "Toolbox" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "The Tenth Doctor", - "Jhoira of the Ghitu", - "Taigam, Master Opportunist", - "The Eleventh Doctor", - "Amy Pond" - ], - "example_cards": [ - "Search for Tomorrow", - "Profane Tutor", - "Delay", - "Sol Talisman", - "Resurgent Belief", - "Rousing Refrain", - "Inevitable Betrayal", - "Ancestral Vision" - ], - "synergy_commanders": [ - "Ojer Pakpatiq, Deepest Epoch // Temple of Cyclical Time - Synergy (Time Counters)", - "Etali, Primal Storm - Synergy (Exile Matters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Suspends spells early to pay off delayed powerful effects at discounted timing. Synergies like Time Travel and Time Counters reinforce the plan." + "secondary_color": "Red" }, { "theme": "Swampcycling", @@ -21352,30 +6984,7 @@ "Ramp", "Discard Matters" ], - "primary_color": "Black", - "example_commanders": [ - "Vorinclex // The Grand Evolution - Synergy (Land Types Matter)", - "Karametra, God of Harvests - Synergy (Land Types Matter)", - "Titania, Nature's Force - Synergy (Land Types Matter)", - "The Balrog of Moria - Synergy (Cycling)", - "Monstrosity of the Lake - Synergy (Cycling)" - ], - "example_cards": [ - "Troll of Khazad-dûm", - "Twisted Abomination", - "Malboro", - "Rampaging Spiketail", - "Gloomfang Mauler", - "Spectral Snatcher", - "Injector Crocodile", - "Jhessian Zombies" - ], - "synergy_commanders": [ - "Baral, Chief of Compliance - Synergy (Loot)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Swampcycling leveraging synergies with Land Types Matter and Cycling." + "primary_color": "Black" }, { "theme": "Swampwalk", @@ -21387,66 +6996,19 @@ "Horror Kindred" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Sheoldred, Whispering One", - "Wrexial, the Risen Deep", - "Sol'kanar the Swamp King", - "Witch-king of Angmar - Synergy (Wraith Kindred)", - "Lord of the Nazgûl - Synergy (Wraith Kindred)" - ], - "example_cards": [ - "Sheoldred, Whispering One", - "Wrexial, the Risen Deep", - "Filth", - "Street Wraith", - "Mire Boa", - "Quag Vampires", - "Sol'kanar the Swamp King", - "Marsh Boa" - ], - "synergy_commanders": [ - "Sauron, the Necromancer - Synergy (Wraith Kindred)", - "Chatterfang, Squirrel General - Synergy (Landwalk)", - "Shigeki, Jukai Visionary - Synergy (Snake Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Swampwalk leveraging synergies with Wraith Kindred and Landwalk." + "secondary_color": "Green" }, { "theme": "Sweep", "synergies": [], "primary_color": "White", - "secondary_color": "Black", - "example_cards": [ - "Barrel Down Sokenzan", - "Charge Across the Araba", - "Sink into Takenuma", - "Plow Through Reito" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Sweep theme and its supporting synergies." + "secondary_color": "Black" }, { "theme": "Synth Kindred", "synergies": [], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Paladin Danse, Steel Maverick", - "Nick Valentine, Private Eye" - ], - "example_cards": [ - "Paladin Danse, Steel Maverick", - "Synth Eradicator", - "Synth Infiltrator", - "Nick Valentine, Private Eye" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Synth creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Tempting offer", @@ -21456,44 +7018,12 @@ "Spellslinger" ], "primary_color": "Red", - "secondary_color": "White", - "example_commanders": [ - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)", - "Adeline, Resplendent Cathar - Synergy (Politics)", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)" - ], - "example_cards": [ - "Tempt with Discovery", - "Tempt with Bunnies", - "Tempt with Vengeance", - "Tempt with Mayhem", - "Tempt with Reflections", - "Tempt with Immortality", - "Tempt with Glory" - ], - "synergy_commanders": [ - "Talrand, Sky Summoner - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Tempting offer leveraging synergies with Politics and Spells Matter." + "secondary_color": "White" }, { "theme": "Tentacle Kindred", "synergies": [], - "primary_color": "Blue", - "example_commanders": [ - "The Watcher in the Water" - ], - "example_cards": [ - "Nadir Kraken", - "The Watcher in the Water" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Tentacle creatures into play with shared payoffs." + "primary_color": "Blue" }, { "theme": "Thalakos Kindred", @@ -21503,24 +7033,7 @@ "Combat Matters", "Little Fellas" ], - "primary_color": "Blue", - "example_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Combat Matters)" - ], - "example_cards": [ - "Thalakos Seer", - "Thalakos Deceiver", - "Thalakos Sentry", - "Thalakos Drifters", - "Thalakos Scout", - "Thalakos Dreamsower", - "Thalakos Mistfolk" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Thalakos creatures into play with shared payoffs (e.g., Shadow and Aggro)." + "primary_color": "Blue" }, { "theme": "Theft", @@ -21532,34 +7045,7 @@ "Aristocrats" ], "primary_color": "Red", - "secondary_color": "Blue", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Gonti, Lord of Luxury", - "Grenzo, Havoc Raiser", - "Emrakul, the Promised End", - "Gix, Yawgmoth Praetor" - ], - "example_cards": [ - "Deadly Dispute", - "Village Rites", - "Crop Rotation", - "Harrow", - "Diabolic Intent", - "Ragavan, Nimble Pilferer", - "Demand Answers", - "Corrupted Conviction" - ], - "synergy_commanders": [ - "Glóin, Dwarf Emissary - Synergy (Goad)", - "Slicer, Hired Muscle // Slicer, High-Speed Antagonist - Synergy (Goad)", - "Braids, Arisen Nightmare - Synergy (Sacrifice to Draw)", - "Peregrin Took - Synergy (Sacrifice to Draw)", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Acquires opponents’ permanents temporarily or permanently to convert their resources into board control. Synergies like Goad and Sacrifice to Draw reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Thopter Kindred", @@ -21571,35 +7057,7 @@ "Tokens Matter" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Liberator, Urza's Battlethopter", - "Hope of Ghirapur", - "Breya, Etherium Shaper", - "Pia Nalaar, Consul of Revival", - "Pia and Kiran Nalaar" - ], - "example_cards": [ - "Ornithopter of Paradise", - "Loyal Apprentice", - "Ornithopter", - "Liberator, Urza's Battlethopter", - "Hangarback Walker", - "Whirler Rogue", - "Gold-Forged Thopteryx", - "Efficient Construction" - ], - "synergy_commanders": [ - "Loran of the Third Path - Synergy (Artificer Kindred)", - "Sai, Master Thopterist - Synergy (Artificer Kindred)", - "Urza, Lord High Artificer - Synergy (Artificer Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Artifact Tokens)", - "Lotho, Corrupt Shirriff - Synergy (Artifact Tokens)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Thopter creatures into play with shared payoffs (e.g., Artificer Kindred and Artifact Tokens)." + "secondary_color": "Red" }, { "theme": "Threshold", @@ -21611,27 +7069,7 @@ "Mill" ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Kiora, the Rising Tide", - "Pianna, Nomad Captain - Synergy (Nomad Kindred)", - "K'rrik, Son of Yawgmoth - Synergy (Minion Kindred)", - "Chainer, Nightmare Adept - Synergy (Minion Kindred)", - "Nashi, Moon Sage's Scion - Synergy (Rat Kindred)" - ], - "example_cards": [ - "Cabal Ritual", - "Cephalid Coliseum", - "Stitch Together", - "Shoreline Looter", - "Kiora, the Rising Tide", - "Far Wanderings", - "Barbarian Ring", - "Cabal Pit" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Fills the graveyard quickly to meet Threshold counts and upgrade spell/creature efficiencies. Synergies like Nomad Kindred and Minion Kindred reinforce the plan." + "secondary_color": "Green" }, { "theme": "Thrull Kindred", @@ -21643,44 +7081,15 @@ "Tokens Matter" ], "primary_color": "Black", - "secondary_color": "White", - "example_commanders": [ - "Tevesh Szat, Doom of Fools", - "Endrek Sahr, Master Breeder", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)", - "Sheoldred, the Apocalypse - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Blood Pet", - "Tevesh Szat, Doom of Fools", - "Endrek Sahr, Master Breeder", - "Szat's Will", - "Thrull Parasite", - "Doorkeeper Thrull", - "Basal Thrull", - "Soul Exchange" - ], - "synergy_commanders": [ - "Elas il-Kor, Sadistic Pilgrim - Synergy (Aristocrats)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Aristocrats)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Thrull creatures into play with shared payoffs (e.g., Sacrifice Matters and Aristocrats)." + "secondary_color": "White" }, { "theme": "Tide Counters", - "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Homarid", - "Tidal Influence" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates tide counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Blue" }, { "theme": "Tiefling Kindred", @@ -21692,70 +7101,19 @@ "Leave the Battlefield" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Karlach, Fury of Avernus", - "Prosper, Tome-Bound", - "Casal, Lurkwood Pathfinder // Casal, Pathbreaker Owlbear", - "Zevlor, Elturel Exile", - "Farideh, Devil's Chosen" - ], - "example_cards": [ - "Grim Hireling", - "Karlach, Fury of Avernus", - "Prosper, Tome-Bound", - "Elturel Survivors", - "Hoard Robber", - "Guildsworn Prowler", - "Passageway Seer", - "Death-Priest of Myrkul" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Rogue Kindred)", - "Sakashima of a Thousand Faces - Synergy (Rogue Kindred)", - "Rankle, Master of Pranks - Synergy (Rogue Kindred)", - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Captain Lannery Storm - Synergy (Outlaw Kindred)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Tiefling creatures into play with shared payoffs (e.g., Rogue Kindred and Outlaw Kindred)." + "secondary_color": "Red" }, { "theme": "Time Counters", "synergies": [ + "Counters Matter", + "Proliferate", "Vanishing", "Time Travel", - "Impending", - "Suspend", - "Exile Matters" + "Impending" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Ojer Pakpatiq, Deepest Epoch // Temple of Cyclical Time", - "The Tenth Doctor", - "Jhoira of the Ghitu", - "The War Doctor", - "Taigam, Master Opportunist" - ], - "example_cards": [ - "Search for Tomorrow", - "Profane Tutor", - "Delay", - "As Foretold", - "Dreamtide Whale", - "Sol Talisman", - "Resurgent Belief", - "Overlord of the Hauntwoods" - ], - "synergy_commanders": [ - "Idris, Soul of the TARDIS - Synergy (Vanishing)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Accumulates time counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "White" }, { "theme": "Time Travel", @@ -21766,103 +7124,31 @@ "Counters Matter" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "The Tenth Doctor", - "Ojer Pakpatiq, Deepest Epoch // Temple of Cyclical Time - Synergy (Time Counters)", - "Jhoira of the Ghitu - Synergy (Time Counters)", - "Taigam, Master Opportunist - Synergy (Suspend)", - "The Eleventh Doctor - Synergy (Suspend)" - ], - "example_cards": [ - "The Tenth Doctor", - "Wibbly-wobbly, Timey-wimey", - "Time Beetle", - "Rotating Fireplace", - "The Parting of the Ways", - "All of History, All at Once", - "The Wedding of River Song", - "The Girl in the Fireplace" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Exile Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Time Travel leveraging synergies with Time Counters and Suspend." + "secondary_color": "Red" }, { "theme": "Token Creation", "synergies": [ + "Tokens Matter", "Creature Tokens", "Populate", - "Tokens Matter", "Artifact Tokens", "Treasure" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Mondrak, Glory Dominus", - "Lotho, Corrupt Shirriff", - "Adeline, Resplendent Cathar", - "Talrand, Sky Summoner" - ], - "example_cards": [ - "Beast Within", - "An Offer You Can't Refuse", - "Generous Gift", - "Smothering Tithe", - "Swan Song", - "Urza's Saga", - "Deadly Dispute", - "Black Market Connections" - ], - "synergy_commanders": [ - "Trostani, Selesnya's Voice - Synergy (Populate)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Tokens Matter and Creature Tokens reinforce the plan." + "secondary_color": "Green" }, { "theme": "Token Modification", "synergies": [ + "Tokens Matter", "Clones", "Planeswalkers", "Super Friends", - "Token Creation", - "Tokens Matter" + "Token Creation" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Mondrak, Glory Dominus", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Peregrin Took", - "Vorinclex, Monstrous Raider", - "Chatterfang, Squirrel General" - ], - "example_cards": [ - "Doubling Season", - "Anointed Procession", - "Mondrak, Glory Dominus", - "Parallel Lives", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Peregrin Took", - "Xorn", - "Innkeeper's Talent" - ], - "synergy_commanders": [ - "Kiki-Jiki, Mirror Breaker - Synergy (Clones)", - "Sakashima of a Thousand Faces - Synergy (Clones)", - "Adeline, Resplendent Cathar - Synergy (Planeswalkers)", - "Yawgmoth, Thran Physician - Synergy (Planeswalkers)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Clones and Planeswalkers reinforce the plan." + "secondary_color": "Green" }, { "theme": "Tokens Matter", @@ -21874,30 +7160,7 @@ "Treasure" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Mondrak, Glory Dominus", - "Lotho, Corrupt Shirriff", - "Adeline, Resplendent Cathar", - "Talrand, Sky Summoner" - ], - "example_cards": [ - "Beast Within", - "An Offer You Can't Refuse", - "Generous Gift", - "Smothering Tithe", - "Swan Song", - "Urza's Saga", - "Deadly Dispute", - "Black Market Connections" - ], - "synergy_commanders": [ - "Trostani, Selesnya's Voice - Synergy (Populate)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Token Creation and Creature Tokens reinforce the plan." + "secondary_color": "Green" }, { "theme": "Toolbox", @@ -21909,32 +7172,7 @@ "Removal" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Junji, the Midnight Sky", - "Koma, Cosmos Serpent", - "Atsushi, the Blazing Sky", - "Ghalta and Mavren", - "Grenzo, Havoc Raiser" - ], - "example_cards": [ - "Urza's Saga", - "Worldly Tutor", - "Abrade", - "Return of the Wildspeaker", - "Boros Charm", - "Crop Rotation", - "Inventors' Fair", - "Rakdos Charm" - ], - "synergy_commanders": [ - "Invasion of Ikoria // Zilortha, Apex of Ikoria - Synergy (Bracket:TutorNonland)", - "Magda, Brazen Outlaw - Synergy (Bracket:TutorNonland)", - "Yawgmoth, Thran Physician - Synergy (Proliferate)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Toolbox leveraging synergies with Entwine and Bracket:TutorNonland." + "secondary_color": "White" }, { "theme": "Topdeck", @@ -21946,34 +7184,7 @@ "Kinship" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "The Reality Chip", - "Loot, Exuberant Explorer", - "Kinnan, Bonder Prodigy", - "Shigeki, Jukai Visionary", - "Gonti, Lord of Luxury" - ], - "example_cards": [ - "Path of Ancestry", - "Brainstorm", - "Vampiric Tutor", - "Herald's Horn", - "Ponder", - "Mystic Sanctuary", - "Mosswort Bridge", - "Preordain" - ], - "synergy_commanders": [ - "The Scarab God - Synergy (Scry)", - "Thassa, God of the Sea - Synergy (Scry)", - "Thrasios, Triton Hero - Synergy (Scry)", - "Glarb, Calamity's Augur - Synergy (Surveil)", - "Desmond Miles - Synergy (Surveil)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Topdeck leveraging synergies with Scry and Surveil." + "secondary_color": "Green" }, { "theme": "Toughness Matters", @@ -21985,34 +7196,7 @@ "Kobold Kindred" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Azusa, Lost but Seeking", - "Sheoldred, the Apocalypse", - "Vito, Thorn of the Dusk Rose", - "Selvala, Heart of the Wilds", - "Emry, Lurker of the Loch" - ], - "example_cards": [ - "Birds of Paradise", - "Blood Artist", - "Delighted Halfling", - "Beast Whisperer", - "Mirkwood Bats", - "Ornithopter of Paradise", - "Gray Merchant of Asphodel", - "Professional Face-Breaker" - ], - "synergy_commanders": [ - "The Pride of Hull Clade - Synergy (Defender)", - "Sokrates, Athenian Teacher - Synergy (Defender)", - "Pramikon, Sky Rampart - Synergy (Defender)", - "Atla Palani, Nest Tender - Synergy (Egg Kindred)", - "Rammas Echor, Ancient Shield - Synergy (Wall Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Toughness Matters leveraging synergies with Defender and Egg Kindred." + "secondary_color": "White" }, { "theme": "Toxic", @@ -22024,34 +7208,7 @@ "Artifacts Matter" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Skrelv, Defector Mite", - "Karumonix, the Rat King", - "Ixhel, Scion of Atraxa", - "Vishgraz, the Doomhive", - "Venser, Corpse Puppet" - ], - "example_cards": [ - "Skrelv, Defector Mite", - "Myr Convert", - "Bloated Contaminator", - "Blightbelly Rat", - "Tyrranax Rex", - "Venerated Rotpriest", - "Contaminant Grafter", - "Karumonix, the Rat King" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Poison Counters)", - "Skithiryx, the Blight Dragon - Synergy (Poison Counters)", - "Yawgmoth, Thran Physician - Synergy (Infect)", - "Vorinclex, Monstrous Raider - Synergy (Infect)", - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Leverages Infect/Toxic pressure and proliferate to accelerate poison win thresholds. Synergies like Poison Counters and Infect reinforce the plan." + "secondary_color": "Black" }, { "theme": "Toy Kindred", @@ -22060,31 +7217,7 @@ "Little Fellas" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Marvin, Murderous Mimic", - "Arabella, Abandoned Doll", - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Lotho, Corrupt Shirriff - Synergy (Artifacts Matter)" - ], - "example_cards": [ - "Marvin, Murderous Mimic", - "Twitching Doll", - "Arabella, Abandoned Doll", - "Giggling Skitterspike", - "Dollmaker's Shop // Porcelain Gallery", - "Unable to Scream", - "Splitskin Doll", - "Clockwork Percussionist" - ], - "synergy_commanders": [ - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Toy creatures into play with shared payoffs (e.g., Artifacts Matter and Little Fellas)." + "secondary_color": "Red" }, { "theme": "Training", @@ -22096,33 +7229,7 @@ "Toughness Matters" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Torens, Fist of the Angels", - "Jenny Flint", - "Vikya, Scorching Stalwart", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Torens, Fist of the Angels", - "Hopeful Initiate", - "Jenny Flint", - "Savior of Ollenbock", - "Vikya, Scorching Stalwart", - "Cloaked Cadet", - "Parish-Blade Trainee", - "Apprentice Sharpshooter" - ], - "synergy_commanders": [ - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Syr Konrad, the Grim - Synergy (Human Kindred)", - "Azusa, Lost but Seeking - Synergy (Human Kindred)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Training leveraging synergies with +1/+1 Counters and Human Kindred." + "secondary_color": "Green" }, { "theme": "Trample", @@ -22134,35 +7241,7 @@ "Boar Kindred" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Ghalta, Primal Hunger", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Ghalta, Stampede Tyrant", - "Vorinclex, Monstrous Raider", - "Atarka, World Render" - ], - "example_cards": [ - "Rampaging Baloths", - "Ghalta, Primal Hunger", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Hellkite Tyrant", - "Managorger Hydra", - "Nyxbloom Ancient", - "Ghalta, Stampede Tyrant", - "Vorinclex, Monstrous Raider" - ], - "synergy_commanders": [ - "Mr. Orfeo, the Boulder - Synergy (Rhino Kindred)", - "Ghired, Conclave Exile - Synergy (Rhino Kindred)", - "Roon of the Hidden Realm - Synergy (Rhino Kindred)", - "Grothama, All-Devouring - Synergy (Wurm Kindred)", - "Baru, Fist of Krosa - Synergy (Wurm Kindred)", - "The Goose Mother - Synergy (Hydra Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Accelerates mana ahead of curve, then converts surplus into oversized threats or multi-spell bursts. Synergies like Rhino Kindred and Wurm Kindred reinforce the plan." + "secondary_color": "Red" }, { "theme": "Transform", @@ -22174,32 +7253,7 @@ "Battles Matter" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Veyran, Voice of Duality", - "Ojer Axonil, Deepest Might // Temple of Power", - "Urabrask // The Great Work" - ], - "example_cards": [ - "Mox Opal", - "Storm-Kiln Artist", - "Archmage Emeritus", - "Dispatch", - "Growing Rites of Itlimoc // Itlimoc, Cradle of the Sun", - "Etali, Primal Conqueror // Etali, Primal Sickness", - "Puresteel Paladin", - "Ojer Taq, Deepest Foundation // Temple of Civilization" - ], - "synergy_commanders": [ - "Brimaz, Blight of Oreskos - Synergy (Incubator Token)", - "Glissa, Herald of Predation - Synergy (Incubator Token)", - "Jor Kadeen, the Prevailer - Synergy (Metalcraft)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Transform leveraging synergies with Incubator Token and Incubate." + "secondary_color": "Red" }, { "theme": "Transmute", @@ -22210,104 +7264,31 @@ "Spellslinger" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Invasion of Ikoria // Zilortha, Apex of Ikoria - Synergy (Bracket:TutorNonland)", - "Magda, Brazen Outlaw - Synergy (Bracket:TutorNonland)", - "Razaketh, the Foulblooded - Synergy (Bracket:TutorNonland)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)", - "Sheoldred, the Apocalypse - Synergy (Toughness Matters)" - ], - "example_cards": [ - "Muddle the Mixture", - "Drift of Phantasms", - "Tolaria West", - "Dimir Infiltrator", - "Dimir House Guard", - "Perplex", - "Dizzy Spell", - "Shred Memory" - ], - "synergy_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Transmute leveraging synergies with Bracket:TutorNonland and Toughness Matters." + "secondary_color": "Black" }, { "theme": "Treasure", "synergies": [ + "Treasure Token", "Artifact Tokens", - "Sacrifice", - "Combo", - "Tokens", - "Treasure Token" + "Pirate Kindred", + "Citizen Kindred", + "Token Creation" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Lotho, Corrupt Shirriff", - "Old Gnawbone", - "Captain Lannery Storm", - "Mahadi, Emporium Master" - ], - "example_cards": [ - "An Offer You Can't Refuse", - "Smothering Tithe", - "Deadly Dispute", - "Black Market Connections", - "Tireless Provisioner", - "Big Score", - "Professional Face-Breaker", - "Storm-Kiln Artist" - ], - "synergy_commanders": [ - "Peregrin Took - Synergy (Artifact Tokens)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Produces Treasure tokens as flexible ramp & combo fuel enabling explosive payoff turns. Synergies like Artifact Tokens and Sacrifice reinforce the plan." + "secondary_color": "Black" }, { "theme": "Treasure Token", "synergies": [ "Sacrifice Matters", - "Ramp", "Artifacts Matter", + "Ramp", "Treasure", "Artifact Tokens" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Ragavan, Nimble Pilferer", - "Lotho, Corrupt Shirriff", - "Old Gnawbone", - "Captain Lannery Storm", - "Mahadi, Emporium Master" - ], - "example_cards": [ - "An Offer You Can't Refuse", - "Smothering Tithe", - "Deadly Dispute", - "Black Market Connections", - "Big Score", - "Professional Face-Breaker", - "Storm-Kiln Artist", - "Pitiless Plunderer" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)", - "Sheoldred, the Apocalypse - Synergy (Sacrifice Matters)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Azusa, Lost but Seeking - Synergy (Ramp)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Goes wide with creature tokens then converts mass into damage, draw, drain, or sacrifice engines. Synergies like Sacrifice Matters and Artifacts Matter reinforce the plan." + "secondary_color": "Black" }, { "theme": "Treefolk Kindred", @@ -22319,34 +7300,7 @@ "Trample" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Six", - "Yedora, Grave Gardener", - "Treebeard, Gracious Host", - "Nemata, Primeval Warden", - "Doran, the Siege Tower" - ], - "example_cards": [ - "Faeburrow Elder", - "Six", - "Lignify", - "Wrenn and Seven", - "Scurry Oak", - "Murmuring Bosk", - "Yedora, Grave Gardener", - "Woodfall Primus" - ], - "synergy_commanders": [ - "Tatyova, Benthic Druid - Synergy (Druid Kindred)", - "Rishkar, Peema Renegade - Synergy (Druid Kindred)", - "Jaheira, Friend of the Forest - Synergy (Druid Kindred)", - "Kodama of the West Tree - Synergy (Reach)", - "Kiki-Jiki, Mirror Breaker - Synergy (Shaman Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Treefolk creatures into play with shared payoffs (e.g., Druid Kindred and Reach)." + "secondary_color": "Black" }, { "theme": "Tribute", @@ -22358,46 +7312,13 @@ "Counters Matter" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)", - "Selvala, Heart of the Wilds - Synergy (Blink)", - "Sheoldred, Whispering One - Synergy (Blink)" - ], - "example_cards": [ - "Nessian Wilds Ravager", - "Oracle of Bones", - "Flame-Wreathed Phoenix", - "Pharagax Giant", - "Snake of the Golden Grove", - "Fanatic of Xenagos", - "Siren of the Fanged Coast", - "Nessian Demolok" - ], - "synergy_commanders": [ - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Enter the Battlefield)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Tribute leveraging synergies with +1/+1 Counters and Blink." + "secondary_color": "Green" }, { "theme": "Trilobite Kindred", "synergies": [], "primary_color": "Blue", - "secondary_color": "Red", - "example_cards": [ - "Cryptic Trilobite", - "Drownyard Lurker", - "Scuttling Sliver", - "Shore Keeper", - "Electryte" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Trilobite creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Troll Kindred", @@ -22409,35 +7330,7 @@ "+1/+1 Counters" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Gyome, Master Chef", - "Svella, Ice Shaper", - "Thrun, Breaker of Silence", - "Grismold, the Dreadsower", - "Varolz, the Scar-Striped" - ], - "example_cards": [ - "Golgari Grave-Troll", - "Guardian Augmenter", - "Troll of Khazad-dûm", - "Clackbridge Troll", - "Gyome, Master Chef", - "Svella, Ice Shaper", - "Thrun, Breaker of Silence", - "Feasting Troll King" - ], - "synergy_commanders": [ - "Kiki-Jiki, Mirror Breaker - Synergy (Shaman Kindred)", - "Delina, Wild Mage - Synergy (Shaman Kindred)", - "Meren of Clan Nel Toth - Synergy (Shaman Kindred)", - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Troll creatures into play with shared payoffs (e.g., Shaman Kindred and Trample)." + "secondary_color": "Black" }, { "theme": "Turtle Kindred", @@ -22449,35 +7342,7 @@ "Interaction" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Kogla and Yidaro", - "The Pride of Hull Clade", - "Archelos, Lagoon Mystic", - "Yidaro, Wandering Monster", - "Gorex, the Tombshell" - ], - "example_cards": [ - "Kappa Cannoneer", - "Kogla and Yidaro", - "Steelbane Hydra", - "Blossoming Tortoise", - "Colossal Skyturtle", - "Fecund Greenshell", - "Bedrock Tortoise", - "Snapping Voidcraw" - ], - "synergy_commanders": [ - "Adrix and Nev, Twincasters - Synergy (Ward)", - "Miirym, Sentinel Wyrm - Synergy (Ward)", - "Ulamog, the Defiler - Synergy (Ward)", - "Toski, Bearer of Secrets - Synergy (Protection)", - "Purphoros, God of the Forge - Synergy (Protection)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Turtle creatures into play with shared payoffs (e.g., Ward and Protection)." + "secondary_color": "Green" }, { "theme": "Tyranid Kindred", @@ -22489,32 +7354,7 @@ "Counters Matter" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Ghyrson Starn, Kelermorph", - "Old One Eye", - "Magus Lucea Kane", - "The Red Terror", - "Deathleaper, Terror Weapon" - ], - "example_cards": [ - "Biophagus", - "Ghyrson Starn, Kelermorph", - "Atalan Jackal", - "Sporocyst", - "Nexos", - "Tyrant Guard", - "Tervigon", - "Aberrant" - ], - "synergy_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (X Spells)", - "Goreclaw, Terror of Qal Sisma - Synergy (X Spells)", - "Azusa, Lost but Seeking - Synergy (Ramp)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Tyranid creatures into play with shared payoffs (e.g., Ravenous and X Spells)." + "secondary_color": "Red" }, { "theme": "Umbra armor", @@ -22526,30 +7366,7 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Blue", - "example_commanders": [ - "Katilda, Dawnhart Martyr // Katilda's Rising Dawn - Synergy (Enchant)", - "Journey to Eternity // Atzal, Cave of Eternity - Synergy (Enchant)", - "On Serra's Wings - Synergy (Enchant)", - "Sram, Senior Edificer - Synergy (Auras)", - "Kodama of the West Tree - Synergy (Auras)" - ], - "example_cards": [ - "Bear Umbra", - "Snake Umbra", - "Hyena Umbra", - "Lion Umbra", - "Spider Umbra", - "Eel Umbra", - "Boar Umbra", - "Felidar Umbra" - ], - "synergy_commanders": [ - "Purphoros, God of the Forge - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Umbra armor leveraging synergies with Enchant and Auras." + "secondary_color": "Blue" }, { "theme": "Unconditional Draw", @@ -22561,30 +7378,7 @@ "Gift" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Tatyova, Benthic Druid", - "Yawgmoth, Thran Physician", - "Padeem, Consul of Innovation", - "The Gitrog Monster", - "Losheel, Clockwork Scholar" - ], - "example_cards": [ - "Skullclamp", - "Brainstorm", - "War Room", - "Ponder", - "Black Market Connections", - "Growth Spiral", - "Big Score", - "Preordain" - ], - "synergy_commanders": [ - "Jaxis, the Troublemaker - Synergy (Blitz)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around Unconditional Draw leveraging synergies with Dredge and Learn." + "secondary_color": "Black" }, { "theme": "Undaunted", @@ -22596,28 +7390,7 @@ "Spellslinger" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Braids, Arisen Nightmare - Synergy (Politics)", - "Loran of the Third Path - Synergy (Politics)", - "Adeline, Resplendent Cathar - Synergy (Politics)", - "Ghalta, Primal Hunger - Synergy (Cost Reduction)", - "Emry, Lurker of the Loch - Synergy (Cost Reduction)" - ], - "example_cards": [ - "Curtains' Call", - "Divergent Transformations", - "Coastal Breach", - "Sublime Exhalation", - "Seeds of Renewal", - "Elspeth's Devotee" - ], - "synergy_commanders": [ - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Undaunted leveraging synergies with Politics and Cost Reduction." + "secondary_color": "Black" }, { "theme": "Undergrowth", @@ -22629,31 +7402,7 @@ "Leave the Battlefield" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Izoni, Thousand-Eyed", - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Six - Synergy (Reanimate)", - "Sheoldred, Whispering One - Synergy (Mill)" - ], - "example_cards": [ - "Izoni, Thousand-Eyed", - "Mausoleum Secrets", - "Hatchery Spider", - "Lotleth Giant", - "Kraul Harpooner", - "Molderhulk", - "Kraul Foragers", - "Rhizome Lurcher" - ], - "synergy_commanders": [ - "Kozilek, Butcher of Truth - Synergy (Mill)", - "Selvala, Heart of the Wilds - Synergy (Blink)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Undergrowth leveraging synergies with Reanimate and Mill." + "secondary_color": "Black" }, { "theme": "Undying", @@ -22665,33 +7414,7 @@ "Counters Matter" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Hancock, Ghoulish Mayor", - "Witch-king, Sky Scourge", - "Nardole, Resourceful Cyborg", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Gleeful Arsonist", - "Flayer of the Hatebound", - "Hancock, Ghoulish Mayor", - "Young Wolf", - "Butcher Ghoul", - "Geralf's Messenger", - "Pyreheart Wolf", - "Witch-king, Sky Scourge" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Sacrifice Matters)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Aristocrats)", - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Aristocrats)", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Undying leveraging synergies with Sacrifice Matters and Aristocrats." + "secondary_color": "Red" }, { "theme": "Unearth", @@ -22703,30 +7426,7 @@ "Mill" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Syr Konrad, the Grim - Synergy (Reanimate)", - "Emry, Lurker of the Loch - Synergy (Reanimate)", - "Six - Synergy (Reanimate)", - "Octavia, Living Thesis - Synergy (Graveyard Matters)", - "Extus, Oriq Overlord // Awaken the Blood Avatar - Synergy (Graveyard Matters)" - ], - "example_cards": [ - "Molten Gatekeeper", - "Cityscape Leveler", - "Priest of Fell Rites", - "Perennial Behemoth", - "Terisian Mindbreaker", - "Fatestitcher", - "Chronomancer", - "Canoptek Tomb Sentinel" - ], - "synergy_commanders": [ - "Imotekh the Stormlord - Synergy (Necron Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Unearth leveraging synergies with Reanimate and Graveyard Matters." + "secondary_color": "Red" }, { "theme": "Unicorn Kindred", @@ -22738,33 +7438,7 @@ "Enchantments Matter" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Emiel the Blessed", - "Lathiel, the Bounteous Dawn", - "Thurid, Mare of Destiny", - "Tatyova, Benthic Druid - Synergy (Lifegain)", - "Sheoldred, the Apocalypse - Synergy (Lifegain)" - ], - "example_cards": [ - "Emiel the Blessed", - "Good-Fortune Unicorn", - "Lathiel, the Bounteous Dawn", - "Summon: Ixion", - "Blessed Sanctuary", - "Regal Bunnicorn", - "Loyal Unicorn", - "Celestial Unicorn" - ], - "synergy_commanders": [ - "Vito, Thorn of the Dusk Rose - Synergy (Lifegain)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Life Matters)", - "Mangara, the Diplomat - Synergy (Life Matters)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Unicorn creatures into play with shared payoffs (e.g., Lifegain and Life Matters)." + "secondary_color": "Green" }, { "theme": "Unleash", @@ -22776,32 +7450,7 @@ "Combat Matters" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Tesak, Judith's Hellhound", - "Exava, Rakdos Blood Witch", - "Rishkar, Peema Renegade - Synergy (+1/+1 Counters)", - "Krenko, Tin Street Kingpin - Synergy (+1/+1 Counters)", - "Yawgmoth, Thran Physician - Synergy (+1/+1 Counters)" - ], - "example_cards": [ - "Tesak, Judith's Hellhound", - "Thrill-Kill Assassin", - "Exava, Rakdos Blood Witch", - "Rakdos Cackler", - "Chaos Imps", - "Grim Roustabout", - "Carnival Hellsteed", - "Hellhole Flailer" - ], - "synergy_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Yahenni, Undying Partisan - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Voltron)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Unleash leveraging synergies with +1/+1 Counters and Counters Matter." + "secondary_color": "Black" }, { "theme": "Valiant", @@ -22809,25 +7458,7 @@ "Mouse Kindred" ], "primary_color": "White", - "secondary_color": "Red", - "example_commanders": [ - "Arthur, Marigold Knight - Synergy (Mouse Kindred)", - "Mabel, Heir to Cragflame - Synergy (Mouse Kindred)", - "Tusk and Whiskers - Synergy (Mouse Kindred)" - ], - "example_cards": [ - "Heartfire Hero", - "Emberheart Challenger", - "Whiskervale Forerunner", - "Nettle Guard", - "Seedglaive Mentor", - "Flowerfoot Swordmaster", - "Whiskerquill Scribe", - "Mouse Trapper" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Valiant leveraging synergies with Mouse Kindred." + "secondary_color": "Red" }, { "theme": "Vampire Kindred", @@ -22839,34 +7470,7 @@ "Lifegain" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Vito, Thorn of the Dusk Rose", - "Yahenni, Undying Partisan", - "Elenda, the Dusk Rose", - "Drana, Liberator of Malakir", - "Ghalta and Mavren" - ], - "example_cards": [ - "Blood Artist", - "Viscera Seer", - "Welcoming Vampire", - "Vito, Thorn of the Dusk Rose", - "Cruel Celebrant", - "Bloodletter of Aclazotz", - "Yahenni, Undying Partisan", - "Twilight Prophet" - ], - "synergy_commanders": [ - "Old Rutstein - Synergy (Blood Token)", - "Kamber, the Plunderer - Synergy (Blood Token)", - "Strefan, Maurer Progenitor - Synergy (Blood Token)", - "Heliod, Sun-Crowned - Synergy (Lifegain Triggers)", - "Emrakul, the World Anew - Synergy (Madness)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Vampire creatures into play with shared payoffs (e.g., Blood Token and Lifegain Triggers)." + "secondary_color": "Red" }, { "theme": "Vanishing", @@ -22876,44 +7480,13 @@ "Enchantments Matter" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Idris, Soul of the TARDIS", - "Ojer Pakpatiq, Deepest Epoch // Temple of Cyclical Time - Synergy (Time Counters)", - "The Tenth Doctor - Synergy (Time Counters)", - "Jhoira of the Ghitu - Synergy (Time Counters)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)" - ], - "example_cards": [ - "Dreamtide Whale", - "Deep Forest Hermit", - "Out of Time", - "Four Knocks", - "Reality Acid", - "Regenerations Restored", - "Chronozoa", - "Crack in Time" - ], - "synergy_commanders": [ - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Vanishing leveraging synergies with Time Counters and Counters Matter." + "secondary_color": "Blue" }, { "theme": "Varmint Kindred", "synergies": [], "primary_color": "Black", - "secondary_color": "Green", - "example_cards": [ - "Thieving Varmint", - "Voracious Varmint" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Varmint creatures into play with shared payoffs." + "secondary_color": "Green" }, { "theme": "Vedalken Kindred", @@ -22924,144 +7497,41 @@ "Resource Engine", "Wizard Kindred" ], - "primary_color": "Blue", - "example_commanders": [ - "Padeem, Consul of Innovation", - "Unctus, Grand Metatect", - "Troyan, Gutsy Explorer", - "Morska, Undersea Sleuth", - "Nin, the Pain Artist" - ], - "example_cards": [ - "Etherium Sculptor", - "Padeem, Consul of Innovation", - "Forensic Gadgeteer", - "Jace's Archivist", - "Master of Etherium", - "Ingenious Infiltrator", - "Vedalken Archmage", - "Unctus, Grand Metatect" - ], - "synergy_commanders": [ - "Loran of the Third Path - Synergy (Artificer Kindred)", - "Sai, Master Thopterist - Synergy (Artificer Kindred)", - "Urza, Lord High Artificer - Synergy (Artificer Kindred)", - "Dr. Madison Li - Synergy (Energy Counters)", - "Satya, Aetherflux Genius - Synergy (Energy Counters)", - "Liberty Prime, Recharged - Synergy (Energy)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Vedalken creatures into play with shared payoffs (e.g., Artificer Kindred and Energy Counters)." + "primary_color": "Blue" }, { "theme": "Vehicles", "synergies": [ "Artifacts Matter", "Crew", + "Vehicles", "Pilot Kindred", - "Living metal", - "Convert" + "Living metal" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Sram, Senior Edificer", - "Shorikai, Genesis Engine", - "The Indomitable", - "Weatherlight", - "Skysovereign, Consul Flagship" - ], - "example_cards": [ - "Sram, Senior Edificer", - "Hedge Shredder", - "Smuggler's Copter", - "Imposter Mech", - "Shorikai, Genesis Engine", - "The Indomitable", - "Weatherlight", - "Skysovereign, Consul Flagship" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Artifacts Matter)", - "Loran of the Third Path - Synergy (Artifacts Matter)", - "Lotho, Corrupt Shirriff - Synergy (Artifacts Matter)", - "Cid, Freeflier Pilot - Synergy (Pilot Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Leverages efficient Vehicles and crew bodies to field evasive, sweep-resilient threats. Synergies like Artifacts Matter and Crew reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Venture into the dungeon", "synergies": [ + "Historics Matter", + "Legends Matter", "Aggro", "Combat Matters", - "Artifacts Matter", - "Toughness Matters" + "Artifacts Matter" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Acererak the Archlich", - "Nadaar, Selfless Paladin", - "Sefris of the Hidden Ways", - "Barrowin of Clan Undurr", - "Varis, Silverymoon Ranger" - ], - "example_cards": [ - "Acererak the Archlich", - "Thorough Investigation", - "Nadaar, Selfless Paladin", - "Radiant Solar", - "Midnight Pathlighter", - "Dungeon Map", - "Yuan-Ti Malison", - "Triumphant Adventurer" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Aggro)", - "Ragavan, Nimble Pilferer - Synergy (Aggro)", - "Toski, Bearer of Secrets - Synergy (Aggro)", - "Kutzil, Malamet Exemplar - Synergy (Combat Matters)", - "Sheoldred, the Apocalypse - Synergy (Combat Matters)", - "Loran of the Third Path - Synergy (Artifacts Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Repeats Venture into the Dungeon steps to layer incremental room rewards into compounding advantage. Synergies like Aggro and Combat Matters reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Verse Counters", "synergies": [ "Counters Matter", + "Proliferate", "Enchantments Matter" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Yisan, the Wanderer Bard", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Krenko, Tin Street Kingpin - Synergy (Counters Matter)", - "Sram, Senior Edificer - Synergy (Enchantments Matter)" - ], - "example_cards": [ - "Yisan, the Wanderer Bard", - "Aria of Flame", - "Lost Isle Calling", - "Vile Requiem", - "Lilting Refrain", - "Rumbling Crescendo", - "Recantation", - "Midsummer Revel" - ], - "synergy_commanders": [ - "Purphoros, God of the Forge - Synergy (Enchantments Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates verse counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Green" }, { "theme": "Vigilance", @@ -23073,35 +7543,7 @@ "Cat Kindred" ], "primary_color": "White", - "secondary_color": "Green", - "example_commanders": [ - "Loran of the Third Path", - "Adeline, Resplendent Cathar", - "Elesh Norn, Grand Cenobite", - "Boromir, Warden of the Tower", - "Ojer Taq, Deepest Foundation // Temple of Civilization" - ], - "example_cards": [ - "Sun Titan", - "Loran of the Third Path", - "Adeline, Resplendent Cathar", - "Faeburrow Elder", - "Elesh Norn, Grand Cenobite", - "Boromir, Warden of the Tower", - "Ojer Taq, Deepest Foundation // Temple of Civilization", - "Enduring Vitality" - ], - "synergy_commanders": [ - "Avacyn, Angel of Hope - Synergy (Angel Kindred)", - "Aurelia, the Warleader - Synergy (Angel Kindred)", - "Gisela, Blade of Goldnight - Synergy (Angel Kindred)", - "The Gitrog, Ravenous Ride - Synergy (Mount Kindred)", - "Calamity, Galloping Inferno - Synergy (Mount Kindred)", - "Zeriam, Golden Wind - Synergy (Griffin Kindred)" - ], - "popularity_bucket": "Common", - "editorial_quality": "draft", - "description": "Builds around Vigilance leveraging synergies with Angel Kindred and Mount Kindred." + "secondary_color": "Green" }, { "theme": "Void", @@ -23113,42 +7555,15 @@ "Aggro" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Alpharael, Stonechosen", - "Haliya, Guided by Light - Synergy (Warp)", - "Tannuk, Steadfast Second - Synergy (Warp)", - "Etali, Primal Storm - Synergy (Exile Matters)", - "Ragavan, Nimble Pilferer - Synergy (Exile Matters)" - ], - "example_cards": [ - "Elegy Acolyte", - "Decode Transmissions", - "Alpharael, Stonechosen", - "Chorale of the Void", - "Hymn of the Faller", - "Tragic Trajectory", - "Interceptor Mechan", - "Hylderblade" - ], - "synergy_commanders": [ - "Braids, Arisen Nightmare - Synergy (Card Draw)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Void leveraging synergies with Warp and Exile Matters." + "secondary_color": "Red" }, { "theme": "Void Counters", - "synergies": [], - "primary_color": "Black", - "example_cards": [ - "Dauthi Voidwalker", - "Sphere of Annihilation" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates void counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black" }, { "theme": "Voltron", @@ -23160,31 +7575,7 @@ "Equipment" ], "primary_color": "Green", - "secondary_color": "White", - "example_commanders": [ - "Sram, Senior Edificer", - "Rishkar, Peema Renegade", - "Krenko, Tin Street Kingpin", - "Kodama of the West Tree", - "Danitha Capashen, Paragon" - ], - "example_cards": [ - "Swiftfoot Boots", - "Lightning Greaves", - "Skullclamp", - "Rhythm of the Wild", - "Wild Growth", - "Karn's Bastion", - "Animate Dead", - "Hardened Scales" - ], - "synergy_commanders": [ - "Ardenn, Intrepid Archaeologist - Synergy (Auras)", - "Codsworth, Handy Helper - Synergy (Auras)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Stacks auras, equipment, and protection on a single threat to push commander damage with layered resilience. Synergies like Equipment Matters and Auras reinforce the plan." + "secondary_color": "White" }, { "theme": "Wall Kindred", @@ -23196,30 +7587,7 @@ "Stax" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Pramikon, Sky Rampart", - "The Pride of Hull Clade - Synergy (Defender)", - "Sokrates, Athenian Teacher - Synergy (Defender)", - "Bristly Bill, Spine Sower - Synergy (Plant Kindred)", - "The Necrobloom - Synergy (Plant Kindred)" - ], - "example_cards": [ - "Crashing Drawbridge", - "Wall of Omens", - "Electrostatic Field", - "Wall of Blossoms", - "Tinder Wall", - "Fog Bank", - "Overgrown Battlement", - "Weathered Sentinels" - ], - "synergy_commanders": [ - "Meloku the Clouded Mirror - Synergy (Illusion Kindred)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Wall creatures into play with shared payoffs (e.g., Defender and Plant Kindred)." + "secondary_color": "Blue" }, { "theme": "Ward", @@ -23231,35 +7599,7 @@ "Stax" ], "primary_color": "Blue", - "secondary_color": "Green", - "example_commanders": [ - "Adrix and Nev, Twincasters", - "Miirym, Sentinel Wyrm", - "Ulamog, the Defiler", - "Valgavoth, Terror Eater", - "Sovereign Okinec Ahau" - ], - "example_cards": [ - "Roaming Throne", - "Kappa Cannoneer", - "Adrix and Nev, Twincasters", - "Miirym, Sentinel Wyrm", - "Bronze Guardian", - "Hulking Raptor", - "Ulamog, the Defiler", - "Valgavoth, Terror Eater" - ], - "synergy_commanders": [ - "Kogla and Yidaro - Synergy (Turtle Kindred)", - "The Pride of Hull Clade - Synergy (Turtle Kindred)", - "Archelos, Lagoon Mystic - Synergy (Turtle Kindred)", - "Toski, Bearer of Secrets - Synergy (Protection)", - "Purphoros, God of the Forge - Synergy (Protection)", - "Niv-Mizzet, Parun - Synergy (Dragon Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Ward leveraging synergies with Turtle Kindred and Protection." + "secondary_color": "Green" }, { "theme": "Warlock Kindred", @@ -23271,35 +7611,7 @@ "Food" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Saryth, the Viper's Fang", - "Honest Rutstein", - "Breena, the Demagogue", - "Prosper, Tome-Bound", - "Rivaz of the Claw" - ], - "example_cards": [ - "Witch Enchanter // Witch-Blessed Meadow", - "Saryth, the Viper's Fang", - "Honest Rutstein", - "Vile Entomber", - "Breena, the Demagogue", - "Prosper, Tome-Bound", - "Rivaz of the Claw", - "Vengeful Bloodwitch" - ], - "synergy_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Outlaw Kindred)", - "Lotho, Corrupt Shirriff - Synergy (Outlaw Kindred)", - "Captain Lannery Storm - Synergy (Outlaw Kindred)", - "Toski, Bearer of Secrets - Synergy (Squirrel Kindred)", - "Chatterfang, Squirrel General - Synergy (Squirrel Kindred)", - "Nashi, Moon Sage's Scion - Synergy (Rat Kindred)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Warlock creatures into play with shared payoffs (e.g., Outlaw Kindred and Squirrel Kindred)." + "secondary_color": "Red" }, { "theme": "Warp", @@ -23311,30 +7623,7 @@ "Wheels" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Haliya, Guided by Light", - "Tannuk, Steadfast Second", - "Alpharael, Stonechosen", - "Codsworth, Handy Helper - Synergy (Robot Kindred)", - "K-9, Mark I - Synergy (Robot Kindred)" - ], - "example_cards": [ - "Weftstalker Ardent", - "Exalted Sunborn", - "Haliya, Guided by Light", - "Zoanthrope", - "Starfield Vocalist", - "Anticausal Vestige", - "Loading Zone", - "Mightform Harmonizer" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Exile Matters)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Builds around Warp leveraging synergies with Void and Robot Kindred." + "secondary_color": "Red" }, { "theme": "Warrior Kindred", @@ -23346,34 +7635,7 @@ "Jackal Kindred" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Kutzil, Malamet Exemplar", - "Chatterfang, Squirrel General", - "Krenko, Mob Boss", - "Moraug, Fury of Akoum", - "Neheb, the Eternal" - ], - "example_cards": [ - "Professional Face-Breaker", - "Kutzil, Malamet Exemplar", - "Champion of Lambholt", - "Accursed Marauder", - "Fleshbag Marauder", - "Reassembling Skeleton", - "Setessan Champion", - "Nadier's Nightblade" - ], - "synergy_commanders": [ - "Zurgo Stormrender - Synergy (Mobilize)", - "Zurgo, Thunder's Decree - Synergy (Mobilize)", - "Themberchaud - Synergy (Exert)", - "Anep, Vizier of Hazoret - Synergy (Exert)", - "Khârn the Betrayer - Synergy (Astartes Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Warrior creatures into play with shared payoffs (e.g., Mobilize and Exert)." + "secondary_color": "Green" }, { "theme": "Waterbending", @@ -23383,72 +7645,18 @@ "Big Mana" ], "primary_color": "Blue", - "secondary_color": "White", - "example_commanders": [ - "Katara, Water Tribe's Hope", - "Yue, the Moon Spirit", - "Avatar Aang // Aang, Master of Elements", - "Katara, Bending Prodigy", - "Ghalta, Primal Hunger - Synergy (Cost Reduction)" - ], - "example_cards": [ - "Katara, Water Tribe's Hope", - "Yue, the Moon Spirit", - "Avatar Aang // Aang, Master of Elements", - "Aang's Iceberg", - "Katara, Bending Prodigy", - "Waterbending Lesson", - "Water Whip", - "Watery Grasp" - ], - "synergy_commanders": [ - "Emry, Lurker of the Loch - Synergy (Cost Reduction)", - "Goreclaw, Terror of Qal Sisma - Synergy (Cost Reduction)", - "Braids, Arisen Nightmare - Synergy (Card Draw)", - "Toski, Bearer of Secrets - Synergy (Card Draw)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Waterbending leveraging synergies with Cost Reduction and Card Draw." + "secondary_color": "White" }, { "theme": "Weasel Kindred", "synergies": [], - "primary_color": "White", - "example_commanders": [ - "The Infamous Cruelclaw" - ], - "example_cards": [ - "The Infamous Cruelclaw", - "Brightblade Stoat" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Weasel creatures into play with shared payoffs." + "primary_color": "White" }, { "theme": "Weird Kindred", "synergies": [], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Melek, Izzet Paragon", - "Melek, Reforged Researcher" - ], - "example_cards": [ - "Hydroelectric Specimen // Hydroelectric Laboratory", - "Melek, Izzet Paragon", - "Gelectrode", - "Melek, Reforged Researcher", - "Experimental Overload", - "Nothic", - "Spellgorger Weird", - "Steamcore Scholar" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Weird creatures into play with shared payoffs." + "secondary_color": "Red" }, { "theme": "Werewolf Kindred", @@ -23460,27 +7668,7 @@ "Eldrazi Kindred" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Tovolar, Dire Overlord // Tovolar, the Midnight Scourge", - "Vincent Valentine // Galian Beast", - "Ulrich of the Krallenhorde // Ulrich, Uncontested Alpha", - "Arlinn, the Pack's Hope // Arlinn, the Moon's Fury - Synergy (Daybound)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Transform)" - ], - "example_cards": [ - "Howling Moon", - "Hollowhenge Overlord", - "Outland Liberator // Frenzied Trapbreaker", - "Duskwatch Recruiter // Krallenhorde Howler", - "Tovolar, Dire Overlord // Tovolar, the Midnight Scourge", - "Ill-Tempered Loner // Howlpack Avenger", - "Vincent Valentine // Galian Beast", - "Avabruck Caretaker // Hollowhenge Huntmaster" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Werewolf creatures into play with shared payoffs (e.g., Daybound and Nightbound)." + "secondary_color": "Red" }, { "theme": "Whale Kindred", @@ -23491,31 +7679,7 @@ "Aggro", "Combat Matters" ], - "primary_color": "Blue", - "example_commanders": [ - "Ukkima, Stalking Shadow", - "Niv-Mizzet, Parun - Synergy (Flying)", - "Old Gnawbone - Synergy (Flying)", - "Avacyn, Angel of Hope - Synergy (Flying)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "example_cards": [ - "Dreamtide Whale", - "Reef Worm", - "Star Whale", - "Aethertide Whale", - "Horned Loch-Whale // Lagoon Breach", - "Ukkima, Stalking Shadow", - "Colossal Whale", - "Great Whale" - ], - "synergy_commanders": [ - "Etali, Primal Storm - Synergy (Big Mana)", - "Azusa, Lost but Seeking - Synergy (Toughness Matters)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Whale creatures into play with shared payoffs (e.g., Flying and Big Mana)." + "primary_color": "Blue" }, { "theme": "Wheels", @@ -23527,34 +7691,7 @@ "Hellbent" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Braids, Arisen Nightmare", - "Loran of the Third Path", - "Sheoldred, the Apocalypse", - "Selvala, Heart of the Wilds", - "Niv-Mizzet, Parun" - ], - "example_cards": [ - "Reliquary Tower", - "Thought Vessel", - "Solemn Simulacrum", - "Rhystic Study", - "Smothering Tithe", - "Arcane Denial", - "Mystic Remora", - "Phyrexian Arena" - ], - "synergy_commanders": [ - "Solphim, Mayhem Dominus - Synergy (Discard Matters)", - "Yawgmoth, Thran Physician - Synergy (Discard Matters)", - "Nezahal, Primal Tide - Synergy (Discard Matters)", - "Toski, Bearer of Secrets - Synergy (Card Draw)", - "Lotho, Corrupt Shirriff - Synergy (Spellslinger)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Loops mass draw/discard effects to refill, disrupt sculpted hands, and weaponize symmetrical replacement triggers. Synergies like Discard Matters and Card Draw reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Will of the Planeswalkers", @@ -23563,24 +7700,7 @@ "Spellslinger" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)", - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "example_cards": [ - "Path of the Pyromancer", - "Path of the Animist", - "Path of the Ghosthunter", - "Path of the Schemer", - "Path of the Enigma" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Protects and reuses planeswalkers—amplifying loyalty via proliferate and recursion for inevitability. Synergies like Spells Matter and Spellslinger reinforce the plan." + "secondary_color": "Blue" }, { "theme": "Will of the council", @@ -23589,56 +7709,24 @@ "Spellslinger" ], "primary_color": "White", - "secondary_color": "Black", - "example_commanders": [ - "Galadriel, Elven-Queen", - "Lotho, Corrupt Shirriff - Synergy (Spells Matter)", - "Birgi, God of Storytelling // Harnfel, Horn of Bounty - Synergy (Spells Matter)", - "Talrand, Sky Summoner - Synergy (Spells Matter)", - "Niv-Mizzet, Parun - Synergy (Spellslinger)" - ], - "example_cards": [ - "Council's Judgment", - "Plea for Power", - "Split Decision", - "Sail into the West", - "Magister of Worth", - "Coercive Portal", - "Tyrant's Choice", - "Galadriel, Elven-Queen" - ], - "synergy_commanders": [ - "Mangara, the Diplomat - Synergy (Spellslinger)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Will of the council leveraging synergies with Spells Matter and Spellslinger." + "secondary_color": "Black" }, { "theme": "Wind Counters", - "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Freyalise's Winds", - "Cyclone" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates wind counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Green" }, { "theme": "Wish Counters", - "synergies": [], - "primary_color": "Black", - "secondary_color": "Blue", - "example_cards": [ - "Wishclaw Talisman", - "Ring of Three Wishes", - "Djinn of Wishes" + "synergies": [ + "Counters Matter", + "Proliferate" ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates wish counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "primary_color": "Black", + "secondary_color": "Blue" }, { "theme": "Wither", @@ -23650,30 +7738,7 @@ "Counters Matter" ], "primary_color": "Black", - "secondary_color": "Red", - "example_commanders": [ - "Yawgmoth, Thran Physician - Synergy (-1/-1 Counters)", - "Vorinclex, Monstrous Raider - Synergy (-1/-1 Counters)", - "Lae'zel, Vlaakith's Champion - Synergy (-1/-1 Counters)", - "Ashaya, Soul of the Wild - Synergy (Elemental Kindred)", - "Titania, Protector of Argoth - Synergy (Elemental Kindred)" - ], - "example_cards": [ - "Necroskitter", - "Midnight Banshee", - "Stigma Lasher", - "Kulrath Knight", - "Lockjaw Snapper", - "Juvenile Gloomwidow", - "Hateflayer", - "Needle Specter" - ], - "synergy_commanders": [ - "Kutzil, Malamet Exemplar - Synergy (Warrior Kindred)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around Wither leveraging synergies with -1/-1 Counters and Elemental Kindred." + "secondary_color": "Red" }, { "theme": "Wizard Kindred", @@ -23685,47 +7750,12 @@ "Merfolk Kindred" ], "primary_color": "Blue", - "secondary_color": "Black", - "example_commanders": [ - "Emry, Lurker of the Loch", - "Talrand, Sky Summoner", - "Niv-Mizzet, Parun", - "Veyran, Voice of Duality", - "Baral, Chief of Compliance" - ], - "example_cards": [ - "Viscera Seer", - "Archmage Emeritus", - "Thassa's Oracle", - "Drannith Magistrate", - "Warren Soultrader", - "Laboratory Maniac", - "Dualcaster Mage", - "Emry, Lurker of the Loch" - ], - "synergy_commanders": [ - "Meloku the Clouded Mirror - Synergy (Moonfolk Kindred)", - "Kotori, Pilot Prodigy - Synergy (Moonfolk Kindred)", - "Katsumasa, the Animator - Synergy (Moonfolk Kindred)", - "Padeem, Consul of Innovation - Synergy (Vedalken Kindred)", - "Unctus, Grand Metatect - Synergy (Vedalken Kindred)", - "Kitsa, Otterball Elite - Synergy (Otter Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Wizard creatures into play with shared payoffs (e.g., Moonfolk Kindred and Vedalken Kindred)." + "secondary_color": "Black" }, { "theme": "Wizardcycling", "synergies": [], - "primary_color": "Blue", - "example_cards": [ - "Step Through", - "Vedalken Aethermage" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Builds around the Wizardcycling theme and its supporting synergies." + "primary_color": "Blue" }, { "theme": "Wolf Kindred", @@ -23737,34 +7767,7 @@ "Tokens Matter" ], "primary_color": "Green", - "secondary_color": "Red", - "example_commanders": [ - "Anara, Wolvid Familiar", - "Wildsear, Scouring Maw", - "Voja, Jaws of the Conclave", - "Tovolar, Dire Overlord // Tovolar, the Midnight Scourge", - "Ukkima, Stalking Shadow" - ], - "example_cards": [ - "Garruk, Cursed Huntsman", - "Sword of Body and Mind", - "Anara, Wolvid Familiar", - "Wildsear, Scouring Maw", - "Summon: Fenrir", - "Cemetery Prowler", - "Howling Moon", - "Hollowhenge Overlord" - ], - "synergy_commanders": [ - "Vincent Valentine // Galian Beast - Synergy (Werewolf Kindred)", - "Ulrich of the Krallenhorde // Ulrich, Uncontested Alpha - Synergy (Werewolf Kindred)", - "Liberator, Urza's Battlethopter - Synergy (Flash)", - "Jin-Gitaxias, Core Augur - Synergy (Flash)", - "Adeline, Resplendent Cathar - Synergy (Creature Tokens)" - ], - "popularity_bucket": "Uncommon", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Wolf creatures into play with shared payoffs (e.g., Werewolf Kindred and Flash)." + "secondary_color": "Red" }, { "theme": "Wolverine Kindred", @@ -23772,37 +7775,12 @@ "Little Fellas" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)", - "Azusa, Lost but Seeking - Synergy (Little Fellas)", - "Toski, Bearer of Secrets - Synergy (Little Fellas)" - ], - "example_cards": [ - "Hivespine Wolverine", - "Karplusan Wolverine", - "Irascible Wolverine", - "War-Trained Slasher", - "Spelleater Wolverine", - "Wolverine Pack", - "Bloodhaze Wolverine", - "Deepwood Wolverine" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Wolverine creatures into play with shared payoffs (e.g., Little Fellas)." + "secondary_color": "Green" }, { "theme": "Wombat Kindred", "synergies": [], - "primary_color": "Green", - "example_cards": [ - "Cursed Wombat", - "Rabid Wombat" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Wombat creatures into play with shared payoffs." + "primary_color": "Green" }, { "theme": "Worm Kindred", @@ -23814,31 +7792,7 @@ "Combat Matters" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Fumulus, the Infestation", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)", - "Sheoldred, the Apocalypse - Synergy (Sacrifice Matters)", - "Elas il-Kor, Sadistic Pilgrim - Synergy (Aristocrats)" - ], - "example_cards": [ - "Reef Worm", - "Creakwood Liege", - "Fumulus, the Infestation", - "Memory Worm", - "Wriggling Grub", - "Cryptic Annelid", - "Purple Worm", - "Skullslither Worm" - ], - "synergy_commanders": [ - "Ojer Taq, Deepest Foundation // Temple of Civilization - Synergy (Aristocrats)", - "Ragavan, Nimble Pilferer - Synergy (Little Fellas)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Worm creatures into play with shared payoffs (e.g., Sacrifice Matters and Aristocrats)." + "secondary_color": "Blue" }, { "theme": "Wraith Kindred", @@ -23848,35 +7802,7 @@ "Lands Matter", "Big Mana" ], - "primary_color": "Black", - "example_commanders": [ - "Witch-king of Angmar", - "Lord of the Nazgûl", - "Sauron, the Necromancer", - "Witch-king, Bringer of Ruin", - "Witch-king, Sky Scourge" - ], - "example_cards": [ - "Minas Morgul, Dark Fortress", - "Witch-king of Angmar", - "Nazgûl", - "Lord of the Nazgûl", - "Accursed Duneyard", - "In the Darkness Bind Them", - "Street Wraith", - "Sauron, the Necromancer" - ], - "synergy_commanders": [ - "Sheoldred, Whispering One - Synergy (Swampwalk)", - "Wrexial, the Risen Deep - Synergy (Swampwalk)", - "Sol'kanar the Swamp King - Synergy (Swampwalk)", - "Chatterfang, Squirrel General - Synergy (Landwalk)", - "Thada Adel, Acquisitor - Synergy (Landwalk)", - "Azusa, Lost but Seeking - Synergy (Lands Matter)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Wraith creatures into play with shared payoffs (e.g., Swampwalk and Landwalk)." + "primary_color": "Black" }, { "theme": "Wurm Kindred", @@ -23888,32 +7814,7 @@ "Aggro" ], "primary_color": "Green", - "secondary_color": "Black", - "example_commanders": [ - "Grothama, All-Devouring", - "Baru, Fist of Krosa", - "Ghalta, Primal Hunger - Synergy (Trample)", - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Trample)", - "Ghalta, Stampede Tyrant - Synergy (Trample)" - ], - "example_cards": [ - "Massacre Wurm", - "Wurmcoil Engine", - "Defiler of Vigor", - "Garruk, Primal Hunter", - "Sandwurm Convergence", - "Worldspine Wurm", - "Quilled Greatwurm", - "Impervious Greatwurm" - ], - "synergy_commanders": [ - "Mondrak, Glory Dominus - Synergy (Phyrexian Kindred)", - "Sheoldred, the Apocalypse - Synergy (Phyrexian Kindred)", - "Syr Konrad, the Grim - Synergy (Big Mana)" - ], - "popularity_bucket": "Niche", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Wurm creatures into play with shared payoffs (e.g., Trample and Phyrexian Kindred)." + "secondary_color": "Black" }, { "theme": "X Spells", @@ -23925,32 +7826,7 @@ "Cost Reduction" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Birgi, God of Storytelling // Harnfel, Horn of Bounty", - "Goreclaw, Terror of Qal Sisma", - "Danitha Capashen, Paragon", - "Baral, Chief of Compliance", - "Mikaeus, the Lunarch" - ], - "example_cards": [ - "Herald's Horn", - "Foundry Inspector", - "Finale of Devastation", - "Jet Medallion", - "Urza's Incubator", - "Exsanguinate", - "Ruby Medallion", - "Etherium Sculptor" - ], - "synergy_commanders": [ - "Fire Lord Zuko - Synergy (Firebending)", - "Zuko, Exiled Prince - Synergy (Firebending)", - "The Goose Mother - Synergy (Hydra Kindred)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Builds around X Spells leveraging synergies with Ravenous and Firebending." + "secondary_color": "Green" }, { "theme": "Yeti Kindred", @@ -23958,27 +7834,7 @@ "Big Mana" ], "primary_color": "Red", - "secondary_color": "Green", - "example_commanders": [ - "Umaro, Raging Yeti", - "Isu the Abominable", - "Syr Konrad, the Grim - Synergy (Big Mana)", - "Etali, Primal Storm - Synergy (Big Mana)", - "Tatyova, Benthic Druid - Synergy (Big Mana)" - ], - "example_cards": [ - "Umaro, Raging Yeti", - "Frostpeak Yeti", - "Isu the Abominable", - "Cragsmasher Yeti", - "Summit Intimidator", - "Sylvan Yeti", - "Drelnoch", - "Stalking Yeti" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Yeti creatures into play with shared payoffs (e.g., Big Mana)." + "secondary_color": "Green" }, { "theme": "Zombie Kindred", @@ -23990,30 +7846,7 @@ "Army Kindred" ], "primary_color": "Black", - "secondary_color": "Blue", - "example_commanders": [ - "Neheb, the Eternal", - "Mikaeus, the Unhallowed", - "Jadar, Ghoulcaller of Nephalia", - "Glissa Sunslayer", - "Jarad, Golgari Lich Lord" - ], - "example_cards": [ - "Gray Merchant of Asphodel", - "Field of the Dead", - "Carrion Feeder", - "Fanatic of Rhonas", - "Warren Soultrader", - "Accursed Marauder", - "Stitcher's Supplier", - "Fleshbag Marauder" - ], - "synergy_commanders": [ - "Temmet, Vizier of Naktamun - Synergy (Embalm)" - ], - "popularity_bucket": "Very Common", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Zombie creatures into play with shared payoffs (e.g., Embalm and Eternalize)." + "secondary_color": "Blue" }, { "theme": "Zubera Kindred", @@ -24025,102 +7858,34 @@ "Little Fellas" ], "primary_color": "Blue", - "secondary_color": "Red", - "example_commanders": [ - "Kodama of the West Tree - Synergy (Spirit Kindred)", - "Kodama of the East Tree - Synergy (Spirit Kindred)", - "Junji, the Midnight Sky - Synergy (Spirit Kindred)", - "Syr Konrad, the Grim - Synergy (Sacrifice Matters)", - "Braids, Arisen Nightmare - Synergy (Sacrifice Matters)" - ], - "example_cards": [ - "Floating-Dream Zubera", - "Ashen-Skin Zubera", - "Dripping-Tongue Zubera", - "Ember-Fist Zubera", - "Silent-Chant Zubera", - "Rushing-Tide Zubera", - "Burning-Eye Zubera" - ], - "synergy_commanders": [ - "Sheoldred, the Apocalypse - Synergy (Aristocrats)" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Focuses on getting a high number of Zubera creatures into play with shared payoffs (e.g., Spirit Kindred and Sacrifice Matters)." + "secondary_color": "Red" }, { "theme": "\\+0/\\+1 Counters", "synergies": [ - "Counters Matter" + "Counters Matter", + "Proliferate" ], "primary_color": "White", - "secondary_color": "Blue", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Krenko, Tin Street Kingpin - Synergy (Counters Matter)" - ], - "example_cards": [ - "Dwarven Armorer", - "Wall of Resistance", - "Necropolis", - "Coral Reef", - "Scars of the Veteran", - "Living Armor", - "Sacred Boon" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates \\+0/\\+1 counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Blue" }, { "theme": "\\+1/\\+0 Counters", "synergies": [ - "Counters Matter" + "Counters Matter", + "Proliferate" ], "primary_color": "Red", - "secondary_color": "Black", - "example_commanders": [ - "Etali, Primal Conqueror // Etali, Primal Sickness - Synergy (Counters Matter)", - "Rishkar, Peema Renegade - Synergy (Counters Matter)", - "Krenko, Tin Street Kingpin - Synergy (Counters Matter)" - ], - "example_cards": [ - "Dwarven Armorer", - "Lightning Serpent", - "Clockwork Steed", - "Ebon Praetor", - "Clockwork Beast", - "Clockwork Avian", - "Consuming Ferocity", - "Clockwork Swarm" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates \\+1/\\+0 counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Black" }, { "theme": "\\+2/\\+2 Counters", - "synergies": [], + "synergies": [ + "Counters Matter", + "Proliferate" + ], "primary_color": "Black", - "secondary_color": "Green", - "example_commanders": [ - "Baron Sengir" - ], - "example_cards": [ - "Soul Exchange", - "Baron Sengir", - "Dwarven Armory", - "Tin-Wing Chimera", - "Brass-Talon Chimera", - "Fungus Elemental", - "Iron-Heart Chimera", - "Lead-Belly Chimera" - ], - "popularity_bucket": "Rare", - "editorial_quality": "draft", - "description": "Accumulates \\+2/\\+2 counters to unlock scaling payoffs, removal triggers, or delayed value conversions." + "secondary_color": "Green" } ], "frequencies_by_base_color": { @@ -27172,14 +10937,5 @@ "Plainswalk": 1 } }, - "generated_from": "merge (analytics + curated YAML + whitelist)", - "metadata_info": { - "mode": "merge", - "generated_at": "2025-09-19T18:30:45", - "curated_yaml_files": 735, - "synergy_cap": 5, - "inference": "pmi", - "version": "phase-b-merge-v1" - }, - "description_fallback_summary": null + "generated_from": "tagger + constants" } \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 2662bf9..880e8e2 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -24,6 +24,7 @@ services: WEB_VIRTUALIZE: "1" # 1=enable list virtualization in Step 5 ALLOW_MUST_HAVES: "1" # 1=enable must-include/must-exclude cards feature; 0=disable SHOW_MISC_POOL: "0" + WEB_THEME_PICKER_DIAGNOSTICS: "1" # 1=enable extra theme catalog diagnostics fields, uncapped view & /themes/metrics # ------------------------------------------------------------------ # Random Build (Alpha) Feature Flags diff --git a/dockerhub-docker-compose.yml b/dockerhub-docker-compose.yml index 85f01c1..8d43f9b 100644 --- a/dockerhub-docker-compose.yml +++ b/dockerhub-docker-compose.yml @@ -21,6 +21,7 @@ services: ENABLE_PRESETS: "0" # 1=show presets section WEB_VIRTUALIZE: "1" # 1=enable list virtualization in Step 5 ALLOW_MUST_HAVES: "1" # Include/Exclude feature enable + WEB_THEME_PICKER_DIAGNOSTICS: "0" # 1=enable extra theme catalog diagnostics fields, uncapped synergies & /themes/metrics # ------------------------------------------------------------------ # Random Build (Alpha) Feature Flags diff --git a/docs/theme_taxonomy_rationale.md b/docs/theme_taxonomy_rationale.md new file mode 100644 index 0000000..c9ae20c --- /dev/null +++ b/docs/theme_taxonomy_rationale.md @@ -0,0 +1,65 @@ +# Theme Taxonomy Rationale & Governance + +This document captures decision criteria and rationale for expanding, merging, or refining the theme taxonomy. + +## Goals +- Maintain meaningful, player-recognizable buckets. +- Avoid overspecialization (micro-themes) that dilute search & filtering. +- Preserve sampling diversity and editorial sustainability. + +## Expansion Checklist +A proposed new theme SHOULD satisfy ALL of: +1. Distinct Strategic Identity: The game plan (win condition / resource axis) is not already adequately described by an existing theme or combination of two existing themes. +2. Representative Card Depth: At least 8 broadly played, format-relevant cards (EDHREC / common play knowledge) naturally cluster under this identity. +3. Commander Support: At least 3 reasonable commander candidates (not including fringe silver-bullets) benefit from or enable the theme. +4. Non-Subset Test: The candidate is not a strict subset of an existing theme's synergy list (check overlap ≥70% == probable subset). +5. Editorial Coverage Plan: Concrete initial examples & synergy tags identified; no reliance on placeholders at introduction. + +If any criterion fails -> treat as a synergy tag inside an existing theme rather than a standalone theme. + +## Candidate Themes & Notes +| Candidate | Rationale | Risks / Watchouts | Initial Verdict | +|-----------|-----------|-------------------|-----------------| +| Combo | High-synergy deterministic or infinite loops. Already partly surfaced via combo detection features. | Over-broad; could absorb unrelated value engines. | Defer; emphasize combo detection tooling instead. | +| Storm | Spell-chain count scaling (Grapeshot, Tendrils). Distinct engine requiring density/rituals. | Low breadth in casual metas; may overlap with Spellslinger. | Accept (pending 8-card list + commander examples). | +| Extra Turns | Time Walk recursion cluster. | Potential negative play perception; governance needed to avoid glorifying NPE lines. | Tentative accept (tag only until list curated). | +| Group Hug / Politics | Resource gifting & table manipulation. | Hard to score objectively; card set is broad. | Accept with curated examples to anchor definition. | +| Pillowfort | Defensive taxation / attack deterrence (Ghostly Prison line). | Overlap with Control / Enchantments. | Accept; ensure non-redundant with generic Enchantments. | +| Toolbox / Tutors | Broad search utility enabling silver-bullet packages. | Tutors already subject to bracket policy thresholds; broad risk. | Defer; retain as synergy tag only. | +| Treasure Matters | Explicit treasure scaling (Academy Manufactor, Prosper). | Rapidly evolving; needs periodic review. | Accept. | +| Monarch / Initiative | Alternate advantage engines via emblems/dungeons. | Initiative narrower post-rotation; watch meta shifts. | Accept (merge both into a single theme for now). | + +## Merge / Normalization Guidelines +When overlap (Jaccard) between Theme A and Theme B > 0.55 across curated+enforced synergies OR example card intersection ≥60%, evaluate for merge. Preference order: +1. Retain broader, clearer name. +2. Preserve curated examples; move excess to synergy tags. +3. Add legacy name to `aliases` for backward compatibility. + +## Example Count Enforcement +Threshold flips to hard enforcement after global coverage >90%: +- Missing required examples -> linter error (`lint_theme_editorial.py --require-examples`). +- Build fails CI unless waived with explicit override label. + +## Splash Relax Policy Rationale +- Prevents 4–5 color commanders from feeling artificially constrained when one enabling piece lies just outside colors. +- Controlled by single-card allowance + -0.3 score penalty so off-color never outranks true color-aligned payoffs. + +## Popularity Buckets Non-Scoring Principle +Popularity reflects observational frequency and is intentionally orthogonal to sampling to avoid feedback loops. Any future proposal to weight by popularity must include a diversity impact analysis and opt-in feature flag. + +## Determinism & Reproducibility +All sampling randomness is derived from `seed = hash(theme|commander)`; taxonomy updates must document any score function changes in `CHANGELOG.md` and provide transition notes if output ordering shifts beyond acceptable tolerance. + +## Governance Change Process +1. Open a PR modifying taxonomy YAML or this file. +2. Include: rationale, representative card list, commander list, overlap analysis with nearest themes. +3. Run catalog build + linter; attach metrics snapshot (`preview_metrics_snapshot.py`). +4. Reviewer checks duplication, size, overlap, enforcement thresholds. + +## Future Considerations +- Automated overlap dashboard (heatmap) for candidate merges. +- Nightly diff bot summarizing coverage & generic description regression. +- Multi-dimensional rarity quota experimentation (moved to Deferred section for now). + +--- +Last updated: 2025-09-20