# Resend MCP connector

Connect Resend to Elaichi and Claude, ChatGPT, Cursor, or any MCP client can create and update broadcasts, manage contacts, segments and topics, and handle API keys and domains as the person who signed in.

Source: https://elaichi.ai/connectors/resend/

## Facts

| | |
| --- | --- |
| Application | Resend |
| Category | Email |
| AI tools | 77 |
| Authentication | Connects with an API key |
| Needs your own OAuth app | No |
| MCP endpoint | https://api.elaichi.ai/mcp |
| Works with | Claude, ChatGPT, Cursor, any MCP client, and the Elaichi Agent |
| Tools advertised by name | No. 77 tools is past the 30-tool threshold, so clients use `search_tools` and `execute_tool` |

## What you can ask once Resend is connected

- List Resend broadcasts sent to the Product Updates audience
- Which contact properties are missing on our newsletter segment?
- Draft a broadcast for contacts in the EMEA segment

## Connect Resend in Elaichi

This happens once for the organization, before any client is involved.

1. Open Connections, choose Add connection, and pick Resend.
2. Optionally set Share with, then press Connect.
3. Paste a Resend API key. One person generates a token in Resend and pastes it once. Everyone else works through Share with, and never sees it.

Credentials are vaulted and nobody, including the AI, reads them back. The connection becomes a toolbox immediately, so you can curate which Resend tools are exposed, rename them, or freeze arguments before anyone points a client at it.

## Connect Resend to Claude

Endpoint: https://api.elaichi.ai/mcp

1. Open Customize, then Connectors.
2. Press Add.
3. Name it, paste the MCP server URL, then Continue.
4. Sign in and approve.

On Team and Enterprise, an Owner adds it once. Everyone else turns it on for themselves.

## Connect Resend to ChatGPT

Endpoint: https://api.elaichi.ai/mcp

1. Open Plugins, then press the + button.
2. Name it and paste the endpoint into Server URL.
3. Leave Authentication on OAuth, then tick the risk acknowledgement.
4. Press Create, then sign in and approve.

Works on the web today. The plugin directory lives at chatgpt.com/plugins.

## Connect Resend to Cursor

Endpoint: https://api.elaichi.ai/mcp

1. Open `~/.cursor/mcp.json`.
2. Add the endpoint under `mcpServers`.
3. Reload Cursor, then sign in and approve.

Set up per machine, so repeat it on each computer you work from.

## Connect Resend to any MCP client

Endpoint: https://api.elaichi.ai/mcp

1. Add the endpoint as a remote MCP server.
2. Sign in and approve.

The Elaichi Agent already has these tools, with nothing to set up.

## What the consent screen decides

Only Read is granted by default, which is not enough to call a Resend tool. Over MCP there is no trusted place to confirm a write in the moment, so the consent screen is the standing approval rather than a formality. Grant Read and Run tools. Think hard before granting Delete, which reaches into connected apps and cannot be undone.

## What teams do with Resend through Elaichi

### Draft the launch broadcast before it sends

Marketing. Ask for a new Resend broadcast with the announcement copy, then have the subject line, preview text, and audience adjusted in plain language. Review the draft in Resend before anything goes out.

### Build a segment for the next campaign

Growth. Describe who you want to reach, such as trial users who signed up this month, and get a Resend contact segment created and ready to pick when the broadcast is set up.

### Fix a contact's details after a ticket

Support. Look up a Resend contact by email, correct a misspelled name, or mark them unsubscribed when they ask to stop hearing from you, without leaving the conversation with the customer.

### Track plan tier on every contact

Product. Add a new contact property to Resend, such as plan or signup source, so future segments and broadcasts can be aimed at the right people.

### Rotate an API key and add a domain

Engineering. List the Resend API keys in use, create a fresh one for a new service, and remove the old one. Register a new sending domain when a product gets its own address.

### Tidy up topics and preferences

Operations. See every Resend contact topic your audience can opt in or out of, rename the ones that no longer match how you describe your emails, and keep the preference center current.

