About Mailtani
Mailtani’s MCP server lets email marketers manage contacts and email activity through Claude, Cursor, or another MCP-compatible agent. Its tools cover campaign drafts and activation, inbox threads, transactional email, segmentation, and event tracking.
Key features
- 01Create and manage contacts and lists
- 02Build segments and enroll contacts
- 03Create and edit campaign drafts
- 04Activate or archive campaigns
- 05Send emails and reply to threads
- 06Track events that trigger flows
Use cases
- 01Prepare a broadcast for a contact list
- 02Enroll contacts in a drip sequence
- 03Send a transactional email and review replies
- 04Track a purchase event to trigger a flow
MCP support
Exposes Mailtani contacts, campaigns, emails, inbox, and event operations as MCP tools. The HTTP endpoint requires an API key and project ID in request headers.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mailtani.com/mcpclaude mcp add --transport http mailtani https://mailtani.com/mcp{"mcpServers":{"mailtani":{"type":"http","url":"https://mailtani.com/mcp"}}}Open in Cursor{"servers":{"mailtani":{"type":"http","url":"https://mailtani.com/mcp"}}}Open in VS Code{"mcpServers":{"mailtani":{"type":"http","url":"https://mailtani.com/mcp"}}}{"mcpServers":{"mailtani":{"serverUrl":"https://mailtani.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://mailtani.com/mcpAuth requiredTools
Details
From the project READMEMailtani MCP Server
Manage your email marketing directly from Claude, Cursor, or any MCP-compatible AI agent.
The Mailtani MCP server exposes your contacts, lists, segments, campaigns, emails, tags, custom fields, and event tracking as native AI tools — so your agent can send campaigns, enroll contacts, and track events without leaving the chat.
What you can do
| Category | Tools |
|---|---|
| Contacts | List, create (or upsert), update, delete |
| Lists | List all, create, add contacts, remove contact |
| Segments | List all, create with conditions, get matching contacts |
| Campaigns | List, create broadcast/sequence/flow (as drafts), edit a broadcast/sequence/flow in place, activate, archive |
| Emails | List sent emails, send one-off transactional email (rich text or plain text) |
| Inbox | List conversation threads, read a thread's full history, reply into a thread |
| Tags | List all, create, delete |
| Custom Fields | List all, create |
| Events | Track a custom event (triggers flows) |
Example prompts you can use
"Create a broadcast campaign called 'Q3 Newsletter' targeting my 'Leads' list."
"Create a contact for [email protected], tag him as VIP, and send him the onboarding email."
"Track a purchase_completed event for [email protected] with plan=pro."
"Show me all contacts added in the last 7 days."
"Set up a 3-step welcome sequence for new signups with delays of 0, 3, and 7 days."
"Create a flow that sends an email whenever a contact is added to my project."
Authentication
The MCP server uses the same API key system as the Mailtani REST API.
Every request requires two headers:
| Header | Value |
|---|---|
Authorization | Bearer mk_YOUR_API_KEY |
X-Project-Id | Your project ID (found in Settings → API) |
Generate an API key at Settings → API Keys inside your Mailtani account.
Setup
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"mailtani": {
"type": "http",
"url": "https://mailtani.com/mcp",
"headers": {
"Authorization": "Bearer mk_YOUR_API_KEY",
"X-Project-Id": "YOUR_PROJECT_ID"
}
}
}
}
Restart Claude Desktop. You will see a hammer icon confirming the server connected.
Claude Code
Run in your terminal:
claude mcp add --transport http mailtani https://mailtani.com/mcp \
--header "Authorization: Bearer mk_YOUR_API_KEY" \
--header "X-Project-Id: YOUR_PROJECT_ID"
Cursor
Add to your Cursor MCP settings (Cursor → Settings → MCP):
{
"mailtani": {
"type": "http",
"url": "https://mailtani.com/mcp",
"headers": {
"Authorization": "Bearer mk_YOUR_API_KEY",
"X-Project-Id": "YOUR_PROJECT_ID"
}
}
}
Codex
Add to ~/.codex/config.json:
{
"mcpServers": {
"mailtani": {
"type": "http",
"url": "https://mailtani.com/mcp",
"headers": {
"Authorization": "Bearer mk_YOUR_API_KEY",
"X-Project-Id": "YOUR_PROJECT_ID"
}
}
}
}
Any MCP-compatible client
Endpoint: POST https://mailtani.com/mcp
Protocol: MCP over HTTP (JSON-RPC 2.0)
Auth: Authorization: Bearer mk_...
Scope: X-Project-Id: <id>
Rate limit: 30 requests / minute
Tool reference
Contacts
| Tool | Description |
|---|---|
list-contacts | List contacts with optional search, list/tag/status filter, pagination |
create-contact | Create or upsert a contact by email; optionally assign lists and tags |
update-contact | Update contact fields, lists, and tags by contact ID |
delete-contact | Permanently delete a contact by ID |
get-contact-history | Get a contact's full send/reply history by email — every send and reply across all their threads, merged chronologically |
Lists
| Tool | Description |
|---|---|
list-lists | List all contact lists with contact counts |
create-list | Create a new contact list |
add-contact-to-list | Add up to 500 contacts to a list at once |
remove-contact-from-list | Remove a single contact from a list |
Segments
| Tool | Description |
|---|---|
list-segments | List all segments with contact counts |
create-segment | Create a segment with filter conditions (max 50) |
get-segment-contacts | Get paginated contacts matching a segment |
Campaigns
Campaigns are always created as drafts. Open the Mailtani app to review and activate them.
| Tool | Description |
|---|---|
list-campaigns | List campaigns filtered by type or status |
create-campaign | Create a new campaign (broadcast, sequence, or flow) as a draft |
create-broadcast | Create a one-time email blast draft and enroll its audience. Requires send_all or at least one of list_ids/segment_ids/tag_ids |
create-sequence | Create a multi-step drip sequence draft with per-step delays and enroll its audience. Requires send_all or at least one of list_ids/segment_ids/tag_ids |
create-flow | Create a simple flow draft (single trigger to send). Triggers: contact_added, contact_updated, contact_added_to_list, event_received, form_submitted |
create-advanced-flow | Create a flow draft with branches, waits, and campaign start/stop nodes — use this instead of create-flow whenever the flow needs to branch on a contact property or stop another campaign |
update-campaign | Edit an existing broadcast or sequence in place (schedule, name, sending email, content) instead of recreating it. Also enrolls contacts (list/segment/tag/send_all) — needed to fix a campaign created with no audience, since it can't otherwise be activated |
update-flow | Edit an existing flow in place (nodes, edges, settings, status) instead of recreating it |
inspect-email-body | Check an email body before saving it to a campaign — markdown that will render literally, unbalanced tags, dead links, unresolved merge variables |
simulate-flow | Walk a flow for a specific contact and report the exact path it would take, without sending anything |
enroll-contact | Enroll a single contact into a campaign |
activate-campaign | Activate a draft or paused campaign, making it ready to send |
bulk-update-campaign-status | Archive or activate up to 100 campaigns at once |
Emails
| Tool | Description |
|---|---|
list-emails | List sent emails, optionally filtered by contact |
send-email | Send a one-off transactional email to any address (rich text or plain text) |
update-email | Edit an unsent one-off email, and optionally send or schedule it |
Inbox
| Tool | Description |
|---|---|
list-threads | List inbox conversation threads, filterable by contact, unread, category, address, or date |
get-thread | Read one thread's full message history in order — outbound sends, campaign steps, and inbound replies |
reply-to-thread | Reply into an existing thread, threaded and sent from the right address automatically |
Tags
| Tool | Description |
|---|---|
list-tags | List all tags with contact counts |
create-tag | Create a new tag |
delete-tag | Delete a tag by ID |
Custom Fields
| Tool | Description |
|---|---|
list-custom-fields | List all custom fields |
create-custom-field | Create a custom field (idempotent by name) |
Events
| Tool | Description |
|---|---|
track-event | Track a custom event for a contact; persists properties and triggers flows |
Security
- All operations are scoped to your project via
X-Project-Id— no tool can read or modify another project's data - API keys are SHA-256 hashed at rest; plaintext is never stored
- Rate limited to 30 requests per minute
- Daily email send limits are enforced per your plan
Links
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.