← WebMCP Directory

Tool tree

blindspot-webmcp.vercel.app

Media & PersonalTools verified
Website
A five-minute WebMCP co-op game. One human sees the bomb, one agent gets seven purpose-built tools, and they have to talk before the clock runs out.
Explore capabilities
    get_bomb_statusAnswer

    Report defusal progress: countdown, strikes, and which modules are still unsolved. This tool deliberately does NOT describe what any module looks like. Wire colours, keypad symbols, button markings and casing details are withheld from the tool surface by design. Ask the human in front of the bomb to describe them to you.

    View tool JSON
    {
      "name": "get_bomb_status",
      "kind": "answer",
      "impl": "imperative",
      "description": "Report defusal progress: countdown, strikes, and which modules are still unsolved. This tool deliberately does NOT describe what any module looks like. Wire colours, keypad symbols, button markings and casing details are withheld from the tool surface by design. Ask the human in front of the bomb to describe them to you.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    get_manualAnswer

    Read the defusal manual. Sections: overview, casing, wires, keypad, button. Omit the section argument to read all of it. The manual explains every rule but contains no information about the specific bomb in front of your partner.

    View tool JSON
    {
      "name": "get_manual",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the defusal manual. Sections: overview, casing, wires, keypad, button. Omit the section argument to read all of it. The manual explains every rule but contains no information about the specific bomb in front of your partner.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "section": {
            "type": "string",
            "enum": [
              "overview",
              "casing",
              "wires",
              "keypad",
              "button",
              "all"
            ],
            "description": "Which section to read. Defaults to all."
          }
        },
        "additionalProperties": false
      }
    }
    cut_wireAction

    Cut one wire on a wires module. Positions are numbered from 1 at the top. You cannot see the wires, so confirm the colours with your partner and look the answer up in the wires section of the manual before calling this. A wrong cut is a strike.

    View tool JSON
    {
      "name": "cut_wire",
      "kind": "act",
      "impl": "imperative",
      "description": "Cut one wire on a wires module. Positions are numbered from 1 at the top. You cannot see the wires, so confirm the colours with your partner and look the answer up in the wires section of the manual before calling this. A wrong cut is a strike.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "module_id": {
            "type": "string",
            "description": "Module letter, for example A."
          },
          "position": {
            "type": "integer",
            "minimum": 1,
            "maximum": 5,
            "description": "Wire position, 1 is topmost."
          }
        },
        "required": [
          "module_id",
          "position"
        ],
        "additionalProperties": false
      }
    }
    press_keypadAction

    Press all four keypad buttons in one order. Positions are 1 and 2 on the top row, 3 and 4 on the bottom row. Pass the full press order as an array of four positions. You cannot see the symbols, so have your partner describe them and match the column in the keypad section of the manual. A wrong order is a strike.

    View tool JSON
    {
      "name": "press_keypad",
      "kind": "act",
      "impl": "imperative",
      "description": "Press all four keypad buttons in one order. Positions are 1 and 2 on the top row, 3 and 4 on the bottom row. Pass the full press order as an array of four positions. You cannot see the symbols, so have your partner describe them and match the column in the keypad section of the manual. A wrong order is a strike.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "module_id": {
            "type": "string",
            "description": "Module letter, for example B."
          },
          "order": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 1,
              "maximum": 4
            },
            "minItems": 4,
            "maxItems": 4,
            "description": "The four positions in the order they should be pressed."
          }
        },
        "required": [
          "module_id",
          "order"
        ],
        "additionalProperties": false
      }
    }
    tap_buttonAction

    Press the big button and release it immediately. Use this when the button section of the manual resolves to TAP. A wrong choice is a strike.

    View tool JSON
    {
      "name": "tap_button",
      "kind": "act",
      "impl": "imperative",
      "description": "Press the big button and release it immediately. Use this when the button section of the manual resolves to TAP. A wrong choice is a strike.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "module_id": {
            "type": "string",
            "description": "Module letter, for example C."
          }
        },
        "required": [
          "module_id"
        ],
        "additionalProperties": false
      }
    }
    hold_buttonAction

    Press the big button and keep holding it. A coloured strip lights up beside the button while held. You cannot see that strip: ask your partner for its colour, then call release_button with the digit the manual gives for that colour.

    View tool JSON
    {
      "name": "hold_button",
      "kind": "act",
      "impl": "imperative",
      "description": "Press the big button and keep holding it. A coloured strip lights up beside the button while held. You cannot see that strip: ask your partner for its colour, then call release_button with the digit the manual gives for that colour.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "module_id": {
            "type": "string",
            "description": "Module letter, for example C."
          }
        },
        "required": [
          "module_id"
        ],
        "additionalProperties": false
      }
    }
    release_buttonAction

    Release a held button at the next moment the countdown displays a given digit. The bomb performs the timing, so call this as soon as you know the digit. Releasing on the wrong digit is a strike.

    View tool JSON
    {
      "name": "release_button",
      "kind": "act",
      "impl": "imperative",
      "description": "Release a held button at the next moment the countdown displays a given digit. The bomb performs the timing, so call this as soon as you know the digit. Releasing on the wrong digit is a strike.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "module_id": {
            "type": "string",
            "description": "Module letter, for example C."
          },
          "release_when_timer_contains": {
            "type": "integer",
            "minimum": 0,
            "maximum": 9,
            "description": "Release at the next second whose countdown text contains this digit."
          }
        },
        "required": [
          "module_id",
          "release_when_timer_contains"
        ],
        "additionalProperties": false
      }
    }