# Resend MCP

> Resend gives your AI agent full control over email infrastructure. Send transactional or broadcast emails, manage domains by checking DNS records, audit API keys, and segment contacts directly from any client. It handles the entire lifecycle of your outgoing messages.

## Overview
- **Category:** developer-tools
- **Price:** Free
- **Tags:** transactional-email, email-api, delivery-analytics, broadcast-campaigns, contact-management, webhooks

## Description

You gotta connect your AI agent to this server so it can take full command of your email infrastructure. You manage everything—sending, domains, contacts—right from your client without leaving your workspace.

**Sending Emails & Tracking Deliveries**: When you're ready to send messages, your agent handles both single and bulk operations. For a quick transactional blast, use `send_email`; that fires off one email and returns a unique ID for later tracking. If you’ve got a big campaign going, just run `send_batch_emails`. This tool is built for volume; it takes the 'from', 'to', 'subject', and HTML content for every single message in the batch. Once those emails go out, don't assume they landed. You check the full delivery status using `get_email`, which pulls detailed metadata telling you if the email bounced back, or if a user actually opened it or clicked any links inside.

**Domain Management & Setup**: To make sure your mail looks legit, you need to control your sending identities. First, run `list_domains` to see all the verified domains ready for use. If you don't have one set up yet, you use `add_domain`. This doesn't just add a name; it gives you the exact required DNS records you gotta implement on your end to make sure that domain is legit and operational. You can also pull deep details about any single sending identity using `get_domain`.

**Audience & Contact Segmentation**: To target people, you need to know who they are. Start by seeing every user group or audience list you've built up with `list_audiences`. Once you pick a specific group, you pull the whole roster of emails from that section using `list_contacts`. If your campaign spots a new lead, you don't have to do it manually; you use `create_contact` to add that specific email address right into an existing audience list for future sends.

**Security & Account Auditing**: Keep things tight and secure. You audit every piece of the system by calling `list_api_keys`. This shows you a full rundown of every active API key connected to your account, letting you see exactly what permissions are attached to each one. Your agent manages the entire lifecycle—from validating an SPF record for a new domain to sending out high-volume blasts and checking bounce rates, all in chat commands.

## Tools

### add_domain
Adds a new domain you want to send from and returns the required DNS records for setup.

### create_contact
Adds a specific email address to an existing audience list.

### get_domain
Retrieves detailed information about a single sending domain you use.

### get_email
Checks the delivery status of a specific, previously sent email ID.

### list_api_keys
Lists every active API key connected to your Resend account for security auditing.

### list_audiences
Retrieves a list of all the user groups (audiences) you have set up.

### list_contacts
Lists all contacts contained within a specific, chosen audience group.

### list_domains
Shows all verified sending domains that are currently active and ready to use.

### send_batch_emails
Sends multiple emails at once, requiring 'from', 'to', 'subject', and HTML content for each message.

### send_email
Sends a single transactional email and returns a unique ID so you can track its delivery status later.

## Prompt Examples

**Prompt:** 
```
Send a welcome email to john@example.com from our onboarding address.
```

**Response:** 
```
Done! I sent the welcome email from 'Onboarding <welcome@yourdomain.com>' to john@example.com. The email ID is `49a3999c-0ce1-4ea6-ab68-afcd6dc2e794`. Would you like me to check its delivery status?
```

**Prompt:** 
```
Show me all our verified sending domains and their DNS status.
```

**Response:** 
```
You have 2 domains configured:

1. **notifications.acme.com** — Status: `verified` (Region: us-east-1)
2. **marketing.acme.com** — Status: `pending` (Region: eu-west-1)

Would you like me to trigger DNS verification for the pending domain?
```

**Prompt:** 
```
List all contacts in our newsletter audience.
```

**Response:** 
```
I found 3 audiences. The 'Newsletter' audience (ID: `78b36e1b-...`) contains 1,247 contacts. Here are the first entries:

- john@acme.com (John Smith)
- sarah@startup.io (Sarah Chen)
- dev@company.com (Marcus R.)

Would you like to add a new contact or inspect a specific subscriber?
```

## Capabilities

### Send Emails
Sends transactional or bulk emails via an API call, returning an ID you can use to check delivery status.

### Track Delivery Status
Retrieves detailed metadata for a sent email, showing if it bounced, was opened, or clicked.

### Manage Sender Domains
Lists existing verified domains and retrieves the necessary DNS records to set up new sending identities.

### Segment Contacts
Lists all defined email audiences, then pulls specific contacts from those groups for targeted campaigns.

