fix(docker): seed all default card list JSONs & brackets.yml; update changelog

This commit is contained in:
matt 2025-09-10 08:53:00 -07:00
parent 1f4cdef63b
commit 73d48567b6
9 changed files with 916 additions and 299 deletions

View file

@ -126,7 +126,7 @@ jobs:
needs: prepare needs: prepare
permissions: permissions:
contents: read contents: read
timeout-minutes: 20 timeout-minutes: 10
continue-on-error: true continue-on-error: true
steps: steps:
- name: Checkout - name: Checkout

View file

@ -74,6 +74,7 @@ This format follows Keep a Changelog principles and aims for Semantic Versioning
- Mobile UI setup status stuttering eliminated by removing temporary "Setup complete" message displays - Mobile UI setup status stuttering eliminated by removing temporary "Setup complete" message displays
- Mobile build controls accessibility improved with bottom-floating positioning for thumb navigation - Mobile build controls accessibility improved with bottom-floating positioning for thumb navigation
- Mobile viewport breakpoint expanded from 720px to 1024px for broader device compatibility - Mobile viewport breakpoint expanded from 720px to 1024px for broader device compatibility
- Docker image: expanded entrypoint seeding now copies all default card list JSON files (extra_turns, game_changers, mass_land_denial, tutors_nonland, etc.) and brackets.yml when missing, preventing missing list issues with mounted blank config volumes
## [2.2.6] - 2025-09-04 ## [2.2.6] - 2025-09-04

View file

