Menu

MCP Server

Connect Claude and other AI agents to your Mailloop sandboxes over the Model Context Protocol.

4 min read

The Mailloop MCP server lets an AI agent drive your sandboxes for you. Once connected, your assistant can create a capture inbox, wait for the email your app sends, read what arrived, and confirm a link works, all without leaving the chat.

It speaks the Model Context Protocol over Streamable HTTP at https://api.mailloop.io/mcp. Connect over OAuth with no API key, or pass a key in a header.

Want the agent to also know the testing workflow, not just the tools? The Mailloop plugin bundles this server with an Agent Skill in a single install.

Connecting Claude Code

Add the server with one command:

BASH
claude mcp add --transport http mailloop https://api.mailloop.io/mcp

Then run /mcp in Claude Code, pick mailloop, and choose Authenticate. Approve the organization and scopes in your browser and you're connected. No API key to copy.

For Claude.ai, ChatGPT, and Claude Desktop, open Settings → Connectors → Add custom connector, paste https://api.mailloop.io/mcp, and sign in over OAuth.

Other clients

Editors that take a static config use an API key instead of OAuth. Create one in Settings → Organization → API keys and drop it into the client config below.

Cursor

JSON
{
  "mcpServers": {
    "mailloop": {
      "url": "https://api.mailloop.io/mcp",
      "headers": { "Authorization": "Bearer ml_live_xxx" }
    }
  }
}

VS Code

JSON
{
  "inputs": [
    { "type": "promptString", "id": "mailloop-key", "description": "Mailloop API key", "password": true }
  ],
  "servers": {
    "mailloop": {
      "type": "http",
      "url": "https://api.mailloop.io/mcp",
      "headers": { "Authorization": "Bearer ${input:mailloop-key}" }
    }
  }
}

Windsurf

JSON
{
  "mcpServers": {
    "mailloop": {
      "serverUrl": "https://api.mailloop.io/mcp",
      "headers": { "Authorization": "Bearer ml_live_xxx" }
    }
  }
}

Zed

JSON
{
  "context_servers": {
    "mailloop": {
      "url": "https://api.mailloop.io/mcp",
      "headers": { "Authorization": "Bearer ml_live_xxx" }
    }
  }
}

Available tools

ToolDescription
create_sandboxCreate a capture inbox for a test run, or list the ones you already have.
create_temporary_sandboxCreate a throwaway inbox that expires on its own, handy for a single CI run.
wait_for_emailBlock until a matching email lands in a sandbox. This is the tool that makes end-to-end testing work from an agent.
get_emailRead a captured email's sanitized content and pull out every link, so the agent can follow a confirmation or reset flow.
send_emailSend a block-based email into a sandbox to test exactly what your app would deliver.
create_webhookCreate, test, and inspect webhook deliveries while you build the integration.
The agent only sees what your grant allows. Tokens are bound to a single organization and the scopes you approve, and sandbox content is sanitized before it reaches the model.

Authentication

OAuth is the simplest path. On the first call the client opens the Mailloop consent screen, you pick an organization and approve the scopes, and the client stores the token. Access tokens are short lived and refresh on their own.

Prefer a static credential? Create an API key in Settings → Organization → API keys and send it as a bearer token:

BASH
claude mcp add --transport http mailloop https://api.mailloop.io/mcp \
  --header "Authorization: Bearer ml_live_xxx"

Treat the key like a password. It carries the same access as the organization member who created it.

Troubleshooting

Authentication never completes. Make sure your client can open a browser for the OAuth redirect. In headless or CI runs, use an API key in a header instead.

Tools do not appear. Confirm the server is reachable at https://api.mailloop.io/mcp and that you finished /mcp authentication. Restart the client after adding the server.

401 Unauthorized. Your token expired or the API key was revoked. Re-authenticate, or create a fresh key in the dashboard.

wait_for_email times out. Check that your app actually sent to the sandbox address and that the subject or recipient filter matches the message you expect.