### Audit API Keys
Provides a list of every active API key associated with the account and its permission scopes.

## Use Cases

### Onboarding a new product feature.
A developer needs to test a critical welcome flow. Instead of setting up a local server, they ask their agent to 'Send a welcome email to jane@example.com.' The agent uses `send_email`, gets the ID, and then runs `get_email` right after to confirm it was delivered successfully.

### Pre-launch campaign prep.
The marketing team needs to know if their primary sending domain is ready. They first use `list_domains` to check the status, then run `get_domain` on a specific one to verify all DNS records are correctly configured before building out any lists.

### Cleaning up stale contact lists.
An ops engineer suspects some contacts aren't receiving emails. They start by calling `list_audiences` to see groups, then use `list_contacts` on the 'Newsletter' group to review the first 50 records and check for suspicious or outdated addresses.

### Launching a massive promotional blast.
A team needs to send 100 emails simultaneously. They instruct their agent to 'Send these ten emails.' The agent uses `send_batch_emails`, ensuring all necessary fields (from, to, subject) are provided in the prompt for high-volume sending.

## Benefits

- Domain health is instant. You check domain status using `get_domain` or list all domains with `list_domains`. This lets you validate sender identity *before* a single email goes out, preventing high bounce rates due to bad DNS records.
- Segmentation gets easy. Instead of manually exporting lists, you can run `list_audiences`, then use `list_contacts` to get the exact list of subscribers needed for a targeted campaign.
- Debugging is fast. After running a campaign, you don't wait on a dashboard. You check delivery status immediately using `get_email` with the returned email ID, so you know if it hit the inbox or bounced.
- Auditing is simple. Need to know who has access? Run `list_api_keys`. It shows every active key and exactly what permissions they have—critical for security hygiene.
- Sending flexibility. You can handle both single messages (via `send_email`) and massive campaigns (using `send_batch_emails`), all from the same chat interface.

## How It Works

The bottom line is: it turns complex email API calls into simple conversations with your AI client.

1. Subscribe to this server on Vinkius and provide your Resend API Key.
2. Ask your AI agent to perform an action, like 'List all verified sending domains.'
3. The agent executes the tool call, fetches the data (e.g., list of domains), and presents a clear summary back to you.

## Frequently Asked Questions

**How do I list all domains with Resend MCP Server?**
You use the `list_domains` tool. This command shows every verified sending domain currently connected to your account, giving you an immediate view of your available sender identities.

**What is the difference between send_email and send_batch_emails?**
`send_email` sends one message and returns a unique ID for tracking. `send_batch_emails` sends multiple messages at once, requiring you to list all recipients and content fields in the prompt.

**Can I audit my API keys using Resend MCP Server?**
Yes, use the `list_api_keys` tool. It lists every active key associated with your account, letting you check for unauthorized or outdated credentials.

**How do I find contacts in a specific audience list?**
You first call `list_audiences` to find the ID of the group, and then use the `list_contacts` tool, referencing that ID, to retrieve all members inside.

**How do I use the `add_domain` tool to verify a new sending domain?**
The `add_domain` tool returns the required DNS records (TXT, CNAME) for your domain. You must copy and paste these specific records into your domain registrar's settings. Once implemented, you can use other tools to check its verification status.

**What kind of details does the `get_domain` tool provide about a specific sending domain?**
This tool fetches granular data on one domain ID, including its current verified status, associated region, and ownership metadata. It helps confirm if a domain is ready for live sending.

**How do I add a new subscriber using the `create_contact` tool?**
To run `create_contact`, you must provide three things: the recipient's email address, their display name, and the ID of the target audience. This adds them to your mailing list immediately.

**If an email doesn't deliver, how do I check its status using the `get_email` tool?**
You need the unique email ID generated when you originally sent the message. The `get_email` tool then provides detailed delivery metadata, including bounce reasons or open/click analytics.

**Can I send an email with HTML content and track whether it was delivered?**
Absolutely. Use the `send_email` tool with your HTML body, then use `get_email` with the returned ID to check delivery status, open events, and bounce details in real time.

**How do I check if my sending domain DNS records are correctly configured?**
Run `list_domains` to find your domain ID, then use `get_domain` to inspect the full DNS record set (SPF, DKIM, return path). If records are pending, trigger `verify_domain` to re-check.

**Can I add subscribers to an audience for broadcast campaigns?**
Yes. First use `list_audiences` to get the target audience ID, then call `create_contact` with the subscriber's email and optional name fields. The contact is immediately available for broadcast targeting.