@ -6,177 +6,177 @@
{ "a": "Thassa's Oracle", "b": "Tainted Pact", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] }, { "a": "Thassa's Oracle", "b": "Tainted Pact", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] },
{ "a": "Kiki-Jiki, Mirror Breaker", "b": "Zealous Conscripts", "cheap_early": true, "setup_dependent": false, "tags": ["infinite"] }, { "a": "Kiki-Jiki, Mirror Breaker", "b": "Zealous Conscripts", "cheap_early": true, "setup_dependent": false, "tags": ["infinite"] },
{ "a": "Devoted Druid", "b": "Vizier of Remedies", "cheap_early": true, "setup_dependent": false, "tags": ["infinite"] }, { "a": "Devoted Druid", "b": "Vizier of Remedies", "cheap_early": true, "setup_dependent": false, "tags": ["infinite"] },
{ "a": "Heliod, Sun-Crowned", "b": "Walking Ballista", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] }, { "a": "Heliod, Sun-Crowned", "b": "Walking Ballista", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] },
{ "a": "Isochron Scepter", "b": "Dramatic Reversal", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] }, { "a": "Isochron Scepter", "b": "Dramatic Reversal", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
{ "a": "Underworld Breach", "b": "Brain Freeze", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "storm"] }, { "a": "Underworld Breach", "b": "Brain Freeze", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "storm"] },
{ "a": "Auriok Salvagers", "b": "Lion's Eye Diamond", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] }, { "a": "Auriok Salvagers", "b": "Lion's Eye Diamond", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
{ "a": "Worldgorger Dragon", "b": "Animate Dead", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "mana"] }, { "a": "Worldgorger Dragon", "b": "Animate Dead", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "mana"] },
{ "a": "Exquisite Blood", "b": "Sanguine Bond", "cheap_early": false, "setup_dependent": false, "tags": ["wincon"] }, { "a": "Exquisite Blood", "b": "Sanguine Bond", "cheap_early": false, "setup_dependent": false, "tags": ["wincon"] },
{ "a": "Exquisite Blood", "b": "Vito, Thorn of the Dusk Rose", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] }, { "a": "Exquisite Blood", "b": "Vito, Thorn of the Dusk Rose", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] },
{ "a": "Exquisite Blood", "b": "Marauding Blight-Priest", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] }, { "a": "Exquisite Blood", "b": "Marauding Blight-Priest", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] },
{ "a": "Exquisite Blood", "b": "Vizkopa Guildmage", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] }, { "a": "Exquisite Blood", "b": "Vizkopa Guildmage", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] },
{ "a": "Exquisite Blood", "b": "Cliffhaven Vampire", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] }, { "a": "Exquisite Blood", "b": "Cliffhaven Vampire", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] },
{ "a": "Exquisite Blood", "b": "Enduring Tenacity", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] }, { "a": "Exquisite Blood", "b": "Enduring Tenacity", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "life"] },
{ "a": "Mikaeus, the Unhallowed", "b": "Triskelion", "cheap_early": false, "setup_dependent": false, "tags": ["wincon", "infinite"] }, { "a": "Mikaeus, the Unhallowed", "b": "Triskelion", "cheap_early": false, "setup_dependent": false, "tags": ["wincon", "infinite"] },
{ "a": "Basalt Monolith", "b": "Rings of Brighthearth", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] }, { "a": "Basalt Monolith", "b": "Rings of Brighthearth", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
{ "a": "Basalt Monolith", "b": "Forsaken Monument", "cheap_early": false, "setup_dependent": false, "tags": ["infinite", "mana"] }, { "a": "Basalt Monolith", "b": "Forsaken Monument", "cheap_early": false, "setup_dependent": false, "tags": ["infinite", "mana"] },
{ "a": "Basalt Monolith", "b": "Forensic Gadgeteer", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] }, { "a": "Basalt Monolith", "b": "Forensic Gadgeteer", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
{ "a": "Basalt Monolith", "b": "Nyxbloom Ancient", "cheap_early": false, "setup_dependent": false, "tags": ["infinite", "mana"] }, { "a": "Basalt Monolith", "b": "Nyxbloom Ancient", "cheap_early": false, "setup_dependent": false, "tags": ["infinite", "mana"] },
{ "a": "Power Artifact", "b": "Grim Monolith", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] }, { "a": "Power Artifact", "b": "Grim Monolith", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
{ "a": "Painter's Servant", "b": "Grindstone", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] }, { "a": "Painter's Servant", "b": "Grindstone", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] },
{ "a": "Rest in Peace", "b": "Helm of Obedience", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] }, { "a": "Rest in Peace", "b": "Helm of Obedience", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] },
{ "a": "Thopter Foundry", "b": "Sword of the Meek", "cheap_early": true, "setup_dependent": false, "tags": ["engine"] }, { "a": "Thopter Foundry", "b": "Sword of the Meek", "cheap_early": true, "setup_dependent": false, "tags": ["engine"] },
{ "a": "Karmic Guide", "b": "Reveillark", "cheap_early": false, "setup_dependent": true, "tags": ["loop", "infinite"] }, { "a": "Karmic Guide", "b": "Reveillark", "cheap_early": false, "setup_dependent": true, "tags": ["loop", "infinite"] },
{ "a": "Food Chain", "b": "Misthollow Griffin", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] }, { "a": "Food Chain", "b": "Misthollow Griffin", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
{ "a": "Food Chain", "b": "Eternal Scourge", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] }, { "a": "Food Chain", "b": "Eternal Scourge", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
{ "a": "Food Chain", "b": "Squee, the Immortal", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] }, { "a": "Food Chain", "b": "Squee, the Immortal", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
{ "a": "Deadeye Navigator", "b": "Peregrine Drake", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] } { "a": "Deadeye Navigator", "b": "Peregrine Drake", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
,{ "a": "Godo, Bandit Warlord", "b": "Helm of the Host", "cheap_early": false, "setup_dependent": false, "tags": ["wincon"] } { "a": "Godo, Bandit Warlord", "b": "Helm of the Host", "cheap_early": false, "setup_dependent": false, "tags": ["wincon"] },
,{ "a": "Aurelia, the Warleader", "b": "Helm of the Host", "cheap_early": false, "setup_dependent": false, "tags": ["wincon", "combat"] } { "a": "Aurelia, the Warleader", "b": "Helm of the Host", "cheap_early": false, "setup_dependent": false, "tags": ["wincon", "combat"] },
,{ "a": "Combat Celebrant", "b": "Helm of the Host", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] } { "a": "Combat Celebrant", "b": "Helm of the Host", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] },
,{ "a": "Narset, Parter of Veils", "b": "Windfall", "cheap_early": true, "setup_dependent": false, "tags": ["lock"] } { "a": "Narset, Parter of Veils", "b": "Windfall", "cheap_early": true, "setup_dependent": false, "tags": ["lock"] },
,{ "a": "Knowledge Pool", "b": "Teferi, Mage of Zhalfir", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] } { "a": "Knowledge Pool", "b": "Teferi, Mage of Zhalfir", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] },
,{ "a": "Knowledge Pool", "b": "Teferi, Time Raveler", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] } { "a": "Knowledge Pool", "b": "Teferi, Time Raveler", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] },
,{ "a": "Possibility Storm", "b": "Rule of Law", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] } { "a": "Possibility Storm", "b": "Rule of Law", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] },
,{ "a": "Possibility Storm", "b": "Eidolon of Rhetoric", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] } { "a": "Possibility Storm", "b": "Eidolon of Rhetoric", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] },
,{ "a": "Grand Architect", "b": "Pili-Pala", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] } { "a": "Grand Architect", "b": "Pili-Pala", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
,{ "a": "Umbral Mantle", "b": "Priest of Titania", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Umbral Mantle", "b": "Priest of Titania", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Umbral Mantle", "b": "Elvish Archdruid", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Umbral Mantle", "b": "Elvish Archdruid", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Umbral Mantle", "b": "Marwyn, the Nurturer", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Umbral Mantle", "b": "Marwyn, the Nurturer", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Umbral Mantle", "b": "Circle of Dreams Druid", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Umbral Mantle", "b": "Circle of Dreams Druid", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Staff of Domination", "b": "Priest of Titania", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Staff of Domination", "b": "Priest of Titania", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Staff of Domination", "b": "Elvish Archdruid", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Staff of Domination", "b": "Elvish Archdruid", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Staff of Domination", "b": "Marwyn, the Nurturer", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Staff of Domination", "b": "Marwyn, the Nurturer", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Staff of Domination", "b": "Circle of Dreams Druid", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Staff of Domination", "b": "Circle of Dreams Druid", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Staff of Domination", "b": "Selvala, Heart of the Wilds", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Staff of Domination", "b": "Selvala, Heart of the Wilds", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Freed from the Real", "b": "Bloom Tender", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Freed from the Real", "b": "Bloom Tender", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Freed from the Real", "b": "Faeburrow Elder", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Freed from the Real", "b": "Faeburrow Elder", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Kinnan, Bonder Prodigy", "b": "Basalt Monolith", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] } { "a": "Kinnan, Bonder Prodigy", "b": "Basalt Monolith", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "mana"] },
,{ "a": "Melira, Sylvok Outcast", "b": "Kitchen Finks", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "life"] } { "a": "Melira, Sylvok Outcast", "b": "Kitchen Finks", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "life"] },
,{ "a": "Vizier of Remedies", "b": "Kitchen Finks", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "life"] } { "a": "Vizier of Remedies", "b": "Kitchen Finks", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "life"] },
,{ "a": "Devoted Druid", "b": "Quillspike", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "power"] } { "a": "Devoted Druid", "b": "Quillspike", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "power"] },
,{ "a": "Devoted Druid", "b": "Swift Reconfiguration", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] } { "a": "Devoted Druid", "b": "Swift Reconfiguration", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mana"] },
,{ "a": "Heliod, Sun-Crowned", "b": "Spike Feeder", "cheap_early": false, "setup_dependent": false, "tags": ["infinite", "life"] } { "a": "Heliod, Sun-Crowned", "b": "Spike Feeder", "cheap_early": false, "setup_dependent": false, "tags": ["infinite", "life"] },
,{ "a": "Mind Over Matter", "b": "Temple Bell", "cheap_early": false, "setup_dependent": false, "tags": ["infinite", "draw"] } { "a": "Mind Over Matter", "b": "Temple Bell", "cheap_early": false, "setup_dependent": false, "tags": ["infinite", "draw"] },
,{ "a": "Saheeli Rai", "b": "Felidar Guardian", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "tokens"] } { "a": "Saheeli Rai", "b": "Felidar Guardian", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "tokens"] },
,{ "a": "Kiki-Jiki, Mirror Breaker", "b": "Felidar Guardian", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "tokens"] } { "a": "Kiki-Jiki, Mirror Breaker", "b": "Felidar Guardian", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "tokens"] },
,{ "a": "Felidar Guardian", "b": "Restoration Angel", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "etb"] } { "a": "Felidar Guardian", "b": "Restoration Angel", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "etb"] },
,{ "a": "Kiki-Jiki, Mirror Breaker", "b": "Restoration Angel", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "etb"] } { "a": "Kiki-Jiki, Mirror Breaker", "b": "Restoration Angel", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "etb"] },
,{ "a": "Niv-Mizzet, Parun", "b": "Curiosity", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] } { "a": "Niv-Mizzet, Parun", "b": "Curiosity", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] },
,{ "a": "Niv-Mizzet, the Firemind", "b": "Curiosity", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] } { "a": "Niv-Mizzet, the Firemind", "b": "Curiosity", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] },
,{ "a": "Niv-Mizzet, Parun", "b": "Ophidian Eye", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] } { "a": "Niv-Mizzet, Parun", "b": "Ophidian Eye", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] },
,{ "a": "Niv-Mizzet, the Firemind", "b": "Ophidian Eye", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] } { "a": "Niv-Mizzet, the Firemind", "b": "Ophidian Eye", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] },
,{ "a": "Niv-Mizzet, Parun", "b": "Tandem Lookout", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] } { "a": "Niv-Mizzet, Parun", "b": "Tandem Lookout", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] },
,{ "a": "Niv-Mizzet, the Firemind", "b": "Tandem Lookout", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] } { "a": "Niv-Mizzet, the Firemind", "b": "Tandem Lookout", "cheap_early": true, "setup_dependent": false, "tags": ["loop", "wincon"] },
,{ "a": "Bloodchief Ascension", "b": "Mindcrank", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] } { "a": "Bloodchief Ascension", "b": "Mindcrank", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] },
,{ "a": "Gravecrawler", "b": "Phyrexian Altar", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "death"] } { "a": "Gravecrawler", "b": "Phyrexian Altar", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "death"] },
,{ "a": "Goblin Sharpshooter", "b": "Basilisk Collar", "cheap_early": true, "setup_dependent": true, "tags": ["lock", "removal"] } { "a": "Goblin Sharpshooter", "b": "Basilisk Collar", "cheap_early": true, "setup_dependent": true, "tags": ["lock", "removal"] },
,{ "a": "Malcolm, Keen-Eyed Navigator", "b": "Glint-Horn Buccaneer", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "damage"] } { "a": "Malcolm, Keen-Eyed Navigator", "b": "Glint-Horn Buccaneer", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "damage"] },
,{ "a": "Professor Onyx", "b": "Chain of Smog", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] } { "a": "Professor Onyx", "b": "Chain of Smog", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] },
,{ "a": "Witherbloom Apprentice", "b": "Chain of Smog", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] } { "a": "Witherbloom Apprentice", "b": "Chain of Smog", "cheap_early": true, "setup_dependent": false, "tags": ["wincon"] },
,{ "a": "Solphim, Mayhem Dominus", "b": "Heartless Hidetsugu", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "damage"] } { "a": "Solphim, Mayhem Dominus", "b": "Heartless Hidetsugu", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "damage"] },
,{ "a": "Karn, the Great Creator", "b": "Mycosynth Lattice", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] } { "a": "Karn, the Great Creator", "b": "Mycosynth Lattice", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] },
,{ "a": "Mycosynth Lattice", "b": "Vandalblast", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] } { "a": "Mycosynth Lattice", "b": "Vandalblast", "cheap_early": false, "setup_dependent": false, "tags": ["lock", "stax"] },
,{ "a": "Animate Dead", "b": "Abdel Adrian, Gorion's Ward", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] } { "a": "Animate Dead", "b": "Abdel Adrian, Gorion's Ward", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] },
,{ "a": "Ratadrabik of Urborg", "b": "Boromir, Warden of the Tower", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "death"] } { "a": "Ratadrabik of Urborg", "b": "Boromir, Warden of the Tower", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "death"] },
,{ "a": "Tivit, Seller of Secrets", "b": "Time Sieve", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "turns"] } { "a": "Tivit, Seller of Secrets", "b": "Time Sieve", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "turns"] },
,{ "a": "Blasphemous Act", "b": "Repercussion", "cheap_early": true, "setup_dependent": true, "tags": ["damage", "boardwipe"] } { "a": "Blasphemous Act", "b": "Repercussion", "cheap_early": true, "setup_dependent": true, "tags": ["damage", "boardwipe"] },
,{ "a": "Toralf, God of Fury", "b": "Blasphemous Act", "cheap_early": true, "setup_dependent": true, "tags": ["damage", "boardwipe"] } { "a": "Toralf, God of Fury", "b": "Blasphemous Act", "cheap_early": true, "setup_dependent": true, "tags": ["damage", "boardwipe"] },
,{ "a": "Aggravated Assault", "b": "Sword of Feast and Famine", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] } { "a": "Aggravated Assault", "b": "Sword of Feast and Famine", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] },
,{ "a": "Aggravated Assault", "b": "Savage Ventmaw", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "combat"] } { "a": "Aggravated Assault", "b": "Savage Ventmaw", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "combat"] },
,{ "a": "Aggravated Assault", "b": "Neheb, the Eternal", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "combat"] } { "a": "Aggravated Assault", "b": "Neheb, the Eternal", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "combat"] },
,{ "a": "Aggravated Assault", "b": "The Reaver Cleaver", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] } { "a": "Aggravated Assault", "b": "The Reaver Cleaver", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] },
,{ "a": "Aggravated Assault", "b": "Selvala, Heart of the Wilds", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] } { "a": "Aggravated Assault", "b": "Selvala, Heart of the Wilds", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] },
,{ "a": "Ashaya, Soul of the Wild", "b": "Quirion Ranger", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] } { "a": "Ashaya, Soul of the Wild", "b": "Quirion Ranger", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] },
,{ "a": "Scurry Oak", "b": "Ivy Lane Denizen", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "tokens"] } { "a": "Scurry Oak", "b": "Ivy Lane Denizen", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "tokens"] },
,{ "a": "Rosie Cotton of South Lane", "b": "Scurry Oak", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "tokens"] } { "a": "Rosie Cotton of South Lane", "b": "Scurry Oak", "cheap_early": true, "setup_dependent": false, "tags": ["infinite", "tokens"] },
,{ "a": "Basking Broodscale", "b": "Rosie Cotton of South Lane", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "tokens"] } { "a": "Basking Broodscale", "b": "Rosie Cotton of South Lane", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "tokens"] },
,{ "a": "The Gitrog Monster", "b": "Dakmor Salvage", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mill"] } { "a": "The Gitrog Monster", "b": "Dakmor Salvage", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "mill"] },
,{ "a": "Maddening Cacophony", "b": "Bruvac the Grandiloquent", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "mill"] } { "a": "Maddening Cacophony", "b": "Bruvac the Grandiloquent", "cheap_early": true, "setup_dependent": false, "tags": ["wincon", "mill"] },
,{ "a": "Traumatize", "b": "Bruvac the Grandiloquent", "cheap_early": false, "setup_dependent": false, "tags": ["wincon", "mill"] } { "a": "Traumatize", "b": "Bruvac the Grandiloquent", "cheap_early": false, "setup_dependent": false, "tags": ["wincon", "mill"] },
,{ "a": "Cut Your Losses", "b": "Bruvac the Grandiloquent", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] } { "a": "Cut Your Losses", "b": "Bruvac the Grandiloquent", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] },
,{ "a": "Cut Your Losses", "b": "Fraying Sanity", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] } { "a": "Cut Your Losses", "b": "Fraying Sanity", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] },
,{ "a": "Terisian Mindbreaker", "b": "Bruvac the Grandiloquent", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] } { "a": "Terisian Mindbreaker", "b": "Bruvac the Grandiloquent", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] },
,{ "a": "Terisian Mindbreaker", "b": "Fraying Sanity", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] } { "a": "Terisian Mindbreaker", "b": "Fraying Sanity", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "mill"] },
,{ "a": "Dualcaster Mage", "b": "Heat Shimmer", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] } { "a": "Dualcaster Mage", "b": "Heat Shimmer", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] },
,{ "a": "Dualcaster Mage", "b": "Molten Duplication", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] } { "a": "Dualcaster Mage", "b": "Molten Duplication", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] },
,{ "a": "Dualcaster Mage", "b": "Saw in Half", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "tokens"] } { "a": "Dualcaster Mage", "b": "Saw in Half", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "tokens"] },
,{ "a": "Dualcaster Mage", "b": "Ghostly Flicker", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] } { "a": "Dualcaster Mage", "b": "Ghostly Flicker", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] },
,{ "a": "Naru Meha, Master Wizard", "b": "Ghostly Flicker", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] } { "a": "Naru Meha, Master Wizard", "b": "Ghostly Flicker", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "etb"] },
,{ "a": "Kiki-Jiki, Mirror Breaker", "b": "Village Bell-Ringer", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "tokens"] } { "a": "Kiki-Jiki, Mirror Breaker", "b": "Village Bell-Ringer", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "tokens"] },
,{ "a": "Kiki-Jiki, Mirror Breaker", "b": "Combat Celebrant", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "combat"] } { "a": "Kiki-Jiki, Mirror Breaker", "b": "Combat Celebrant", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "combat"] },
,{ "a": "Demonic Consultation", "b": "Laboratory Maniac", "cheap_early": true, "setup_dependent": true, "tags": ["wincon"] } { "a": "Demonic Consultation", "b": "Laboratory Maniac", "cheap_early": true, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Peregrin Took", "b": "Experimental Confectioner", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "draw"] } { "a": "Peregrin Took", "b": "Experimental Confectioner", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "draw"] },
,{ "a": "Peregrin Took", "b": "Nuka-Cola Vending Machine", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "treasure"] } { "a": "Peregrin Took", "b": "Nuka-Cola Vending Machine", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "treasure"] },
,{ "a": "Aggravated Assault", "b": "Bear Umbra", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] } { "a": "Aggravated Assault", "b": "Bear Umbra", "cheap_early": false, "setup_dependent": true, "tags": ["infinite", "combat"] },
,{ "a": "Nest of Scarabs", "b": "Blowfly Infestation", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "death"] } { "a": "Nest of Scarabs", "b": "Blowfly Infestation", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "death"] },
,{ "a": "Ondu Spiritdancer", "b": "Secret Arcade // Dusty Parlor", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "tokens"] } { "a": "Ondu Spiritdancer", "b": "Secret Arcade // Dusty Parlor", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "tokens"] },
,{ "a": "Storm-Kiln Artist", "b": "Haze of Rage", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "storm"] } { "a": "Storm-Kiln Artist", "b": "Haze of Rage", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "storm"] },
,{ "a": "Bloodthirsty Conqueror", "b": "Vito, Thorn of the Dusk Rose", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Bloodthirsty Conqueror", "b": "Vito, Thorn of the Dusk Rose", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Bloodthirsty Conqueror", "b": "Sanguine Bond", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Bloodthirsty Conqueror", "b": "Sanguine Bond", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Bloodthirsty Conqueror", "b": "Enduring Tenacity", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Bloodthirsty Conqueror", "b": "Enduring Tenacity", "cheap_early": true, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Glint-Horn Buccaneer", "b": "Curiosity", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "draw"] } { "a": "Glint-Horn Buccaneer", "b": "Curiosity", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "draw"] },
,{ "a": "Sheoldred, the Apocalypse", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "draw"] } { "a": "Sheoldred, the Apocalypse", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "draw"] },
,{ "a": "Underworld Dreams", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Underworld Dreams", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Psychosis Crawler", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "draw"] } { "a": "Psychosis Crawler", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "draw"] },
,{ "a": "Orcish Bowmasters", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["damage"] } { "a": "Orcish Bowmasters", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["damage"] },
,{ "a": "Bloodletter of Aclazotz", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Bloodletter of Aclazotz", "b": "Peer into the Abyss", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Jeska's Will", "b": "Reiterate", "cheap_early": false, "setup_dependent": true, "tags": ["mana", "storm"] } { "a": "Jeska's Will", "b": "Reiterate", "cheap_early": false, "setup_dependent": true, "tags": ["mana", "storm"] },
,{ "a": "Mana Geyser", "b": "Reiterate", "cheap_early": false, "setup_dependent": true, "tags": ["mana", "storm"] } { "a": "Mana Geyser", "b": "Reiterate", "cheap_early": false, "setup_dependent": true, "tags": ["mana", "storm"] },
,{ "a": "Approach of the Second Sun", "b": "Scroll Rack", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Approach of the Second Sun", "b": "Scroll Rack", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Approach of the Second Sun", "b": "Narset's Reversal", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Approach of the Second Sun", "b": "Narset's Reversal", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Approach of the Second Sun", "b": "Reprieve", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Approach of the Second Sun", "b": "Reprieve", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Teferi, Temporal Archmage", "b": "The Chain Veil", "cheap_early": false, "setup_dependent": true, "tags": ["planeswalker", "engine"] } { "a": "Teferi, Temporal Archmage", "b": "The Chain Veil", "cheap_early": false, "setup_dependent": true, "tags": ["planeswalker", "engine"] },
,{ "a": "Old Gnawbone", "b": "Hellkite Charger", "cheap_early": false, "setup_dependent": true, "tags": ["combat", "mana"] } { "a": "Old Gnawbone", "b": "Hellkite Charger", "cheap_early": false, "setup_dependent": true, "tags": ["combat", "mana"] },
,{ "a": "Aggravated Assault", "b": "Old Gnawbone", "cheap_early": false, "setup_dependent": true, "tags": ["combat", "mana"] } { "a": "Aggravated Assault", "b": "Old Gnawbone", "cheap_early": false, "setup_dependent": true, "tags": ["combat", "mana"] },
,{ "a": "The World Tree", "b": "Maskwood Nexus", "cheap_early": false, "setup_dependent": true, "tags": ["tribal", "tutor"] } { "a": "The World Tree", "b": "Maskwood Nexus", "cheap_early": false, "setup_dependent": true, "tags": ["tribal", "tutor"] },
,{ "a": "The World Tree", "b": "Arcane Adaptation", "cheap_early": false, "setup_dependent": true, "tags": ["tribal", "tutor"] } { "a": "The World Tree", "b": "Arcane Adaptation", "cheap_early": false, "setup_dependent": true, "tags": ["tribal", "tutor"] },
,{ "a": "Solemnity", "b": "Decree of Silence", "cheap_early": false, "setup_dependent": true, "tags": ["lock"] } { "a": "Solemnity", "b": "Decree of Silence", "cheap_early": false, "setup_dependent": true, "tags": ["lock"] },
,{ "a": "Gisela, Blade of Goldnight", "b": "Heartless Hidetsugu", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "damage"] } { "a": "Gisela, Blade of Goldnight", "b": "Heartless Hidetsugu", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "damage"] },
,{ "a": "Avacyn, Angel of Hope", "b": "Worldslayer", "cheap_early": false, "setup_dependent": true, "tags": ["lock", "boardwipe"] } { "a": "Avacyn, Angel of Hope", "b": "Worldslayer", "cheap_early": false, "setup_dependent": true, "tags": ["lock", "boardwipe"] },
,{ "a": "Mindslaver", "b": "Academy Ruins", "cheap_early": false, "setup_dependent": true, "tags": ["lock"] } { "a": "Mindslaver", "b": "Academy Ruins", "cheap_early": false, "setup_dependent": true, "tags": ["lock"] },
,{ "a": "Brine Elemental", "b": "Vesuvan Shapeshifter", "cheap_early": false, "setup_dependent": true, "tags": ["lock"] } { "a": "Brine Elemental", "b": "Vesuvan Shapeshifter", "cheap_early": false, "setup_dependent": true, "tags": ["lock"] },
,{ "a": "Havoc Festival", "b": "Wound Reflection", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Havoc Festival", "b": "Wound Reflection", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Maze's End", "b": "Scapeshift", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "lands"] } { "a": "Maze's End", "b": "Scapeshift", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "lands"] },
,{ "a": "Twinning Staff", "b": "Dramatic Reversal", "cheap_early": false, "setup_dependent": true, "tags": ["storm", "mana"] } { "a": "Twinning Staff", "b": "Dramatic Reversal", "cheap_early": false, "setup_dependent": true, "tags": ["storm", "mana"] },
,{ "a": "Terror of the Peaks", "b": "Rite of Replication", "cheap_early": false, "setup_dependent": true, "tags": ["damage", "tokens"] } { "a": "Terror of the Peaks", "b": "Rite of Replication", "cheap_early": false, "setup_dependent": true, "tags": ["damage", "tokens"] },
,{ "a": "Zedruu the Greathearted", "b": "Transcendence", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Zedruu the Greathearted", "b": "Transcendence", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Tivit, Seller of Secrets", "b": "Deadeye Navigator", "cheap_early": false, "setup_dependent": true, "tags": ["etb", "engine"] } { "a": "Tivit, Seller of Secrets", "b": "Deadeye Navigator", "cheap_early": false, "setup_dependent": true, "tags": ["etb", "engine"] },
,{ "a": "Brass's Bounty", "b": "Revel in Riches", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "treasure"] } { "a": "Brass's Bounty", "b": "Revel in Riches", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "treasure"] },
,{ "a": "Bootleggers' Stash", "b": "Revel in Riches", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "treasure"] } { "a": "Bootleggers' Stash", "b": "Revel in Riches", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "treasure"] },
,{ "a": "Brass's Bounty", "b": "Mechanized Production", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "treasure"] } { "a": "Brass's Bounty", "b": "Mechanized Production", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "treasure"] },
,{ "a": "Bootleggers' Stash", "b": "Mechanized Production", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "treasure"] } { "a": "Bootleggers' Stash", "b": "Mechanized Production", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "treasure"] },
,{ "a": "Approach of the Second Sun", "b": "Mystical Tutor", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Approach of the Second Sun", "b": "Mystical Tutor", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Approach of the Second Sun", "b": "Vampiric Tutor", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Approach of the Second Sun", "b": "Vampiric Tutor", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "Approach of the Second Sun", "b": "Demonic Tutor", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] } { "a": "Approach of the Second Sun", "b": "Demonic Tutor", "cheap_early": false, "setup_dependent": true, "tags": ["wincon"] },
,{ "a": "The World Tree", "b": "Purphoros, God of the Forge", "cheap_early": false, "setup_dependent": true, "tags": ["damage", "tokens"] } { "a": "The World Tree", "b": "Purphoros, God of the Forge", "cheap_early": false, "setup_dependent": true, "tags": ["damage", "tokens"] },
,{ "a": "The World Tree", "b": "Rukarumel, Biologist", "cheap_early": false, "setup_dependent": true, "tags": ["tribal", "tutor"] } { "a": "The World Tree", "b": "Rukarumel, Biologist", "cheap_early": false, "setup_dependent": true, "tags": ["tribal", "tutor"] },
,{ "a": "Realmbreaker, the Invasion Tree", "b": "Maskwood Nexus", "cheap_early": false, "setup_dependent": true, "tags": ["tribal", "tutor"] } { "a": "Realmbreaker, the Invasion Tree", "b": "Maskwood Nexus", "cheap_early": false, "setup_dependent": true, "tags": ["tribal", "tutor"] },
,{ "a": "Beacon of Immortality", "b": "Sanguine Bond", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Beacon of Immortality", "b": "Sanguine Bond", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Vizkopa Guildmage", "b": "Beacon of Immortality", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Vizkopa Guildmage", "b": "Beacon of Immortality", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Drogskol Reaver", "b": "Queza, Augur of Agonies", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "life"] } { "a": "Drogskol Reaver", "b": "Queza, Augur of Agonies", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "life"] },
,{ "a": "Drogskol Reaver", "b": "Shabraz, the Skyshark", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "life"] } { "a": "Drogskol Reaver", "b": "Shabraz, the Skyshark", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "life"] },
,{ "a": "Drogskol Reaver", "b": "Sheoldred, the Apocalypse", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "life"] } { "a": "Drogskol Reaver", "b": "Sheoldred, the Apocalypse", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "life"] },
,{ "a": "Astral Dragon", "b": "Cursed Mirror", "cheap_early": false, "setup_dependent": true, "tags": ["tokens", "etb"] } { "a": "Astral Dragon", "b": "Cursed Mirror", "cheap_early": false, "setup_dependent": true, "tags": ["tokens", "etb"] },
,{ "a": "Kudo, King Among Bears", "b": "Elesh Norn, Grand Cenobite", "cheap_early": false, "setup_dependent": true, "tags": ["lock", "boardwipe"] } { "a": "Kudo, King Among Bears", "b": "Elesh Norn, Grand Cenobite", "cheap_early": false, "setup_dependent": true, "tags": ["lock", "boardwipe"] },
,{ "a": "Shard of the Nightbringer", "b": "Sanguine Bond", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Shard of the Nightbringer", "b": "Sanguine Bond", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Vito, Thorn of the Dusk Rose", "b": "Shard of the Nightbringer", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Vito, Thorn of the Dusk Rose", "b": "Shard of the Nightbringer", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Bloodletter of Aclazotz", "b": "Shard of the Nightbringer", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Bloodletter of Aclazotz", "b": "Shard of the Nightbringer", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Fraying Omnipotence", "b": "Wound Reflection", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] } { "a": "Fraying Omnipotence", "b": "Wound Reflection", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "life"] },
,{ "a": "Body of Knowledge", "b": "Niv-Mizzet, the Firemind", "cheap_early": false, "setup_dependent": true, "tags": ["draw"] } { "a": "Body of Knowledge", "b": "Niv-Mizzet, the Firemind", "cheap_early": false, "setup_dependent": true, "tags": ["draw"] },
,{ "a": "Emry, Lurker of the Loch", "b": "Mindslaver", "cheap_early": false, "setup_dependent": true, "tags": ["lock"] } { "a": "Emry, Lurker of the Loch", "b": "Mindslaver", "cheap_early": false, "setup_dependent": true, "tags": ["lock"] },
,{ "a": "Ad Nauseam", "b": "Teferi's Protection", "cheap_early": false, "setup_dependent": true, "tags": ["draw"] } { "a": "Ad Nauseam", "b": "Teferi's Protection", "cheap_early": false, "setup_dependent": true, "tags": ["draw"] },
,{ "a": "Wanderwine Prophets", "b": "Deeproot Pilgrimage", "cheap_early": false, "setup_dependent": true, "tags": ["turns"] } { "a": "Wanderwine Prophets", "b": "Deeproot Pilgrimage", "cheap_early": false, "setup_dependent": true, "tags": ["turns"] },
,{ "a": "Orthion, Hero of Lavabrink", "b": "Terror of the Peaks", "cheap_early": false, "setup_dependent": true, "tags": ["damage", "tokens"] } { "a": "Orthion, Hero of Lavabrink", "b": "Terror of the Peaks", "cheap_early": false, "setup_dependent": true, "tags": ["damage", "tokens"] },
,{ "a": "Orthion, Hero of Lavabrink", "b": "Fanatic of Mogis", "cheap_early": false, "setup_dependent": true, "tags": ["damage"] } { "a": "Orthion, Hero of Lavabrink", "b": "Fanatic of Mogis", "cheap_early": false, "setup_dependent": true, "tags": ["damage"] },
,{ "a": "Maze's End", "b": "Reshape the Earth", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "lands"] } { "a": "Maze's End", "b": "Reshape the Earth", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "lands"] },
,{ "a": "Avacyn, Angel of Hope", "b": "Nevinyrral's Disk", "cheap_early": false, "setup_dependent": true, "tags": ["lock", "boardwipe"] } { "a": "Avacyn, Angel of Hope", "b": "Nevinyrral's Disk", "cheap_early": false, "setup_dependent": true, "tags": ["lock", "boardwipe"] },
,{ "a": "Toxrill, the Corrosive", "b": "Maha, Its Feathers Night", "cheap_early": false, "setup_dependent": true, "tags": ["lock", "boardwipe"] } { "a": "Toxrill, the Corrosive", "b": "Maha, Its Feathers Night", "cheap_early": false, "setup_dependent": true, "tags": ["lock", "boardwipe"] },
,{ "a": "Niv-Mizzet, Visionary", "b": "Niv-Mizzet, Parun", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "damage"] } { "a": "Niv-Mizzet, Visionary", "b": "Niv-Mizzet, Parun", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "damage"] },
,{ "a": "Niv-Mizzet, Visionary", "b": "Niv-Mizzet, the Firemind", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "damage"] } { "a": "Niv-Mizzet, Visionary", "b": "Niv-Mizzet, the Firemind", "cheap_early": false, "setup_dependent": true, "tags": ["draw", "damage"] },
,{ "a": "Dragon Tempest", "b": "Ancient Gold Dragon", "cheap_early": false, "setup_dependent": true, "tags": ["damage", "tokens"] } { "a": "Dragon Tempest", "b": "Ancient Gold Dragon", "cheap_early": false, "setup_dependent": true, "tags": ["damage", "tokens"] },
,{ "a": "Vraska, Betrayal's Sting", "b": "Vorinclex, Monstrous Raider", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "planeswalker"] } { "a": "Vraska, Betrayal's Sting", "b": "Vorinclex, Monstrous Raider", "cheap_early": false, "setup_dependent": true, "tags": ["wincon", "planeswalker"] },
,{ "a": "Polyraptor", "b": "Marauding Raptor", "cheap_early": false, "setup_dependent": true, "tags": ["tokens"] } { "a": "Polyraptor", "b": "Marauding Raptor", "cheap_early": false, "setup_dependent": true, "tags": ["tokens"] },
,{ "a": "Tivit, Seller of Secrets", "b": "Time Sieve", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "turns"] } { "a": "Tivit, Seller of Secrets", "b": "Time Sieve", "cheap_early": true, "setup_dependent": true, "tags": ["infinite", "turns"] }
] ]
} }

