Unosend MCP Server
Official# Unosend MCP Server
Send emails from AI assistants using the Unosend API. Works with Claude Desktop, Cursor, and other MCP clients.
## Features
- âī¸ Send plain text and HTML emails
- đ
Schedule emails for future delivery
- đĨ Add CC and BCC recipients
- âŠī¸ Configure reply-to addresses
- đ Customizable sender email (requires verified domain)
- đĸ Create and send broadcast campaigns to contact lists
- đ Manage reusable email templates with `{{variable}}` interpolation
## Installation
```bash
# Clone and build
git clone https://github.com/unosend/mcp-server.git
cd mcp-server
npm install
npm run build
```
## Setup
### 1. Get your API Key
1. Go to [Unosend Dashboard](https://www.unosend.co/api-keys)
2. Create a new API key
3. Copy the key (starts with `un_`)
### 2. Verify your domain
To send emails from your own domain, [verify it first](https://www.unosend.co/domains).
## Configuration
### Cursor
Open Cursor Settings â MCP â Add new global MCP server:
```json
{
"mcpServers": {
"unosend": {
"type": "command",
"command": "node /path/to/unosend-mcp/build/index.js --key=un_YOUR_API_KEY --sender=hello@yourdomain.com"
}
}
}
```
### Claude Desktop
Open Claude Desktop settings â Developer â Edit Config:
```json
{
"mcpServers": {
"unosend": {
"command": "node",
"args": ["/path/to/unosend-mcp/build/index.js"],
"env": {
"UNOSEND_API_KEY": "un_YOUR_API_KEY",
"SENDER_EMAIL_ADDRESS": "hello@yourdomain.com",
"REPLY_TO_EMAIL_ADDRESS": "support@yourdomain.com"
}
}
}
}
```
## Arguments
| Argument | Environment Variable | Description |
|----------|---------------------|-------------|
| `--key` | `UNOSEND_API_KEY` | Your Unosend API key (required) |
| `--sender` | `SENDER_EMAIL_ADDRESS` | Default sender email (optional) |
| `--reply-to` | `REPLY_TO_EMAIL_ADDRESS` | Default reply-to email (optional) |
## Usage
Once configured, you can ask Claude or Cursor to send emails:
> "Send an email to <john@example.com> with the subject 'Meeting Tomorrow' and let him know we're meeting at 3pm"
> "Email the team a summary of today's work"
> "Schedule an email to be sent tomorrow at 9am reminding me about the deadline"
> "Create a welcome email template with a first name variable, then send it to user@example.com"
> "Create a broadcast to my newsletter audience with this month's update, then send it"
> "List my recent broadcasts and show me the delivery stats for the last one"
## Available Tools
### Email Tools
| Tool | Description |
|------|-------------|
| `send_email` | Send an email with HTML/text, CC/BCC, scheduling |
| `get_email` | Get details and status of a sent email |
| `list_emails` | List recent emails from your account |
| `cancel_email` | Cancel a scheduled email |
### SMS Tools
| Tool | Description |
|------|-------------|
| `send_sms` | Send an SMS message ($0.0075/segment) |
| `get_sms` | Get details of an SMS message |
### Validation Tools
| Tool | Description |
|------|-------------|
| `validate_email` | Validate an email address ($0.01/validation) |
### Domain Tools
| Tool | Description |
|------|-------------|
| `list_domains` | List all verified domains |
| `get_domain` | Get domain details and DNS records |
### Audience & Contact Tools
| Tool | Description |
|------|-------------|
| `list_audiences` | List all audiences (contact lists) |
| `create_contact` | Add a contact to an audience |
| `list_contacts` | List contacts in an audience |
### Broadcast Tools
| Tool | Description |
|------|-------------|
| `list_broadcasts` | List campaigns with optional status filter and pagination |
| `get_broadcast` | Get details and delivery stats for a campaign |
| `create_broadcast` | Create a draft campaign (audience, HTML/text, scheduling) |
| `update_broadcast` | Edit a draft or scheduled campaign |
| `send_broadcast` | Trigger immediate delivery to the audience |
| `delete_broadcast` | Delete a draft campaign |
### Template Tools
| Tool | Description |
|------|-------------|
| `list_templates` | List all templates |
| `get_template` | Get full content and detected variables |
| `create_template` | Create a template with `{{variable}}` interpolation |
| `update_template` | Edit name, subject, or body |
| `delete_template` | Delete a template |
### Utility Tools
| Tool | Description |
|------|-------------|
| `check_api_status` | Verify API connectivity and key validity |
## send_email Parameters
| Parameter | Required | Description |
|-----------|----------|-------------|
| `to` | Yes | Recipient email(s), comma-separated |
| `subject` | Yes | Email subject |
| `html` | No | HTML content |
| `text` | No | Plain text content |
| `from` | No | Sender email (uses default if not provided) |
| `cc` | No | CC recipients |
| `bcc` | No | BCC recipients |
| `reply_to` | No | Reply-to address |
| `scheduled_at` | No | ISO 8601 datetime for scheduling |
## Example
Create an `email.md` file:
```markdown
to: john@example.com
subject: Weekly Report
# Weekly Report
Here's what we accomplished this week:
- Launched new feature
- Fixed 12 bugs
- Improved performance by 30%
Best,
Your Team
```
Then tell your AI: "Send this as an email"
## License
MIT
TDQS
Scored across 13 tools
Each tool has a distinct purpose with no overlap: cancel_email, check_api_status, create_contact, get_domain, get_email, get_sms, list_audiences, list_contacts, list_domains, list_emails, send_email, send_sms, and validate_email all target specific resources and actions. An agent can easily differentiate between them.
Tool names follow a consistent verb_noun pattern throughout, such as cancel_email, create_contact, get_domain, list_audiences, send_email, and validate_email. This uniformity makes the set predictable and easy to navigate.
With 13 tools, the server is well-scoped for email and SMS marketing operations. Each tool serves a clear function, covering core workflows like sending, listing, getting details, and managing contacts without unnecessary bloat.
The toolset provides strong coverage for email and SMS operations, including CRUD-like actions for contacts, sending, and status checks. Minor gaps include no update or delete tools for contacts or audiences, but agents can work around this with existing tools.