dev.multimail/mcp-server

Email for AI agents. Send and receive as markdown with human oversight.

0MITcommunication

Install

Config snippet generator goes here (5 client tabs)

README

# @multimail/mcp-server

MCP server for [MultiMail](https://multimail.dev). Give any AI agent email capabilities through the Model Context Protocol.

## Quick start

```bash
npx @multimail/mcp-server
```

Requires `MULTIMAIL_API_KEY` environment variable. Get one at [multimail.dev](https://multimail.dev).

By using MultiMail you agree to the [Terms of Service](https://multimail.dev/terms) and [Acceptable Use Policy](https://multimail.dev/acceptable-use).

## Setup

### Option A: Remote server (recommended)

No install required. Connect directly to our hosted server. Authenticates via OAuth in the browser.

```json
{
  "mcpServers": {
    "multimail": {
      "type": "url",
      "url": "https://mcp.multimail.dev/mcp"
    }
  }
}
```

Works with Claude.ai, Claude Desktop, Claude Code, and any client that supports remote MCP servers.

### Option B: Local server (stdio)

Run the server locally. API key is passed as an environment variable.

```json
{
  "mcpServers": {
    "multimail": {
      "command": "npx",
      "args": ["-y", "@multimail/mcp-server"],
      "env": {
        "MULTIMAIL_API_KEY": "mm_live_...",
        "MULTIMAIL_MAILBOX_ID": "01KJ1NHN8J..."
      }
    }
  }
}
```

### Where to add this

| Client | Config file |
|--------|------------|
| Claude Code | `~/.claude/.mcp.json` |
| Claude Desktop | `claude_desktop_config.json` |
| Cursor | `.cursor/mcp.json` in your project |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |
| Copilot (VS Code) | `.vscode/mcp.json` in your project |
| OpenCode | `mcp.json` in your project |
| ChatGPT Desktop | Settings > MCP Servers |
| Any MCP client | Consult your client's docs for config location |

## Environment variables

| Variable | Required | Description |
|----------|----------|-------------|
| `MULTIMAIL_API_KEY` | Yes | Your MultiMail API key (`mm_live_...`) |
| `MULTIMAIL_MAILBOX_ID` | No | Default mailbox ID. If not set, pass `mailbox_id` to each tool or call `list_mailboxes` first. |
| `MULTIMAIL_API_URL` | No | API base URL. Defaults to `https://api.multimail.dev`. |

## First-run setup

On first use, MultiMail will prompt you to configure your mailbox. You can also run this explicitly using the `configure_mailbox` tool:

- **Oversight mode**: How much human approval is required (`gated_send`, `monitored`, `autonomous`, etc.)
- **Display name**: Sender name shown in emails
- **CC/BCC defaults**: Automatically copy addresses on all outbound emails
- **Scheduling**: Enable/disable scheduled send and set default gate timing
- **Signature**: Email signature block

If you skip this step, MultiMail will remind you on your first tool call.

## Tools

| Tool | Description |
|------|-------------|
| `list_mailboxes` | List all mailboxes available to this API key |
| `configure_mailbox` | Set up mailbox preferences: oversight mode, display name, CC/BCC, scheduling, signature |
| `send_email` | Send an email with a markdown body. Supports attachments, `idempotency_key`, and `send_at` for scheduled delivery. |
| `check_inbox` | List emails with filters: status, sender, subject, date range, direction, attachments, cursor pagination |
| `read_email` | Get full email content. Returns trusted metadata and untrusted body as separate content blocks. |
| `reply_email` | Reply to an email in its existing thread. Supports attachments and `idempotency_key`. |
| `download_attachment` | Download an email attachment as base64 with content type |
| `get_thread` | Get all emails in a conversation thread with participants and metadata |
| `cancel_message` | Cancel a pending or scheduled email |
| `schedule_email` | Schedule an email for future delivery with a required `send_at` time. Edit or cancel before it sends. |
| `edit_scheduled_email` | Edit a scheduled email's delivery time, recipients, subject, or body before it sends |
| `update_mailbox` | Update mailbox settings (display name, oversight mode, signature, webhooks) |
| `update_account` | Update account settings (org name, oversight email, physical address) |
| `delete_mailbox` | Permanently delete a mailbox (requires admin scope) |
| `resend_confirmation` | Resend the activation email with a new code |
| `activate_account` | Activate an account using the code from the confirmation email |
| `tag_email` | Set, get, or delete key-value tags on emails (persistent agent memory) |
| `add_contact` | Add a contact to your address book with optional tags |
| `search_contacts` | Search address book by name or email |
| `get_account` | Get account status, plan, quota, sending enabled, enforcement tier |
| `create_mailbox` | Create a new mailbox (requires admin scope) |
| `request_upgrade` | Request an oversight mode upgrade (trust ladder) |
| `apply_upgrade` | Apply an upgrade code from the operator |
| `get_usage` | Check quota and usage stats for the billing period |
| `list_pending` | List emails awaiting oversight decision (requires oversight scope) |
| `decide_email` | Approve or reject a pending email (requires ove