send16-mcp
# send16-mcp
[](https://www.npmjs.com/package/send16-mcp)
[](https://www.npmjs.com/package/send16-mcp)
[](https://modelcontextprotocol.io)
[](./LICENSE)
**The email API your AI agent can actually use.** A [Model Context Protocol](https://modelcontextprotocol.io) server for [Send16](https://send16.com) 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.
```bash
npx send16-mcp
```
---
## Quick start
You need a Send16 API key (`sk_live_…`) from your [dashboard](https://send16.com/dashboard/developers). Then pick your client:
### Claude Desktop / Claude Code
`claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/`, Windows: `%APPDATA%\Claude\`):
```json
{
"mcpServers": {
"send16": {
"command": "npx",
"args": ["-y", "send16-mcp"],
"env": { "SEND16_API_KEY": "sk_live_..." }
}
}
}
```
### Cursor
`.cursor/mcp.json`:
```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:
- **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 |
|---|---|---|
| `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:
```bash
docker build -t send16-mcp . && docker run -p 4242:4242 send16-mcp
```
## Develop
```bash
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
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.