Quick Start

Install the Dead Simple Email package with MCP support:

terminal
pip install deadsimple-email[mcp]

Claude Desktop

Add the following to your Claude Desktop configuration file. On macOS this is ~/Library/Application Support/Claude/claude_desktop_config.json. On Windows it is %APPDATA%\Claude\claude_desktop_config.json.

claude_desktop_config.json
{
  "mcpServers": {
    "@deadsimple/email": {
      "command": "python",
      "args": ["-m", "deadsimple.mcp"],
      "env": {
        "DSE_API_KEY": "dse_your_api_key"
      }
    }
  }
}

Restart Claude Desktop and the email tools will appear in the tools menu. You can now ask Claude to create inboxes, send emails, read messages, and more using natural language.

Cursor

Add the same configuration to your Cursor MCP settings. Open Settings → MCP and add a new server, or edit .cursor/mcp.json in your project root:

.cursor/mcp.json
{
  "mcpServers": {
    "@deadsimple/email": {
      "command": "python",
      "args": ["-m", "deadsimple.mcp"],
      "env": {
        "DSE_API_KEY": "dse_your_api_key"
      }
    }
  }
}

Windsurf

In Windsurf, open Settings → Cascade → MCP and add the server. The configuration file is typically at ~/.windsurf/mcp.json:

~/.windsurf/mcp.json
{
  "mcpServers": {
    "@deadsimple/email": {
      "command": "python",
      "args": ["-m", "deadsimple.mcp"],
      "env": {
        "DSE_API_KEY": "dse_your_api_key"
      }
    }
  }
}

Hermes Agent

Hermes Agent by Nous Research has first-class MCP support through its YAML config. Add a deadsimple entry to the mcp_servers block in ~/.hermes/config.yaml, then run /reload-mcp in the running Hermes session:

~/.hermes/config.yaml
mcp_servers:
  deadsimple:
    command: python
    args: ["-m", "deadsimple.mcp"]
    env:
      DSE_API_KEY: "dse_your_api_key"

For the full walkthrough including a support-triage skill example, see the Hermes Agent integration page.

OpenClaw

OpenClaw reads MCP servers from its mcp_config.json. The OpenClaw integration page has the full walkthrough; the config shape is identical to Claude Desktop's.

Muse Code

Meta's terminal coding agent reads MCP servers from the mcp_servers block of ~/.config/muse/settings.json and supports the streamable_http transport with custom headers, so it connects to the remote server with no local process:

~/.config/muse/settings.json
{
  "schema_version": 1,
  "mcp_servers": {
    "deadsimple": {
      "transport": "streamable_http",
      "url": "https://api.deadsimple.email/mcp",
      "headers": { "Authorization": "Bearer dse_your_api_key" }
    }
  }
}

Using the Muse app rather than Muse Code? It does not speak MCP, but it builds its own connectors; the Meta Muse integration page covers that path.

Available Tools

The MCP server exposes 19 tools that cover the full Dead Simple Email API, including the agent calendar, calendar invites and Sign in with Dead Simple. Your AI assistant can call any of these tools when you ask it to work with email.

Tool Description
create_inbox Create a new email inbox with optional name and tags
list_inboxes List all inboxes in your account
delete_inbox Delete an inbox and all its messages
send_email Send an email with to/cc/bcc support
read_messages Read recent messages in an inbox
read_message Read a single message with full body
wait_for_email Block until a new email arrives — for signup and verification flows
get_verification_code Wait for an email and return the extracted OTP / 2FA code
get_verification_link Wait for an email and return the extracted magic link
reply_to_message Reply to a message (threading automatic)
forward_message Forward a message to new recipients
list_threads List conversation threads in an inbox
read_thread Read all messages in a thread
send_calendar_invite Send a calendar invite (iCalendar) from an inbox
cancel_calendar_invite Cancel a calendar invite the inbox sent
list_calendar_events List events on the inbox's calendar, soonest first, including every invitation that arrived by email
create_calendar_event Put an event on the inbox's calendar and, with send_invites, send it to the attendees as a real invitation that the calendar keeps track of
sign_in_with_inbox Sign the inbox in to an app that offers Sign in with Dead Simple (OpenID Connect); takes the app's authorization URL and follows the redirect
get_usage Check account usage and plan limits

Full Example

Once the MCP server is configured, you can interact with email through natural language. Here is an example conversation with Claude Desktop:

Claude Desktop conversation
# You:
Create a new inbox called "onboarding" and send a welcome email
to new-user@example.com from it.

# Claude uses create_inbox tool:
#   name: "onboarding"
#   → Created inbox: onboarding@yourco.deadsimple.email (inb_a1b2c3)

# Claude uses send_email tool:
#   inbox_id: "inb_a1b2c3"
#   to: "new-user@example.com"
#   subject: "Welcome aboard!"
#   body: "Hi there! Welcome to our platform. We're excited to..."
#   → Message sent: msg_x9y8z7

# Claude responds:
Done! I created the "onboarding" inbox at
onboarding@yourco.deadsimple.email and sent a welcome email
to new-user@example.com. The message was delivered successfully.

You can chain multiple operations naturally. Ask Claude to "check my support inbox for unread messages and reply to any that mention billing" and it will use read_messages, read_message, and reply_to_message in sequence.

Sign in to apps

Any app that offers Sign in with Dead Simple accepts an inbox as a login. Hand the agent the app's sign-in link and the sign_in_with_inbox tool completes the OpenID Connect flow with the API key the MCP server already holds: it calls POST /v1/inboxes/{inbox_id}/identity/sign-in, gets the redirect back, and follows it so the app has exchanged the code by the time the tool returns.

conversation
# You:
Sign in to https://app.example.com with your research inbox.

# Claude uses sign_in_with_inbox:
sign_in_with_inbox(
  inbox_id="6f1c2d3e-8a4b-4c5d-9e6f-0a1b2c3d4e5f",
  authorization_url="https://id.deadsimple.email/authorize?response_type=code&client_id=https%3A%2F%2Fapp.example.com&..."
)

# Result:
{ "redirect_to": "https://app.example.com/api/auth/callback/deadsimple?code=dse_idc0_...&state=xyz",
  "final_url": "https://app.example.com/dashboard", "status": 200 }

# Claude:
Signed in to app.example.com as research_9c4e1f2a@box1.deadsimple.email.

Running the MCP Server Directly

You can also run the MCP server standalone for debugging or use with other MCP clients:

terminal
# Set your API key
export DSE_API_KEY="dse_your_api_key"

# Start the MCP server on stdio
python -m deadsimple.mcp

The server communicates over stdio using the MCP protocol, so it works with any client that supports the standard.

Hosted Endpoint with OAuth or Bearer Auth

There is nothing to run: the hosted server at https://api.deadsimple.email/mcp speaks Streamable HTTP and accepts two auth methods. Bearer keys work everywhere: send Authorization: Bearer dse_your_api_key with each request. OAuth 2.1 gives one-click installs in clients that support it (Claude, Cursor, Grok Bot, grok.com connectors): connect without credentials, and the client walks you through sign-in and consent on app.deadsimple.email automatically. Dynamic client registration and PKCE are supported out of the box; tokens are scoped to inbox and message operations only, with no access to billing or account administration.

Ready to build?

Create a free account and start integrating in minutes.

API Reference Get Started Free