View file

@ -1 +1,56 @@
{"source_url": "test", "generated_at": "now", "cards": ["Time Warp"]} {
"cards": [
"Alchemist's Gambit",
"Alrund's Epiphany",
"Beacon of Tomorrows",
"Capture of Jingzhou",
"Chance for Glory",
"Expropriate",
"Final Fortune",
"Gonti's Aether Heart",
"Ichormoon Gauntlet",
"Karn's Temporal Sundering",
"Last Chance",
"Lighthouse Chronologist",
"Lost Isle Calling",
"Magistrate's Scepter",
"Magosi, the Waterveil",
"Medomai the Ageless",
"Mu Yanling",
"Nexus of Fate",
"Notorious Throng",
"Part the Waterveil",
"Plea for Power",
"Ral Zarek",
"Regenerations Restored",
"Rise of the Eldrazi",
"Sage of Hours",
"Savor the Moment",
"Search the City",
"Second Chance",
"Seedtime",
"Stitch in Time",
"Teferi, Master of Time",
"Teferi, Timebender",
"Temporal Extortion",
"Temporal Manipulation",
"Temporal Mastery",
"Temporal Trespass",
"Time Sieve",
"Time Stretch",
"Time Warp",
"Timesifter",
"Timestream Navigator",
"Twice Upon a Time // Unlikely Meeting",
"Twice Upon a TimeUnlikely Meeting",
"Ugin's Nexus",
"Ultimecia, Time Sorceress",
"Ultimecia, Time Sorceress // Ultimecia, Omnipotent",
"Walk the Aeons",
"Wanderwine Prophets",
"Warrior's Oath",
"Wormfang Manta"
],
"list_version": "v1.0",
"generated_at": "2025-09-04"
}

