MCP Spotlight: Resend MCP Server — The React-Email-Native Transactional Email Bridge, Full Audience Management, and the Communication Default for Agents
Server: @resend/mcp by Resend
License: MIT · Tools: ~20 (Emails + Audiences + Domains + Webhooks)
Coverage: Send/list/get/cancel/update/batch emails · Audiences & contacts · Broadcast campaigns · Domain verification & DNS · Webhook events · Bounce & deliverability analytics
Transport: stdio (NPX) · Auth: Resend API key
Templates: Native React Email (.tsx) or HTML · MCP Tracker: glama.ai/mcp/servers?query=resend
Docs: resend.com/docs/mcp-server
Every useful agent eventually needs to send email. The naive "give the agent an SMTP relay" approach is brittle, unauditable, and easy to abuse. The "give the agent nothing" approach blocks every workflow that benefits from async communication — notifications, digests, status updates, support replies. The naive "wrap SendGrid's REST API" approach hands the agent a 200-method API it has to reason over from scratch.
The official Resend MCP Server is the bridge that resolves this. ~20 tools covering send/list/get/cancel/update/batch emails, audience and contact management, broadcast campaigns, domain verification and DNS setup, webhook events, and bounce/deliverability analytics. Native React Email template support (.tsx files compiled at send-time). MIT-licensed. Built on Resend's modern transactional email platform — the one Vercel, Linear, and Anthropic use for their own product emails.
This is the email-agent default of 2026.
The Architecture: Email-First Tool Design
The Resend MCP Server's tool surface is organized around how transactional email actually flows:
| Category | Tools | Purpose |
|---|---|---|
| Send | send_email, batch_send_email, cancel_email, update_email | Single + batch + lifecycle |
| Inspect | list_emails, get_email, list_email_recipients | Search and audit sent emails |
| Audiences | list_audiences, create_audience, list_contacts, create_contact, update_contact, delete_contact | Audience & contact management |
| Broadcasts | create_broadcast, send_broadcast, list_broadcasts | Marketing campaigns |
| Domains | list_domains, create_domain, verify_domain, get_domain_dns | Domain onboarding |
| Webhooks | list_webhooks, create_webhook | Event subscriptions |
| Analytics | get_bounce_events, get_complaint_events, get_delivery_events, get_open_events, get_click_events | Deliverability dashboard |
The tools are focused — no 100-tool API dump. The agent gets the high-leverage primitives and composes them.
The Killer Feature: Native React Email
The single biggest differentiator: the Resend MCP Server accepts React Email components as the email body. The agent writes .tsx — JSX with email-specific primitives like <Html>, <Container>, <Text>, <Heading>, <Button>, <Img> — and Resend compiles and renders the email at send time.
{
"from": "Acme <hello@acme.com>",
"to": ["kevin@centerbit.co"],
"subject": "Your weekly digest is ready",
"react": {
"component": "WeeklyDigestEmail",
"props": {
"userName": "Kevin",
"topStories": [...]
}
}
}
The agent doesn't have to learn a templating language. It writes JSX — the same syntax it uses for React components. Resend's renderer handles the conversion to email-safe HTML with all the right fallbacks (CSS inlining, table-based layout for Outlook, dark-mode styles, etc.).
Compared to the alternatives:
- SMTP + raw HTML — agent writes HTML strings, easy to break Outlook rendering, hard to test
- Handlebars / Mustache — limited logic, hard to compose components, no TypeScript support
- MJML — markup language, not native to the model, extra learning curve
- React Email — JSX, component composition, TypeScript, native to every agent that knows React
For agents that already produce JSX/TSX (which is most modern coding agents), React Email feels like home. The agent doesn't context-switch; it stays in the same paradigm.
The Batch Send + Audience Pattern
Sending individual emails via send_email is fine for one-off notifications. For digests, alerts, and broadcasts, the right primitive is batch_send_email — send the same personalized email to up to 100 recipients in a single API call.
send_email(
from: "Acme <hello@acme.com>",
to: ["customer1@example.com", "customer2@example.com", ..., "customer100@example.com"],
subject: "{{firstName}}, your weekly digest is ready",
react: { component: "WeeklyDigestEmail", props: {...per-recipient props} }
)
The recipients get per-recipient personalization without the agent making 100 separate calls. 100x faster, 100x cheaper in API quota, identical deliverability.
For ongoing broadcasts, the Audience pattern is the right primitive:
1. list_audiences() → discover existing audiences
2. list_contacts(audience_id=...) → see who's subscribed
3. create_broadcast(name="Q3 Update", audience_id="...", from="Acme", subject="...", react=...)
4. send_broadcast(broadcast_id=...) → schedule or send immediately
The agent manages the full campaign lifecycle. Subscribers, unsubscribes, bounces — all handled by Resend's audience infrastructure, which automatically honors List-Unsubscribe headers and CAN-SPAM requirements.
Bounce & Deliverability Analytics
The webhook + analytics tools are the unsung heroes of agent-driven email:
| Tool | What It Does |
|---|---|
list_webhooks | List configured webhook endpoints |
create_webhook | Subscribe to events: email.delivered, email.bounced, email.complained, email.opened, email.clicked |
get_bounce_events | List bounces (hard + soft) for a domain |
get_complaint_events | List spam complaints |
get_delivery_events | List successful deliveries |
get_open_events | List open events (tracking pixel + Apple Mail Privacy) |
get_click_events | List link-click events |
The agent can pull deliverability analytics on demand. "What's our bounce rate on the @acme.com domain this week?" → get_bounce_events → structured response. No need to log into the Resend dashboard.
For agent-driven systems, this is critical: the agent sends the emails, and the same agent checks whether they were delivered. Closed loop, full visibility, no human-in-the-middle.
Domain Onboarding via MCP
The DNS + domain verification path is the workflow most teams get stuck on. Resend's MCP server exposes it as primitives:
User: "Onboard the new 'mail.acme.com' subdomain. I added the DNS records."
Agent:
1. create_domain(name="mail.acme.com", region="us-east-1")
→ returns DNS records (SPF, DKIM, MX)
2. get_domain_dns(domain_id="...")
→ Shows the records the user needs to add
3. verify_domain(domain_id="...")
→ Polls DNS until verified (or returns remaining issues)
4. Returns the verified domain ready to send from
The agent walks through the onboarding, surfaces the right DNS records, verifies them, and returns the production-ready sender. What used to be a 30-minute ops task becomes a 2-minute conversational flow.
Facio Integration
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "@resend/mcp"],
"env": {
"RESEND_API_KEY": "${credentials.RESEND_API_KEY}"
}
}
}
}
Facio's audit trail captures every Resend MCP call with the tool, the parameters, the recipients (when allowed by policy), the React component used, the send result, and the delivery events. For a regulated team (GDPR, CAN-SPAM, HIPAA), this is the complete email-sending record: "Agent sent weekly digest to 847 recipients on 2026-06-30 at 14:32 UTC, all delivered, 412 opens, 87 clicks."
For HITL workflows, the tool annotations map to gate requirements:
| Tool | Severity | Suggested Gate |
|---|---|---|
list_*, get_*, list_webhooks | Read | None — autonomous |
send_email (single, transactional) | Write, contextual | Soft confirm (review subject + recipient) |
batch_send_email | Write, multi-recipient | Hard confirm (multiple inboxes affected) |
send_broadcast | Write, marketing | Hard confirm + reason required (CAN-SPAM scope) |
cancel_email, update_email | Write, reversible | Soft confirm |
create_contact, update_contact | Write, PII | Hard confirm for EU/EEA recipients (GDPR consent) |
delete_contact | Write, destructive | Hard confirm (irreversible, right-to-be-forgotten implications) |
create_webhook | Write, contextual | Soft confirm |
The destructive-hint annotations for send_broadcast and delete_contact are critical. Sending to a marketing list is CAN-SPAM-scoped activity — you need consent records, an unsubscribe path, and a sender identity. Deleting a contact is irreversible; if the user invoked GDPR right-to-be-forgotten, that's correct, but it's never reversible.
For multi-domain setups (one domain per product line, per region, per customer), the pattern is one MCP server per Resend account, each with its own API key. The agent switches context per domain, the audit trail is per-domain, and the HITL gating is per-domain.
For React Email templates, store them in the project under emails/ (the React Email convention), use the email-dev CLI for preview, and have the agent render them at send-time via the react parameter. Same source of truth for template preview and for production sends.
Quickstart
# 1. Get a Resend API key
# https://resend.com/api-keys
# 2. Install the MCP server
npm install -g @resend/mcp
# 3. Configure your MCP client
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "@resend/mcp"],
"env": {
"RESEND_API_KEY": "re_..."
}
}
}
}
# 4. First prompts
# "Send an onboarding email to kevin@centerbit.co with subject 'Welcome to Acme' using React Email"
# "Show me this week's bounce events"
# "Onboard the new mail.acme.com subdomain — show me the DNS records I need to add"
# "Send a broadcast to my 'Newsletter' audience with this week's digest"
# "What's our delivery rate for hello@acme.com in the last 30 days?"
Use Cases
Transactional notifications: "Send order confirmation to customer@example.com with order details, shipping address, and tracking link." Single send with React Email component.
Weekly digests: "Compose and send the weekly digest to all 847 newsletter subscribers. Use the React Email template WeeklyDigest.tsx with the data from the analytics API." Batch send with personalized props.
Welcome sequences: "When a new user signs up, send a welcome email, wait 24 hours, send the getting-started guide, wait 3 days, send the pro-tips email." Multi-step workflow with Resend + scheduler.
Bounce handling: "Show me all hard bounces in the last 7 days. For each, remove the contact from the audience and log the incident." Analytics + audience management loop.
Marketing campaigns: "Create and send a broadcast to the 'Customers' audience with this React Email template and a 10% discount code." Broadcast with audience targeting.
Domain onboarding: "Onboard notifications.acme.com as a new sending subdomain. Walk me through the DNS records and verify when ready." Domain creation + DNS + verification.
Re-engagement campaigns: "Find contacts in the 'Inactive' audience who haven't opened in 60 days. Send them a re-engagement email with a special offer." Audience query + targeted send.
Support ticket notifications: "When a support ticket gets a new message, send an email to the customer with the agent's response, formatted in React Email." Event-driven integration via webhook.
Receipts and invoices: "Send a receipt email to the customer for the order they just placed. Include order details, items, total, and a link to the invoice PDF." Receipts with React Email + attachment support.
Internal team notifications: "When our monitoring system detects an incident, send a notification email to on-call@acme.com with severity, service, and runbook link." Operational alerts.
Compliance audits: "List every email we've sent to EU recipients in the last 90 days, and verify each has the right consent and unsubscribe metadata." GDPR-related audit via MCP.
A/B subject line testing: "Send two variants of this email (subject A: 'Welcome' vs subject B: 'Welcome to Acme!') to 100 contacts each. Show me the open-rate comparison after 24 hours." A/B testing via split audience.
Why Resend for Agent Email
Resend has won mindshare for agent-driven email for several reasons:
- Modern API — designed for the agent era, not stuck on SMTP-era baggage
- React Email native — the agent writes JSX, not templates
- Excellent deliverability — same infrastructure Anthropic, Linear, and Vercel use
- Modern dashboard — human operators can review what the agent sent
- Webhook-first — full event stream back to the agent
- Reasonable pricing — 100 emails/day free, then $20/month for 50K
For teams where email is part of the product (transactional SaaS, marketplace, notifications, digests), Resend MCP is the right default.
Bottom Line
The Resend MCP Server is the communication default for AI agents in 2026. ~20 tools, native React Email, full audience management, deliverability analytics, domain onboarding, MIT-licensed. The bridge between an agent's conversational surface and the inboxes of the people it serves.
For any agent that needs to send email — notifications, digests, welcome sequences, broadcast campaigns, internal alerts, receipts — this is the missing layer. The agent writes React Email components, the MCP server handles the rendering, the deliverability, the webhooks, the compliance. The human reviews the draft, approves, and the email goes out.
For the broader MCP ecosystem, Resend is the template every "communication-as-API" MCP server should copy. Email is React, not strings. Audiences are first-class. Deliverability is visible. Webhooks are tight. Compliance is built-in. Every interaction layer an agent needs.
npx -y @resend/mcp with RESEND_API_KEY=re_... and your agent has email.
MCP Spotlight is a series covering servers that give AI agents real capabilities. Every server is evaluated for design clarity, ecosystem fit, and integration fit with Facio's HITL-first agent runtime.