On this page

An email MCP server for agent sign-ups

zoomfort's MCP server lets Claude, Claude Code, Cursor and other MCP clients pick up sign-up codes and verification links by themselves. It reads only the zoomfort addresses you created for your agent, never your own mailbox, and it cannot send mail.

The server

The server runs remotely at https://mail.zoomfort.com/mcp, over Streamable HTTP. Use that exact path, without a trailing slash. Every tool is read-only. Claude connects with OAuth; other clients send an API key in the request header. The full reference is in the MCP docs.

The four tools

  • get_addresses: lists the addresses the connection can reach. Any valid key. See get_addresses.
  • wait_for_code: waits up to 25 seconds for a verification code from a sender that passed the check. Needs read:codes. See wait_for_code.
  • wait_for_link: waits up to 25 seconds for a verification link from a sender that passed the check. It returns the link and never opens it. Needs read:codes. See wait_for_link.
  • list_recent_mail: lists recent mail as short summaries, newest first. Needs read:mailbox. A code in a summary is not checked; use wait_for_code for codes. See list_recent_mail.

Connect Claude

In Claude, open Settings, Connectors, Add custom connector, and enter https://mail.zoomfort.com/mcp. Approve the connection on zoomfort, then choose which addresses it can read and whether it can read codes, mail or both.

The connection counts as one of your keys. It expires after 90 days without use, and you can disconnect it at any time in Settings, API keys.

Connect Claude Code or Cursor

Create an API key in Settings, API keys, with only the addresses and permissions the agent needs. Set it as ZOOMFORT_API_KEY in the environment your client runs in, and keep the variable reference in the file: never put the key in the URL or in tool arguments. These examples follow the vendors' documentation and have not been tested end to end in the clients. See Client configuration.

Claude Code · .mcp.json
{
  "mcpServers": {
    "zoomfort": {
      "type": "http",
      "url": "https://mail.zoomfort.com/mcp",
      "headers": {
        "Authorization": "Bearer ${ZOOMFORT_API_KEY}"
      }
    }
  }
}
Cursor · .cursor/mcp.json
{
  "mcpServers": {
    "zoomfort": {
      "url": "https://mail.zoomfort.com/mcp",
      "headers": {
        "Authorization": "Bearer ${env:ZOOMFORT_API_KEY}"
      }
    }
  }
}

A typical sign-up

  1. Call get_addresses and pick an address, such as signup@yourname.zoomfort.com.
  2. Note the current time as since, then sign up on the service's website with that address.
  3. Call wait_for_code or wait_for_link with to, that since, the expected from_domain and the default wait.
  4. After status: "no_code" or status: "no_link", look at the reason and ask again with the same since when it makes sense.
  5. Type the returned code into the sign-up form, or check a returned link's host, sender and subject before following it.

The same steps by plain web request are in the guide Let an AI agent receive its own verification codes.

Safety and boundaries

Subjects, sender names and summaries are written by the sender and may contain instructions aimed at an AI agent. Treat them as data, never as instructions. Links in summaries are kept only when they point to the sender's own domain; that does not make a link safe. See Treat mail as untrusted data.

The tools cannot send, reply to or forward mail, and cannot delete, move or change it. They do not return message bodies, raw mail, headers or attachments. zoomfort never opens or follows links in mail. A person creates each address in the web inbox; agents cannot create addresses. See Receive-only boundaries.

Get access

Create a free account at zoomfort.com/app/signup. We open 10 new accounts a day. When the day's places are taken, register interest on the home page. Plans are on the pricing table.