Send16

by spruikco

272 downloads
Not rated
GitHub Website

About

MCP server for Send16 — 79 tools that let AI agents (Claude, Cursor, ...) send transactional & marketing email, manage contacts/automations/webhooks, with a zero-DNS sandbox sender.

Details

Author
spruikco
Downloads
272
Categories
Communication

- 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

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Send16
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

The README includes setup instructions such as npx send16-mcp.

whoami

Verify the API key and return the authenticated workspace: name, plan, email quota (used/limit), and owner. Call this first to confirm the key works before sending. Pair with list_domains to see which `from` addresses are allowed.

send_email

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.

send_campaign_test

Send a test email for an existing campaign to preview how it will look in recipients' inboxes.

create_campaign

Create a new email campaign as a draft: optionally with full HTML content and recipients (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll) so it's ready to test and send. Nothing is sent until schedule_campaign.

design_email_template

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.

list_campaigns

List email campaigns, newest first. Use `search` to find a past campaign the user describes vaguely ('the invite one', 'that July newsletter') — it matches name and subject case-insensitively; try distinctive words from their description and broaden if no hits.

create_contact

Add a single new contact, optionally straight into audiences and/or with tags — e.g. 'add this person from my email into the newsletter list'. Contacts are subscribed by default. For more than a handful of people, use import_contacts instead.

search_contacts

Search contacts by email address or name. Returns matching contacts with their tags and subscription status.

list_contacts

List all contacts with optional filtering by subscription status and tag. Supports pagination.

import_contacts

Bulk import contacts from CSV data (min column: email), optionally straight into audiences and/or with tags. This is the tool for cross-app flows — e.g. pulling people out of Gmail, a CRM, or a spreadsheet and landing them in a Send16 audience in one call. Set updateExisting for upsert semantics (safe to re-run).

list_domains

List all sending domains configured in your Send16 workspace, including their verification status and DNS records.

check_domain_health

Check the DNS health of a specific domain, including DKIM, SPF, DMARC, and MX record verification status. Triggers a fresh DNS lookup.

get_campaign_stats

Get detailed performance statistics for a specific campaign including open rate, click rate, bounce rate, and delivery metrics.

get_deliverability_status

Get your workspace's deliverability summary — sending reputation, domain authentication status, and recent bounce/complaint health. (Deliverability Hub plan feature.)

list_automations

List all automations in the workspace, including draft/active/paused status and trigger types.

get_automation

Get a single automation by ID, including its trigger, steps, and current status.

enroll_in_automation

Manually enroll a contact in an active automation. The automation must be in 'active' status. Use send_event for event-driven enrollment.