View file

@ -1 +1,68 @@
{"source_url": "test", "generated_at": "now", "cards": []} {
"cards": [
"Ad Nauseam",
"Ancient Tomb",
"Aura Shards",
"Bolas's Citadel",
"Braids, Cabal Minion",
"Chrome Mox",
"Coalition Victory",
"Consecrated Sphinx",
"Crop Rotation",
"Cyclonic Rift",
"Deflecting Swat",
"Demonic Tutor",
"Drannith Magistrate",
"Enlightened Tutor",
"Expropriate",
"Field of the Dead",
"Fierce Guardianship",
"Food Chain",
"Force of Will",
"Gaea's Cradle",
"Gamble",
"Gifts Ungiven",
"Glacial Chasm",
"Grand Arbiter Augustin IV",
"Grim Monolith",
"Humility",
"Imperial Seal",
"Intuition",
"Jeska's Will",
"Jin-Gitaxias, Core Augur",
"Kinnan, Bonder Prodigy",
"Lion's Eye Diamond",
"Mana Vault",
"Mishra's Workshop",
"Mox Diamond",
"Mystical Tutor",
"Narset, Parter of Veils",
"Natural Order",
"Necropotence",
"Notion Thief",
"Opposition Agent",
"Orcish Bowmasters",
"Panoptic Mirror",
"Rhystic Study",
"Seedborn Muse",
"Serra's Sanctum",
"Smothering Tithe",
"Survival of the Fittest",
"Sway of the Stars",
"Teferi's Protection",
"Tergrid, God of Fright",
"Tergrid, God of Fright // Tergrid's Lantern",
"Thassa's Oracle",
"The One Ring",
"The Tabernacle at Pendrell Vale",
"Underworld Breach",
"Urza, Lord High Artificer",
"Vampiric Tutor",
"Vorinclex, Voice of Hunger",
"Winota, Joiner of Forces",
"Worldly Tutor",
"Yuriko, the Tiger's Shadow"
],
"list_version": "v1.0",
"generated_at": "2025-09-04"
}

View file

@ -1 +1,79 @@
{"source_url": "test", "generated_at": "now", "cards": ["Armageddon"]} {
"cards": [
"Acid Rain",
"Apocalypse",
"Armageddon",
"Back to Basics",
"Bearer of the Heavens",
"Bend or Break",
"Blood Moon",
"Boil",
"Boiling Seas",
"Boom // Bust",
"BoomBust",
"Break the Ice",
"Burning of Xinye",
"Cataclysm",
"Catastrophe",
"Choke",
"Cleansing",
"Contamination",
"Conversion",
"Curse of Marit Lage",
"Death Cloud",
"Decree of Annihilation",
"Desolation Angel",
"Destructive Force",
"Devastating Dreams",
"Devastation",
"Dimensional Breach",
"Disciple of Caelus Nin",
"Epicenter",
"Fall of the Thran",
"Flashfires",
"Gilt-Leaf Archdruid",
"Glaciers",
"Global Ruin",
"Hall of Gemstone",
"Harbinger of the Seas",
"Hokori, Dust Drinker",
"Impending Disaster",
"Infernal Darkness",
"Jokulhaups",
"Keldon Firebombers",
"Land Equilibrium",
"Magus of the Balance",
"Magus of the Moon",
"Myojin of Infinite Rage",
"Naked Singularity",
"Natural Balance",
"Obliterate",
"Omen of Fire",
"Raiding Party",
"Ravages of War",
"Razia's Purification",
"Reality Twist",
"Realm Razer",
"Restore Balance",
"Rising Waters",
"Ritual of Subdual",
"Ruination",
"Soulscour",
"Stasis",
"Static Orb",
"Storm Cauldron",
"Sunder",
"Sway of the Stars",
"Tectonic Break",
"Thoughts of Ruin",
"Tsunami",
"Wildfire",
"Winter Moon",
"Winter Orb",
"Worldfire",
"Worldpurge",
"Worldslayer"
],
"list_version": "v1.0",
"generated_at": "2025-09-04"
}

View file

