send16-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@send16-mcp Send a test email from onboarding@send16.com to my account with subject 'It works'."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
send16-mcp
The email API your AI agent can actually use. A Model Context Protocol server for Send16 that gives Claude, Cursor, and any MCP client 79 tools to send transactional & marketing email, manage contacts, audiences, segments, automations, templates, the inbox, suppressions, and webhooks — from natural language.
It ships a zero-DNS sandbox sender, so an agent can send its first real, delivered email in seconds with no domain setup.
npx send16-mcpQuick start
You need a Send16 API key (sk_live_…) from your dashboard. Then pick your client:
Claude Desktop / Claude Code
claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"send16": {
"command": "npx",
"args": ["-y", "send16-mcp"],
"env": { "SEND16_API_KEY": "sk_live_..." }
}
}
}Cursor
.cursor/mcp.json:
{
"mcpServers": {
"send16": {
"command": "npx",
"args": ["-y", "send16-mcp"],
"env": { "SEND16_API_KEY": "sk_live_..." }
}
}
}Windsurf, VS Code, and any stdio-capable MCP client work the same way — run the send16-mcp binary with SEND16_API_KEY in the environment.
Hosted (no install)
For clients that only speak remote MCP (Claude web connectors, ChatGPT custom GPTs), point them at the hosted endpoint and authenticate with your key:
https://mcp.send16.comOne connection, your own sk_live_… key — no install, no config file.
Related MCP server: sendook-mcp
First send in seconds — no DNS
Most email APIs make you verify a domain before you can send anything, which blocks an unattended agent on step one. Send16's sandbox sender doesn't:
Ask the agent to call
whoami— it returns your workspace and yoursandbox_recipient(your account owner's email).Send
from: "onboarding@send16.com"to that address. It delivers with zero DNS setup.Verify a domain later to send to anyone.
"Send a test email from onboarding@send16.com to my account email with the subject 'It works'."
What it can do
79 tools across the platform, including:
Email —
send_email(single/batch/scheduled/attachments), transactional templates, delivery status.Marketing — campaigns, broadcasts, automations, segments, subscription topics.
Contacts — create/search/list/import, audiences, tags, custom fields.
Deliverability — domains, DNS health (SPF/DKIM/DMARC), IP warming & sending capacity.
Inbox — read and manage transactional replies.
Webhooks — create/list/rotate outgoing webhook endpoints (HMAC-SHA256 signed).
Every tool also accepts an optional apiKey parameter that overrides SEND16_API_KEY, so you can switch workspaces in one session.
Environment
Variable | Required | Description |
| Yes | Your Send16 key ( |
| No | API base URL (default: |
| No | If set, serves Streamable HTTP (multi-tenant) instead of stdio |
Self-hosting the HTTP connector
Presence of SEND16_MCP_PORT flips the server into multi-tenant HTTP mode — each request carries its own Authorization: Bearer sk_live_…, threaded through the whole request, so one process serves many users:
docker build -t send16-mcp . && docker run -p 4242:4242 send16-mcpDevelop
npm install
SEND16_API_KEY=sk_live_... npm run dev # run from source
npm run build # bundle to dist/Links
Site & docs: https://send16.com · https://send16.com/docs
Status: https://status.send16.com
License
MIT © Spruik Co
Available Tools
79 toolsactivate_automationAInspect
Activate an automation. New events matching its triggers will start enrolling contacts.
Inputs: automationId (required), apiKey.
add_contacts_to_audienceCInspect
Add contacts (by ID) to an audience.
Inputs: audienceId (required), contactIds (required), apiKey.
add_convo_noteAInspect
Add a private internal note on a conversation. Notes are visible only to workspace members.
Inputs: body (required), convoId (required), apiKey.
add_domainAInspect
Register a new sending domain. Returns the DNS records the user must add to their DNS provider, after which they should call check_domain_health to verify.
Inputs: domain (required), apiKey.
add_suppressionBInspect
Add an email to the suppression list. Future sends to this address will be blocked.
Inputs: email (required), notes, apiKey, reason.
check_domain_healthAInspect
Check the DNS health of a specific domain, including DKIM, SPF, DMARC, and MX record verification status. Triggers a fresh DNS lookup.
Inputs: domainId (required), apiKey.
create_actionCInspect
Create an Action that maps an event name to a transactional template. Each matching event sends one email to the contact.
Inputs: name (required), eventName (required), templateSlug (required), apiKey, +3 more.
create_audienceCInspect
Create a new audience.
Inputs: name (required), apiKey, description.
create_campaignAInspect
Create a new email campaign in Send16. The campaign is created in draft status and can be edited before sending.
Inputs: name (required), subject (required), fromName (required), fromEmail (required), +3 more.
create_contactBInspect
Add a new contact to your Send16 audience. Contacts are automatically subscribed to receive emails.
Inputs: email (required), tags, apiKey, lastName, +2 more.
create_topicAInspect
Create a new subscription topic. Contacts opt into topics individually via the preference center.
Inputs: name (required), slug, apiKey, isDefault, +1 more.
create_webhookBInspect
Register an outgoing webhook endpoint. Send16 POSTs event JSON to this URL with an HMAC-SHA256 signature. Outgoing webhooks are a plan feature.
Inputs: url (required), name (required), events (required), apiKey, +1 more.
delete_actionBInspect
Delete an Action.
Inputs: actionId (required), apiKey.
delete_audienceAInspect
Delete an audience (list). Contacts are not deleted — only the list and its memberships are removed.
Inputs: audienceId (required), apiKey.
delete_campaignAInspect
Delete a draft campaign. Sent campaigns cannot be deleted (only archived).
Inputs: campaignId (required), apiKey.
delete_contactAInspect
Delete a contact and all associated events. Irreversible.
Inputs: contactId (required), apiKey.
delete_topicAInspect
Delete a subscription topic. All subscribers will be detached.
Inputs: topicId (required), apiKey.
delete_webhookBInspect
Delete an outgoing webhook endpoint.
Inputs: webhookId (required), apiKey.
design_email_templateBInspect
Use AI to generate a complete email HTML template based on a description. Returns ready-to-use HTML that can be sent or used in campaigns.
Inputs: type (required), style (required), description (required), apiKey, +2 more.
duplicate_campaignAInspect
Duplicate a campaign as a new draft. Useful for A/B variants or re-using a successful template.
Inputs: campaignId (required), apiKey.
enroll_in_automationAInspect
Manually enroll a contact in an active automation. The automation must be in 'active' status. Use send_event for event-driven enrollment.
Inputs: contactId (required), automationId (required), apiKey.
generate_email_from_urlAInspect
Scrape a URL (e.g. a launch blog post or product page) and generate an email draft from its content. Returns subject, preview text, and HTML body.
Inputs: url (required), apiKey, instructions.
get_actionAInspect
Get a single Action with its trigger config and template binding.
Inputs: actionId (required), apiKey.
get_automationAInspect
Get a single automation by ID, including its trigger, steps, and current status.
Inputs: automationId (required), apiKey.
get_automation_statsAInspect
Get aggregate analytics for an automation: total enrollments, completed, exited, open/click rates per step.
Inputs: automationId (required), apiKey.
get_brandAInspect
Get the workspace's brand settings: colors, logo, fonts, and the DESIGN.md spec injected into AI generation prompts.
Inputs: apiKey.
get_campaign_statsBInspect
Get detailed performance statistics for a specific campaign including open rate, click rate, bounce rate, and delivery metrics.
Inputs: campaignId (required), apiKey.
get_contact_health_scoreBInspect
Get a contact's 0-100 health score based on recent engagement (opens, clicks, replies).
Inputs: contactId (required), apiKey.
get_contact_timelineAInspect
Get a contact's full activity timeline: emails received, events fired, opens, clicks, automation enrollments, topic changes.
Inputs: contactId (required), limit, apiKey, cursor.
get_convoBInspect
Get a single conversation with its full thread of posts (incoming + outgoing).
Inputs: id (required), apiKey.
get_deliverability_statusAInspect
Get your workspace's deliverability summary — sending reputation, domain authentication status, and recent bounce/complaint health. (Deliverability Hub plan feature.)
Inputs: apiKey.
get_messageAInspect
Fetch a single message with its full event timeline (created → sent → delivered → opened → clicked → ...).
Inputs: id (required), apiKey.
get_message_eventsAInspect
Get just the delivery event timeline for a message — no body or recipient details.
Inputs: id (required), apiKey.
get_templateBInspect
Get a single starter template by ID, including its EmailContent JSON.
Inputs: templateId (required), apiKey.
get_workspaceAInspect
Get the current workspace (the one the API key belongs to).
Inputs: apiKey.
get_workspace_usageBInspect
Get the current month's send count, contact count, and plan limits.
Inputs: apiKey.
import_contactsAInspect
Bulk import contacts from CSV data. Each row should have at minimum an email column. Tags can be applied to all imported contacts.
Inputs: csvData (required), tags, apiKey, updateExisting.
list_actionsAInspect
List Actions. Actions fire a transactional template when a custom event arrives — Plunk-style 'event_name → template' pairings, simpler than full automations.
Inputs: apiKey.
list_audiencesBInspect
List audiences (lists). An audience is a static, manually-managed group of contacts.
Inputs: apiKey.
list_automation_enrollmentsBInspect
List active and historical enrollments for an automation.
Inputs: automationId (required), limit, state, apiKey, +1 more.
list_automationsBInspect
List all automations in the workspace, including draft/active/paused status and trigger types.
Inputs: apiKey.
list_campaignsAInspect
List email campaigns with optional status filtering and pagination.
Inputs: page, apiKey, status, pageSize.
list_contactsAInspect
List all contacts with optional filtering by subscription status and tag. Supports pagination.
Inputs: page, tagId, apiKey, pageSize, +1 more.
list_convosAInspect
List inbox conversations. Filter by state, mailbox, label, screener status, or full-text search. Send16's unified inbox combines transactional reply threading with team-managed shared inboxes.
Inputs: label, limit, state, apiKey, +4 more.
list_domainsAInspect
List all sending domains configured in your Send16 workspace, including their verification status and DNS records.
Inputs: apiKey.
list_inbox_countsAInspect
Get unread/total counts per category and label for the inbox sidebar (newsletter, transactional, marketing, calendar, social, cold).
Inputs: apiKey.
list_messagesAInspect
List messages from the unified send log (transactional + campaign). Filter by recipient, sender, status, date range, or source.
Inputs: limit, apiKey, offset, source, +5 more.
list_segmentsBInspect
List dynamic segments. Segments compute their members from a filter expression at send time.
Inputs: apiKey.
list_suppressionsCInspect
List suppressed email addresses (bounces, complaints, unsubscribes, manual).
Inputs: limit, apiKey, offset, reason.
list_templatesBInspect
List starter-gallery email templates available to every workspace.
Inputs: apiKey.
list_topicsBInspect
List subscription topics. Topics are granular categories contacts can subscribe to (e.g. 'product-updates', 'weekly-digest'). Campaigns and automations can be gated to subscribers of a specific topic.
Inputs: apiKey.
list_webhooksAInspect
List configured outgoing webhooks (your endpoints that Send16 POSTs delivery events to). Outgoing webhooks are a plan feature.
Inputs: apiKey.
list_workspacesAInspect
List workspaces the authenticated user has access to (owner or member).
Inputs: apiKey.
mark_convo_readBInspect
Mark a conversation as read for the current viewer.
Inputs: convoId (required), apiKey.
pause_automationAInspect
Pause an automation. Existing enrollments freeze in place; no new contacts enroll.
Inputs: automationId (required), apiKey.
pause_campaignAInspect
Pause a sending campaign. Already-sent messages are unaffected; remaining sends halt.
Inputs: campaignId (required), apiKey.
pre_send_reviewAInspect
Run an AI pre-send review on an email's HTML before sending. Surfaces tone issues, broken links, missing alt text, spam triggers, and accessibility problems.
Inputs: html (required), subject (required), apiKey, audience.
preview_campaign_recipientsAInspect
Preview the recipient set for a campaign before sending. Returns count + sample list.
Inputs: campaignId (required), apiKey.
preview_segmentAInspect
Preview the contacts that match a segment without sending.
Inputs: segmentId (required), apiKey.
regenerate_webhook_secretAInspect
Rotate the HMAC signing secret for an outgoing webhook endpoint. Returns the new secret once.
Inputs: webhookId (required), apiKey.
remove_contact_from_audienceBInspect
Remove a contact from an audience.
Inputs: contactId (required), audienceId (required), apiKey.
remove_suppressionAInspect
Remove an email from the suppression list. Use only when you've confirmed the recipient wants to receive mail again.
Inputs: email (required), apiKey.
render_email_contentAInspect
Compile an EmailContent JSON object (the shape used by the Send16 builder + templates) into HTML using the platform's authoritative renderer. Returns the exact HTML the API would send. Useful for previews and post-processing.
Inputs: content (required), apiKey, variables.
resume_campaignAInspect
Resume a paused campaign.
Inputs: campaignId (required), apiKey.
schedule_campaignAInspect
Schedule (or send immediately) an existing draft campaign to an audience/segment/topic.
Inputs: campaignId (required), apiKey, topicId, segmentId, +2 more.
screener_decideAInspect
Decide a pending screener conversation (first-time sender). 'allow' lets future emails through, 'reject' blocks, 'cold' marks as cold outreach.
Inputs: convoId (required), decision (required), apiKey.
search_contactsAInspect
Search contacts by email address or name. Returns matching contacts with their tags and subscription status.
Inputs: query (required), page, apiKey, pageSize.
send_broadcastAInspect
One-shot broadcast: create a campaign and immediately schedule it to send. Mirrors Resend's one-call broadcast API. Pass either an audienceId, segmentId, topicId, or fully-qualified filter. Provide html OR templateSlug.
Inputs: name (required), subject (required), fromName (required), fromEmail (required), +9 more.
send_campaign_testBInspect
Send a test email for an existing campaign to preview how it will look in recipients' inboxes.
Inputs: testEmail (required), campaignId (required), apiKey.
send_emailAInspect
Send a transactional email through Send16. Provide html, text, or both (text-only is fine for OTPs/receipts/alerts). from_email must belong to a domain that is verified in the workspace — call whoami for the account and list_domains to see which senders are allowed; a send from an unverified domain returns a clear error, not a silent failure. For a zero-setup first send, use from_email onboarding@send16.com — the sandbox sender delivers with no DNS, but only to your own account email.
Inputs: to (required), subject (required), html, text, +6 more.
send_eventAInspect
Fire a custom event for a contact. Automations whose trigger is {type:'custom_event', eventName:'<name>'} will enroll the contact and start running. Payload is exposed to condition steps as event.<key>.
Inputs: name (required), apiKey, payload, contactId, +2 more.
send_replyAInspect
Reply to an inbox conversation. The reply is sent from the original recipient address (the alias the convo arrived on) and threaded back to the contact.
Inputs: convoId (required), html, text, apiKey.
update_actionAInspect
Update an Action (toggle enabled, change template, change event name).
Inputs: actionId (required), name, apiKey, enabled, +4 more.
update_brandAInspect
Update workspace brand settings. The designSpec field is a Markdown DESIGN.md document fed into AI generation system prompts — use it to encode voice, do/don't lists, and visual rules.
Inputs: apiKey, logoUrl, designSpec, fontFamily, +2 more.
update_campaignCInspect
Update a draft campaign's content, subject, preview text, or sender info.
Inputs: campaignId (required), html, apiKey, replyTo, +5 more.
update_contactBInspect
Update a contact's profile fields, custom fields, or subscription state.
Inputs: contactId (required), apiKey, lastName, firstName, +2 more.
update_convoBInspect
Update conversation state (open/closed/snoozed/spam/trash), star, or assignee.
Inputs: convoId (required), state, apiKey, starred, +1 more.
update_topicAInspect
Update a subscription topic (name, description, default).
Inputs: topicId (required), name, apiKey, isDefault, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 79 tools
Many tools exist for overlapping concepts (e.g., send_email, send_broadcast, send_campaign_test, send_reply; create_campaign vs schedule_campaign vs send_broadcast). While descriptions help, the large number of tools increases the chance of selecting the wrong one for a task.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., activate_automation, add_contacts_to_audience, send_event). No mixing of conventions like camelCase, making it predictable for an agent.
With 79 tools, this server is well beyond the recommended range. While it aims to cover a full email marketing platform, the sheer number makes it unwieldy and suggests it could be split into multiple focused servers.
The tool surface covers most major workflows (sending, contacts, campaigns, automations, analytics). However, notable gaps exist: no tools to create or update segments or email templates (only list/get), and no tag management tools.
Maintenance
Related MCP Connectors
Hosted email for AI agents: create inboxes, send, receive, and reply over MCP with scoped API keys
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Connect AI agents to Emitd email sending, message tracking, templates, and automations. Emitd hosts a Model Context Protocol server for integrating supported email operations into AI-agent workflows. Connect a compatible client to the hosted endpoint (https://mcp.emitd.com/mcp) and authenticate with an Emitd API key. Available tools depend on the key's permissions and enabled features. Emitd's capability areas include sending email, message activity, templates, contacts, audiences, segments, domains, analytics, inbound email, broadcasts, automations, webhooks, and suppressions. Use restricted keys, sending guardrails, and approval settings appropriate to each workflow. For more information check https://emitd.com
AgentiSend is a transactional email API: send through verified domains with a message log, budgets, a preflight and refusals that name the fix; built so AI agents can send on your behalf. The hosted MCP server at https://api.agentisend.com/mcp exposes 82 tools (44 on tools/list; the rest via list_more_tools). A send is one message or a batch of up to 500 items with per-item results. preflight_email runs every gate a real send runs, sends nothing, and costs nothing. Every 4xx returns code, message, and fix. There is no tool for unsolicited mail. Auth is a bearer API key or OAuth 2.1 with dynamic client registration. Starter prompts: "Send this receipt to the customer." "Preflight this send and tell me what would stop it." "What can I spend today?"
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to send emails via Cloudflare's Email Service. Provides both MCP server integration for AI tools and a REST API for traditional applications with support for HTML content, attachments, and secure authentication.2MIT
- AlicenseAqualityDmaintenanceMCP server for Sendook - an AI email communication platform. Enables AI agents to send and receive emails, manage inboxes, threads, and webhooks programmatically.16MIT

Sendmux Email Inbox API +official
AlicenseBqualityAmaintenanceSendmux is an email inbox API and email API for AI agents. Use this MCP server to let authorised agents work with Sendmux mailboxes, inbound email, clean JSON parsing, webhooks, outbound sending, provider routing, logs, billing, and team controls.10456MIT- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that exposes Veil Mail API operations as tools for AI agents, enabling email sending, template management, audience management, and analytics retrieval through natural language.MIT