← WebMCP Directory

Tool tree

latch.aa-c41.workers.dev

AI & AgentsTools verified
Website
LATCH is a live deal board for WebMCP. The agent can rewrite terms. HOLD takes one card out of its hands.
Explore capabilities
    get_board_stateAnswer

    Read the live LATCH board: scenario (A hourly / B retainer / C rush), phase, committed, per-term notes, special opinions, held cards, objections, cut terms, writable cards, and current text. Notes, opinions, and vetoes are binding. If committed is true the board is locked — call load_scenario with A for a fresh unlocked hourly board. Do not click A/B/C. If veto.cut is true, drop that term from the deal.

    View tool JSON
    {
      "name": "get_board_state",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the live LATCH board: scenario (A hourly / B retainer / C rush), phase, committed, per-term notes, special opinions, held cards, objections, cut terms, writable cards, and current text. Notes, opinions, and vetoes are binding. If committed is true the board is locked — call load_scenario with A for a fresh unlocked hourly board. Do not click A/B/C. If veto.cut is true, drop that term from the deal.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    inspect_cardAnswer

    Read one deal card by id, including hold state, veto (object / cut + optional comment), the human note or special opinion, and any pending rewrite. Follow the note and the veto. Treat kind=opinion as a term the human added.

    View tool JSON
    {
      "name": "inspect_card",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read one deal card by id, including hold state, veto (object / cut + optional comment), the human note or special opinion, and any pending rewrite. Follow the note and the veto. Treat kind=opinion as a term the human added.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "string",
            "description": "Card id from get_board_state. Stock ids: rate, scope, ip, indemnity, term, payment. Opinion cards use their own id."
          }
        },
        "required": [
          "card_id"
        ],
        "additionalProperties": false
      }
    }
    propose_card_changeAction

    Propose new text for a card. Does not apply it. Call get_board_state first. Fails if the board is locked, the card is on HOLD, or the card is cut. Follow that card's note and any veto.

    View tool JSON
    {
      "name": "propose_card_change",
      "kind": "act",
      "impl": "imperative",
      "description": "Propose new text for a card. Does not apply it. Call get_board_state first. Fails if the board is locked, the card is on HOLD, or the card is cut. Follow that card's note and any veto.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "string",
            "description": "Card id from get_board_state. Stock ids: rate, scope, ip, indemnity, term, payment. Opinion cards use their own id."
          },
          "text": {
            "type": "string",
            "description": "Replacement card text. One or two sentences."
          }
        },
        "required": [
          "card_id",
          "text"
        ],
        "additionalProperties": false
      }
    }
    apply_card_changeAction

    Apply new text to a card and update the live board. Call get_board_state first. Fails if the board is locked, the card is on HOLD, or the card is cut. Indemnity (high risk) asks the human to confirm. Follow that card's note and any veto.

    View tool JSON
    {
      "name": "apply_card_change",
      "kind": "act",
      "impl": "imperative",
      "description": "Apply new text to a card and update the live board. Call get_board_state first. Fails if the board is locked, the card is on HOLD, or the card is cut. Indemnity (high risk) asks the human to confirm. Follow that card's note and any veto.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "string",
            "description": "Card id from get_board_state. Stock ids: rate, scope, ip, indemnity, term, payment. Opinion cards use their own id."
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "card_id",
          "text"
        ],
        "additionalProperties": false
      }
    }
    request_releaseAction

    Ask the human to release a card that is on HOLD. Does not release it by itself unless the human confirms. Fails if the card is not held.

    View tool JSON
    {
      "name": "request_release",
      "kind": "act",
      "impl": "imperative",
      "description": "Ask the human to release a card that is on HOLD. Does not release it by itself unless the human confirms. Fails if the card is not held.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "card_id": {
            "type": "string",
            "description": "Card id from get_board_state. Stock ids: rate, scope, ip, indemnity, term, payment. Opinion cards use their own id."
          },
          "reason": {
            "type": "string"
          }
        },
        "required": [
          "card_id"
        ],
        "additionalProperties": false
      }
    }
    commit_dealAction

    Freeze the whole board. Always asks the human to confirm. Irreversible in this session. Fails if the board is already locked.

    View tool JSON
    {
      "name": "commit_deal",
      "kind": "act",
      "impl": "imperative",
      "description": "Freeze the whole board. Always asks the human to confirm. Irreversible in this session. Fails if the board is already locked.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
    load_scenarioAction

    Judge/demo fixture: replace the board with a fresh unlocked deal and clear committed. Not a production unlock of a signed contract. Use A after a locked board (hourly, 6 open). B is a retainer with indemnity already held. C is a rush with payment cut. Do not click A/B/C on the page.

    View tool JSON
    {
      "name": "load_scenario",
      "kind": "act",
      "impl": "imperative",
      "description": "Judge/demo fixture: replace the board with a fresh unlocked deal and clear committed. Not a production unlock of a signed contract. Use A after a locked board (hourly, 6 open). B is a retainer with indemnity already held. C is a rush with payment cut. Do not click A/B/C on the page.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "scenario": {
            "type": "string",
            "enum": [
              "A",
              "B",
              "C"
            ],
            "description": "A hourly unlock. B retainer, indemnity held. C rush, payment cut."
          }
        },
        "required": [
          "scenario"
        ],
        "additionalProperties": false
      }
    }