← WebMCP Directory

Tool tree

halmir-ai.github.io

Developer ToolsTools verified
Website
Huginn gives coding agents a typed test port into live browser games, turning opaque canvas gameplay into visible, reproducible experiments.
Explore capabilities

    page: Every page

    describe_gameAnswer

    Explain this live game's rules, goals, metrics, action vocabulary, curated named setups, experiment limits, seed, checksum, and capabilities before planning a test.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/huginn/"
    }
    get_game_stateAnswer

    Return the current canonical simulation state and checksum as structured data; this reads live browser memory, not pixels.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/huginn/"
    }
    get_metricsAnswer

    Return the current exposed playtest metrics and canonical state checksum. Call describe_game for metric semantics.

    View tool JSON
    {
      "name": "get_metrics",
      "kind": "answer",
      "impl": "imperative",
      "description": "Return the current exposed playtest metrics and canonical state checksum. Call describe_game for metric semantics.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/huginn/"
    }
    list_legal_actionsAnswer

    Return only actions legal in the current live state, with the checksum they were computed against. Use this before mutating the game.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/huginn/"
    }
    snapshot_gameAction

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/huginn/"
    }
    capture_gameAction

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/huginn/"
    }
    restore_gameAction

    Verify and visibly restore a snapshot created on this page. Reject unknown, tampered, or stale snapshots.

    View tool JSON
    {
      "name": "restore_game",
      "kind": "act",
      "impl": "imperative",
      "description": "Verify and visibly restore a snapshot created on this page. Reject unknown, tampered, or stale snapshots.",
      "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
      },
      "page": "/huginn/"
    }

    page: Huginn

    apply_action_sequenceAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/huginn/"
    }

    page: Starfall

    apply_action_sequenceAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/huginn/games/starfall/"
    }

    page: Thornwatch

    apply_action_sequenceAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/huginn/games/thornwatch/"
    }