send_event

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>`.

list_templates

List starter-gallery email templates available to every workspace.

get_template

Get a single starter template by ID, including its EmailContent JSON.

render_email_content

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.

add_domain

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.

pre_send_review

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.

generate_email_from_url

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.

list_messages

List messages from the unified send log (transactional + campaign). Filter by recipient, sender, status, date range, or source.

get_message

Fetch a single message with its full event timeline (created → sent → delivered → opened → clicked → ...).

get_message_events

Get just the delivery event timeline for a message — no body or recipient details.

list_convos

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.

get_convo

Get a single conversation with its full thread of posts (incoming + outgoing).

send_reply

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.

mark_convo_read

Mark a conversation as read for the current viewer.

update_convo

Update conversation status (open/closed/archived/snoozed) or assignee.

add_convo_note

Add a private internal note on a conversation. Notes are visible only to workspace members.

screener_decide

Decide a pending screener conversation (first-time sender). 'allow' lets future emails through, 'reject' blocks, 'cold' marks as cold outreach.

list_inbox_counts

Get unread/total counts per category and label for the inbox sidebar (newsletter, transactional, marketing, calendar, social, cold).

list_topics

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.

create_topic

Create a new subscription topic. Contacts opt into topics individually via the preference center.

update_topic

Update a subscription topic (name, description, default).

delete_topic

Delete a subscription topic. All subscribers will be detached.

list_actions

List Actions. Actions fire a transactional template when a custom event arrives — Plunk-style 'event_name → template' pairings, simpler than full automations.

get_action

Get a single Action with its trigger config and template binding.

create_action

Create an Action that maps an event name to a transactional template. Each matching event sends one email to the contact.

update_action

Update an Action (toggle enabled, change template, change event name).

delete_action

Delete an Action.

list_audiences

List audiences (lists). An audience is a static, manually-managed group of contacts.

create_audience

Create a new audience.

add_contacts_to_audience

Add contacts (by ID) to an audience.

remove_contact_from_audience

Remove a contact from an audience.

delete_audience

Delete an audience (list). Contacts are not deleted — only the list and its memberships are removed.

list_segments

List dynamic segments. Segments compute their members from a filter expression at send time.

preview_segment

Preview the contacts that match a segment without sending.

update_contact

Update a contact's profile fields, custom fields, or subscription state.

delete_contact

Delete a contact and all associated events. Irreversible.

get_contact_timeline

Get a contact's full activity timeline: emails received, events fired, opens, clicks, automation enrollments, topic changes.

get_contact_health_score

Get a contact's 0-100 health score based on recent engagement (opens, clicks, replies).

send_broadcast

One-shot broadcast: create a campaign and immediately schedule it to send, in a single call. Pass either an audienceId, segmentId, topicId, or fully-qualified filter. Provide html OR templateSlug.

schedule_campaign

Schedule (or send immediately) an existing draft campaign to an audience/segment/topic.

update_campaign

Update a draft campaign: name, subject, preview text, sender info, HTML content, and/or recipients. Retarget with exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll, then verify with preview_campaign_recipients before sending. Only drafts can be edited.

pause_campaign

Pause a sending campaign. Already-sent messages are unaffected; remaining sends halt.

resume_campaign

Resume a paused campaign.

duplicate_campaign

Duplicate a campaign (template, content, and settings) as a new draft — works on sent campaigns too, so this is the way to re-use a past campaign's design. Optionally rename and retarget in the same call (exactly ONE of audienceIds / segmentId / contactIds / tagIds / sendToAll). NOTE: without retargeting, the copy keeps the ORIGINAL campaign's recipients.

delete_campaign

Delete a draft campaign. Sent campaigns cannot be deleted (only archived).

preview_campaign_recipients

Preview the recipient set for a campaign before sending. Returns count + sample list.

activate_automation

Activate an automation. New events matching its triggers will start enrolling contacts.

pause_automation

Pause an automation. Existing enrollments freeze in place; no new contacts enroll.

get_automation_stats

Get aggregate analytics for an automation: total enrollments, completed, exited, open/click rates per step.

list_automation_enrollments

List active and historical enrollments for an automation.

list_workspaces

List workspaces the authenticated user has access to (owner or member).

get_workspace

Get the current workspace (the one the API key belongs to).

get_brand

Get the workspace's brand settings: colors, logo, fonts, and the DESIGN.md spec injected into AI generation prompts.

update_brand

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.

get_workspace_usage

Get the current month's send count, contact count, and plan limits.

list_suppressions

List suppressed email addresses (bounces, complaints, unsubscribes, manual).

add_suppression

Add an email to the suppression list. Future sends to this address will be blocked.

remove_suppression

Remove an email from the suppression list. Use only when you've confirmed the recipient wants to receive mail again.

list_webhooks

List configured outgoing webhooks (your endpoints that Send16 POSTs delivery events to). Outgoing webhooks are a plan feature.

create_webhook

Register an outgoing webhook endpoint. Send16 POSTs event JSON to this URL with an HMAC-SHA256 signature. Outgoing webhooks are a plan feature.

delete_webhook

Delete an outgoing webhook endpoint.

regenerate_webhook_secret

Rotate the HMAC signing secret for an outgoing webhook endpoint. Returns the new secret once.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "send16": {
            "send16-mcp": {
                "command": "npx",
                "args": [
                    "send16-mcp"
                ]
            }
        }
    }
}

McpServers

{
    "send16-mcp": {
        "command": "npx",
        "args": [
            "send16-mcp"
        ]
    }
}

send16-mcp

npm version
npm downloads
MCP
license

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-mcp

---

Quick 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.com

One connection, your own sk_live_… key — no install, no config file.

---

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:

1. Ask the agent to call whoami — it returns your workspace and your sandbox_recipient (your account owner's email).
2. Send from: "onboarding@send16.com" to that address. It delivers with zero DNS setup.
3. 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:

- Emailsend_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 |
|---|---|---|
| SEND16_API_KEY | Yes | Your Send16 key (sk_live_…) |
| SEND16_API_URL | No | API base URL (default: https://api.send16.com) |
| SEND16_MCP_PORT | 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-mcp

Develop

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
- npm: https://www.npmjs.com/package/send16-mcp
- Status: https://status.send16.com

License

MIT © Spruik Co

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.