@ -3,122 +3,122 @@
"generated_at": "2025-09-03T15:30:40+00:00", "generated_at": "2025-09-03T15:30:40+00:00",
"pairs": [ "pairs": [
{ "a": "Grave Pact", "b": "Phyrexian Altar", "tags": ["aristocrats", "value"], "notes": "Sacrifice enables repeated edicts" }, { "a": "Grave Pact", "b": "Phyrexian Altar", "tags": ["aristocrats", "value"], "notes": "Sacrifice enables repeated edicts" },
{ "a": "Panharmonicon", "b": "Mulldrifter", "tags": ["etb", "value"], "notes": "Amplifies ETB triggers" } { "a": "Panharmonicon", "b": "Mulldrifter", "tags": ["etb", "value"], "notes": "Amplifies ETB triggers" },
,{ "a": "Doubling Season", "b": "+1/+1 counters", "tags": ["counters", "value"], "notes": "Generic synergy placeholder for counters decks" } { "a": "Doubling Season", "b": "+1/+1 counters", "tags": ["counters", "value"], "notes": "Generic synergy placeholder for counters decks" },
,{ "a": "Skullclamp", "b": "Bitterblossom", "tags": ["card draw", "tokens"], "notes": "Token fodder into draw" } { "a": "Skullclamp", "b": "Bitterblossom", "tags": ["card draw", "tokens"], "notes": "Token fodder into draw" },
,{ "a": "Pitiless Plunderer", "b": "Grim Haruspex", "tags": ["aristocrats", "value"], "notes": "Death triggers generate mana and cards" } { "a": "Pitiless Plunderer", "b": "Grim Haruspex", "tags": ["aristocrats", "value"], "notes": "Death triggers generate mana and cards" },
,{ "a": "Smothering Tithe", "b": "Wheel of Fortune", "tags": ["treasure", "value"], "notes": "Wheel effects with Tithe produce piles of treasure" } { "a": "Smothering Tithe", "b": "Wheel of Fortune", "tags": ["treasure", "value"], "notes": "Wheel effects with Tithe produce piles of treasure" },
,{ "a": "Concordant Crossroads", "b": "Craterhoof Behemoth", "tags": ["haste", "finishers"], "notes": "Global haste + overrun finisher" } { "a": "Concordant Crossroads", "b": "Craterhoof Behemoth", "tags": ["haste", "finishers"], "notes": "Global haste + overrun finisher" },
,{ "a": "Ashnod's Altar", "b": "Nim Deathmantle", "tags": ["loop"], "notes": "Classic deathmantle loop with ETB/LTB creatures" } { "a": "Ashnod's Altar", "b": "Nim Deathmantle", "tags": ["loop"], "notes": "Classic deathmantle loop with ETB/LTB creatures" },
,{ "a": "Anointed Procession", "b": "Smothering Tithe", "tags": ["tokens", "treasure"], "notes": "Doubles Treasure token output" } { "a": "Anointed Procession", "b": "Smothering Tithe", "tags": ["tokens", "treasure"], "notes": "Doubles Treasure token output" },
,{ "a": "Parallel Lives", "b": "Smothering Tithe", "tags": ["tokens", "treasure"], "notes": "Token doublers amplify Treasure" } { "a": "Parallel Lives", "b": "Smothering Tithe", "tags": ["tokens", "treasure"], "notes": "Token doublers amplify Treasure" },
,{ "a": "Mondrak, Glory Dominus", "b": "Smothering Tithe", "tags": ["tokens", "treasure"], "notes": "Doubles opponents' Treasure output to you" } { "a": "Mondrak, Glory Dominus", "b": "Smothering Tithe", "tags": ["tokens", "treasure"], "notes": "Doubles opponents' Treasure output to you" },
,{ "a": "Academy Manufactor", "b": "Tireless Provisioner", "tags": ["tokens", "treasure"], "notes": "Each Treasure becomes Food/Clue/Treasure" } { "a": "Academy Manufactor", "b": "Tireless Provisioner", "tags": ["tokens", "treasure"], "notes": "Each Treasure becomes Food/Clue/Treasure" },
,{ "a": "Academy Manufactor", "b": "Lonis, Cryptozoologist", "tags": ["tokens", "clues"], "notes": "Clues become all three tokens" } { "a": "Academy Manufactor", "b": "Lonis, Cryptozoologist", "tags": ["tokens", "clues"], "notes": "Clues become all three tokens" },
,{ "a": "Academy Manufactor", "b": "Bootleggers' Stash", "tags": ["tokens", "treasure"], "notes": "Lands make Treasures which become all three" } { "a": "Academy Manufactor", "b": "Bootleggers' Stash", "tags": ["tokens", "treasure"], "notes": "Lands make Treasures which become all three" },
,{ "a": "Ophiomancer", "b": "Skullclamp", "tags": ["card draw", "tokens"], "notes": "Recurring 1/1 tokens feed Clamp" } { "a": "Ophiomancer", "b": "Skullclamp", "tags": ["card draw", "tokens"], "notes": "Recurring 1/1 tokens feed Clamp" },
,{ "a": "Pitiless Plunderer", "b": "Ophiomancer", "tags": ["aristocrats", "treasure"], "notes": "Free sac fodder into Treasure every turn" } { "a": "Pitiless Plunderer", "b": "Ophiomancer", "tags": ["aristocrats", "treasure"], "notes": "Free sac fodder into Treasure every turn" },
,{ "a": "Purphoros, God of the Forge", "b": "Avenger of Zendikar", "tags": ["damage", "tokens"], "notes": "Go-wide ETB burns table" } { "a": "Purphoros, God of the Forge", "b": "Avenger of Zendikar", "tags": ["damage", "tokens"], "notes": "Go-wide ETB burns table" },
,{ "a": "Impact Tremors", "b": "Avenger of Zendikar", "tags": ["damage", "tokens"], "notes": "Budget Purphoros line" } { "a": "Impact Tremors", "b": "Avenger of Zendikar", "tags": ["damage", "tokens"], "notes": "Budget Purphoros line" },
,{ "a": "Hardened Scales", "b": "Walking Ballista", "tags": ["counters"], "notes": "Extra counters for more pings" } { "a": "Hardened Scales", "b": "Walking Ballista", "tags": ["counters"], "notes": "Extra counters for more pings" },
,{ "a": "Hardened Scales", "b": "The Ozolith", "tags": ["counters"], "notes": "Store and move counters more efficiently" } { "a": "Hardened Scales", "b": "The Ozolith", "tags": ["counters"], "notes": "Store and move counters more efficiently" },
,{ "a": "The Ozolith", "b": "Arcbound Ravager", "tags": ["counters", "artifacts"], "notes": "Modular and counter storage play well" } { "a": "The Ozolith", "b": "Arcbound Ravager", "tags": ["counters", "artifacts"], "notes": "Modular and counter storage play well" },
,{ "a": "Winding Constrictor", "b": "Hangarback Walker", "tags": ["counters"], "notes": "Bigger on entry and dies into more Thopters" } { "a": "Winding Constrictor", "b": "Hangarback Walker", "tags": ["counters"], "notes": "Bigger on entry and dies into more Thopters" },
,{ "a": "Sun Titan", "b": "Altar of Dementia", "tags": ["etb", "mill"], "notes": "Recur 3-drop permanents, mill self/opponents" } { "a": "Sun Titan", "b": "Altar of Dementia", "tags": ["etb", "mill"], "notes": "Recur 3-drop permanents, mill self/opponents" },
,{ "a": "Sun Titan", "b": "Eternal Witness", "tags": ["recursion", "value"], "notes": "Classic recursion value engine" } { "a": "Sun Titan", "b": "Eternal Witness", "tags": ["recursion", "value"], "notes": "Classic recursion value engine" },
,{ "a": "Muldrotha, the Gravetide", "b": "Seal of Primordium", "tags": ["graveyard", "removal"], "notes": "Repeatable enchantment removal from yard" } { "a": "Muldrotha, the Gravetide", "b": "Seal of Primordium", "tags": ["graveyard", "removal"], "notes": "Repeatable enchantment removal from yard" },
,{ "a": "Meren of Clan Nel Toth", "b": "Sakura-Tribe Elder", "tags": ["graveyard", "ramp"], "notes": "Recurring ramp and experience counters" } { "a": "Meren of Clan Nel Toth", "b": "Sakura-Tribe Elder", "tags": ["graveyard", "ramp"], "notes": "Recurring ramp and experience counters" },
,{ "a": "Phyrexian Reclamation", "b": "Fleshbag Marauder", "tags": ["removal", "graveyard"], "notes": "Repeatable edicts via recursion" } { "a": "Phyrexian Reclamation", "b": "Fleshbag Marauder", "tags": ["removal", "graveyard"], "notes": "Repeatable edicts via recursion" },
,{ "a": "Young Pyromancer", "b": "Opt", "tags": ["spellslinger", "tokens"], "notes": "Cheap cantrips fuel token production" } { "a": "Young Pyromancer", "b": "Opt", "tags": ["spellslinger", "tokens"], "notes": "Cheap cantrips fuel token production" },
,{ "a": "Talrand, Sky Summoner", "b": "Opt", "tags": ["spellslinger", "tokens"], "notes": "Drakes on every instant/sorcery" } { "a": "Talrand, Sky Summoner", "b": "Opt", "tags": ["spellslinger", "tokens"], "notes": "Drakes on every instant/sorcery" },
,{ "a": "Archmage Emeritus", "b": "Opt", "tags": ["spellslinger", "card draw"], "notes": "Learn triggers on low-cost spells" } { "a": "Archmage Emeritus", "b": "Opt", "tags": ["spellslinger", "card draw"], "notes": "Learn triggers on low-cost spells" },
,{ "a": "Storm-Kiln Artist", "b": "Big Score", "tags": ["treasure", "spellslinger"], "notes": "Treasure refunds the spells" } { "a": "Storm-Kiln Artist", "b": "Big Score", "tags": ["treasure", "spellslinger"], "notes": "Treasure refunds the spells" },
,{ "a": "Krark-Clan Ironworks", "b": "Myr Retriever", "tags": ["artifacts", "value"], "notes": "Sac outlets plus recursion parts" } { "a": "Krark-Clan Ironworks", "b": "Myr Retriever", "tags": ["artifacts", "value"], "notes": "Sac outlets plus recursion parts" },
,{ "a": "Scrap Trawler", "b": "Ichor Wellspring", "tags": ["artifacts", "card draw"], "notes": "Dies-to-draw plus Trawler chains" } { "a": "Scrap Trawler", "b": "Ichor Wellspring", "tags": ["artifacts", "card draw"], "notes": "Dies-to-draw plus Trawler chains" },
,{ "a": "Goblin Engineer", "b": "Wurmcoil Engine", "tags": ["artifacts", "tutor"], "notes": "Entomb and recur big artifact threats" } { "a": "Goblin Engineer", "b": "Wurmcoil Engine", "tags": ["artifacts", "tutor"], "notes": "Entomb and recur big artifact threats" },
,{ "a": "Inspiring Statuary", "b": "Smothering Tithe", "tags": ["artifacts", "treasure"], "notes": "Treasure fuels improvise for non-artifacts" } { "a": "Inspiring Statuary", "b": "Smothering Tithe", "tags": ["artifacts", "treasure"], "notes": "Treasure fuels improvise for non-artifacts" },
,{ "a": "Tireless Tracker", "b": "Evolving Wilds", "tags": ["landfall", "card draw"], "notes": "Crackable Clues on fetch lands" } { "a": "Tireless Tracker", "b": "Evolving Wilds", "tags": ["landfall", "card draw"], "notes": "Crackable Clues on fetch lands" },
,{ "a": "Tireless Provisioner", "b": "Evolving Wilds", "tags": ["landfall", "treasure"], "notes": "Landfall ramps with fetch triggers" } { "a": "Tireless Provisioner", "b": "Evolving Wilds", "tags": ["landfall", "treasure"], "notes": "Landfall ramps with fetch triggers" },
,{ "a": "Scute Swarm", "b": "Cultivate", "tags": ["landfall", "tokens"], "notes": "Ramp spells explode token count" } { "a": "Scute Swarm", "b": "Cultivate", "tags": ["landfall", "tokens"], "notes": "Ramp spells explode token count" },
,{ "a": "Avenger of Zendikar", "b": "Scapeshift", "tags": ["landfall", "tokens"], "notes": "Mass landfall into massive board" } { "a": "Avenger of Zendikar", "b": "Scapeshift", "tags": ["landfall", "tokens"], "notes": "Mass landfall into massive board" },
,{ "a": "Sythis, Harvest's Hand", "b": "Wild Growth", "tags": ["enchantress", "ramp"], "notes": "Draw and ramp on cheap auras" } { "a": "Sythis, Harvest's Hand", "b": "Wild Growth", "tags": ["enchantress", "ramp"], "notes": "Draw and ramp on cheap auras" },
,{ "a": "Enchantress's Presence", "b": "Utopia Sprawl", "tags": ["enchantress", "ramp"], "notes": "Cantrip ramp aura" } { "a": "Enchantress's Presence", "b": "Utopia Sprawl", "tags": ["enchantress", "ramp"], "notes": "Cantrip ramp aura" },
,{ "a": "Stoneforge Mystic", "b": "Skullclamp", "tags": ["equipment", "tutor"], "notes": "Tutor powerful draw equipment" } { "a": "Stoneforge Mystic", "b": "Skullclamp", "tags": ["equipment", "tutor"], "notes": "Tutor powerful draw equipment" },
,{ "a": "Puresteel Paladin", "b": "Colossus Hammer", "tags": ["equipment", "card draw"], "notes": "Free equips and cards on cheap equips" } { "a": "Puresteel Paladin", "b": "Colossus Hammer", "tags": ["equipment", "card draw"], "notes": "Free equips and cards on cheap equips" },
,{ "a": "Sigarda's Aid", "b": "Colossus Hammer", "tags": ["equipment", "tempo"], "notes": "Flash in and auto-equip the Hammer" } { "a": "Sigarda's Aid", "b": "Colossus Hammer", "tags": ["equipment", "tempo"], "notes": "Flash in and auto-equip the Hammer" },
,{ "a": "Sram, Senior Edificer", "b": "Swiftfoot Boots", "tags": ["equipment", "card draw"], "notes": "Cheap equipment keep cards flowing" } { "a": "Sram, Senior Edificer", "b": "Swiftfoot Boots", "tags": ["equipment", "card draw"], "notes": "Cheap equipment keep cards flowing" },
,{ "a": "Waste Not", "b": "Windfall", "tags": ["discard", "value"], "notes": "Wheel fuels Waste Not payoffs" } { "a": "Waste Not", "b": "Windfall", "tags": ["discard", "value"], "notes": "Wheel fuels Waste Not payoffs" },
,{ "a": "Nekusar, the Mindrazer", "b": "Wheel of Fortune", "tags": ["damage", "wheels"], "notes": "Wheels turn into burn" } { "a": "Nekusar, the Mindrazer", "b": "Wheel of Fortune", "tags": ["damage", "wheels"], "notes": "Wheels turn into burn" },
,{ "a": "Bone Miser", "b": "Wheel of Misfortune", "tags": ["discard", "value"], "notes": "Discard payoffs go wild on wheels" } { "a": "Bone Miser", "b": "Wheel of Misfortune", "tags": ["discard", "value"], "notes": "Discard payoffs go wild on wheels" },
,{ "a": "Winter Orb", "b": "Urza, Lord High Artificer", "tags": ["stax", "artifacts"], "notes": "Tap Orb on opponents' turns to break parity" } { "a": "Winter Orb", "b": "Urza, Lord High Artificer", "tags": ["stax", "artifacts"], "notes": "Tap Orb on opponents' turns to break parity" },
,{ "a": "Static Orb", "b": "Tangle Wire", "tags": ["stax"], "notes": "Stacking tap/untap tax pieces" } { "a": "Static Orb", "b": "Tangle Wire", "tags": ["stax"], "notes": "Stacking tap/untap tax pieces" },
,{ "a": "Atraxa, Praetors' Voice", "b": "Evolution Sage", "tags": ["proliferate", "counters"], "notes": "Extra proliferate with lands" } { "a": "Atraxa, Praetors' Voice", "b": "Evolution Sage", "tags": ["proliferate", "counters"], "notes": "Extra proliferate with lands" },
,{ "a": "Tekuthal, Inquiry Dominus", "b": "Karn's Bastion", "tags": ["proliferate", "counters"], "notes": "Repeatable proliferate engine" } { "a": "Tekuthal, Inquiry Dominus", "b": "Karn's Bastion", "tags": ["proliferate", "counters"], "notes": "Repeatable proliferate engine" },
,{ "a": "Xorn", "b": "Smothering Tithe", "tags": ["treasure", "tokens"], "notes": "More treasures per draw" } { "a": "Xorn", "b": "Smothering Tithe", "tags": ["treasure", "tokens"], "notes": "More treasures per draw" },
,{ "a": "Academy Manufactor", "b": "Xorn", "tags": ["treasure", "tokens"], "notes": "Token multipliers stack" } { "a": "Academy Manufactor", "b": "Xorn", "tags": ["treasure", "tokens"], "notes": "Token multipliers stack" },
,{ "a": "Professional Face-Breaker", "b": "Bitterblossom", "tags": ["treasure", "combat"], "notes": "Evasive tokens turn hits into Treasure" } { "a": "Professional Face-Breaker", "b": "Bitterblossom", "tags": ["treasure", "combat"], "notes": "Evasive tokens turn hits into Treasure" },
,{ "a": "Chatterfang, Squirrel General", "b": "Pitiless Plunderer", "tags": ["aristocrats", "tokens"], "notes": "Squirrels plus Treasure on death" } { "a": "Chatterfang, Squirrel General", "b": "Pitiless Plunderer", "tags": ["aristocrats", "tokens"], "notes": "Squirrels plus Treasure on death" },
,{ "a": "Chatterfang, Squirrel General", "b": "Parallel Lives", "tags": ["tokens"], "notes": "Token doublers scale Chatterfang" } { "a": "Chatterfang, Squirrel General", "b": "Parallel Lives", "tags": ["tokens"], "notes": "Token doublers scale Chatterfang" },
,{ "a": "Mayhem Devil", "b": "Pitiless Plunderer", "tags": ["aristocrats", "damage"], "notes": "Sac/death pings stack up" } { "a": "Mayhem Devil", "b": "Pitiless Plunderer", "tags": ["aristocrats", "damage"], "notes": "Sac/death pings stack up" },
,{ "a": "Soul Warden", "b": "Ajani's Pridemate", "tags": ["lifegain", "counters"], "notes": "Gain triggers grow Pridemate" } { "a": "Soul Warden", "b": "Ajani's Pridemate", "tags": ["lifegain", "counters"], "notes": "Gain triggers grow Pridemate" },
,{ "a": "Well of Lost Dreams", "b": "Ajani's Pridemate", "tags": ["lifegain", "card draw"], "notes": "Convert lifegain into cards while growing" } { "a": "Well of Lost Dreams", "b": "Ajani's Pridemate", "tags": ["lifegain", "card draw"], "notes": "Convert lifegain into cards while growing" },
,{ "a": "Ephemerate", "b": "Mulldrifter", "tags": ["blink", "value"], "notes": "Cheap repeated blink for draw" } { "a": "Ephemerate", "b": "Mulldrifter", "tags": ["blink", "value"], "notes": "Cheap repeated blink for draw" },
,{ "a": "Deadeye Navigator", "b": "Mulldrifter", "tags": ["blink", "value"], "notes": "Soulbond to blink for cards" } { "a": "Deadeye Navigator", "b": "Mulldrifter", "tags": ["blink", "value"], "notes": "Soulbond to blink for cards" },
,{ "a": "Cloudstone Curio", "b": "Elvish Visionary", "tags": ["bounce", "value"], "notes": "Loop cheap ETB cantrips" } { "a": "Cloudstone Curio", "b": "Elvish Visionary", "tags": ["bounce", "value"], "notes": "Loop cheap ETB cantrips" },
,{ "a": "Kor Spiritdancer", "b": "Ethereal Armor", "tags": ["auras", "card draw"], "notes": "Grow and draw on auras" } { "a": "Kor Spiritdancer", "b": "Ethereal Armor", "tags": ["auras", "card draw"], "notes": "Grow and draw on auras" },
,{ "a": "Sram, Senior Edificer", "b": "Ethereal Armor", "tags": ["auras", "card draw"], "notes": "Cheap aura cantrips" } { "a": "Sram, Senior Edificer", "b": "Ethereal Armor", "tags": ["auras", "card draw"], "notes": "Cheap aura cantrips" },
,{ "a": "Light-Paws, Emperor's Voice", "b": "All That Glitters", "tags": ["auras", "tutor"], "notes": "Tutor and cheat auras" } { "a": "Light-Paws, Emperor's Voice", "b": "All That Glitters", "tags": ["auras", "tutor"], "notes": "Tutor and cheat auras" },
,{ "a": "Entomb", "b": "Reanimate", "tags": ["reanimator", "tutor"], "notes": "Classic yard setup and reanimate" } { "a": "Entomb", "b": "Reanimate", "tags": ["reanimator", "tutor"], "notes": "Classic yard setup and reanimate" },
,{ "a": "Buried Alive", "b": "Victimize", "tags": ["reanimator", "value"], "notes": "Load the yard, reanimate two" } { "a": "Buried Alive", "b": "Victimize", "tags": ["reanimator", "value"], "notes": "Load the yard, reanimate two" },
,{ "a": "Animate Dead", "b": "Dockside Extortionist", "tags": ["reanimator", "treasure"], "notes": "Reanimate ETB ramp threat" } { "a": "Animate Dead", "b": "Dockside Extortionist", "tags": ["reanimator", "treasure"], "notes": "Reanimate ETB ramp threat" },
,{ "a": "Aesi, Tyrant of Gyre Strait", "b": "Exploration", "tags": ["landfall", "card draw"], "notes": "Extra lands draw extra cards" } { "a": "Aesi, Tyrant of Gyre Strait", "b": "Exploration", "tags": ["landfall", "card draw"], "notes": "Extra lands draw extra cards" },
,{ "a": "Tatyova, Benthic Druid", "b": "Exploration", "tags": ["landfall", "card draw"], "notes": "Draw on extra land drops" } { "a": "Tatyova, Benthic Druid", "b": "Exploration", "tags": ["landfall", "card draw"], "notes": "Draw on extra land drops" },
,{ "a": "Crucible of Worlds", "b": "Strip Mine", "tags": ["stax", "lands"], "notes": "Soft lock on lands recursion" } { "a": "Crucible of Worlds", "b": "Strip Mine", "tags": ["stax", "lands"], "notes": "Soft lock on lands recursion" },
,{ "a": "Ramunap Excavator", "b": "Evolving Wilds", "tags": ["lands", "value"], "notes": "Repeatable fetchland utility" } { "a": "Ramunap Excavator", "b": "Evolving Wilds", "tags": ["lands", "value"], "notes": "Repeatable fetchland utility" },
,{ "a": "Life from the Loam", "b": "Lonely Sandbar", "tags": ["dredge", "card draw"], "notes": "Cycling lands plus Loam" } { "a": "Life from the Loam", "b": "Lonely Sandbar", "tags": ["dredge", "card draw"], "notes": "Cycling lands plus Loam" },
,{ "a": "Life from the Loam", "b": "Barren Moor", "tags": ["dredge", "card draw"], "notes": "Cycle and recur pattern" } { "a": "Life from the Loam", "b": "Barren Moor", "tags": ["dredge", "card draw"], "notes": "Cycle and recur pattern" },
,{ "a": "Field of the Dead", "b": "Evolving Wilds", "tags": ["landfall", "tokens"], "notes": "Fetchlands trigger Field tokens" } { "a": "Field of the Dead", "b": "Evolving Wilds", "tags": ["landfall", "tokens"], "notes": "Fetchlands trigger Field tokens" },
,{ "a": "Maskwood Nexus", "b": "Kindred Discovery", "tags": ["tribal", "card draw"], "notes": "All creatures share a type for draw" } { "a": "Maskwood Nexus", "b": "Kindred Discovery", "tags": ["tribal", "card draw"], "notes": "All creatures share a type for draw" },
,{ "a": "Krenko, Mob Boss", "b": "Skullclamp", "tags": ["goblins", "card draw"], "notes": "Go wide and convert to cards" } { "a": "Krenko, Mob Boss", "b": "Skullclamp", "tags": ["goblins", "card draw"], "notes": "Go wide and convert to cards" },
,{ "a": "Krenko, Mob Boss", "b": "Impact Tremors", "tags": ["goblins", "damage"], "notes": "Tokens ping table on entry" } { "a": "Krenko, Mob Boss", "b": "Impact Tremors", "tags": ["goblins", "damage"], "notes": "Tokens ping table on entry" },
,{ "a": "Tendershoot Dryad", "b": "Parallel Lives", "tags": ["tokens"], "notes": "Saprolings scale quickly" } { "a": "Tendershoot Dryad", "b": "Parallel Lives", "tags": ["tokens"], "notes": "Saprolings scale quickly" },
,{ "a": "Mycoloth", "b": "Parallel Lives", "tags": ["tokens"], "notes": "Devour grows exponential tokens" } { "a": "Mycoloth", "b": "Parallel Lives", "tags": ["tokens"], "notes": "Devour grows exponential tokens" },
,{ "a": "Risen Reef", "b": "Omnath, Locus of the Roil", "tags": ["elementals", "value"], "notes": "Elemental ETBs chain value" } { "a": "Risen Reef", "b": "Omnath, Locus of the Roil", "tags": ["elementals", "value"], "notes": "Elemental ETBs chain value" },
,{ "a": "Beast Whisperer", "b": "Elvish Mystic", "tags": ["elves", "card draw"], "notes": "Cheap creatures keep cards flowing" } { "a": "Beast Whisperer", "b": "Elvish Mystic", "tags": ["elves", "card draw"], "notes": "Cheap creatures keep cards flowing" },
,{ "a": "Birgi, God of Storytelling", "b": "Runaway Steam-Kin", "tags": ["spellslinger", "mana"], "notes": "Spells return mana and counters" } { "a": "Birgi, God of Storytelling", "b": "Runaway Steam-Kin", "tags": ["spellslinger", "mana"], "notes": "Spells return mana and counters" },
,{ "a": "Niv-Mizzet, Parun", "b": "Teferi's Ageless Insight", "tags": ["card draw", "damage"], "notes": "Extra cards fuel more pings" } { "a": "Niv-Mizzet, Parun", "b": "Teferi's Ageless Insight", "tags": ["card draw", "damage"], "notes": "Extra cards fuel more pings" },
,{ "a": "Throne of the God-Pharaoh", "b": "Bitterblossom", "tags": ["tokens", "damage"], "notes": "Tapped tokens drain opponents" } { "a": "Throne of the God-Pharaoh", "b": "Bitterblossom", "tags": ["tokens", "damage"], "notes": "Tapped tokens drain opponents" },
,{ "a": "Goblin Bombardment", "b": "Ophiomancer", "tags": ["aristocrats", "damage"], "notes": "Recurring sac fodder becomes pings" } { "a": "Goblin Bombardment", "b": "Ophiomancer", "tags": ["aristocrats", "damage"], "notes": "Recurring sac fodder becomes pings" },
,{ "a": "Urza, Lord High Artificer", "b": "Thopter Foundry", "tags": ["artifacts", "tokens"], "notes": "Thopters feed Urza mana" } { "a": "Urza, Lord High Artificer", "b": "Thopter Foundry", "tags": ["artifacts", "tokens"], "notes": "Thopters feed Urza mana" },
,{ "a": "Urza, Lord High Artificer", "b": "Sword of the Meek", "tags": ["artifacts", "tokens"], "notes": "Sword returns with Thopter tokens" } { "a": "Urza, Lord High Artificer", "b": "Sword of the Meek", "tags": ["artifacts", "tokens"], "notes": "Sword returns with Thopter tokens" },
,{ "a": "Cathars' Crusade", "b": "Avenger of Zendikar", "tags": ["tokens", "counters"], "notes": "Mass ETB puts counters on everything" } { "a": "Cathars' Crusade", "b": "Avenger of Zendikar", "tags": ["tokens", "counters"], "notes": "Mass ETB puts counters on everything" },
,{ "a": "Cathars' Crusade", "b": "Scute Swarm", "tags": ["tokens", "counters"], "notes": "Token explosions grow the team" } { "a": "Cathars' Crusade", "b": "Scute Swarm", "tags": ["tokens", "counters"], "notes": "Token explosions grow the team" },
,{ "a": "Felidar Retreat", "b": "Evolving Wilds", "tags": ["landfall", "tokens"], "notes": "Fetchlands double-trigger retreat" } { "a": "Felidar Retreat", "b": "Evolving Wilds", "tags": ["landfall", "tokens"], "notes": "Fetchlands double-trigger retreat" },
,{ "a": "Skullclamp", "b": "Endrek Sahr, Master Breeder", "tags": ["card draw", "tokens"], "notes": "Clamp the Thrulls for a draw engine" } { "a": "Skullclamp", "b": "Endrek Sahr, Master Breeder", "tags": ["card draw", "tokens"], "notes": "Clamp the Thrulls for a draw engine" },
,{ "a": "Earthcraft", "b": "Squirrel Nest", "tags": ["tokens", "ramp"], "notes": "Tap the enchanted land to make more squirrels" } { "a": "Earthcraft", "b": "Squirrel Nest", "tags": ["tokens", "ramp"], "notes": "Tap the enchanted land to make more squirrels" },
,{ "a": "Bitterblossom", "b": "Contamination", "tags": ["stax", "tokens"], "notes": "Upkeep fodder to maintain the lock" } { "a": "Bitterblossom", "b": "Contamination", "tags": ["stax", "tokens"], "notes": "Upkeep fodder to maintain the lock" },
,{ "a": "Smokestack", "b": "Ophiomancer", "tags": ["stax", "tokens"], "notes": "Serpents feed sac requirements" } { "a": "Smokestack", "b": "Ophiomancer", "tags": ["stax", "tokens"], "notes": "Serpents feed sac requirements" },
,{ "a": "Goblin Welder", "b": "Spine of Ish Sah", "tags": ["artifacts", "removal"], "notes": "Repeatable Vindicate with Welder loops" } { "a": "Goblin Welder", "b": "Spine of Ish Sah", "tags": ["artifacts", "removal"], "notes": "Repeatable Vindicate with Welder loops" },
,{ "a": "Goblin Welder", "b": "Ichor Wellspring", "tags": ["artifacts", "card draw"], "notes": "Weld for cards and value" } { "a": "Goblin Welder", "b": "Ichor Wellspring", "tags": ["artifacts", "card draw"], "notes": "Weld for cards and value" },
,{ "a": "Feldon of the Third Path", "b": "Wurmcoil Engine", "tags": ["artifacts", "value"], "notes": "Token copies generate lifelink/deathtouch tokens" } { "a": "Feldon of the Third Path", "b": "Wurmcoil Engine", "tags": ["artifacts", "value"], "notes": "Token copies generate lifelink/deathtouch tokens" },
,{ "a": "Brago, King Eternal", "b": "Strionic Resonator", "tags": ["blink", "engine"], "notes": "Copy Brago's trigger to chain blinks" } { "a": "Brago, King Eternal", "b": "Strionic Resonator", "tags": ["blink", "engine"], "notes": "Copy Brago's trigger to chain blinks" },
,{ "a": "Sanctum Weaver", "b": "Enchantress's Presence", "tags": ["enchantress", "ramp"], "notes": "Big mana plus steady card draw" } { "a": "Sanctum Weaver", "b": "Enchantress's Presence", "tags": ["enchantress", "ramp"], "notes": "Big mana plus steady card draw" },
,{ "a": "Setessan Champion", "b": "Rancor", "tags": ["auras", "card draw"], "notes": "Cheap aura cantrips and sticks around" } { "a": "Setessan Champion", "b": "Rancor", "tags": ["auras", "card draw"], "notes": "Cheap aura cantrips and sticks around" },
,{ "a": "Invisible Stalker", "b": "All That Glitters", "tags": ["voltron", "auras"], "notes": "Hexproof evasive body for big aura" } { "a": "Invisible Stalker", "b": "All That Glitters", "tags": ["voltron", "auras"], "notes": "Hexproof evasive body for big aura" },
,{ "a": "Hammer of Nazahn", "b": "Colossus Hammer", "tags": ["equipment", "tempo"], "notes": "Auto-equip and protect the carrier" } { "a": "Hammer of Nazahn", "b": "Colossus Hammer", "tags": ["equipment", "tempo"], "notes": "Auto-equip and protect the carrier" },
,{ "a": "Aetherflux Reservoir", "b": "Storm-Kiln Artist", "tags": ["storm", "lifegain"], "notes": "Treasure refunds spells to grow life total" } { "a": "Aetherflux Reservoir", "b": "Storm-Kiln Artist", "tags": ["storm", "lifegain"], "notes": "Treasure refunds spells to grow life total" },
,{ "a": "Dauthi Voidwalker", "b": "Wheel of Fortune", "tags": ["discard", "value"], "notes": "Exile discards and cast best spell" } { "a": "Dauthi Voidwalker", "b": "Wheel of Fortune", "tags": ["discard", "value"], "notes": "Exile discards and cast best spell" },
,{ "a": "Sheoldred, the Apocalypse", "b": "Windfall", "tags": ["wheels", "lifedrain"], "notes": "Opponents draw many, you gain and they lose" } { "a": "Sheoldred, the Apocalypse", "b": "Windfall", "tags": ["wheels", "lifedrain"], "notes": "Opponents draw many, you gain and they lose" },
,{ "a": "Syr Konrad, the Grim", "b": "Mesmeric Orb", "tags": ["mill", "damage"], "notes": "Self-mill drains table" } { "a": "Syr Konrad, the Grim", "b": "Mesmeric Orb", "tags": ["mill", "damage"], "notes": "Self-mill drains table" },
,{ "a": "Syr Konrad, the Grim", "b": "Altar of Dementia", "tags": ["mill", "aristocrats"], "notes": "Sac to mill and drain" } { "a": "Syr Konrad, the Grim", "b": "Altar of Dementia", "tags": ["mill", "aristocrats"], "notes": "Sac to mill and drain" },
,{ "a": "Ruin Crab", "b": "Evolving Wilds", "tags": ["mill", "landfall"], "notes": "Fetch lands double mill triggers" } { "a": "Ruin Crab", "b": "Evolving Wilds", "tags": ["mill", "landfall"], "notes": "Fetch lands double mill triggers" },
,{ "a": "Narset, Parter of Veils", "b": "Wheel of Fortune", "tags": ["wheels", "stax"], "notes": "Wheels become one-sided" } { "a": "Narset, Parter of Veils", "b": "Wheel of Fortune", "tags": ["wheels", "stax"], "notes": "Wheels become one-sided" },
,{ "a": "Narset, Parter of Veils", "b": "Echo of Eons", "tags": ["wheels", "stax"], "notes": "Self-flashback Time Spiral with Narset" } { "a": "Narset, Parter of Veils", "b": "Echo of Eons", "tags": ["wheels", "stax"], "notes": "Self-flashback Time Spiral with Narset" },
,{ "a": "Bolas's Citadel", "b": "Aetherflux Reservoir", "tags": ["lifegain", "engine"], "notes": "Casting from top grows life to fuel Citadel" } { "a": "Bolas's Citadel", "b": "Aetherflux Reservoir", "tags": ["lifegain", "engine"], "notes": "Casting from top grows life to fuel Citadel" },
,{ "a": "Bolas's Citadel", "b": "Sensei's Divining Top", "tags": ["topdeck", "engine"], "notes": "Top manipulates Citadel flips" } { "a": "Bolas's Citadel", "b": "Sensei's Divining Top", "tags": ["topdeck", "engine"], "notes": "Top manipulates Citadel flips" },
,{ "a": "Mystic Forge", "b": "Sensei's Divining Top", "tags": ["artifacts", "topdeck"], "notes": "Look/cast from top with Top selection" } { "a": "Mystic Forge", "b": "Sensei's Divining Top", "tags": ["artifacts", "topdeck"], "notes": "Look/cast from top with Top selection" },
,{ "a": "Amulet of Vigor", "b": "Simic Growth Chamber", "tags": ["lands", "ramp"], "notes": "Bounce lands untap for extra mana" } { "a": "Amulet of Vigor", "b": "Simic Growth Chamber", "tags": ["lands", "ramp"], "notes": "Bounce lands untap for extra mana" },
,{ "a": "Dryad of the Ilysian Grove", "b": "Valakut, the Molten Pinnacle", "tags": ["lands", "damage"], "notes": "Valakut online in any colors" } { "a": "Dryad of the Ilysian Grove", "b": "Valakut, the Molten Pinnacle", "tags": ["lands", "damage"], "notes": "Valakut online in any colors" },
,{ "a": "Azusa, Lost but Seeking", "b": "Valakut, the Molten Pinnacle", "tags": ["lands", "damage"], "notes": "Extra land drops power Valakut" } { "a": "Azusa, Lost but Seeking", "b": "Valakut, the Molten Pinnacle", "tags": ["lands", "damage"], "notes": "Extra land drops power Valakut" }
] ]
} }

