{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://seedfinder.app/jaml.schema.json",
  "version": "5.1.43",
  "title": "JAML - Jimbo\u0027s Ante Markup Language",
  "description": "Schema for Balatro seed filter configuration files (.jaml)",
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Canonical normalized identifier for this filter. Used as the stable filter ID when provided."
    },
    "name": {
      "type": "string",
      "description": "Display name of the filter"
    },
    "description": {
      "type": "string",
      "description": "Description of what this filter searches for"
    },
    "author": {
      "type": "string",
      "description": "Creator of the filter"
    },
    "dateCreated": {
      "type": "string",
      "format": "date-time",
      "description": "ISO 8601 timestamp when filter was created"
    },
    "deck": {
      "type": "string",
      "enum": [
        "Red",
        "Blue",
        "Yellow",
        "Green",
        "Black",
        "Magic",
        "Nebula",
        "Ghost",
        "Abandoned",
        "Checkered",
        "Zodiac",
        "Painted",
        "Anaglyph",
        "Plasma",
        "Erratic"
      ],
      "description": "Balatro deck to search with",
      "default": "Red"
    },
    "stake": {
      "type": "string",
      "enum": [
        "White",
        "Red",
        "Green",
        "Black",
        "Blue",
        "Purple",
        "Orange",
        "Gold"
      ],
      "description": "Balatro stake level",
      "default": "White"
    },
    "seeds": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Known seed examples associated with this filter."
    },
    "hashtags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional discovery tags for this filter."
    },
    "aesthetics": {
      "type": "array",
      "description": "Optional seed-space constraints from JamlAesthetic (see definitions/JamlAesthetic). Applied when compatible; conflicts with host seeds, keywords, or random mode.",
      "items": {
        "$ref": "#/definitions/JamlAesthetic"
      }
    },
    "defaults": {
      "type": "object",
      "description": "Default values applied to clauses when a clause does not specify its own values.",
      "properties": {
        "antes": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 39
          },
          "description": "Default antes to check if a clause does not specify antes.",
          "default": [
            1,
            2,
            3,
            4,
            5,
            6,
            7,
            8
          ]
        },
        "boosterPacks": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "description": "Default pack offering slots to inspect.",
          "default": [
            0,
            1,
            2,
            3,
            4,
            5
          ]
        },
        "shopItems": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "description": "Default shop item slots to inspect.",
          "default": [
            0,
            1,
            2,
            3,
            4,
            5
          ]
        },
        "score": {
          "type": "integer",
          "minimum": 0,
          "description": "Default score for should clauses.",
          "default": 1
        }
      },
      "additionalProperties": false
    },
    "must": {
      "type": "array",
      "description": "Required clauses. All listed clauses must match.",
      "items": {
        "$ref": "#/definitions/clause"
      }
    },
    "should": {
      "type": "array",
      "description": "Scored clauses. Matching clauses add score but do not gate the seed by themselves.",
      "items": {
        "$ref": "#/definitions/clause"
      }
    },
    "mustNot": {
      "type": "array",
      "description": "Rejected clauses. If any listed clause matches, the seed is rejected.",
      "items": {
        "$ref": "#/definitions/clause"
      }
    }
  },
  "definitions": {
    "clause": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "Joker",
            "CommonJoker",
            "UncommonJoker",
            "RareJoker",
            "MixedJoker",
            "SoulJoker",
            "Voucher",
            "TarotCard",
            "Planet",
            "PlanetCard",
            "Spectral",
            "SpectralCard",
            "Tag",
            "SmallBlindTag",
            "BigBlindTag",
            "Boss",
            "BossBlind",
            "StandardCard",
            "Event",
            "LuckyMoney",
            "LuckyMult",
            "MisprintMult",
            "WheelOfFortune",
            "CavendishExtinct",
            "GrosMichelExtinct",
            "ErraticRank",
            "ErraticSuit",
            "ErraticCard",
            "StartingDraw",
            "And",
            "Or"
          ],
          "description": "Explicit clause type when using the type/value form."
        },
        "value": {
          "type": "string",
          "description": "Primary clause value when using the explicit type/value form."
        },
        "eventType": {
          "type": "string",
          "enum": [
            "LuckyMoney",
            "LuckyMult",
            "MisprintMult",
            "WheelOfFortune",
            "CavendishExtinct",
            "GrosMichelExtinct"
          ],
          "description": "Event clause value for the explicit type/eventType form."
        },
        "joker": {
          "type": "string",
          "enum": [
            "Joker",
            "GreedyJoker",
            "LustyJoker",
            "WrathfulJoker",
            "GluttonousJoker",
            "JollyJoker",
            "ZanyJoker",
            "MadJoker",
            "CrazyJoker",
            "DrollJoker",
            "SlyJoker",
            "WilyJoker",
            "CleverJoker",
            "DeviousJoker",
            "CraftyJoker",
            "HalfJoker",
            "CreditCard",
            "Banner",
            "MysticSummit",
            "EightBall",
            "Misprint",
            "RaisedFist",
            "ChaostheClown",
            "ScaryFace",
            "AbstractJoker",
            "DelayedGratification",
            "GrosMichel",
            "EvenSteven",
            "OddTodd",
            "Scholar",
            "BusinessCard",
            "Supernova",
            "RideTheBus",
            "Egg",
            "Runner",
            "IceCream",
            "Splash",
            "BlueJoker",
            "FacelessJoker",
            "GreenJoker",
            "Superposition",
            "ToDoList",
            "Cavendish",
            "RedCard",
            "SquareJoker",
            "RiffRaff",
            "Photograph",
            "ReservedParking",
            "MailInRebate",
            "Hallucination",
            "FortuneTeller",
            "Juggler",
            "Drunkard",
            "GoldenJoker",
            "Popcorn",
            "WalkieTalkie",
            "SmileyFace",
            "GoldenTicket",
            "Swashbuckler",
            "HangingChad",
            "ShootTheMoon",
            "JokerStencil",
            "FourFingers",
            "Mime",
            "CeremonialDagger",
            "MarbleJoker",
            "LoyaltyCard",
            "Dusk",
            "Fibonacci",
            "SteelJoker",
            "Hack",
            "Pareidolia",
            "SpaceJoker",
            "Burglar",
            "Blackboard",
            "SixthSense",
            "Constellation",
            "Hiker",
            "CardSharp",
            "Madness",
            "Seance",
            "Vampire",
            "Shortcut",
            "Hologram",
            "Cloud9",
            "Rocket",
            "MidasMask",
            "Luchador",
            "GiftCard",
            "TurtleBean",
            "Erosion",
            "ToTheMoon",
            "StoneJoker",
            "LuckyCat",
            "Bull",
            "DietCola",
            "TradingCard",
            "FlashCard",
            "SpareTrousers",
            "Ramen",
            "Seltzer",
            "Castle",
            "MrBones",
            "Acrobat",
            "SockAndBuskin",
            "Troubadour",
            "Certificate",
            "SmearedJoker",
            "Throwback",
            "RoughGem",
            "Bloodstone",
            "Arrowhead",
            "OnyxAgate",
            "GlassJoker",
            "Showman",
            "FlowerPot",
            "MerryAndy",
            "OopsAll6s",
            "TheIdol",
            "SeeingDouble",
            "Matador",
            "Satellite",
            "Cartomancer",
            "Astronomer",
            "Bootstraps",
            "DNA",
            "Vagabond",
            "Baron",
            "Obelisk",
            "BaseballCard",
            "AncientJoker",
            "Campfire",
            "Blueprint",
            "WeeJoker",
            "HitTheRoad",
            "TheDuo",
            "TheTrio",
            "TheFamily",
            "TheOrder",
            "TheTribe",
            "Stuntman",
            "InvisibleJoker",
            "Brainstorm",
            "DriversLicense",
            "BurntJoker",
            "Canio",
            "Triboulet",
            "Yorick",
            "Chicot",
            "Perkeo"
          ],
          "description": "Joker clause."
        },
        "jokers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Joker clause matching any listed joker names."
        },
        "commonJoker": {
          "type": "string",
          "enum": [
            "Joker",
            "GreedyJoker",
            "LustyJoker",
            "WrathfulJoker",
            "GluttonousJoker",
            "JollyJoker",
            "ZanyJoker",
            "MadJoker",
            "CrazyJoker",
            "DrollJoker",
            "SlyJoker",
            "WilyJoker",
            "CleverJoker",
            "DeviousJoker",
            "CraftyJoker",
            "HalfJoker",
            "CreditCard",
            "Banner",
            "MysticSummit",
            "EightBall",
            "Misprint",
            "RaisedFist",
            "ChaostheClown",
            "ScaryFace",
            "AbstractJoker",
            "DelayedGratification",
            "GrosMichel",
            "EvenSteven",
            "OddTodd",
            "Scholar",
            "BusinessCard",
            "Supernova",
            "RideTheBus",
            "Egg",
            "Runner",
            "IceCream",
            "Splash",
            "BlueJoker",
            "FacelessJoker",
            "GreenJoker",
            "Superposition",
            "ToDoList",
            "Cavendish",
            "RedCard",
            "SquareJoker",
            "RiffRaff",
            "Photograph",
            "ReservedParking",
            "MailInRebate",
            "Hallucination",
            "FortuneTeller",
            "Juggler",
            "Drunkard",
            "GoldenJoker",
            "Popcorn",
            "WalkieTalkie",
            "SmileyFace",
            "GoldenTicket",
            "Swashbuckler",
            "HangingChad",
            "ShootTheMoon"
          ],
          "description": "Common Joker clause."
        },
        "commonJokers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Common Joker clause matching any listed common joker names."
        },
        "uncommonJoker": {
          "type": "string",
          "enum": [
            "JokerStencil",
            "FourFingers",
            "Mime",
            "CeremonialDagger",
            "MarbleJoker",
            "LoyaltyCard",
            "Dusk",
            "Fibonacci",
            "SteelJoker",
            "Hack",
            "Pareidolia",
            "SpaceJoker",
            "Burglar",
            "Blackboard",
            "SixthSense",
            "Constellation",
            "Hiker",
            "CardSharp",
            "Madness",
            "Seance",
            "Vampire",
            "Shortcut",
            "Hologram",
            "Cloud9",
            "Rocket",
            "MidasMask",
            "Luchador",
            "GiftCard",
            "TurtleBean",
            "Erosion",
            "ToTheMoon",
            "StoneJoker",
            "LuckyCat",
            "Bull",
            "DietCola",
            "TradingCard",
            "FlashCard",
            "SpareTrousers",
            "Ramen",
            "Seltzer",
            "Castle",
            "MrBones",
            "Acrobat",
            "SockAndBuskin",
            "Troubadour",
            "Certificate",
            "SmearedJoker",
            "Throwback",
            "RoughGem",
            "Bloodstone",
            "Arrowhead",
            "OnyxAgate",
            "GlassJoker",
            "Showman",
            "FlowerPot",
            "MerryAndy",
            "OopsAll6s",
            "TheIdol",
            "SeeingDouble",
            "Matador",
            "Satellite",
            "Cartomancer",
            "Astronomer",
            "Bootstraps"
          ],
          "description": "Uncommon Joker clause."
        },
        "uncommonJokers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Uncommon Joker clause matching any listed uncommon joker names."
        },
        "rareJoker": {
          "type": "string",
          "enum": [
            "DNA",
            "Vagabond",
            "Baron",
            "Obelisk",
            "BaseballCard",
            "AncientJoker",
            "Campfire",
            "Blueprint",
            "WeeJoker",
            "HitTheRoad",
            "TheDuo",
            "TheTrio",
            "TheFamily",
            "TheOrder",
            "TheTribe",
            "Stuntman",
            "InvisibleJoker",
            "Brainstorm",
            "DriversLicense",
            "BurntJoker"
          ],
          "description": "Rare Joker clause."
        },
        "rareJokers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Rare Joker clause matching any listed rare joker names."
        },
        "mixedJoker": {
          "type": "string",
          "enum": [
            "Joker",
            "GreedyJoker",
            "LustyJoker",
            "WrathfulJoker",
            "GluttonousJoker",
            "JollyJoker",
            "ZanyJoker",
            "MadJoker",
            "CrazyJoker",
            "DrollJoker",
            "SlyJoker",
            "WilyJoker",
            "CleverJoker",
            "DeviousJoker",
            "CraftyJoker",
            "HalfJoker",
            "CreditCard",
            "Banner",
            "MysticSummit",
            "EightBall",
            "Misprint",
            "RaisedFist",
            "ChaostheClown",
            "ScaryFace",
            "AbstractJoker",
            "DelayedGratification",
            "GrosMichel",
            "EvenSteven",
            "OddTodd",
            "Scholar",
            "BusinessCard",
            "Supernova",
            "RideTheBus",
            "Egg",
            "Runner",
            "IceCream",
            "Splash",
            "BlueJoker",
            "FacelessJoker",
            "GreenJoker",
            "Superposition",
            "ToDoList",
            "Cavendish",
            "RedCard",
            "SquareJoker",
            "RiffRaff",
            "Photograph",
            "ReservedParking",
            "MailInRebate",
            "Hallucination",
            "FortuneTeller",
            "Juggler",
            "Drunkard",
            "GoldenJoker",
            "Popcorn",
            "WalkieTalkie",
            "SmileyFace",
            "GoldenTicket",
            "Swashbuckler",
            "HangingChad",
            "ShootTheMoon",
            "JokerStencil",
            "FourFingers",
            "Mime",
            "CeremonialDagger",
            "MarbleJoker",
            "LoyaltyCard",
            "Dusk",
            "Fibonacci",
            "SteelJoker",
            "Hack",
            "Pareidolia",
            "SpaceJoker",
            "Burglar",
            "Blackboard",
            "SixthSense",
            "Constellation",
            "Hiker",
            "CardSharp",
            "Madness",
            "Seance",
            "Vampire",
            "Shortcut",
            "Hologram",
            "Cloud9",
            "Rocket",
            "MidasMask",
            "Luchador",
            "GiftCard",
            "TurtleBean",
            "Erosion",
            "ToTheMoon",
            "StoneJoker",
            "LuckyCat",
            "Bull",
            "DietCola",
            "TradingCard",
            "FlashCard",
            "SpareTrousers",
            "Ramen",
            "Seltzer",
            "Castle",
            "MrBones",
            "Acrobat",
            "SockAndBuskin",
            "Troubadour",
            "Certificate",
            "SmearedJoker",
            "Throwback",
            "RoughGem",
            "Bloodstone",
            "Arrowhead",
            "OnyxAgate",
            "GlassJoker",
            "Showman",
            "FlowerPot",
            "MerryAndy",
            "OopsAll6s",
            "TheIdol",
            "SeeingDouble",
            "Matador",
            "Satellite",
            "Cartomancer",
            "Astronomer",
            "Bootstraps",
            "DNA",
            "Vagabond",
            "Baron",
            "Obelisk",
            "BaseballCard",
            "AncientJoker",
            "Campfire",
            "Blueprint",
            "WeeJoker",
            "HitTheRoad",
            "TheDuo",
            "TheTrio",
            "TheFamily",
            "TheOrder",
            "TheTribe",
            "Stuntman",
            "InvisibleJoker",
            "Brainstorm",
            "DriversLicense",
            "BurntJoker",
            "Canio",
            "Triboulet",
            "Yorick",
            "Chicot",
            "Perkeo"
          ],
          "description": "Mixed-rarity Joker clause."
        },
        "mixedJokers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Mixed-rarity Joker clause matching any listed joker names."
        },
        "soulJoker": {
          "type": "string",
          "enum": [
            "Canio",
            "Triboulet",
            "Yorick",
            "Chicot",
            "Perkeo"
          ],
          "description": "Soul Joker clause."
        },
        "legendaryJoker": {
          "type": "string",
          "enum": [
            "Canio",
            "Triboulet",
            "Yorick",
            "Chicot",
            "Perkeo"
          ],
          "description": "Legendary Joker clause."
        },
        "voucher": {
          "type": "string",
          "enum": [
            "Overstock",
            "OverstockPlus",
            "ClearanceSale",
            "Liquidation",
            "Hone",
            "GlowUp",
            "RerollSurplus",
            "RerollGlut",
            "CrystalBall",
            "OmenGlobe",
            "Telescope",
            "Observatory",
            "Grabber",
            "NachoTong",
            "Wasteful",
            "Recyclomancy",
            "TarotMerchant",
            "TarotTycoon",
            "PlanetMerchant",
            "PlanetTycoon",
            "SeedMoney",
            "MoneyTree",
            "Blank",
            "Antimatter",
            "MagicTrick",
            "Illusion",
            "Hieroglyph",
            "Petroglyph",
            "DirectorsCut",
            "Retcon",
            "PaintBrush",
            "Palette"
          ],
          "description": "Voucher clause."
        },
        "vouchers": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "description": "Voucher clause matching any listed voucher names."
        },
        "tarot": {
          "type": "string",
          "enum": [
            "TheFool",
            "TheMagician",
            "TheHighPriestess",
            "TheEmpress",
            "TheEmperor",
            "TheHierophant",
            "TheLovers",
            "TheChariot",
            "Justice",
            "TheHermit",
            "TheWheelOfFortune",
            "Strength",
            "TheHangedMan",
            "Death",
            "Temperance",
            "TheDevil",
            "TheTower",
            "TheStar",
            "TheMoon",
            "TheSun",
            "Judgement",
            "TheWorld"
          ],
          "description": "Tarot card clause."
        },
        "tarotCard": {
          "type": "string",
          "enum": [
            "TheFool",
            "TheMagician",
            "TheHighPriestess",
            "TheEmpress",
            "TheEmperor",
            "TheHierophant",
            "TheLovers",
            "TheChariot",
            "Justice",
            "TheHermit",
            "TheWheelOfFortune",
            "Strength",
            "TheHangedMan",
            "Death",
            "Temperance",
            "TheDevil",
            "TheTower",
            "TheStar",
            "TheMoon",
            "TheSun",
            "Judgement",
            "TheWorld"
          ],
          "description": "Tarot card clause."
        },
        "spectral": {
          "type": "string",
          "enum": [
            "Familiar",
            "Grim",
            "Incantation",
            "Talisman",
            "Aura",
            "Wraith",
            "Sigil",
            "Ouija",
            "Ectoplasm",
            "Immolate",
            "Ankh",
            "DejaVu",
            "Hex",
            "Trance",
            "Medium",
            "Cryptid",
            "TheSoul",
            "BlackHole"
          ],
          "description": "Spectral card clause."
        },
        "spectralCard": {
          "type": "string",
          "enum": [
            "Familiar",
            "Grim",
            "Incantation",
            "Talisman",
            "Aura",
            "Wraith",
            "Sigil",
            "Ouija",
            "Ectoplasm",
            "Immolate",
            "Ankh",
            "DejaVu",
            "Hex",
            "Trance",
            "Medium",
            "Cryptid",
            "TheSoul",
            "BlackHole"
          ],
          "description": "Spectral card clause."
        },
        "planet": {
          "type": "string",
          "enum": [
            "Mercury",
            "Venus",
            "Earth",
            "Mars",
            "Jupiter",
            "Saturn",
            "Uranus",
            "Neptune",
            "Pluto",
            "PlanetX",
            "Ceres",
            "Eris"
          ],
          "description": "Planet card clause."
        },
        "planetCard": {
          "type": "string",
          "enum": [
            "Mercury",
            "Venus",
            "Earth",
            "Mars",
            "Jupiter",
            "Saturn",
            "Uranus",
            "Neptune",
            "Pluto",
            "PlanetX",
            "Ceres",
            "Eris"
          ],
          "description": "Planet card clause."
        },
        "boss": {
          "type": "string",
          "enum": [
            "TheClub",
            "TheGoad",
            "TheHead",
            "TheHook",
            "TheManacle",
            "ThePillar",
            "ThePsychic",
            "TheWindow",
            "TheArm",
            "TheFish",
            "TheFlint",
            "TheHouse",
            "TheMark",
            "TheMouth",
            "TheNeedle",
            "TheWall",
            "TheWater",
            "TheWheel",
            "TheEye",
            "TheTooth",
            "ThePlant",
            "TheSerpent",
            "TheOx",
            "AmberAcorn",
            "CeruleanBell",
            "CrimsonHeart",
            "VerdantLeaf",
            "VioletVessel"
          ],
          "description": "Boss clause."
        },
        "tag": {
          "type": "string",
          "enum": [
            "UncommonTag",
            "RareTag",
            "NegativeTag",
            "FoilTag",
            "HolographicTag",
            "PolychromeTag",
            "InvestmentTag",
            "VoucherTag",
            "BossTag",
            "StandardTag",
            "CharmTag",
            "MeteorTag",
            "BuffoonTag",
            "HandyTag",
            "GarbageTag",
            "EtherealTag",
            "CouponTag",
            "DoubleTag",
            "JuggleTag",
            "D6Tag",
            "TopupTag",
            "SpeedTag",
            "OrbitalTag",
            "EconomyTag"
          ],
          "description": "Tag clause matching either blind position."
        },
        "smallBlindTag": {
          "type": "string",
          "enum": [
            "UncommonTag",
            "RareTag",
            "NegativeTag",
            "FoilTag",
            "HolographicTag",
            "PolychromeTag",
            "InvestmentTag",
            "VoucherTag",
            "BossTag",
            "StandardTag",
            "CharmTag",
            "MeteorTag",
            "BuffoonTag",
            "HandyTag",
            "GarbageTag",
            "EtherealTag",
            "CouponTag",
            "DoubleTag",
            "JuggleTag",
            "D6Tag",
            "TopupTag",
            "SpeedTag",
            "OrbitalTag",
            "EconomyTag"
          ],
          "description": "Small blind tag clause."
        },
        "bigBlindTag": {
          "type": "string",
          "enum": [
            "UncommonTag",
            "RareTag",
            "NegativeTag",
            "FoilTag",
            "HolographicTag",
            "PolychromeTag",
            "InvestmentTag",
            "VoucherTag",
            "BossTag",
            "StandardTag",
            "CharmTag",
            "MeteorTag",
            "BuffoonTag",
            "HandyTag",
            "GarbageTag",
            "EtherealTag",
            "CouponTag",
            "DoubleTag",
            "JuggleTag",
            "D6Tag",
            "TopupTag",
            "SpeedTag",
            "OrbitalTag",
            "EconomyTag"
          ],
          "description": "Big blind tag clause."
        },
        "standardCard": {
          "type": "string",
          "enum": [
            "C2",
            "C3",
            "C4",
            "C5",
            "C6",
            "C7",
            "C8",
            "C9",
            "C10",
            "CJ",
            "CQ",
            "CK",
            "CA",
            "D2",
            "D3",
            "D4",
            "D5",
            "D6",
            "D7",
            "D8",
            "D9",
            "D10",
            "DJ",
            "DQ",
            "DK",
            "DA",
            "H2",
            "H3",
            "H4",
            "H5",
            "H6",
            "H7",
            "H8",
            "H9",
            "H10",
            "HJ",
            "HQ",
            "HK",
            "HA",
            "S2",
            "S3",
            "S4",
            "S5",
            "S6",
            "S7",
            "S8",
            "S9",
            "S10",
            "SJ",
            "SQ",
            "SK",
            "SA"
          ],
          "description": "Playing card clause."
        },
        "erraticRank": {
          "type": "string",
          "enum": [
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9",
            "10",
            "J",
            "Jack",
            "Q",
            "Queen",
            "K",
            "King",
            "A",
            "Ace"
          ],
          "description": "Erratic deck rank clause."
        },
        "erraticSuit": {
          "type": "string",
          "enum": [
            "Hearts",
            "Diamonds",
            "Clubs",
            "Spades"
          ],
          "description": "Erratic deck suit clause."
        },
        "erraticCard": {
          "type": "string",
          "enum": [
            "C2",
            "C3",
            "C4",
            "C5",
            "C6",
            "C7",
            "C8",
            "C9",
            "C10",
            "CJ",
            "CQ",
            "CK",
            "CA",
            "D2",
            "D3",
            "D4",
            "D5",
            "D6",
            "D7",
            "D8",
            "D9",
            "D10",
            "DJ",
            "DQ",
            "DK",
            "DA",
            "H2",
            "H3",
            "H4",
            "H5",
            "H6",
            "H7",
            "H8",
            "H9",
            "H10",
            "HJ",
            "HQ",
            "HK",
            "HA",
            "S2",
            "S3",
            "S4",
            "S5",
            "S6",
            "S7",
            "S8",
            "S9",
            "S10",
            "SJ",
            "SQ",
            "SK",
            "SA"
          ],
          "description": "Erratic deck card clause."
        },
        "startingDraw": {
          "type": "string",
          "enum": [
            "C2",
            "C3",
            "C4",
            "C5",
            "C6",
            "C7",
            "C8",
            "C9",
            "C10",
            "CJ",
            "CQ",
            "CK",
            "CA",
            "D2",
            "D3",
            "D4",
            "D5",
            "D6",
            "D7",
            "D8",
            "D9",
            "D10",
            "DJ",
            "DQ",
            "DK",
            "DA",
            "H2",
            "H3",
            "H4",
            "H5",
            "H6",
            "H7",
            "H8",
            "H9",
            "H10",
            "HJ",
            "HQ",
            "HK",
            "HA",
            "S2",
            "S3",
            "S4",
            "S5",
            "S6",
            "S7",
            "S8",
            "S9",
            "S10",
            "SJ",
            "SQ",
            "SK",
            "SA"
          ],
          "description": "Starting draw clause."
        },
        "event": {
          "type": "string",
          "enum": [
            "LuckyMoney",
            "LuckyMult",
            "MisprintMult",
            "WheelOfFortune",
            "CavendishExtinct",
            "GrosMichelExtinct"
          ],
          "description": "Event clause."
        },
        "antes": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 39
          },
          "description": "Which antes to search in."
        },
        "score": {
          "type": "integer",
          "minimum": 0,
          "description": "Score contribution for should clauses.",
          "default": 1
        },
        "min": {
          "type": "integer",
          "minimum": 0,
          "description": "Minimum matches required for this clause."
        },
        "max": {
          "type": "integer",
          "minimum": 0,
          "description": "Maximum matches allowed for this clause."
        },
        "label": {
          "type": "string",
          "description": "Custom label for result output."
        },
        "edition": {
          "type": "string",
          "enum": [
            "Foil",
            "Holographic",
            "Polychrome",
            "Negative"
          ],
          "description": "Required edition for matching items."
        },
        "stickers": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "Eternal",
              "Perishable",
              "Rental"
            ]
          },
          "description": "Required joker stickers."
        },
        "seal": {
          "type": "string",
          "enum": [
            "Gold",
            "Red",
            "Blue",
            "Purple"
          ],
          "description": "Required seal for playing cards."
        },
        "enhancement": {
          "type": "string",
          "enum": [
            "Bonus",
            "Mult",
            "Wild",
            "Glass",
            "Steel",
            "Stone",
            "Gold",
            "Lucky"
          ],
          "description": "Required enhancement for playing cards."
        },
        "rank": {
          "type": "string",
          "enum": [
            "2",
            "3",
            "4",
            "5",
            "6",
            "7",
            "8",
            "9",
            "10",
            "J",
            "Jack",
            "Q",
            "Queen",
            "K",
            "King",
            "A",
            "Ace"
          ],
          "description": "Required rank for playing-card-based clauses."
        },
        "suit": {
          "type": "string",
          "enum": [
            "Hearts",
            "Diamonds",
            "Clubs",
            "Spades"
          ],
          "description": "Required suit for playing-card-based clauses."
        },
        "rolls": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0
          },
          "description": "Event occurrence indices to check."
        },
        "multValue": {
          "type": "integer",
          "minimum": 0,
          "description": "Exact mult value for MisprintMult event (0-23). If omitted, matches any value.",
          "maximum": 23
        },
        "shopItems": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 1023
          },
          "description": "Clause-level source mapping for shop item slots."
        },
        "boosterPacks": {
          "type": "array",
          "items": {
            "type": "integer",
            "minimum": 0,
            "maximum": 5
          },
          "description": "Clause-level source mapping for pack offering slots."
        },
        "minShopSlot": {
          "type": "integer",
          "minimum": 0,
          "description": "Minimum shop slot index for range generation.",
          "maximum": 1023
        },
        "maxShopSlot": {
          "type": "integer",
          "minimum": 0,
          "description": "Maximum shop slot index for range generation.",
          "maximum": 1023
        },
        "minPackSlot": {
          "type": "integer",
          "minimum": 0,
          "description": "Minimum pack slot index for range generation.",
          "maximum": 5
        },
        "maxPackSlot": {
          "type": "integer",
          "minimum": 0,
          "description": "Maximum pack slot index for range generation.",
          "maximum": 5
        },
        "sources": {
          "type": "object",
          "description": "Source mapping that describes where the clause may be satisfied.",
          "properties": {
            "shopItems": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 1023
              },
              "description": "Shop item slot indices."
            },
            "boosterPacks": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0,
                "maximum": 5
              },
              "description": "Pack offering slot indices."
            },
            "minShopSlot": {
              "type": "integer",
              "minimum": 0,
              "description": "Minimum shop slot index for range generation.",
              "maximum": 1023
            },
            "maxShopSlot": {
              "type": "integer",
              "minimum": 0,
              "description": "Maximum shop slot index for range generation.",
              "maximum": 1023
            },
            "minPackSlot": {
              "type": "integer",
              "minimum": 0,
              "description": "Minimum pack slot index for range generation.",
              "maximum": 5
            },
            "maxPackSlot": {
              "type": "integer",
              "minimum": 0,
              "description": "Maximum pack slot index for range generation.",
              "maximum": 5
            },
            "tags": {
              "type": "boolean",
              "description": "Allow tag-based sources."
            },
            "requireMega": {
              "type": "boolean",
              "description": "Require Mega pack sources where applicable."
            },
            "charmTag": {
              "type": "boolean",
              "description": "Tarot/arcana booster scoring: include Charm Tag bonus Arcana (second weighted shop pack when no natural Arcana)."
            },
            "etherealTag": {
              "type": "boolean",
              "description": "Spectral booster scoring: include Ethereal Tag bonus Spectral (second weighted shop pack when no natural Spectral)."
            },
            "judgement": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Judgement roll indices."
            },
            "rareTag": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Rare Tag roll indices."
            },
            "uncommonTag": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Uncommon Tag roll indices."
            },
            "wraith": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Wraith roll indices."
            },
            "soulCard": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Soul card roll indices."
            },
            "riffRaff": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Riff-Raff roll indices."
            },
            "purpleSealOrEightBall": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Purple Seal or 8 Ball tarot roll indices."
            },
            "emperor": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Emperor roll indices."
            },
            "sixthSense": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Sixth Sense roll indices."
            },
            "seance": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Seance roll indices."
            },
            "certificate": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Certificate roll indices."
            },
            "incantation": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Incantation roll indices."
            },
            "familiar": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Familiar roll indices."
            },
            "grim": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Grim roll indices."
            },
            "deckDraw": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Deck draw positions."
            },
            "uncommonShopJokers": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Raw uncommon shop joker stream positions."
            },
            "rareShopJokers": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Raw rare shop joker stream positions."
            },
            "commonShopJokers": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Raw common shop joker stream positions."
            },
            "allShopJokers": {
              "type": "array",
              "items": {
                "type": "integer",
                "minimum": 0
              },
              "description": "Raw shop joker stream positions across all rarities."
            }
          },
          "additionalProperties": false
        },
        "and": {
          "type": "array",
          "description": "Nested AND clause list.",
          "items": {
            "$ref": "#/definitions/clause"
          }
        },
        "or": {
          "type": "array",
          "description": "Nested OR clause list.",
          "items": {
            "$ref": "#/definitions/clause"
          }
        }
      },
      "allOf": [
        {
          "if": {
            "anyOf": [
              {
                "required": [
                  "event"
                ]
              },
              {
                "required": [
                  "eventType"
                ]
              },
              {
                "properties": {
                  "type": {
                    "enum": [
                      "Event",
                      "LuckyMoney",
                      "LuckyMult",
                      "MisprintMult",
                      "WheelOfFortune",
                      "CavendishExtinct",
                      "GrosMichelExtinct"
                    ]
                  }
                },
                "required": [
                  "type"
                ]
              }
            ]
          },
          "then": {
            "not": {
              "required": [
                "antes"
              ]
            }
          }
        }
      ],
      "additionalProperties": false,
      "minProperties": 1
    },
    "JamlAesthetic": {
      "title": "JamlAesthetic",
      "description": "Named constraint on which seeds participate in search. Motely: see JamlAesthetics for enumeration and Matches(); seed alphabet is Motely.SeedDigits, max length Motely.MaxSeedLength.",
      "type": "string",
      "enum": [
        "palindrome"
      ]
    }
  },
  "additionalProperties": false
}
