{"ok":true,"site":{"host":"halmir-ai.github.io","url":"https://halmir-ai.github.io/huginn/","type":"live","desc":"Huginn gives coding agents a typed test port into live browser games, turning opaque canvas gameplay into visible, reproducible experiments.","tools":[{"name":"describe_game","kind":"answer","impl":"imperative","description":"Explain this live game's rules, goals, metrics, action vocabulary, curated named setups, experiment limits, seed, checksum, and capabilities before planning a test.","title":"Describe game","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/","pages":["/huginn/","/huginn/games/coil/","/huginn/games/starfall/","/huginn/games/thornwatch/"]},{"name":"get_game_state","kind":"answer","impl":"imperative","description":"Return the current canonical simulation state and checksum as structured data; this reads live browser memory, not pixels.","title":"Get game state","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/","pages":["/huginn/","/huginn/games/coil/","/huginn/games/starfall/","/huginn/games/thornwatch/"]},{"name":"get_metrics","kind":"answer","impl":"imperative","description":"Return the current exposed playtest metrics and canonical state checksum. Call describe_game for metric semantics.","title":"Get game metrics","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/","pages":["/huginn/","/huginn/games/coil/","/huginn/games/starfall/","/huginn/games/thornwatch/"]},{"name":"list_legal_actions","kind":"answer","impl":"imperative","description":"Return only actions legal in the current live state, with the checksum they were computed against. Use this before mutating the game.","title":"List legal actions","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/","pages":["/huginn/","/huginn/games/coil/","/huginn/games/starfall/","/huginn/games/thornwatch/"]},{"name":"snapshot_game","kind":"act","impl":"imperative","description":"Store a canonical snapshot of the live game in page memory. The latest explicit checkpoint is protected from automatic rollback eviction; older snapshots share a bounded 12-entry store.","title":"Snapshot game","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/","pages":["/huginn/","/huginn/games/coil/","/huginn/games/starfall/","/huginn/games/thornwatch/"]},{"name":"capture_game","kind":"act","impl":"imperative","description":"Capture the live game canvas as a bounded PNG, show that frame visibly in the page debugger, and return compact image metadata paired with the exact canonical state checksum. This is visual evidence, not a restorable state snapshot.","title":"Capture visible game frame","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/","pages":["/huginn/","/huginn/games/coil/","/huginn/games/starfall/","/huginn/games/thornwatch/"]},{"name":"restore_game","kind":"act","impl":"imperative","description":"Verify and visibly restore a snapshot created on this page. Reject unknown, tampered, or stale snapshots.","title":"Restore game","inputSchema":{"type":"object","properties":{"snapshot_id":{"type":"string","minLength":1,"maxLength":128},"expected_checksum":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["snapshot_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/","pages":["/huginn/","/huginn/games/coil/","/huginn/games/starfall/","/huginn/games/thornwatch/"]},{"name":"apply_action_sequence","kind":"act","impl":"imperative","description":"Optionally begin from a curated named setup, then apply up to 50 typed actions visibly and sequentially. Each action is checked against current legal actions; cancellation, stop conditions, and errors preserve and report the exact committed prefix. Optional semantic expectations return an explicit semantic verdict.","title":"Run visible game experiment","inputSchema":{"type":"object","properties":{"request_id":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"setup_id":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"seed":{"type":"integer","minimum":0,"maximum":2147483647},"base_snapshot_id":{"type":"string","minLength":1,"maxLength":128},"expected_base_checksum":{"type":"string","pattern":"^[a-f0-9]{64}$"},"actions":{"type":"array","maxItems":50,"items":{"oneOf":[{"type":"object","properties":{"type":{"const":"turn"},"direction":{"type":"string","enum":["n","e","s","w"]}},"required":["type","direction"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"shield"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"advance"},"steps":{"type":"integer","enum":[1,5,10]}},"required":["type","steps"],"additionalProperties":false}]}},"stop_when":{"type":"object","properties":{"metric":{"type":"string","minLength":1,"maxLength":64},"operator":{"enum":["eq","gte","lte"]},"value":{"type":"number"}},"required":["metric","operator","value"],"additionalProperties":false},"expect":{"type":"array","maxItems":12,"items":{"type":"object","properties":{"metric":{"type":"string","minLength":1,"maxLength":64},"operator":{"enum":["eq","gte","lte"]},"value":{"type":["number","string","boolean"]}},"required":["metric","operator","value"],"additionalProperties":false}},"speed":{"enum":["fast","watch"]}},"required":["request_id","actions"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/","pages":["/huginn/","/huginn/games/coil/"]},{"name":"apply_action_sequence","kind":"act","impl":"imperative","description":"Optionally begin from a curated named setup, then apply up to 50 typed actions visibly and sequentially. Each action is checked against current legal actions; cancellation, stop conditions, and errors preserve and report the exact committed prefix. Optional semantic expectations return an explicit semantic verdict.","title":"Run visible game experiment","inputSchema":{"type":"object","properties":{"request_id":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"setup_id":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"seed":{"type":"integer","minimum":0,"maximum":2147483647},"base_snapshot_id":{"type":"string","minLength":1,"maxLength":128},"expected_base_checksum":{"type":"string","pattern":"^[a-f0-9]{64}$"},"actions":{"type":"array","maxItems":50,"items":{"oneOf":[{"type":"object","properties":{"type":{"const":"launch"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"advance"},"frames":{"type":"integer","enum":[4,15,30]},"left":{"type":"boolean"},"right":{"type":"boolean"}},"required":["type","frames","left","right"],"additionalProperties":false}]}},"stop_when":{"type":"object","properties":{"metric":{"type":"string","minLength":1,"maxLength":64},"operator":{"enum":["eq","gte","lte"]},"value":{"type":"number"}},"required":["metric","operator","value"],"additionalProperties":false},"expect":{"type":"array","maxItems":12,"items":{"type":"object","properties":{"metric":{"type":"string","minLength":1,"maxLength":64},"operator":{"enum":["eq","gte","lte"]},"value":{"type":["number","string","boolean"]}},"required":["metric","operator","value"],"additionalProperties":false}},"speed":{"enum":["fast","watch"]}},"required":["request_id","actions"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/games/starfall/","pages":["/huginn/games/starfall/"]},{"name":"apply_action_sequence","kind":"act","impl":"imperative","description":"Optionally begin from a curated named setup, then apply up to 50 typed actions visibly and sequentially. Each action is checked against current legal actions; cancellation, stop conditions, and errors preserve and report the exact committed prefix. Optional semantic expectations return an explicit semantic verdict.","title":"Run visible game experiment","inputSchema":{"type":"object","properties":{"request_id":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"setup_id":{"type":"string","pattern":"^[A-Za-z0-9._-]{1,64}$"},"seed":{"type":"integer","minimum":0,"maximum":2147483647},"base_snapshot_id":{"type":"string","minLength":1,"maxLength":128},"expected_base_checksum":{"type":"string","pattern":"^[a-f0-9]{64}$"},"actions":{"type":"array","maxItems":50,"items":{"oneOf":[{"type":"object","properties":{"type":{"const":"place_tower"},"pad":{"type":"integer","minimum":0,"maximum":95},"tower":{"type":"string","enum":["archer","mage","ballista"]}},"required":["type","pad","tower"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"upgrade_tower"},"pad":{"type":"integer","minimum":0,"maximum":95}},"required":["type","pad"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"start_wave"}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"const":"advance"},"frames":{"type":"integer","enum":[1,5,15,30]}},"required":["type","frames"],"additionalProperties":false}]}},"stop_when":{"type":"object","properties":{"metric":{"type":"string","minLength":1,"maxLength":64},"operator":{"enum":["eq","gte","lte"]},"value":{"type":"number"}},"required":["metric","operator","value"],"additionalProperties":false},"expect":{"type":"array","maxItems":12,"items":{"type":"object","properties":{"metric":{"type":"string","minLength":1,"maxLength":64},"operator":{"enum":["eq","gte","lte"]},"value":{"type":["number","string","boolean"]}},"required":["metric","operator","value"],"additionalProperties":false}},"speed":{"enum":["fast","watch"]}},"required":["request_id","actions"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/huginn/games/thornwatch/","pages":["/huginn/games/thornwatch/"]}],"category":"Developer Tools","favicon":"/favicons/halmir-ai.github.io.svg","apiSurface":"spec","toolCount":10}}