Tool tree
gradeNot graded
list_operationsAnswer
Every operation the War Council can send an army to: the authored ones and the designed operation currently on the table, each with its ground, its order of battle, the trick it turns on, and which regiment carries each king. Also lists the battlefields and the three enemy commanders. Start here. Read-only.
View tool JSON
{
"name": "list_operations",
"kind": "answer",
"impl": "imperative",
"description": "Every operation the War Council can send an army to: the authored ones and the designed operation currently on the table, each with its ground, its order of battle, the trick it turns on, and which regiment carries each king. Also lists the battlefields and the three enemy commanders. Start here. Read-only.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}describe_battlefieldAnswer
The ground of one battlefield: every named zone with its terrain and front, which zones are crossings, what divides the field, the roads, and where each side musters. This is what you need before designing an operation on it. Read-only.
View tool JSON
{
"name": "describe_battlefield",
"kind": "answer",
"impl": "imperative",
"description": "The ground of one battlefield: every named zone with its terrain and front, which zones are crossings, what divides the field, the roads, and where each side musters. This is what you need before designing an operation on it. Read-only.",
"inputSchema": {
"type": "object",
"properties": {
"mapId": {
"type": "string",
"enum": [
"river_vale",
"ashfall_pass",
"goldmere",
"sunken_causeway"
],
"description": "A battlefield. Call describe_battlefield for its ground before designing on it."
}
},
"required": [
"mapId"
],
"additionalProperties": false
}
}design_operationAction
Write a battle of your own: pick a battlefield, place both armies on named ground, say which regiment each king rides with, and give the enemy commander a timetable. The design is validated, drawn on the War Council table and selected — but nothing is fought until launch_operation. Designing again replaces the operation on the table.
View tool JSON
{
"name": "design_operation",
"kind": "act",
"impl": "imperative",
"description": "Write a battle of your own: pick a battlefield, place both armies on named ground, say which regiment each king rides with, and give the enemy commander a timetable. The design is validated, drawn on the War Council table and selected — but nothing is fought until launch_operation. Designing again replaces the operation on the table.",
"inputSchema": {
"type": "object",
"description": "A whole battle: a battlefield, two armies placed on named ground, and a timetable for the enemy commander. Nothing is fought until launch_operation is called.",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 48
},
"mapId": {
"type": "string",
"enum": [
"river_vale",
"ashfall_pass",
"goldmere",
"sunken_causeway"
],
"description": "A battlefield. Call describe_battlefield for its ground before designing on it."
},
"summary": {
"type": "string",
"maxLength": 400
},
"briefingLine": {
"type": "string",
"maxLength": 400
},
"twist": {
"type": "string",
"maxLength": 400
},
"objective": {
"type": "string",
"maxLength": 400
},
"playerArmyName": {
"type": "string",
"maxLength": 48
},
"enemyArmyName": {
"type": "string",
"maxLength": 48
},
"playerKingName": {
"type": "string",
"maxLength": 48
},
"enemyKingName": {
"type": "string",
"maxLength": 48
},
"playerRegiments": {
"type": "array",
"minItems": 3,
"maxItems": 12,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{1,30}$",
"description": "Lowercase slug, unique on its side. This becomes the group id in play."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 48
},
"zone": {
"type": "string",
"enum": [
"player_base",
"west_forest",
"west_crossing",
"central_field",
"central_bridge",
"central_hill",
"village",
"east_field",
"east_crossing",
"east_forest",
"northern_ridge",
"enemy_outer_defense",
"enemy_base",
"crown_camp",
"south_orchard",
"smoke_road",
"slag_flats",
"broken_scree",
"east_scarp",
"cinder_gap",
"ashfall_gate",
"upper_terrace",
"obsidian_wood",
"emberhold",
"smelters_hill",
"ash_citadel",
"harvest_camp",
"millbrook",
"south_downs",
"hollow_wood",
"west_pasture",
"goldmere_town",
"east_pasture",
"long_barrow",
"crowsfoot_wood",
"beacon_hill",
"hartfell",
"stone_row",
"ashen_camp",
"tidewatch",
"drowned_wood",
"causeway_approach",
"oyster_town",
"gull_hill",
"reed_flats",
"long_causeway",
"salt_ford",
"north_strand",
"black_pines",
"beacon_tower",
"herring_quay",
"ashen_anchorage"
],
"description": "Named ground. It must be on the operation’s own map — describe_battlefield lists it."
},
"troops": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"description": "What the regiment is made of. infantry hold a line, spearman beat cavalry, archer shoot at range and fold in melee, cavalry break formations from the flank, heavy_infantry are slow and very hard, siege outranges everything and is helpless up close, scout sees far.",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"infantry",
"spearman",
"archer",
"handgunner",
"cavalry",
"heavy_infantry",
"siege",
"cannon",
"scout",
"surgeon"
]
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 1200
}
},
"required": [
"category",
"count"
],
"additionalProperties": false
}
},
"formation": {
"type": "string",
"enum": [
"line",
"column",
"block",
"wedge",
"double_line",
"loose",
"square"
]
},
"stance": {
"type": "string",
"enum": [
"aggressive",
"defensive",
"hold_ground"
]
},
"carriesKing": {
"type": "boolean",
"description": "Exactly one regiment per side must carry its king. Taking a king wins the battle, so this regiment is the objective standing on the field."
}
},
"required": [
"id",
"name",
"zone",
"troops"
],
"additionalProperties": false
}
},
"enemyRegiments": {
"type": "array",
"minItems": 3,
"maxItems": 12,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"pattern": "^[a-z][a-z0-9_]{1,30}$",
"description": "Lowercase slug, unique on its side. This becomes the group id in play."
},
"name": {
"type": "string",
"minLength": 1,
"maxLength": 48
},
"zone": {
"type": "string",
"enum": [
"player_base",
"west_forest",
"west_crossing",
"central_field",
"central_bridge",
"central_hill",
"village",
"east_field",
"east_crossing",
"east_forest",
"northern_ridge",
"enemy_outer_defense",
"enemy_base",
"crown_camp",
"south_orchard",
"smoke_road",
"slag_flats",
"broken_scree",
"east_scarp",
"cinder_gap",
"ashfall_gate",
"upper_terrace",
"obsidian_wood",
"emberhold",
"smelters_hill",
"ash_citadel",
"harvest_camp",
"millbrook",
"south_downs",
"hollow_wood",
"west_pasture",
"goldmere_town",
"east_pasture",
"long_barrow",
"crowsfoot_wood",
"beacon_hill",
"hartfell",
"stone_row",
"ashen_camp",
"tidewatch",
"drowned_wood",
"causeway_approach",
"oyster_town",
"gull_hill",
"reed_flats",
"long_causeway",
"salt_ford",
"north_strand",
"black_pines",
"beacon_tower",
"herring_quay",
"ashen_anchorage"
],
"description": "Named ground. It must be on the operation’s own map — describe_battlefield lists it."
},
"troops": {
"type": "array",
"minItems": 1,
"maxItems": 10,
"description": "What the regiment is made of. infantry hold a line, spearman beat cavalry, archer shoot at range and fold in melee, cavalry break formations from the flank, heavy_infantry are slow and very hard, siege outranges everything and is helpless up close, scout sees far.",
"items": {
"type": "object",
"properties": {
"category": {
"type": "string",
"enum": [
"infantry",
"spearman",
"archer",
"handgunner",
"cavalry",
"heavy_infantry",
"siege",
"cannon",
"scout",
"surgeon"
]
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 1200
}
},
"required": [
"category",
"count"
],
"additionalProperties": false
}
},
"formation": {
"type": "string",
"enum": [
"line",
"column",
"block",
"wedge",
"double_line",
"loose",
"square"
]
},
"stance": {
"type": "string",
"enum": [
"aggressive",
"defensive",
"hold_ground"
]
},
"carriesKing": {
"type": "boolean",
"description": "Exactly one regiment per side must carry its king. Taking a king wins the battle, so this regiment is the objective standing on the field."
}
},
"required": [
"id",
"name",
"zone",
"troops"
],
"additionalProperties": false
}
},
"enemyPlan": {
"type": "array",
"maxItems": 28,
"description": "The enemy commander, written as a timetable. Each entry fires once, at its second, on the difficulty’s own clock. A reactive layer answers what the player does; this is what gives the battle its shape.",
"items": {
"type": "object",
"properties": {
"atSeconds": {
"type": "integer",
"minimum": 0,
"maximum": 900
},
"groupId": {
"type": "string",
"description": "An id from enemyRegiments."
},
"order": {
"type": "string",
"enum": [
"move",
"attack_zone",
"defend_zone",
"hold",
"retreat",
"scout"
]
},
"targetZone": {
"type": "string",
"enum": [
"player_base",
"west_forest",
"west_crossing",
"central_field",
"central_bridge",
"central_hill",
"village",
"east_field",
"east_crossing",
"east_forest",
"northern_ridge",
"enemy_outer_defense",
"enemy_base",
"crown_camp",
"south_orchard",
"smoke_road",
"slag_flats",
"broken_scree",
"east_scarp",
"cinder_gap",
"ashfall_gate",
"upper_terrace",
"obsidian_wood",
"emberhold",
"smelters_hill",
"ash_citadel",
"harvest_camp",
"millbrook",
"south_downs",
"hollow_wood",
"west_pasture",
"goldmere_town",
"east_pasture",
"long_barrow",
"crowsfoot_wood",
"beacon_hill",
"hartfell",
"stone_row",
"ashen_camp",
"tidewatch",
"drowned_wood",
"causeway_approach",
"oyster_town",
"gull_hill",
"reed_flats",
"long_causeway",
"salt_ford",
"north_strand",
"black_pines",
"beacon_tower",
"herring_quay",
"ashen_anchorage"
],
"description": "Named ground. It must be on the operation’s own map — describe_battlefield lists it."
},
"formation": {
"type": "string",
"enum": [
"line",
"column",
"block",
"wedge",
"double_line",
"loose",
"square"
]
},
"stance": {
"type": "string",
"enum": [
"aggressive",
"defensive",
"hold_ground"
]
}
},
"required": [
"atSeconds",
"groupId",
"order"
],
"additionalProperties": false
}
}
},
"required": [
"name",
"mapId",
"playerRegiments",
"enemyRegiments"
],
"additionalProperties": false
}
}review_operationAction
Read back the operation on the table in full: both orders of battle, every regiment’s composition, and the enemy commander’s timetable as it will actually fire. Read-only.
View tool JSON
{
"name": "review_operation",
"kind": "act",
"impl": "imperative",
"description": "Read back the operation on the table in full: both orders of battle, every regiment’s composition, and the enemy commander’s timetable as it will actually fire. Read-only.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}select_operationAction
Put an operation and an enemy commander in front of the human commander without deploying. Use this to propose a battle and let them press the deploy seal themselves. With operationId "custom" it also chooses the table's battlefield: passing a mapId lays a fresh blank skirmish on that ground for you to fight or rewrite.
View tool JSON
{
"name": "select_operation",
"kind": "act",
"impl": "imperative",
"description": "Put an operation and an enemy commander in front of the human commander without deploying. Use this to propose a battle and let them press the deploy seal themselves. With operationId \"custom\" it also chooses the table's battlefield: passing a mapId lays a fresh blank skirmish on that ground for you to fight or rewrite.",
"inputSchema": {
"type": "object",
"properties": {
"operationId": {
"type": "string",
"enum": [
"bridge_of_knives",
"ember_gate",
"salt_tide",
"open_hand",
"old_vale",
"custom"
],
"description": "One of the authored operations, or \"custom\" for the designed one on the table."
},
"difficultyId": {
"type": "string",
"enum": [
"levy",
"captain",
"warlord"
],
"description": "levy is forgiving, captain is the intended tempo, warlord is relentless."
},
"mapId": {
"type": "string",
"enum": [
"river_vale",
"ashfall_pass",
"goldmere",
"sunken_causeway"
],
"description": "Only with operationId \"custom\": lays a fresh blank skirmish on this battlefield, replacing whatever is on the table. An authored operation is fought on its own ground."
}
},
"required": [
"operationId"
],
"additionalProperties": false
}
}launch_operationAction
Deploy the army and begin the battle. Defaults to whatever is currently selected. The War Council then closes and the battlefield tools take its place, beginning with get_battle_overview.
View tool JSON
{
"name": "launch_operation",
"kind": "act",
"impl": "imperative",
"description": "Deploy the army and begin the battle. Defaults to whatever is currently selected. The War Council then closes and the battlefield tools take its place, beginning with get_battle_overview.",
"inputSchema": {
"type": "object",
"properties": {
"operationId": {
"type": "string",
"enum": [
"bridge_of_knives",
"ember_gate",
"salt_tide",
"open_hand",
"old_vale",
"custom"
],
"description": "One of the authored operations, or \"custom\" for the designed one on the table."
},
"difficultyId": {
"type": "string",
"enum": [
"levy",
"captain",
"warlord"
],
"description": "levy is forgiving, captain is the intended tempo, warlord is relentless."
}
},
"additionalProperties": false
}
}