View file

@ -1 +1,410 @@
{"source_url": "test", "generated_at": "now", "cards": ["Demonic Tutor"]} {
"cards": [
"Academy Rector",
"Aether Searcher",
"Altar of Bone",
"Amrou Scout",
"Analyze the Pollen",
"Anchor to Reality",
"Archdruid's Charm",
"Archmage Ascension",
"Arcum Dagsson",
"Arena Rector",
"Artificer's Intuition",
"Assembly Hall",
"Auratouched Mage",
"Aurochs Herd",
"Axgard Armory",
"Ayara's Oathsworn",
"Begin the Invasion",
"Behold the Beyond",
"Beseech the Mirror",
"Beseech the Queen",
"Bifurcate",
"Bilbo, Birthday Celebrant",
"Birthing Pod",
"Bitterheart Witch",
"Blightspeaker",
"Blood Speaker",
"Boggart Harbinger",
"Bog Glider",
"Boonweaver Giant",
"Brainspoil",
"Brightglass Gearhulk",
"Bringer of the Black Dawn",
"Bring to Light",
"Brutalizer Exarch",
"Buried Alive",
"Burning-Rune Demon",
"Call the Gatewatch",
"Captain Sisay",
"Caradora, Heart of Alacria",
"Case of the Stashed Skeleton",
"Cateran Brute",
"Cateran Enforcer",
"Cateran Kidnappers",
"Cateran Overlord",
"Cateran Persuader",
"Cateran Slaver",
"Cateran Summons",
"Central ElevatorPromising Stairs",
"Central Elevator // Promising Stairs",
"Chandra, Heart of Fire",
"Chord of Calling",
"Citanul Flute",
"Clarion Ultimatum",
"Cloud, Midgar Mercenary",
"Clutch of the Undercity",
"Conduit of Ruin",
"Conflux",
"Congregation at Dawn",
"Corpse Connoisseur",
"Corpse Harvester",
"Coveted Prize",
"Cruel Tutor",
"Curse of Misfortunes",
"Cynical Loner",
"Dark Petition",
"Deadeye Quartermaster",
"Deathbellow War Cry",
"Defense of the Heart",
"Defiant Falcon",
"Defiant Vanguard",
"Delivery Moogle",
"Demonic Bargain",
"Demonic Collusion",
"Demonic Consultation",
"Demonic Counsel",
"Demonic Tutor",
"Diabolic Intent",
"Diabolic Revelation",
"Diabolic Tutor",
"Dig Up",
"Dimir House Guard",
"Dimir Infiltrator",
"Dimir Machinations",
"Disciples of Gix",
"Distant Memories",
"Dizzy Spell",
"Djeru, With Eyes Open",
"Doomsday",
"Doubling Chant",
"Draconic Muralists",
"Dragon's Approach",
"Dragonstorm",
"Drift of Phantasms",
"Dwarven Recruiter",
"Ecological Appreciation",
"Eerie Procession",
"Eladamri's Call",
"Eldritch Evolution",
"Elvish Harbinger",
"Emergent Ultimatum",
"Enduring Ideal",
"Enigmatic Incarnation",
"Enlightened Tutor",
"Entomb",
"Ethereal Usher",
"Evolving Door",
"Eye of Ugin",
"Fabricate",
"Faerie Harbinger",
"Fang-Druid Summoner",
"Fauna Shaman",
"Fervent Mastery",
"Fiend Artisan",
"Fierce Empath",
"Fighter Class",
"Finale of Devastation",
"Final Parting",
"Firemind's Foresight",
"Flamekin Harbinger",
"Fleshwrither",
"Forerunner of the Coalition",
"Forerunner of the Empire",
"Forerunner of the Heralds",
"Forerunner of the Legion",
"Forging the Tyrite Sword",
"From Beyond",
"From Father to Son",
"Frostpyre Arcanist",
"Fugitive of the Judoon",
"Gamble",
"Garruk, Caller of Beasts",
"Garruk Relentless",
"Garruk Relentless // Garruk, the Veil-Cursed",
"Garruk, Unleashed",
"General Tazri",
"Giant Harbinger",
"Gifts Ungiven",
"Goblin Engineer",
"Goblin Matron",
"Goblin Recruiter",
"Godo, Bandit Warlord",
"Gravebreaker Lamia",
"Green Sun's Zenith",
"Grim Servant",
"Grim Tutor",
"Grozoth",
"Guardian Sunmare",
"Guidelight Pathmaker",
"Heliod's Pilgrim",
"Hibernation's End",
"Higure, the Still Wind",
"Hoarding Broodlord",
"Hoarding Dragon",
"Homing Sliver",
"Honored Knight-Captain",
"Hour of Victory",
"Huatli, Poet of Unity",
"Huatli, Poet of Unity // Roar of the Fifth People",
"Idyllic Tutor",
"Ignite the Beacon",
"Illicit Shipment",
"Imperial Hellkite",
"Imperial Recruiter",
"Imperial Seal",
"Iname as One",
"Iname, Death Aspect",
"Increasing Ambition",
"Infernal Tutor",
"Insatiable Avarice",
"Insidious Dreams",
"Instrument of the Bards",
"Intuition",
"Invasion of Arcavios",
"Invasion of Arcavios // Invocation of the Founders",
"Invasion of Ikoria",
"Invasion of Ikoria // Zilortha, Apex of Ikoria",
"Invasion of Theros",
"Invasion of Theros // Ephara, Ever-Sheltering",
"Inventors' Fair",
"InvertInvent",
"Invert // Invent",
"Iron Man, Titan of Innovation",
"Isperia the Inscrutable",
"Jarad's Orders",
"Kaho, Minamo Historian",
"Kaito Shizuki",
"Kasmina, Enigma Sage",
"Kellan, the Fae-BloodedBirthright Boon",
"Kellan, the Fae-Blooded // Birthright Boon",
"Kithkin Harbinger",
"Kuldotha Forgemaster",
"Lagomos, Hand of Hatred",
"Library of Lat-Nam",
"Lifespinner",
"Light-Paws, Emperor's Voice",
"Liliana Vess",
"Lim-Dûl's Vault",
"Lin Sivvi, Defiant Hero",
"Lively Dirge",
"Long-Term Plans",
"Lost Auramancers",
"Lotuslight Dancers",
"Loyal Inventor",
"Maelstrom of the Spirit Dragon",
"Magda, Brazen Outlaw",
"Magus of the Order",
"Mangara's Tome",
"Maralen of the Mornsong",
"March of Burgeoning Life",
"Mask of the Mimic",
"Mastermind's Acquisition",
"Mausoleum Secrets",
"Merchant Scroll",
"Merrow Harbinger",
"Micromancer",
"Mimeofacture",
"Mishra, Artificer Prodigy",
"Moggcatcher",
"Momir Vig, Simic Visionary",
"Moon-Blessed Cleric",
"Moonsilver Key",
"Muddle the Mixture",
"Mwonvuli Beast Tracker",
"Myr Kinsmith",
"Myr Turbine",
"Mystical Teachings",
"Mystical Tutor",
"Mythos of Brokkos",
"Nahiri, the Harbinger",
"Natural Order",
"Nature's Rhythm",
"Nazahn, Revered Bladesmith",
"Neoform",
"Netherborn Phalanx",
"Night Dealings",
"Nissa Revane",
"Noble Benefactor",
"Open the Armory",
"Opposition Agent",
"Oriq Loremage",
"Oswald Fiddlebender",
"Pack Hunt",
"Parallel Thoughts",
"Pattern Matcher",
"Pattern of Rebirth",
"Perplex",
"Personal Tutor",
"Phantom Carriage",
"Planar Bridge",
"Planar Portal",
"Plea for Guidance",
"Priest of the Wakening Sun",
"Primal Command",
"Prime Speaker Vannifar",
"Profane Tutor",
"Protean Hulk",
"Pyre of Heroes",
"Quest for the Holy Relic",
"Quiet Speculation",
"Ramosian Captain",
"Ramosian Commander",
"Ramosian Lieutenant",
"Ramosian Sergeant",
"Ramosian Sky Marshal",
"Ranger-Captain of Eos",
"Ranger of Eos",
"Ratcatcher",
"Rathi Assassin",
"Rathi Fiend",
"Rathi Intimidator",
"Razaketh's Rite",
"Razaketh, the Foulblooded",
"Reckless Handling",
"Recruiter of the Guard",
"Relic Seeker",
"Remembrance",
"Repurposing Bay",
"Reshape",
"Rhystic Tutor",
"Ring of Three Wishes",
"Ringsight",
"Rocco, Cabaretti Caterer",
"Rootless Yew",
"Runed Crown",
"Runeforge Champion",
"Rune-Scarred Demon",
"Rushed Rebirth",
"Saheeli Rai",
"Samut, the Tested",
"Sanctum of All",
"Sanctum of Ugin",
"Sarkhan, Dragonsoul",
"Sarkhan's Triumph",
"Sarkhan Unbroken",
"Savage Order",
"Sazh Katzroy",
"Scheming Symmetry",
"Scion of the Ur-Dragon",
"Scour for Scrap",
"Scrapyard Recombiner",
"Seahunter",
"Search for Glory",
"Secret Salvage",
"Self-Assembler",
"Servant of the Stinger",
"Shadowborn Apostle",
"Shadow-Rite Priest",
"Shared Summons",
"Shield-Wall Sentinel",
"Shred Memory",
"Shrine Steward",
"Sidisi, Undead Vizier",
"Signal the Clans",
"Sisay, Weatherlight Captain",
"Sivitri, Dragon Master",
"Skyship Weatherlight",
"Skyshroud Poacher",
"Sliver Overlord",
"Solve the Equation",
"Sovereigns of Lost Alara",
"Spellseeker",
"Sphinx Ambassador",
"Sphinx Summoner",
"Starfield Shepherd",
"Steelshaper Apprentice",
"Steelshaper's Gift",
"Step Through",
"Sterling Grove",
"Stoneforge Mystic",
"Stonehewer Giant",
"Summoner's Pact",
"Sunforger",
"SupplyDemand",
"Supply // Demand",
"Survival of the Fittest",
"Sylvan Tutor",
"Tainted Pact",
"Taj-Nar Swordsmith",
"Tallowisp",
"Tamiyo's Journal",
"Tempest Hawk",
"Templar Knight",
"Tezzeret, Artifice Master",
"Tezzeret, Cruel Captain",
"Tezzeret the Seeker",
"Thalia's Lancers",
"The Caves of Androzani",
"The Creation of Avacyn",
"The Cruelty of Gix",
"The Eleventh Hour",
"The Five Doctors",
"The Hunger Tide Rises",
"The Huntsman's Redemption",
"The Seriema",
"Thornvault Forager",
"Threats Undetected",
"Three Dreams",
"Tiamat",
"Time of Need",
"Tolaria West",
"Tooth and Nail",
"Totem-Guide Hartebeest",
"Transit Mage",
"Transmutation Font",
"Transmute Artifact",
"Trapmaker's Snare",
"Traverse the Ulvenwald",
"Treasure Chest",
"Treasure Mage",
"Treefolk Harbinger",
"Tribute Mage",
"Trinket Mage",
"Trophy Mage",
"Twice Upon a TimeUnlikely Meeting",
"Twice Upon a Time // Unlikely Meeting",
"Ugin, Eye of the Storms",
"Uncage the Menagerie",
"Unmarked Grave",
"Urza's Saga",
"Urza's Sylex",
"Vampiric Tutor",
"Varragoth, Bloodsky Sire",
"Vedalken Aethermage",
"Verdant Succession",
"Vexing Puzzlebox",
"Vile Entomber",
"Vivien, Monsters' Advocate",
"Vivien on the Hunt",
"Vizier of the Anointed",
"Wargate",
"War of the Last Alliance",
"Waterlogged Teachings",
"Waterlogged Teachings // Inundated Archive",
"Weird Harvest",
"Whir of Invention",
"Wild Pair",
"Wild Research",
"Wirewood Herald",
"Wishclaw Talisman",
"Woodland Bellower",
"Worldly Tutor",
"Yisan, the Wanderer Bard",
"Zirilan of the Claw",
"Zur the Enchanter"
],
"list_version": "v1.0",
"generated_at": "2025-09-04"
}

