# Email Bump MCP server

> Connect Email Bump to Claude Desktop, Claude Code, Cursor, or any Model Context Protocol client: 74 tools covering account creation, sending, domains, audiences, campaigns, flows and inbound, with confirm-gated sends and name-confirmed deletes.

**Canonical page:** [https://emailbump.com/mcp](https://emailbump.com/mcp)

The server runs locally inside the `emailbump` binary (`emailbump mcp`, stdio transport), so the API key stays on the user's machine. Tools return the REST API's JSON verbatim, and the server delivers operating instructions to the assistant at connection time: rehearse with a test send, confirm audiences with the human, never re-subscribe without fresh consent.

## Connect — Claude Code (one paste; no key pasting)

```bash
curl -fsSL https://raw.githubusercontent.com/danest/emailbump-cli/main/install.sh | sh && ~/.local/bin/emailbump login && claude mcp add emailbump -- ~/.local/bin/emailbump mcp
```

`emailbump login` opens the browser: click Authorize and choose the key's scope — one project, or all access. With an all-access key and several projects, pass `project_id` on project-bound tools (auto-selected when there is only one).

## Connect — Claude Desktop / Cursor

Install the binary (`curl -fsSL https://raw.githubusercontent.com/danest/emailbump-cli/main/install.sh | sh`), run `emailbump login`, then add to `claude_desktop_config.json` or `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "emailbump": {
      "command": "emailbump",
      "args": ["mcp"]
    }
  }
}
```

To pin a specific key instead of the stored login (e.g. CI), add `"env": { "EMAILBUMP_API_KEY": "ebk_..." }`.

## Tools (59)

- Getting set up: `create_account`, `verify_email_code`, `whoami`, `start_authorization`, `finish_authorization`
- Sending: `send_email`, `get_email`, `get_limits`
- Sending domains: `list_domains`, `add_domain`, `check_domain`, `enable_branded_tracking`, `disable_branded_tracking`
- Audience: `list_contacts`, `create_contact`, `get_contact`, `update_contact`, `subscribe_contact`, `unsubscribe_contact`, `create_list`, `add_contact_to_list`, `remove_contact_from_list`
- Events: `track_event`
- Campaigns: `list_campaigns`, `create_campaign`, `get_campaign`, `update_campaign`, `send_campaign`, `delete_campaign`, `get_ab_results`
- Flows: `list_flows`, `get_flow`, `create_flow`, `update_flow`, `delete_flow`, `test_flow`, `activate_flow`, `pause_flow`, `enroll_in_flow`, `list_flow_enrollments`
- Inbound: `list_inbound`, `get_inbound_message`, `reply_to_inbound_message`, `get_inbound_address`, `forward_inbound_message`, `list_forward_rules`, `create_forward_rule`, `delete_forward_rule`
- Account structure: `list_workspaces`, `create_workspace`, `list_projects`, `create_project`, `get_project`, `update_project`, `delete_project`, `create_project_key`
- Reference: `list_lists`, `list_segments`, `list_templates`

## Guardrails

- `send_campaign` requires `confirm: true`; without it the tool returns the campaign (audience, subject, from address) for human review instead of sending.
- `subscribe_contact` and `create_contact` carry explicit consent warnings.
- `create_flow` and `activate_flow` say plainly that a live flow emails contacts on its own, and point at `"status": "draft"` and `pause_flow` as the reversible options. `test_flow` mails a draft's send steps to one address without activating anything — the safe way to see a flow's real output.
- `send_email` with `stream: "marketing"` is consent-gated: it is refused outright for a recipient who has unsubscribed, and the unsubscribe footer is appended server-side.
- The deletes that exist are narrow and confirmed. `delete_flow` and `delete_forward_rule` stop future sends; `delete_project` requires the project's name typed back exactly. `delete_campaign` is the one that erases history — a sent campaign's recipient rows and analytics go with it — and it is refused outright while the campaign is sending, scheduled or testing, because deleting a live campaign would call off a send without saying so. There is no bulk import and no way to override consent.

## Related

- [CLI](https://emailbump.com/cli.md) — the same binary as a command line.
- [Agent skills](https://emailbump.com/agent-skills.md) — SKILL.md workflows for coding agents.