## Frequently asked questions

### How do I connect Resend to Claude?

First, connect Resend inside Elaichi by pasting a Resend API key when prompted. There is no OAuth application to register and no client ID or secret to generate. Then in Claude open Customize, then Connectors, then Add, and paste https://api.elaichi.ai/mcp as the endpoint. Sign in with your Elaichi account and Resend is available in the conversation.

### Does Resend work with ChatGPT and Cursor as well as Claude?

Yes. Once Resend is connected in Elaichi, the same endpoint, https://api.elaichi.ai/mcp, works in Claude, ChatGPT, Cursor, any other MCP client, and the Elaichi Agent. You connect Resend once and every client you use picks it up.

### What can an AI agent actually do with my Resend data?

With Resend connected, an agent can draft, update, or remove broadcasts, add and edit contacts, build segments, manage the topics people subscribe to, and add contact properties like plan or region. It can also list, create, and delete Resend API keys and register a new sending domain. Because Resend offers a lot of actions, short concrete asks such as "unsubscribe jane@example.com" work better than long multi-part sentences.

### Does connecting Resend give the AI access to everything in my account?

An agent working through Elaichi can only do what the Resend API key it was connected with allows, so a key limited to sending or to one domain stays limited. Elaichi can narrow that further by blocking specific actions for a team, but it can never grant more than the key already permits.

### Can my team share one Resend connection?

Yes. One person connects Resend in Elaichi with an API key and shares it with a team, and nobody else ever sees or handles that key. Each teammate still signs in to Elaichi as themselves, so the audit log records exactly who created a broadcast or changed a contact in Resend.

### Can I stop an agent from deleting or changing things in Resend?

Yes. Restrictions in Elaichi apply per action, so you can allow reading Resend contacts and broadcasts while blocking deletes, or blocking the creation of API keys and domains. A blocked action is never shown to Claude, ChatGPT, or any other client, so no prompt can reach it.

### What happens to a Resend connection when someone leaves?

When a person is offboarded in Elaichi, their access to Resend through every connected client ends at once. If they had shared a Resend connection with a team, it keeps working for everyone else. Disconnecting Resend once in Elaichi removes it from Claude, ChatGPT, Cursor, and every other client at the same time.

## All 77 Resend tools

Every tool below is callable through https://api.elaichi.ai/mcp once Resend is connected, subject to the toolbox it is in and the restrictions on the caller.

