@aiwerk/mcp-server-resend
v0.1.0
Published
Resend API MCP server — transactional and marketing email, domains, contacts, broadcasts, and more
Maintainers
Readme
@aiwerk/mcp-server-resend
Resend API MCP server — full API coverage: transactional email, batch sending, domains, contacts, segments, broadcasts, templates, topics, webhooks, API keys, and logs.
Install
npx -y @aiwerk/mcp-server-resendOr add to your MCP client config:
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "@aiwerk/mcp-server-resend"],
"env": {
"RESEND_API_KEY": "re_..."
}
}
}
}Environment variables
| Name | Required | Description |
|---|---|---|
| RESEND_API_KEY | ✅ | Resend API key (starts with re_). Get one at resend.com/api-keys. |
| RESEND_API_BASE_URL | — | Override API base URL (default: https://api.resend.com). |
| RESEND_API_TIMEOUT_MS | — | Request timeout in milliseconds (default: 30000). |
Auth
- Sign up at resend.com (free tier: 3,000 emails/month, 100/day).
- Open API Keys in the dashboard and create a key with Full access.
- Copy the key (starts with
re_) intoRESEND_API_KEY. - To send from your own address, verify a domain under Domains. For testing, use
[email protected](sender) →[email protected]/[email protected]/[email protected]without domain setup.
Tools (62)
All destructive and send operations use a 2-phase α-gate: the first call returns a confirm_token; supply it on the second call to execute. Tokens expire after 60 seconds. Bulk delete tools accept an array of IDs under one token.
Emails (8)
| Tool | Description |
|---|---|
| resend_email_send | Send a transactional email [α-gated] |
| resend_email_send_batch | Send up to 100 emails in one call [α-gated] |
| resend_email_get | Get email status and details by ID |
| resend_email_list | List sent emails (cursor pagination) |
| resend_email_update | Reschedule a scheduled email |
| resend_email_cancel | Cancel a scheduled email (safety action, not α-gated) |
| resend_email_list_received | List inbound emails (requires routing config) |
| resend_email_get_received | Get a specific inbound email |
Domains (6)
| Tool | Description |
|---|---|
| resend_domain_create | Add a new sending domain |
| resend_domain_list | List all domains |
| resend_domain_get | Get domain details and DNS status |
| resend_domain_update | Update tracking settings (open, click, TLS) |
| resend_domain_verify | Trigger DNS verification |
| resend_domain_delete | Delete domains [α-gated, bulk] |
API Keys (3)
| Tool | Description |
|---|---|
| resend_apikey_create | Create an API key (token shown once — store immediately) |
| resend_apikey_list | List API keys |
| resend_apikey_delete | Revoke API keys [α-gated, bulk] |
Contacts (10)
| Tool | Description |
|---|---|
| resend_contact_create | Create a contact |
| resend_contact_list | List contacts (optional segment_id filter) |
| resend_contact_get | Get a contact by ID or email |
| resend_contact_update | Update contact details |
| resend_contact_delete | Delete contacts [α-gated, bulk] |
| resend_contact_list_segments | List segments a contact belongs to |
| resend_contact_add_segment | Add a contact to a segment |
| resend_contact_remove_segment | Remove a contact from a segment |
| resend_contact_get_topics | Get topic subscription statuses |
| resend_contact_update_topics | Update topic subscriptions (opt_in/opt_out) |
Contact Properties (5)
| Tool | Description |
|---|---|
| resend_contactproperty_create | Create a custom contact property |
| resend_contactproperty_list | List contact properties |
| resend_contactproperty_get | Get a property by ID |
| resend_contactproperty_update | Update fallback value |
| resend_contactproperty_delete | Delete properties [α-gated, bulk] |
Segments (5)
| Tool | Description |
|---|---|
| resend_segment_create | Create a segment |
| resend_segment_list | List segments |
| resend_segment_get | Get a segment by ID |
| resend_segment_list_contacts | List contacts in a segment |
| resend_segment_delete | Delete segments [α-gated, bulk] |
Templates (7)
| Tool | Description |
|---|---|
| resend_template_create | Create an email template |
| resend_template_list | List templates |
| resend_template_get | Get a template by ID |
| resend_template_update | Update template content |
| resend_template_delete | Delete templates [α-gated, bulk] |
| resend_template_duplicate | Copy an existing template |
| resend_template_publish | Publish a draft template |
Topics (5)
| Tool | Description |
|---|---|
| resend_topic_create | Create a topic (e.g. "Weekly Newsletter") |
| resend_topic_list | List topics |
| resend_topic_get | Get a topic by ID |
| resend_topic_update | Update name/description/visibility |
| resend_topic_delete | Delete topics [α-gated, bulk] |
Broadcasts (6)
| Tool | Description |
|---|---|
| resend_broadcast_create | Create a broadcast draft (send:false always enforced) |
| resend_broadcast_list | List broadcasts |
| resend_broadcast_get | Get broadcast details |
| resend_broadcast_update | Update a draft broadcast |
| resend_broadcast_delete | Delete draft broadcasts [α-gated, bulk] |
| resend_broadcast_send | Send/schedule a broadcast [α-gated, idempotent] |
Webhooks (5)
| Tool | Description |
|---|---|
| resend_webhook_create | Create a webhook endpoint |
| resend_webhook_list | List webhooks |
| resend_webhook_get | Get a webhook by ID |
| resend_webhook_update | Update endpoint, events, or status |
| resend_webhook_delete | Delete webhooks [α-gated, bulk] |
Logs (2)
| Tool | Description |
|---|---|
| resend_log_list | List API request logs |
| resend_log_get | Get a log entry by ID |
License
MIT © AIWerk
