{"ok":true,"site":{"host":"jukebox31b.github.io","url":"https://jukebox31b.github.io/bellifex-webmcp/","type":"live","desc":"Bellifex Campaign Studio","tools":[{"name":"get_campaign_state","kind":"answer","impl":"imperative","description":"Get the current campaign, active settings, readiness, and incomplete work. Use first when the user asks what campaign is being designed or what remains.","hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"set_campaign_identity","kind":"act","impl":"imperative","description":"Set the campaign name, description, theater, era, or size. Use when the user describes the basic campaign concept.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"theater":{"type":"string","enum":["Caucasus","Persian Gulf","Syria","Sinai"]},"era":{"type":"string"},"campaignSize":{"type":"string","enum":["small","medium","large"]}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"set_coalition_strategy","kind":"act","impl":"imperative","description":"Configure one coalition’s doctrine, difficulty, strength, air capability, logistics, and player priority. Use when the user describes how a side should behave.","inputSchema":{"type":"object","properties":{"coalition":{"type":"string","enum":["blue","red"]},"doctrine":{"type":"string"},"difficulty":{"type":"string"},"forceStrength":{"type":"string"},"airCapability":{"type":"string"},"logisticsPosture":{"type":"string"},"humanPlayerPriority":{"type":"string"}},"required":["coalition"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"set_campaign_structure","kind":"act","impl":"imperative","description":"Set objective chaining, player slots, logistics intensity, and persistence. Use when the user defines campaign flow and repeatability.","inputSchema":{"type":"object","properties":{"objectiveChainStyle":{"type":"string"},"playerSlotsPerObjective":{"type":"number"},"logisticsIntensity":{"type":"string"},"persistenceMode":{"type":"string"}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"list_objectives","kind":"answer","impl":"imperative","description":"List structured objective summaries. Use before changing ownership, relationships, or strategic priority.","hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"add_objective","kind":"act","impl":"imperative","description":"Add a validated objective to a synthetic sector. Use when the user asks for a new strategic point.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string"},"owner":{"type":"string"},"strategicWeight":{"type":"number"},"sectorId":{"type":"string"},"predecessors":{"type":"array","items":{"type":"string"}}},"required":["name","type","owner","strategicWeight","sectorId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"update_objective","kind":"act","impl":"imperative","description":"Update an existing objective’s public attributes. Use to change ownership, importance, or prerequisites without guessing UI controls.","inputSchema":{"type":"object","properties":{"objectiveId":{"type":"string"},"owner":{"type":"string"},"strategicWeight":{"type":"number"},"name":{"type":"string"},"predecessors":{"type":"array","items":{"type":"string"}}},"required":["objectiveId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"remove_objective","kind":"act","impl":"imperative","description":"Remove an unreferenced objective. Use only when the user explicitly asks to remove it; referenced objectives fail closed.","inputSchema":{"type":"object","properties":{"objectiveId":{"type":"string"}},"required":["objectiveId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"configure_air_package","kind":"act","impl":"imperative","description":"Create or update a public air package with a valid departure objective. Use when the user asks to add air operations.","inputSchema":{"type":"object","properties":{"packageId":{"type":"string"},"coalition":{"type":"string","enum":["blue","red"]},"role":{"type":"string","enum":["CAP","STRIKE","SEAD","TRANSPORT"]},"qualityTier":{"type":"string","enum":["standard","advanced","elite"]},"quantity":{"type":"number"},"departureObjectiveId":{"type":"string"}},"required":["coalition","role","qualityTier","quantity","departureObjectiveId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"validate_campaign","kind":"act","impl":"imperative","description":"Validate objectives, dependencies, packages, force balance, and readiness without silently repairing data. Use before synthesis or compilation.","hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"synthesize_campaign_start","kind":"act","impl":"imperative","description":"Create a deterministic judge-safe campaign start only when validation has no blocking errors. Use after validation passes.","hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"},{"name":"compile_campaign_package","kind":"act","impl":"imperative","description":"Compile the sanitized bellifex_campaign_package_v1 and trigger JSON download only after valid synthesis. Use when the user asks to export.","hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/bellifex-webmcp/"}],"category":"Media & Personal","apiSurface":"spec","toolCount":12}}