Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Added "simulate_combat"; changed the definition of "save_roster" (14 tools before, 15 now)
⟨11 unchanged words⟩ :"string"},{"type":"null"}],"default":null},"catalogueId":{"maxLength":64,"minLength" ⟨451 unchanged words⟩
Estimate combat between two units — Runs Praetorium's exact combat simulator for one attacking unit, with any attached leaders, against one defending unit at full strength: shooting, melee, and shooting followed by melee. Returns expected models destroyed, expected wounds lost, the chance to destroy the unit, cumulative odds, weapons used, the rule and weapon-mode choices each side can change, datasheet citations, and a simulator link. Passive datasheet rules apply by default; stratagems and conditional rules stay off until chosen. Unsupported mechanics are refused or listed under notCalculated rather than approximated. Like th…
Changed the definition of "create_battle" and "submit_battle_action"
⟨14 unchanged words⟩ ,"type":"boolean"},"limit":{"anyOf":[{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},{"type":"null"}]},"missionPackId":{"anyOf":[{"maxLength" ⟨32 unchanged words⟩
⟨21 unchanged words⟩ ,"type":"string"},"limit":{"anyOf":[{"maximum":10000,"minimum":0,"type":"integer"},{"type":"null"}]},"missionPackId":{"anyOf":[{"maxLength" ⟨3358 unchanged words⟩
Changed the definition of "save_roster" and "submit_battle_action"
⟨193 unchanged words⟩ items":{"oneOf":[{"properties":{"firstRoundOnly":{"type":"boolean"},"moment":{"enum":["phase-start","phase-end" ⟨5 unchanged words⟩ ,"movement","shooting","charge","fight","any"],"type":"string"},"turn":{ ⟨10 unchanged words⟩ "type":"object"},{"properties":{"firstRoundOnly":{"type":"boolean"},"moment":{"enum":["turn-start","turn-end" ⟨14 unchanged words⟩ phase","turn"],"type":"object"},{"properties":{"firstRoundOnly":{"type":"boolean"},"moment":{"enum":["round-start","round-end"],"type":"string"},"phase":{"type":"null"},"turn":{"const":"either","type":"string"}},"required":["moment","phase","turn"],"type":"object"}]},"maxItems":10,"minItems":1,"type":" ⟨18 unchanged words⟩ ["index","name"],"type":"object"},"whileDestroyed":{"type":"boolean"}},"required":["key","ability" ⟨160 unchanged words⟩
Authorization not required, issuer https://praetorium.gg/api/auth
Changed the definition of "save_roster" and "submit_battle_action"
⟨334 unchanged words⟩ :{"enum":["phase","turn","battle-round","battle","unlimited"],"type":"string"} ⟨95 unchanged words⟩
before
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"command":{"anyOf":[{"oneOf":[{"properties":{"clockLimitMinutes":{"anyOf":[{"maximum":300,"minimum":5,"type":"integer"},{"type":"null"}]},"kind":{"const":"configure-battle","type":"string"},"limit":{"maximum":10000,"minimum":0,"type":"integer"},"missionPackId":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]},"playerCount":{"anyOf":[{"const":2,"type":"number"},{"const":3,"type":"number"},{"const":4,"type":"number"}]},"teamBattle":{"type":"boolean"},"terrainLayoutId":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]},"twistId":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","limit","missionPackId","terrainLayoutId","twistId","clockLimitMinutes"],"type":"object"},{"properties":{"kind":{"const":"reset-setup","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"detach-roster","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"eventToken":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"lock-league-rosters","type":"string"},"leagueToken":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","leagueToken"],"type":"object"},{"properties":{"kind":{"const":"set-setup-step","type":"string"},"step":{"maximum":9,"minimum":0,"type":"integer"}},"required":["kind","step"],"type":"object"},{"properties":{"attackerId":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"set-attacker","type":"string"}},"required":["kind","attackerId"],"type":"object"},{"properties":{"firstPlayerId":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"set-first-turn","type":"string"}},"required":["kind","firstPlayerId"],"type":"object"},{"properties":{"disposition":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"set-side-disposition","type":"string"},"side":{"maximum":1,"minimum":0,"type":"integer"}},"required":["kind","side","disposition"],"type":"object"},{"properties":{"kind":{"const":"attach-roster","type":"string"},"painted":{"type":"boolean"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"prep":{"anyOf":[{"properties":{"primary":{"anyOf":[{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},{"type":"null"}]},"secondaries":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":6,"type":"array"},"secondaryDeck":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":60,"type":"array"},"secondaryMode":{"enum":["fixed","tactical"],"type":"string"},"stratagems":{"items":{"properties":{"cp":{"maximum":6,"minimum":0,"type":"integer"},"detachment":{"maxLength":249,"minLength":1,"type":"string"},"key":{"maxLength":64,"minLength":1,"type":"string"},"limit":{"enum":["phase","turn","battle","unlimited"],"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"phases":{"items":{"enum":["command","movement","shooting","charge","fight","end"],"type":"string"},"maxItems":6,"type":"array"},"turn":{"enum":["your-turn","opponent-turn","either"],"type":"string"}},"required":["key","name","cp","limit"],"type":"object"},"maxItems":48,"type":"array"}},"required":["stratagems","secondaries","primary","secondaryMode"],"type":"object"},{"type":"null"}]},"roster":{"properties":{"built":{"properties":{"catalogueId":{"maxLength":64,"minLength":1,"type":"string"},"detachment":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"detachmentIds":{"items":{"maxLength":128,"minLength":1,"type":"string"},"maxItems":3,"type":"array"},"detachmentPointBudget":{"anyOf":[{"maximum":3,"minimum":0,"type":"integer"},{"type":"null"}]},"detachments":{"items":{"properties":{"name":{"maxLength":80,"type":"string"},"points":{"anyOf":[{"maximum":3,"minimum":1,"type":"integer"},{"type":"null"}]}},"required":["name","points"],"type":"object"},"maxItems":3,"type":"array"},"disposition":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}]},"limit":{"maximum":10000,"minimum":0,"type":"integer"},"picks":{"items":{"properties":{"attachedTo":{"maximum":99,"minimum":0,"type":"integer"},"catalogueId":{"maxLength":64,"minLength":1,"type":"string"},"choices":{"additionalProperties":{"maxLength":64,"minLength":1,"type":"string"},"propertyNames":{"maxLength":400,"type":"string"},"type":"object"},"entryId":{"maxLength":64,"minLength":1,"type":"string"},"models":{"maximum":60,"minimum":1,"type":"integer"},"spreads":{"additionalProperties":{"additionalProperties":{"maximum":60,"minimum":0,"type":"integer"},"propertyNames":{"maxLength":64,"type":"string"},"type":"object"},"propertyNames":{"maxLength":400,"type":"string"},"type":"object"},"toggles":{"additionalProperties":{"maximum":1,"minimum":0,"type":"integer"},"propertyNames":{"maxLength":400,"type":"string"},"type":"object"}},"required":["entryId"],"type":"object"},"maxItems":100,"type":"array"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"strategicReserveLimit":{"maximum":5000,"minimum":0,"type":"integer"},"units":{"items":{"properties":{"attachedTo":{"maxLength":64,"minLength":1,"type":"string"},"enhancements":{"items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"entryId":{"maxLength":64,"minLength":1,"type":"string"},"formationOptions":{"items":{"enum":["battlefield","strategic-reserves","deep-strike","embarked"],"type":"string"},"maxItems":4,"type":"array"},"group":{"enum":["epic-hero","character","battleline","infantry","swarm","mounted","beast","monster","vehicle","drone","transport","fortification","other"],"type":"string"},"joined":{"items":{"properties":{"label":{"maxLength":80,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["label","name"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"models":{"maximum":100,"minimum":0,"type":"integer"},"name":{"maxLength":80,"minLength":1,"type":"string"},"points":{"maximum":10000,"minimum":0,"type":"integer"},"prebattleRules":{"items":{"enum":["infiltrators","scouts"],"type":"string"},"maxItems":2,"type":"array"},"strategicReserveExempt":{"type":"boolean"},"transport":{"type":"boolean"},"transportRule":{"maxLength":4000,"type":"string"},"upgrades":{"items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"wargear":{"items":{"properties":{"count":{"maximum":100,"minimum":1,"type":"integer"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["name","count"],"type":"object"},"maxItems":200,"type":"array"},"warlord":{"type":"boolean"},"warlordEligible":{"type":"boolean"},"wounds":{"maximum":100,"minimum":1,"type":"integer"}},"required":["key","name","points","models"],"type":"object"},"maxItems":200,"type":"array"},"waivedRules":{"items":{"enum":["points-limit","detachments","detachment-points","kotc-infantry","kotc-warlord","kotc-epic-heroes","kotc-toughness","kotc-datasheet-copies"],"type":"string"},"maxItems":8,"type":"array"}},"required":["catalogueId","revision","limit","detachment","disposition","units"],"type":"object"},"id":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"type":"string"},"reminders":{"items":{"properties":{"ability":{"maxLength":80,"minLength":1,"type":"string"},"description":{"maxLength":10000,"type":"string"},"key":{"maxLength":240,"minLength":1,"type":"string"},"timings":{"items":{"oneOf":[{"properties":{"moment":{"enum":["phase-start","phase-end"],"type":"string"},"phase":{"enum":["command","movement","shooting","charge","fight"],"type":"string"},"turn":{"enum":["your-turn","opponent-turn","either"],"type":"string"}},"required":["moment","phase","turn"],"type":"object"},{"properties":{"moment":{"enum":["turn-start","turn-end"],"type":"string"},"phase":{"type":"null"},"turn":{"enum":["your-turn","opponent-turn","either"],"type":"string"}},"required":["moment","phase","turn"],"type":"object"}]},"maxItems":10,"minItems":1,"type":"array"},"unit":{"properties":{"index":{"maximum":99,"minimum":0,"type":"integer"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["index","name"],"type":"object"}},"required":["key","ability","description","timings"],"type":"object"},"maxItems":100,"type":"array"},"remindersEnabled":{"type":"boolean"},"text":{"maxLength":20000,"type":"string"}},"required":["name","text"],"type":"object"}},"required":["kind","roster"],"type":"object"},{"properties":{"destroyed":{"type":"boolean"},"kind":{"const":"set-unit","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","destroyed"],"type":"object"},{"properties":{"kind":{"const":"set-prep","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"primary":{"anyOf":[{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},{"type":"null"}]},"secondaries":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":6,"type":"array"},"secondaryDeck":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":60,"type":"array"},"secondaryMode":{"enum":["fixed","tactical"],"type":"string"},"stratagems":{"items":{"properties":{"cp":{"maximum":6,"minimum":0,"type":"integer"},"detachment":{"maxLength":249,"minLength":1,"type":"string"},"key":{"maxLength":64,"minLength":1,"type":"string"},"limit":{"enum":["phase","turn","battle","unlimited"],"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"phases":{"items":{"enum":["command","movement","shooting","charge","fight","end"],"type":"string"},"maxItems":6,"type":"array"},"turn":{"enum":["your-turn","opponent-turn","either"],"type":"string"}},"required":["key","name","cp","limit"],"type":"object"},"maxItems":48,"type":"array"}},"required":["kind","stratagems","secondaries","primary","secondaryMode"],"type":"object"},{"properties":{"deployed":{"type":"boolean"},"kind":{"const":"deploy-unit","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","deployed"],"type":"object"},{"properties":{"formation":{"enum":["battlefield","strategic-reserves","deep-strike","embarked"],"type":"string"},"kind":{"const":"set-unit-formation","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"transportKey":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","formation"],"type":"object"},{"properties":{"kind":{"const":"set-painted","type":"string"},"painted":{"type":"boolean"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","painted"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"wound-unit","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","delta"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"damage-unit","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","delta"],"type":"object"},{"properties":{"kind":{"const":"set-deployment","type":"string"},"patternId":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","patternId"],"type":"object"},{"properties":{"kind":{"const":"set-battlefield","type":"string"},"patternId":{"maxLength":64,"minLength":1,"type":"string"},"terrainLayoutId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","patternId","terrainLayoutId"],"type":"object"},{"properties":{"cp":{"maximum":6,"minimum":0,"type":"integer"},"key":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"use-stratagem","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","key"],"type":"object"},{"properties":{"cp":{"maximum":6,"minimum":0,"type":"integer"},"kind":{"const":"use-new-orders","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"secondary":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"secondaryKey":{"maxLength":64,"minLength":1,"type":"string"},"stratagemKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","stratagemKey","secondaryKey","secondary"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"key":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"score-secondary","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","key","delta"],"type":"object"},{"properties":{"kind":{"const":"score-settlement","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"round":{"maximum":5,"minimum":1,"type":"integer"},"scores":{"items":{"oneOf":[{"properties":{"category":{"const":"primary","type":"string"},"delta":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["category","delta"],"type":"object"},{"properties":{"category":{"const":"secondary","type":"string"},"delta":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"key":{"maxLength":64,"minLength":1,"type":"string"},"status":{"const":"achieved","type":"string"}},"required":["category","key","delta"],"type":"object"}]},"maxItems":31,"minItems":1,"type":"array"}},"required":["kind","scores"],"type":"object"},{"properties":{"key":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"set-secondary-status","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"status":{"enum":["active","achieved","discarded","returned"],"type":"string"}},"required":["kind","key","status"],"type":"object"},{"properties":{"kind":{"const":"draw-secondary","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"secondary":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"}},"required":["kind","secondary"],"type":"object"},{"properties":{"kind":{"const":"draw-secondaries","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"secondaries":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":2,"minItems":1,"type":"array"},"selected":{"const":true,"type":"boolean"}},"required":["kind","secondaries"],"type":"object"},{"properties":{"kind":{"const":"acknowledge-draw","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"acknowledge-scoring","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"select-secret","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"secondary":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"}},"required":["kind","secondary"],"type":"object"},{"properties":{"kind":{"const":"reveal-secret","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"attackerId":{"maxLength":64,"minLength":1,"type":"string"},"firstPlayerId":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"begin-battle","type":"string"}},"required":["kind","firstPlayerId"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"adjust-cp","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","delta"],"type":"object"},{"properties":{"gainCp":{"type":"boolean"},"keys":{"items":{"maxLength":64,"minLength":1,"type":"string"},"type":"array"},"kind":{"const":"resolve-tactical-hand","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"category":{"enum":["primary","secondary"],"type":"string"},"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"score","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","category","delta"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"correct-player","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"resource":{"enum":["cp","primary","secondary"],"type":"string"}},"required":["kind","playerId","resource","delta"],"type":"object"},{"properties":{"kind":{"const":"settle-opponent-turn","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"request-advance","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"cancel-advance","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"advance","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"pause-clock","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"resume-clock","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"concededBy":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"end-battle","type":"string"},"reason":{"enum":["completed","finished-early","conceded"],"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"reopen-battle","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"undo","type":"string"},"target":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["kind","target"],"type":"object"}]},{"additionalProperties":false,"properties":{"kind":{"const":"attach-saved-roster","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"rosterId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","rosterId"],"type":"object"}]},"expectedSeq":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"maxLength":64,"minLength":1,"type":"string"}},"required":["token","expectedSeq","command"],"type":"object"}Authorization not required, issuer https://praetorium.gg/api/auth
Changed the definition of "save_roster" and "submit_battle_action"
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
⟨4 unchanged words⟩ {"borrowedDetachmentId":{"anyOf":[{"maxLength":64128,"minLength":1,"type":"string"}, ⟨11 unchanged words⟩ },"detachmentIds":{"items":{"maxLength":64128,"minLength":1,"type":"string"}, ⟨405 unchanged words⟩
Only numbers and dates differ: this server embeds live figures in the definition, so the text moves without the contract changing.
Certificate recorded, valid to 2026-11-06
Authorization not required, issuer https://praetorium.gg/api/auth
Changed the definition of "save_roster" and "submit_battle_action"
⟨409 unchanged words⟩ "waivedRules":{"items":{"enum":["points-limit","detachments","detachment-points","kotc-infantry","kotc-warlord"," ⟨3 unchanged words⟩ "],"type":"string"},"maxItems":78,"type":"array"}},"required":[ ⟨9 unchanged words⟩
⟨1158 unchanged words⟩ "waivedRules":{"items":{"enum":["points-limit","detachments","detachment-points","kotc-infantry","kotc-warlord"," ⟨3 unchanged words⟩
Unknown → Live
First tool surface recorded: 14 tools (server version 1.1.0)
https://praetorium.gg/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 13 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
⟨1220 unchanged words⟩ items":{"oneOf":[{"properties":{"firstRoundOnly":{"type":"boolean"},"moment":{"enum":["phase-start","phase-end" ⟨5 unchanged words⟩ ,"movement","shooting","charge","fight","any"],"type":"string"},"turn":{ ⟨10 unchanged words⟩ "type":"object"},{"properties":{"firstRoundOnly":{"type":"boolean"},"moment":{"enum":["turn-start","turn-end" ⟨14 unchanged words⟩ phase","turn"],"type":"object"},{"properties":{"firstRoundOnly":{"type":"boolean"},"moment":{"enum":["round-start","round-end"],"type":"string"},"phase":{"type":"null"},"turn":{"const":"either","type":"string"}},"required":["moment","phase","turn"],"type":"object"}]},"maxItems":10,"minItems":1,"type":" ⟨18 unchanged words⟩ ["index","name"],"type":"object"},"whileDestroyed":{"type":"boolean"}},"required":["key","ability" ⟨2053 unchanged words⟩
after
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"command":{"anyOf":[{"oneOf":[{"properties":{"clockLimitMinutes":{"anyOf":[{"maximum":300,"minimum":5,"type":"integer"},{"type":"null"}]},"kind":{"const":"configure-battle","type":"string"},"limit":{"maximum":10000,"minimum":0,"type":"integer"},"missionPackId":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]},"playerCount":{"anyOf":[{"const":2,"type":"number"},{"const":3,"type":"number"},{"const":4,"type":"number"}]},"teamBattle":{"type":"boolean"},"terrainLayoutId":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]},"twistId":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","limit","missionPackId","terrainLayoutId","twistId","clockLimitMinutes"],"type":"object"},{"properties":{"kind":{"const":"reset-setup","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"detach-roster","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"eventToken":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"lock-league-rosters","type":"string"},"leagueToken":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","leagueToken"],"type":"object"},{"properties":{"kind":{"const":"set-setup-step","type":"string"},"step":{"maximum":9,"minimum":0,"type":"integer"}},"required":["kind","step"],"type":"object"},{"properties":{"attackerId":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"set-attacker","type":"string"}},"required":["kind","attackerId"],"type":"object"},{"properties":{"firstPlayerId":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"set-first-turn","type":"string"}},"required":["kind","firstPlayerId"],"type":"object"},{"properties":{"disposition":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"set-side-disposition","type":"string"},"side":{"maximum":1,"minimum":0,"type":"integer"}},"required":["kind","side","disposition"],"type":"object"},{"properties":{"kind":{"const":"attach-roster","type":"string"},"painted":{"type":"boolean"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"prep":{"anyOf":[{"properties":{"primary":{"anyOf":[{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},{"type":"null"}]},"secondaries":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":6,"type":"array"},"secondaryDeck":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":60,"type":"array"},"secondaryMode":{"enum":["fixed","tactical"],"type":"string"},"stratagems":{"items":{"properties":{"cp":{"maximum":6,"minimum":0,"type":"integer"},"detachment":{"maxLength":249,"minLength":1,"type":"string"},"key":{"maxLength":64,"minLength":1,"type":"string"},"limit":{"enum":["phase","turn","battle-round","battle","unlimited"],"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"phases":{"items":{"enum":["command","movement","shooting","charge","fight","end"],"type":"string"},"maxItems":6,"type":"array"},"turn":{"enum":["your-turn","opponent-turn","either"],"type":"string"}},"required":["key","name","cp","limit"],"type":"object"},"maxItems":48,"type":"array"}},"required":["stratagems","secondaries","primary","secondaryMode"],"type":"object"},{"type":"null"}]},"roster":{"properties":{"built":{"properties":{"catalogueId":{"maxLength":64,"minLength":1,"type":"string"},"detachment":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"detachmentIds":{"items":{"maxLength":128,"minLength":1,"type":"string"},"maxItems":3,"type":"array"},"detachmentPointBudget":{"anyOf":[{"maximum":3,"minimum":0,"type":"integer"},{"type":"null"}]},"detachments":{"items":{"properties":{"name":{"maxLength":80,"type":"string"},"points":{"anyOf":[{"maximum":3,"minimum":1,"type":"integer"},{"type":"null"}]}},"required":["name","points"],"type":"object"},"maxItems":3,"type":"array"},"disposition":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}]},"limit":{"maximum":10000,"minimum":0,"type":"integer"},"picks":{"items":{"properties":{"attachedTo":{"maximum":99,"minimum":0,"type":"integer"},"catalogueId":{"maxLength":64,"minLength":1,"type":"string"},"choices":{"additionalProperties":{"maxLength":64,"minLength":1,"type":"string"},"propertyNames":{"maxLength":400,"type":"string"},"type":"object"},"entryId":{"maxLength":64,"minLength":1,"type":"string"},"models":{"maximum":60,"minimum":1,"type":"integer"},"spreads":{"additionalProperties":{"additionalProperties":{"maximum":60,"minimum":0,"type":"integer"},"propertyNames":{"maxLength":64,"type":"string"},"type":"object"},"propertyNames":{"maxLength":400,"type":"string"},"type":"object"},"toggles":{"additionalProperties":{"maximum":1,"minimum":0,"type":"integer"},"propertyNames":{"maxLength":400,"type":"string"},"type":"object"}},"required":["entryId"],"type":"object"},"maxItems":100,"type":"array"},"revision":{"maxLength":64,"minLength":1,"type":"string"},"strategicReserveLimit":{"maximum":5000,"minimum":0,"type":"integer"},"units":{"items":{"properties":{"attachedTo":{"maxLength":64,"minLength":1,"type":"string"},"enhancements":{"items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"entryId":{"maxLength":64,"minLength":1,"type":"string"},"formationOptions":{"items":{"enum":["battlefield","strategic-reserves","deep-strike","embarked"],"type":"string"},"maxItems":4,"type":"array"},"group":{"enum":["epic-hero","character","battleline","infantry","swarm","mounted","beast","monster","vehicle","drone","transport","fortification","other"],"type":"string"},"joined":{"items":{"properties":{"label":{"maxLength":80,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["label","name"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"models":{"maximum":100,"minimum":0,"type":"integer"},"name":{"maxLength":80,"minLength":1,"type":"string"},"points":{"maximum":10000,"minimum":0,"type":"integer"},"prebattleRules":{"items":{"enum":["infiltrators","scouts"],"type":"string"},"maxItems":2,"type":"array"},"strategicReserveExempt":{"type":"boolean"},"transport":{"type":"boolean"},"transportRule":{"maxLength":4000,"type":"string"},"upgrades":{"items":{"maxLength":80,"minLength":1,"type":"string"},"maxItems":20,"type":"array"},"wargear":{"items":{"properties":{"count":{"maximum":100,"minimum":1,"type":"integer"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["name","count"],"type":"object"},"maxItems":200,"type":"array"},"warlord":{"type":"boolean"},"warlordEligible":{"type":"boolean"},"wounds":{"maximum":100,"minimum":1,"type":"integer"}},"required":["key","name","points","models"],"type":"object"},"maxItems":200,"type":"array"},"waivedRules":{"items":{"enum":["points-limit","detachments","detachment-points","kotc-infantry","kotc-warlord","kotc-epic-heroes","kotc-toughness","kotc-datasheet-copies"],"type":"string"},"maxItems":8,"type":"array"}},"required":["catalogueId","revision","limit","detachment","disposition","units"],"type":"object"},"id":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"type":"string"},"reminders":{"items":{"properties":{"ability":{"maxLength":80,"minLength":1,"type":"string"},"description":{"maxLength":10000,"type":"string"},"key":{"maxLength":240,"minLength":1,"type":"string"},"timings":{"items":{"oneOf":[{"properties":{"moment":{"enum":["phase-start","phase-end"],"type":"string"},"phase":{"enum":["command","movement","shooting","charge","fight"],"type":"string"},"turn":{"enum":["your-turn","opponent-turn","either"],"type":"string"}},"required":["moment","phase","turn"],"type":"object"},{"properties":{"moment":{"enum":["turn-start","turn-end"],"type":"string"},"phase":{"type":"null"},"turn":{"enum":["your-turn","opponent-turn","either"],"type":"string"}},"required":["moment","phase","turn"],"type":"object"}]},"maxItems":10,"minItems":1,"type":"array"},"unit":{"properties":{"index":{"maximum":99,"minimum":0,"type":"integer"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["index","name"],"type":"object"}},"required":["key","ability","description","timings"],"type":"object"},"maxItems":100,"type":"array"},"remindersEnabled":{"type":"boolean"},"text":{"maxLength":20000,"type":"string"}},"required":["name","text"],"type":"object"}},"required":["kind","roster"],"type":"object"},{"properties":{"destroyed":{"type":"boolean"},"kind":{"const":"set-unit","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","destroyed"],"type":"object"},{"properties":{"kind":{"const":"set-prep","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"primary":{"anyOf":[{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},{"type":"null"}]},"secondaries":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":6,"type":"array"},"secondaryDeck":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":60,"type":"array"},"secondaryMode":{"enum":["fixed","tactical"],"type":"string"},"stratagems":{"items":{"properties":{"cp":{"maximum":6,"minimum":0,"type":"integer"},"detachment":{"maxLength":249,"minLength":1,"type":"string"},"key":{"maxLength":64,"minLength":1,"type":"string"},"limit":{"enum":["phase","turn","battle-round","battle","unlimited"],"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"},"phases":{"items":{"enum":["command","movement","shooting","charge","fight","end"],"type":"string"},"maxItems":6,"type":"array"},"turn":{"enum":["your-turn","opponent-turn","either"],"type":"string"}},"required":["key","name","cp","limit"],"type":"object"},"maxItems":48,"type":"array"}},"required":["kind","stratagems","secondaries","primary","secondaryMode"],"type":"object"},{"properties":{"deployed":{"type":"boolean"},"kind":{"const":"deploy-unit","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","deployed"],"type":"object"},{"properties":{"formation":{"enum":["battlefield","strategic-reserves","deep-strike","embarked"],"type":"string"},"kind":{"const":"set-unit-formation","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"transportKey":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","formation"],"type":"object"},{"properties":{"kind":{"const":"set-painted","type":"string"},"painted":{"type":"boolean"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","painted"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"wound-unit","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","delta"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"damage-unit","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"unitKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","unitKey","delta"],"type":"object"},{"properties":{"kind":{"const":"set-deployment","type":"string"},"patternId":{"anyOf":[{"maxLength":64,"minLength":1,"type":"string"},{"type":"null"}]}},"required":["kind","patternId"],"type":"object"},{"properties":{"kind":{"const":"set-battlefield","type":"string"},"patternId":{"maxLength":64,"minLength":1,"type":"string"},"terrainLayoutId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","patternId","terrainLayoutId"],"type":"object"},{"properties":{"cp":{"maximum":6,"minimum":0,"type":"integer"},"key":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"use-stratagem","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","key"],"type":"object"},{"properties":{"cp":{"maximum":6,"minimum":0,"type":"integer"},"kind":{"const":"use-new-orders","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"secondary":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"secondaryKey":{"maxLength":64,"minLength":1,"type":"string"},"stratagemKey":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","stratagemKey","secondaryKey","secondary"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"key":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"score-secondary","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","key","delta"],"type":"object"},{"properties":{"kind":{"const":"score-settlement","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"round":{"maximum":5,"minimum":1,"type":"integer"},"scores":{"items":{"oneOf":[{"properties":{"category":{"const":"primary","type":"string"},"delta":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["category","delta"],"type":"object"},{"properties":{"category":{"const":"secondary","type":"string"},"delta":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"key":{"maxLength":64,"minLength":1,"type":"string"},"status":{"const":"achieved","type":"string"}},"required":["category","key","delta"],"type":"object"}]},"maxItems":31,"minItems":1,"type":"array"}},"required":["kind","scores"],"type":"object"},{"properties":{"key":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"set-secondary-status","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"status":{"enum":["active","achieved","discarded","returned"],"type":"string"}},"required":["kind","key","status"],"type":"object"},{"properties":{"kind":{"const":"draw-secondary","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"secondary":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"}},"required":["kind","secondary"],"type":"object"},{"properties":{"kind":{"const":"draw-secondaries","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"secondaries":{"items":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"},"maxItems":2,"minItems":1,"type":"array"},"selected":{"const":true,"type":"boolean"}},"required":["kind","secondaries"],"type":"object"},{"properties":{"kind":{"const":"acknowledge-draw","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"acknowledge-scoring","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"select-secret","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"secondary":{"properties":{"awards":{"items":{"properties":{"criteria":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}]},"cumulative":{"type":"boolean"},"group":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}]},"max":{"anyOf":[{"maximum":100,"minimum":0,"type":"integer"},{"type":"null"}]},"mode":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}]},"per":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}]},"trigger":{"properties":{"phase":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"playerTurn":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]},"roundMax":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"roundMin":{"anyOf":[{"maximum":5,"minimum":1,"type":"integer"},{"type":"null"}]},"timing":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"required":["timing","phase","playerTurn","roundMin","roundMax"],"type":"object"},"vp":{"maximum":100,"minimum":0,"type":"integer"}},"required":["vp","per","mode","max","group","cumulative","criteria","trigger"],"type":"object"},"maxItems":20,"type":"array"},"key":{"maxLength":64,"minLength":1,"type":"string"},"name":{"maxLength":80,"minLength":1,"type":"string"}},"required":["key","name"],"type":"object"}},"required":["kind","secondary"],"type":"object"},{"properties":{"kind":{"const":"reveal-secret","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"attackerId":{"maxLength":64,"minLength":1,"type":"string"},"firstPlayerId":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"begin-battle","type":"string"}},"required":["kind","firstPlayerId"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"adjust-cp","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","delta"],"type":"object"},{"properties":{"gainCp":{"type":"boolean"},"keys":{"items":{"maxLength":64,"minLength":1,"type":"string"},"type":"array"},"kind":{"const":"resolve-tactical-hand","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"category":{"enum":["primary","secondary"],"type":"string"},"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"score","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","category","delta"],"type":"object"},{"properties":{"delta":{"maximum":9007199254740991,"minimum":-9007199254740991,"type":"integer"},"kind":{"const":"correct-player","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"resource":{"enum":["cp","primary","secondary"],"type":"string"}},"required":["kind","playerId","resource","delta"],"type":"object"},{"properties":{"kind":{"const":"settle-opponent-turn","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"request-advance","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"cancel-advance","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"advance","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"pause-clock","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"resume-clock","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"concededBy":{"maxLength":64,"minLength":1,"type":"string"},"kind":{"const":"end-battle","type":"string"},"reason":{"enum":["completed","finished-early","conceded"],"type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"reopen-battle","type":"string"}},"required":["kind"],"type":"object"},{"properties":{"kind":{"const":"undo","type":"string"},"target":{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"}},"required":["kind","target"],"type":"object"}]},{"additionalProperties":false,"properties":{"kind":{"const":"attach-saved-roster","type":"string"},"playerId":{"maxLength":64,"minLength":1,"type":"string"},"rosterId":{"maxLength":64,"minLength":1,"type":"string"}},"required":["kind","rosterId"],"type":"object"}]},"expectedSeq":{"maximum":9007199254740991,"minimum":0,"type":"integer"},"token":{"maxLength":64,"minLength":1,"type":"string"}},"required":["token","expectedSeq","command"],"type":"object"}