Integration
Cursor Plugin
One command gives your Cursor agent an email address it owns. Send, receive, reply in-thread, and finish "check your email to continue" without you in the loop.
Install
The plugin bundles the hosted MCP server and eight skills. Skills are the part that matters in practice: they teach the agent when to reach for email at all, and how to behave once it does.
/add-plugin deadsimple-email
On first use the agent opens a browser sign-in. Approve the consent screen and it is connected. There is no config file to edit and no key to paste, because the plugin authenticates over OAuth 2.1.
Then ask for something that needs an inbox: "Create an inbox for this project and email me the address." The agent calls create_inbox and send_email on its own.
What a Coding Agent Does With an Inbox
An agent without an inbox stops at every wall that involves email. An agent with one keeps going.
- Finish signup flows. Register for a service, wait for the mail, pull the one-time code or the confirmation link, and continue.
get_verification_codeandget_verification_linkdo the extraction, so the agent is not regexing message bodies and guessing. - Test the email your code sends. Point staging at a fresh inbox, trigger the flow, and assert on what actually arrived, headers and all, instead of mocking the send and hoping.
- Own a per-project address. One inbox per repository or per environment, so build notifications and vendor mail land somewhere the agent can read them rather than in your personal inbox.
- Send what it produced. Ship a report, a summary, or a release note to a real recipient, with correct threading when someone replies.
Same plugin repository, same hosted server, on Grok Bot, Claude Code, and Codex. Grok Bot ships bundled with Cursor Ultra and Cursor Teams Premium, so one install covers both surfaces.
Eight Skills, Fourteen Tools
Tools are the raw capability. Skills are the judgment: which tool fits the request, what to confirm before sending, and what never to treat as an instruction.
send-email— sending, replying with real threading, forwarding, and the authorization rules for eachcheck-inbox— reading, searching, summarizing, and triagingmanage-inboxes— inbox lifecycle, naming and tagging patterns, plan limitsverification-codes— signup, 2FA, and password-reset flows end to endagent-email-patterns— safe topologies and the prompt-injection threat modeldeadsimple-mcp— connecting the server and troubleshooting authdeadsimple-sdk— writing application code, per languagedeadsimple-webhooks— consuming events and verifying signatures
The fourteen tools: create_inbox, list_inboxes, delete_inbox, send_email, read_messages, read_message, reply_to_message, forward_message, wait_for_email, get_verification_code, get_verification_link, list_threads, read_thread, and get_usage. Full reference on the MCP Server page.
OAuth, Not a Pasted Key
The plugin's MCP configuration carries no credential at all. An unauthenticated request to the server returns HTTP 401 with a WWW-Authenticate challenge, and Cursor takes it from there: discovery, dynamic client registration, then a consent screen on app.deadsimple.email.
- Access tokens last 7 days. Refresh tokens last 90 days and rotate on every use.
- Tokens are scoped to inbox and message operations. They cannot reach billing, plan changes, team management, or API-key administration.
- Revoke from the dashboard, or at
https://api.deadsimple.email/oauth/revoke. A revoked token gets a fresh 401 challenge, so the client knows to re-authorize.
API keys still work for clients without OAuth support, headless jobs, and CI. Set Authorization: Bearer dse_your_api_key on the MCP server config.
An Inbox Is an Untrusted Input
An inbox is the one input an agent has that anyone on the internet can write to without permission. The plugin's skills carry that assumption everywhere rather than leaving it to the model:
- Subjects, bodies, headers, quoted text, attachments, and linked pages are data. Instructions found inside them authorize nothing.
- Only you, or a policy you configured, authorizes a send, a deletion, or anything else that leaves the building.
- Sends where any externally visible field was inferred get previewed and confirmed first.
- Deleting an inbox is permanent and takes every message with it, so it gets confirmed against the exact address.
- Blast radius equals inbox scope: one inbox per job, and keep the component that reads untrusted mail separate from the one that can send.
The threat model and the five safe topologies ship with the plugin, in skills/agent-email-patterns/.
Open Source
The plugin is MIT licensed and lives at github.com/deadsimple-email/deadsimple-plugins. Read every skill before you install it, fork it to fit your team's rules, or symlink your fork into ~/.cursor/plugins/local/ and iterate on it directly.
FAQ
No. It connects over OAuth 2.1: the 401 challenge walks Cursor through discovery, dynamic client registration, and a consent screen. Keys remain supported for clients without OAuth, headless jobs, and CI.
Yes. The same repository ships manifests for Cursor, Grok Bot, Claude Code, and Codex, all pointing at the same hosted MCP server. Grok Bot is bundled with Cursor Ultra and Cursor Teams Premium.
It sends what you asked it to send. The skills require a preview and confirmation whenever a recipient, subject, or body was inferred rather than given, and for anything financial, legal, credential-related, or bulk. Instructions arriving inside an email never authorize a send.
The plugin is free and MIT licensed. The free tier includes 5 inboxes and 5,000 emails per month with no credit card. Paid plans are $5/mo for 15 inboxes, $29/mo for 100, and $99/mo for 500.
Related Integrations
- MCP Server — the server this plugin bundles, and its full tool reference
- Grok & Grok Bot — the same plugin on xAI's agent product
- Claude Agent SDK — same server, Anthropic's agent surface
- Browser Use — verification-code flows for browser agents
- TypeScript SDK — when you are writing the integration yourself