resend_cancel_ emailCancel a scheduled email by id before it is sent.
Send or cancel scheduled mail, trace a bounce back to the delivery event, move contacts between segments, queue a broadcast, and check whether a sending domain's DNS actually verified.
PopMCPResend
Every email, contact, segment, broadcast, template, domain and webhook operation the agent can call, plus the delivery events it can watch.
resend_cancel_ emailCancel a scheduled email by id before it is sent.
resend_get_ emailRetrieve a single sent email by id, including its latest delivery event.
resend_list_ emailsList sent emails (most recent first).
resend_send_ batch_ emailsSend up to 100 emails in a single batch request.
resend_send_ emailSend a transactional email.
resend_update_ emailReschedule a scheduled email by id.
resend_create_ contactCreate a contact.
resend_delete_ contactDelete a contact by id OR email.
resend_get_ contactRetrieve a single contact by id OR email.
resend_list_ contactsList contacts, optionally filtered to one segment.
resend_update_ contactUpdate a contact by id OR email.
resend_create_ templateCreate a reusable email template.
resend_list_ templatesList email templates.
resend_create_ broadcastCreate a broadcast (newsletter-style email) targeting a segment.
resend_create_ domainAdd a sending domain.
resend_get_ broadcastRetrieve a single broadcast by id.
resend_get_ domainRetrieve a single domain by id, including its DNS records and status.
resend_list_ broadcastsList broadcasts.
resend_list_ domainsList sending domains and their verification status.
resend_send_ broadcastSend (or schedule) a previously created broadcast by id.
resend_verify_ domainTrigger DNS verification for a domain by id (asynchronous).
resend_create_ segmentCreate a segment (a contact list).
resend_create_ topicCreate a subscription topic.
resend_get_ segmentRetrieve a single segment by id.
resend_list_ segment_ contactsList the contacts in a segment.
resend_list_ segmentsList segments.
resend_list_ topicsList subscription topics.
resend_list_ api_ keysList API keys (metadata only — secrets are never returned).
resend_list_ logsList API request logs (endpoint, method, response status, timestamp).
resend_get_ email_ attachmentRetrieve a single sent-email attachment's metadata and a (temporary) download URL.
resend_get_ received_ emailRetrieve a single received (inbound) email by id.
resend_get_ received_ email_ attachmentRetrieve a single received-email attachment's metadata and a download URL.
resend_list_ email_ attachmentsList the attachments on a sent email.
resend_list_ received_ email_ attachmentsList the attachments on a received (inbound) email.
resend_list_ received_ emailsList inbound (received) emails.
resend_add_ contact_ to_ segmentAdd a contact (id or email) to a segment.
resend_get_ contact_ topicsList a contact's topic subscriptions.
resend_list_ contact_ segmentsList the segments a contact (id or email) belongs to.
resend_remove_ contact_ from_ segmentRemove a contact (id or email) from a segment.
resend_update_ contact_ topicsUpdate a contact's topic subscriptions.
resend_delete_ templateDelete a template by id OR alias.
resend_duplicate_ templateDuplicate a template by id OR alias; returns the new template.
resend_get_ templateRetrieve a single template by id OR alias.
resend_publish_ templatePublish a template by id OR alias so it can be used to send.
resend_update_ templateUpdate a template by id OR alias.
resend_delete_ broadcastDelete a draft broadcast by id (a scheduled send is auto-cancelled).
resend_delete_ domainDelete a domain by id.
resend_update_ broadcastUpdate a draft broadcast by id (all fields optional).
resend_update_ domainUpdate a domain's tracking and TLS settings by id.
resend_create_ contact_ propertyCreate a custom contact property.
resend_create_ webhookCreate a webhook endpoint.
resend_delete_ contact_ propertyDelete a contact property by id.
resend_delete_ segmentDelete a segment by id.
resend_delete_ topicDelete a topic by id.
resend_delete_ webhookDelete a webhook by id.
resend_get_ contact_ propertyRetrieve a single contact property by id.
resend_get_ topicRetrieve a single topic by id.
resend_get_ webhookRetrieve a single webhook by id, including its signing secret.
resend_list_ contact_ propertiesList custom contact properties.
resend_list_ webhooksList webhook endpoints.
resend_update_ contact_ propertyUpdate a contact property's fallback_value by id (key and type are immutable).
resend_update_ topicUpdate a topic's metadata by id.
resend_update_ webhookUpdate a webhook by id (all fields optional).
resend_create_ api_ keyCreate a new Resend API key.
resend_delete_ api_ keyDelete (revoke) an API key by id.
resend_get_ logRetrieve a single API request log by id, including request/response bodies.
Credentials off one Resend screen, then an endpoint your client signs into. Nothing to deploy, and nothing to install.
Paste a Resend API key into the API key field — the connection is scoped to that key. A Full access key reaches every tool (domains, contacts, broadcasts, templates); a Sending access key connects but only sends email.
••••••••••••3f7aRun it read-only for reporting, or allow writes but require approval so a broadcast to a whole segment — or a contact delete — waits for a human. Flip the full catalog on when you need the domain and webhook tools.
Drop the PopMCP URL into Claude, ChatGPT, Codex or any other supported client. It signs in through PopMCP with OAuth, so your Resend credential never leaves the server.
app.popmcp.com/mcp/…Ask for something harmless before you turn writes on. Once it comes back clean, widen the tool set or switch the connection to full access.
Which sends from yesterday bounced, and what did the API log say?
resend_list_emailsok
Then just ask for the work
“Which sends from yesterday bounced, and what did the API log say?”
“Move everyone in the trial segment who unsubscribed from product news out of it”
“Draft a March newsletter template and queue it as a broadcast to the beta segment”
“Are all our sending domains verified, and which broadcasts went out on them?”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Settings → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting Resend behind an AI client.
Both connect. A Sending access key is limited to sending email, so contacts, segments, broadcasts, templates and domains stay out of reach. Paste a Full access key into the API key field if you want the whole catalog. Either way, list_api_keys returns key metadata only — secrets are never returned.
No. 29 of the 66 operations load by default and the rest stay searchable, which keeps the client's tool list short. Turn the full catalog on when a job needs the rarer domain, webhook or attachment tools. The catalog splits 30 read and 36 write across 11 API modules.
verify_domain triggers DNS verification and is asynchronous — it starts the check rather than returning the outcome. Call get_domain afterwards to read that domain's DNS records and current status. list_domains gives the same verification status across every sending domain in one call.
get_contact, update_contact and delete_contact all take a contact id or an email, and so do add_contact_to_segment, remove_contact_from_segment and list_contact_segments. So an agent can act on dana@northwind.co directly, with no lookup step first. Topic subscriptions are handled separately by get_contact_topics and update_contact_topics.
Yes. list_received_emails and get_received_email cover inbound mail, and list_received_email_attachments with get_received_email_attachment reach the files on it, including a download URL. Sent mail has its own pair, list_email_attachments and get_email_attachment, whose download URLs are temporary. Inbound email received is also available as a change-detection trigger.
On the delivery side: email sent, delivered, bounced, opened, link clicked, delivery delayed, failed, and marked as spam. On the audience side: contact added, contact updated and contact removed. Sending domain added and sending domain changed cover account setup, and inbound email received fires when someone writes to one of your receiving addresses.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server — Claude Desktop, Claude Web, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Loading 66 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 29-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. You can switch a connection to the full catalog at any time.
A tool is something your AI calls — there are 66 here. A trigger is something PopMCP watches for you: 18 Resend events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into Resend.
Launch a hosted MCP endpoint for Resend, keep tool access under control, and start testing real workflow prompts right away.