View file

@ -10,9 +10,16 @@ seed_defaults() {
if [ -d "/.defaults/config" ]; then if [ -d "/.defaults/config" ]; then
# deck.json # deck.json
[ -f /app/config/deck.json ] || cp "/.defaults/config/deck.json" "/app/config/deck.json" 2>/dev/null || true [ -f /app/config/deck.json ] || cp "/.defaults/config/deck.json" "/app/config/deck.json" 2>/dev/null || true
# combos.json and synergies.json # brackets.yml (power brackets) if present
[ -f /app/config/card_lists/combos.json ] || cp "/.defaults/config/card_lists/combos.json" "/app/config/card_lists/combos.json" 2>/dev/null || true [ -f /app/config/brackets.yml ] || { [ -f "/.defaults/config/brackets.yml" ] && cp "/.defaults/config/brackets.yml" "/app/config/brackets.yml"; } 2>/dev/null || true
[ -f /app/config/card_lists/synergies.json ] || cp "/.defaults/config/card_lists/synergies.json" "/app/config/card_lists/synergies.json" 2>/dev/null || true # Copy any default card list JSONs that are missing (generic loop)
if [ -d "/.defaults/config/card_lists" ]; then
for f in /.defaults/config/card_lists/*.json; do
[ -f "$f" ] || continue
base=$(basename "$f")
[ -f "/app/config/card_lists/$base" ] || cp "$f" "/app/config/card_lists/$base" 2>/dev/null || true
done
fi
fi fi
} }