{"ok":true,"site":{"host":"mcp-siege.vercel.app","url":"https://mcp-siege.vercel.app/","type":"live","desc":"A large-scale battle command game that exposes its live battlefield to an external AI Marshal through WebMCP.","tools":[{"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.","title":"List operations","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Describe a battlefield","annotations":{"readOnlyHint":true},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Design an operation","annotations":{"readOnlyHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Review the designed operation","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Select an operation","annotations":{"readOnlyHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"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.","title":"Launch the operation","annotations":{"readOnlyHint":false},"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},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/mcp-siege.vercel.app.svg","apiSurface":"spec","toolCount":6}}