- **Create a Resend API key** (Create). Create a new API key in Resend. Returns id and token — the plaintext token is only included in this response and cannot be retrieved later, so store it immediately. Required: name.
- **Delete a Resend API key by ID** (Delete). Permanently delete a Resend API key by id. Returns an empty 200 response on success. Required: id.
- **List all Resend API keys** (List). List all API keys for the authenticated Resend team. Returns: id, name, created_at, last_used_at for each key.
- **Create a Resend broadcast** (Create). Create a new broadcast in Resend. Returns the id of the created broadcast. Required: from, subject. Created as a draft by default; set send: true to send immediately, or combine send: true with scheduled_at to schedule delivery for a later time.
- **Delete a Resend broadcast by ID** (Delete). Delete a Resend broadcast by id. Only broadcasts in draft status can be deleted; deleting a scheduled broadcast also cancels its pending delivery. Returns: object, id, deleted.
- **Get single Resend broadcast by ID** (Get). Get a single Resend broadcast by id. Returns the full broadcast object including id, name, subject, from, html, text, status, created_at, scheduled_at, and sent_at.
- **List all Resend broadcasts** (List). List all Resend broadcasts for the team, including those created from the dashboard. Returns broadcast objects with id, segment_id, status, created_at, scheduled_at, and sent_at.
- **Update a Resend broadcast by ID** (Update). Update a draft Resend broadcast by id. Returns the id of the updated broadcast. Only broadcasts in draft status can be updated.
- **Create a Resend contact property** (Create). Create a custom contact property in Resend. Returns the new property's id. Required: key, type. The key (max 50 alphanumeric/underscore characters) and type are immutable after creation.
- **Delete a Resend contact property by ID** (Delete). Permanently delete a Resend contact property by id, removing the corresponding values stored on every contact. Returns: object, id, deleted. Required: id.
- **Get single Resend contact property by ID** (Get). Get a single Resend contact property by id. Returns: id, key, type, fallback_value, created_at. Required: id.
- **List all Resend contact properties** (List). List all custom contact properties defined for the Resend team. Returns an array of properties each including id, key, type, fallback_value, and created_at.
- **Update a Resend contact property by ID** (Update). Update the fallback_value of an existing Resend contact property. The key and type cannot be changed after creation. Returns the updated property's id. Required: id.
- **Create a Resend contact segment** (Create). Add an existing Resend contact to a segment. Returns the segment id. Required: contact_id (UUID or email address) and segment_id.
- **Delete a Resend contact segment by ID** (Delete). Remove a Resend contact from a segment. Returns the segment id and deleted: true. Required: contact_id (UUID or email address) and id (segment UUID).
- **List all Resend contact segments** (List). List all segments a Resend contact belongs to. Returns id, name, and created_at for each segment. Required: contact_id (UUID or email address).
- **Create a Resend contact** (Create). Create a new contact in the Resend marketing audience. Returns the created contact's id. Required: email. Optionally assign the contact to segments and configure topic subscription preferences (opt_in / opt_out) in the same call.
- **Delete a Resend contact by ID** (Delete). Delete a Resend contact by UUID or email address. Returns the contact id and a deleted confirmation. Required: id (UUID or email).
- **Get single Resend contact by ID** (Get). Get a single Resend contact by UUID or email address. Returns id, email, first_name, last_name, created_at, unsubscribed, and properties. Required: id (UUID or email).
- **List all Resend contacts** (List). List all contacts in the Resend marketing audience. Returns id, email, first_name, last_name, created_at, and unsubscribed for each contact. Pass segment_id to filter to contacts belonging to a specific segment.
- **Update a Resend contact by ID** (Update). Update an existing Resend contact by UUID or email address. Returns the contact id. Required: id. Only fields included in the body are modified; omitted fields are left unchanged.
- **List all Resend contact topics** (List). List topic subscription preferences for a Resend contact. Returns: id, name, and subscription status for each topic. Required: contact_id (accepts either a contact UUID or email address).
- **Update a Resend contact topic by ID** (Update). Update topic subscription preferences in bulk for a Resend contact. Returns the updated contact id. Required: contact_id (UUID or email) and a topics array, each entry specifying a topic id and subscription status (opt_in or opt_out).
- **Create a Resend domain** (Create). Add a new sending domain to Resend. Returns id, name, status, region, and the full set of DNS records (SPF, DKIM, tracking CNAME) that must be configured before calling the verify endpoint. Required: name.
- **Delete a Resend domain by ID** (Delete). Permanently delete a Resend domain by id. Returns object, id, and a deleted confirmation flag. Required: id. Removing a domain with a custom tracking subdomain will break existing email links that use that subdomain.
- **Get single Resend domain by ID** (Get). Retrieve a single Resend domain by id. Returns id, name, status, region, tracking settings, capabilities, and the full DNS record set (SPF, DKIM, tracking CNAME) needed for verification. Required: id.
- **List all Resend domains** (List). List all Resend domains for the authenticated team. Returns id, name, status, region, created_at, and capabilities (sending/receiving) for each domain.
- **Update a Resend domain by ID** (Update). Update an existing Resend domain by id. Returns the updated domain id. Domain name and region cannot be changed. tracking_subdomain can only be changed once every 24 hours and can never be removed once set. Required: id.
- **Resend domains verify** (Verify). Verify a specific domain in Resend using id. This asynchronous operation initiates a full domain verification process and returns the domain object containing id and object fields in the response.
- **Delete a Resend email by ID** (Delete). Cancel a scheduled Resend email by its UUID before it is sent. Returns the email object and id. Required: id.
- **List all Resend emails** (List). List all emails sent by your Resend team. Returns: id, to, from, subject, last_event, created_at per email.
- **Get single Resend email by ID** (Get). Get a single sent Resend email by its UUID. Returns: id, to, from, subject, html, last_event, created_at, tags. Required: id.
- **Resend emails bulk create** (Create). Send up to 100 transactional emails in a single Resend API call. Returns an array of ids, one per submitted email. Each item requires from, to, and subject. Attachments and scheduled_at are not supported in batch.
- **Create a Resend email** (Create). Send a single transactional email via Resend. Returns the created email id. Required: from, to, subject. Either html, text, or template_id must be provided as the message body.
- **Update a Resend email by ID** (Update). Reschedule a previously-scheduled Resend email by updating its delivery time. Returns: id. Required: id. Only scheduled_at is mutable and only before the email has been sent.
- **List all Resend email attachments** (List). List all attachments belonging to a sent email in Resend. Returns: id, filename, size, content_type, and download_url for each attachment. Required: email_id.
- **Get single Resend email attachment by ID** (Get). Retrieve a single attachment from a sent email in Resend. Returns: id, filename, size, content_type, download_url (signed, expires shortly), and expires_at. Required: email_id, id.
- **List all Resend received email attachments** (List). List attachments from a received email in resend. Returns: id, filename, size, content_type, download_url, expires_at. Required: email_id.
- **Get single Resend emails receiving by ID** (Get). Retrieve a single received email in Resend by id. Returns the full email object including id, to, from, subject, html, text, headers, attachments, and a signed raw download URL. Required: id.
- **List all Resend logs** (List). List Resend API request logs for the team. Returns: id, endpoint, method, response_status, user_agent, created_at. Cursor-paginated.
- **Get single Resend log by ID** (Get). Retrieve a single Resend API request log entry by id. Returns: id, endpoint, method, response_status, user_agent, request_body, response_body, created_at. Required: id. Note that request_body and response_body shapes vary per original endpoint.
- **Create a Resend segment** (Create). Create a new segment in Resend for grouping contacts. Returns: id, name. Required: name.
- **Delete a Resend segment by ID** (Delete). Permanently delete a Resend segment by id. Contacts that belonged to the segment are not deleted. Returns: id, deleted. Required: id.
- **Get single Resend segment by ID** (Get). Get a single Resend segment by id. Returns: id, name, created_at. Required: id.
- **List all Resend segments** (List). List all segments in Resend for the authenticated team. Returns: id, name, created_at for each segment.
- **List all Resend segment contacts** (List). List contacts belonging to a specific segment in Resend. Returns a collection of contacts within the segment. Required: segment_id.
- **Create a Resend template** (Create). Create a new resend email template. Returns: id and object type. Required: name. Templates must be published before they can be used to send emails; each template supports up to 50 variables.
- **Delete a Resend template by ID** (Delete). Permanently delete a resend template by id (UUID or alias). Returns: id and deleted status. Required: id.
- **Get single Resend template by ID** (Get). Get a single resend template by id (UUID or alias). Returns: id, name, status, html, text, variables, has_unpublished_versions, and timestamps. Required: id.
- **List all Resend templates** (List). List all resend email templates for the team. Returns: id, name, status, alias, created_at, updated_at for each template.
- **Update a Resend template by ID** (Update). Update an existing resend template by id. Editing a currently published template creates a new unpublished draft that must be published before it takes effect. Returns: id and object type. Required: id.
- **Create a Resend topic** (Create). Create a new email subscription topic in Resend to segment your audience. Returns the created topic's id. Required: name. Note: default_subscription cannot be changed after creation.
- **Delete a Resend topic by ID** (Delete). Permanently delete a Resend topic by id. Returns the topic id and a deleted: true confirmation. Required: id.
- **Get single Resend topic by ID** (Get). Retrieve a single Resend topic by id. Returns id, name, description, default_subscription, visibility, and created_at. Required: id.
- **List all Resend topics** (List). List all email subscription topics for the Resend team. Returns an array of topic objects each including id, name, description, default_subscription, visibility, and created_at.
- **Update a Resend topic by ID** (Update). Update an existing Resend topic's name, description, or visibility by id. Returns the updated topic's id. Required: id. Note: default_subscription cannot be changed after creation.
- **Create a Resend webhook** (Create). Create a new Resend webhook subscription to receive real-time email event notifications. Returns id and signing_secret (store the secret securely to verify subsequent payloads). Required: endpoint, events.
- **Delete a Resend webhook by ID** (Delete). Permanently remove a Resend webhook subscription by id. Returns object, id, and deleted: true on success. Required: id.
- **Get single Resend webhook by ID** (Get). Retrieve a single Resend webhook by id. Returns id, created_at, status, endpoint, subscribed events, and signing_secret. Required: id.
- **List all Resend webhooks** (List). List all Resend webhook endpoints configured for the team. Returns an array of webhook objects, each including id, created_at, status, endpoint, and events.
- **Update a Resend webhook by ID** (Update). Update an existing Resend webhook's endpoint URL, event subscriptions, or enabled/disabled status by id. Returns the updated webhook id. Required: id.
- **Create a Resend event** (Create). Create a new custom event in Resend that can trigger Automations. Returns the created event id. Required: name. Event names cannot start with the reserved `resend:` prefix.
- **List all Resend events** (List). List all events in Resend. Returns id, name, schema, created_at, and updated_at fields for each event.
- **Update a Resend event by ID** (Update). Update an existing event schema in Resend. Requires id. Returns object and id fields confirming the updated event.
- **Delete a Resend event by ID** (Delete). Delete an existing event in Resend using id. Returns object indicating the deleted event, including fields object, id, and deleted showing the deletion status.
- **Resend events send** (Send). Send a named event in Resend using either contact_id or email. Returns object and event fields in the response. Requires event and one of contact_id or email.
- **Get single Resend event by ID** (Get). Get a specific event in Resend by id. Returns object type, id, name, schema definition, created_at, and updated_at fields.
- **List all Resend automation runs** (List). List execution runs for a specific Resend automation. Returns: id, status, started_at, completed_at, created_at for each run. Required: automation_id. Optionally filter by one or more statuses (running, completed, failed, cancelled, skipped) via the status parameter.
- **Get single Resend received email by ID** (Get). Get the full body and headers of a single received email in Resend. Returns: html, text, and headers. Required: id. Use html_format to control whether inline images are returned as data: URIs (default) or cid: references.
- **List all Resend received emails** (List). List emails received by the team's inbound mailboxes in Resend. Returns a cursor-paginated list of received email records.
- **Create a Resend broadcast send** (Create). Trigger sending of a previously-created broadcast in resend. Optionally schedule the send for a later time by supplying `scheduled_at`; omit it to send immediately. Required: `broadcast_id`.
- **List all Resend automations** (List). List automations in Resend. Returns each automation's id, name, status, created_at, and updated_at fields.
- **Create a Resend automation** (Create). Create a new automation in Resend using the required name parameter. Returns object and id fields identifying the newly created automation in the response.
- **Update a Resend automation by ID** (Update). Update an existing automation in Resend. Requires id. Returns object and id fields in the response representing the updated automation.
- **Get single Resend automation by ID** (Get). Retrieve a specific automation in Resend using id. Returns fields such as id, name, status, created_at, updated_at, steps, and connections for the automation.
- **Resend automations stop** (Stop). Stop a running automation in Resend. Requires id. Returns the automation object with fields: object (type of resource), id (unique identifier), and status (current automation state).
- **Delete a Resend automation by ID** (Delete). Delete an existing automation in Resend using id. Returns object confirming deletion with fields: object (type of resource), id (automation identifier), and deleted (boolean indicating success).
