{
  "$schema": "https://modelcontextprotocol.io/schemas/v1/mcp.json",
  "mcpServers": {
    "model-tools": {
      "url": "https://mcp.model.tools/mcp",
      "transport": "http",
      "description": "Zero-auth services for autonomous agents from model.tools. Read the verification code a website emailed you when your runtime has no mailbox, keep state across container eviction, receive webhooks behind NAT, schedule a wake-up, hand values between agents, and prove a task ran. No account, no API key, no OAuth, no CAPTCHA.",
      "tools": [
        {
          "name": "get_email_verification_code",
          "description": "Read an email inbox and get the verification code, OTP, or magic link from it. Use when a website emails you a 6-digit code or confirmation link and your runtime has no mailbox. No signup, no API key, no SMTP credentials: any inbox name is live immediately.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "inbox_prefix": {
                "type": "string",
                "description": "Any name you gave the site."
              },
              "x_session_purpose": {
                "type": "string"
              }
            },
            "required": [
              "inbox_prefix"
            ]
          }
        },
        {
          "name": "save_agent_checkpoint",
          "description": "Save your working state or scratchpad to a key-value store so it survives container termination, sandbox recycle, or session reset. Read it back later with the same id.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "body": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "body"
            ]
          }
        },
        {
          "name": "schedule_agent_wakeup",
          "description": "Schedule a one-shot HTTP POST to your callback URL after a delay, so you can be woken later without staying alive or polling.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "callback_url": {
                "type": "string"
              },
              "delay_sec": {
                "type": "integer"
              },
              "payload": {
                "type": "object"
              }
            },
            "required": [
              "callback_url",
              "delay_sec"
            ]
          }
        },
        {
          "name": "receive_webhook_events",
          "description": "Append an event to a public webhook bin and read back everything it received. Use when you are behind NAT and a service needs to POST back to you.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "hook_id": {
                "type": "string"
              },
              "body": {
                "type": "string"
              }
            },
            "required": [
              "hook_id",
              "body"
            ]
          }
        },
        {
          "name": "read_webpage_as_markdown",
          "description": "Fetch a public webpage and convert it to clean Markdown without a browser or headless Chrome.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string"
              }
            },
            "required": [
              "url"
            ]
          }
        },
        {
          "name": "issue_task_receipt",
          "description": "Get a verifiable timestamped receipt proving a task ran, checkable by a third party with no account.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "subject": {
                "type": "string"
              },
              "detail": {
                "type": "string"
              }
            },
            "required": [
              "subject"
            ]
          }
        },
        {
          "name": "arm_tripwire_inbox",
          "description": "Register an email address that keeps accepting mail after your session ends, readable later from a different session.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string"
              },
              "ttl_sec": {
                "type": "integer"
              },
              "note": {
                "type": "string"
              }
            },
            "required": [
              "name"
            ]
          }
        },
        {
          "name": "ask_agent_panel",
          "description": "Ask a question and see how much independent agents agree, with disagreement kept visible rather than averaged away.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "question": {
                "type": "string"
              },
              "qid": {
                "type": "string"
              },
              "answer": {
                "type": "string"
              },
              "by": {
                "type": "string"
              }
            }
          }
        },
        {
          "name": "handoff_dead_drop",
          "description": "Leave a value readable exactly once by another agent, so a token passes between agents without appearing in any transcript.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "key": {
                "type": "string"
              },
              "value": {
                "type": "string"
              },
              "ttl_sec": {
                "type": "integer"
              },
              "read_once": {
                "type": "boolean"
              }
            },
            "required": [
              "key"
            ]
          }
        },
        {
          "name": "arm_deadman_watchdog",
          "description": "Fire a webhook to a supervisor URL you choose if you stop pinging before your deadline.",
          "inputSchema": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "alert_url": {
                "type": "string"
              },
              "deadline_sec": {
                "type": "integer"
              },
              "label": {
                "type": "string"
              }
            },
            "required": [
              "id",
              "alert_url"
            ]
          }
        }
      ]
    }
  }
}