Integration
Give Your Dot Its Own Email Address
OpenAI dots are always-on agents in ChatGPT. Add Dead Simple as a custom MCP server and your dot gets an inbox it owns: it sends from it, receives replies and verification codes in it, and new mail wakes it up on its own. OAuth sign-in, no API key, no personal Gmail.
Why a Dot Needs Its Own Inbox
OpenAI launched dots at DevDay on October 1, 2026. Each dot is an always-on agent inside ChatGPT with its own cloud computer and browser, connected to apps through OpenAI's plugin ecosystem, and reachable from ChatGPT, Slack and Teams. You give it a goal, connect the apps it needs, and decide which actions it may take on its own. It keeps working between your conversations.
At launch a dot cannot have a standalone email address. The suggested route is to connect your personal email account for it to use. That works for reading your own mail, but it puts the dot's work under your name:
- Every send is you. Quote requests, follow-ups and signups go out from your personal address and your sender reputation. Replies, newsletters and unsubscribe chores land in your inbox.
- Everything you have ever received is in scope. A dot that only needs to chase three vendors can also read twelve years of your mail.
- Mixing roles is hard to undo. Once suppliers know the dot by your address, you cannot hand that thread to anyone else.
A Dead Simple inbox is the other kind of address. The dot creates it, owns it, and works from it. Your personal mail stays connected only if you want it to be, and anything that goes wrong is scoped to the dot's address.
Two-Minute Setup
Dead Simple runs a hosted MCP server at https://api.deadsimple.email/mcp with OAuth 2.1, which is exactly what ChatGPT's custom MCP servers expect.
Step 1: Add Dead Simple as a custom MCP server
In ChatGPT, open Plugins (chatgpt.com/plugins), select the + button, and choose Add custom MCP server. Fill in:
Name Dead Simple Email Description The dot's own email inbox: send, receive, threads, verification codes Connection MCP server URL URL https://api.deadsimple.email/mcp Auth OAuth
Accept the custom server notice and select Create as a plugin.
Step 2: Sign in and approve
ChatGPT opens a Dead Simple sign-in. Log in, or create a free account on the spot (no card), and click Allow on the consent screen. ChatGPT now holds a token scoped to your Dead Simple account. Disconnect the plugin from ChatGPT's Plugins page whenever you want it gone.
Step 3: Ask your dot to get an address
Get your own Dead Simple Email inbox. Call it "dot" with my first name
as the display name, then send me a test email at you@example.com so
I have your address.
The dot calls list_inboxes, then create_inbox, then send_email. With auto-review on, you see the test email before it goes out. Reply to it, then ask the dot what you said: it reads the thread with read_thread.
On the shared domain a short suffix is added to the name you pick, so the address looks like dot_ab12@deadsimplemail.com. Bring a custom domain and the address is exactly what you ask for, such as dot@yourcompany.com.
New Mail Wakes Your Dot
A dot that has to remember to check its inbox misses things. Dead Simple's MCP server speaks MCP 2026-07-28 and supports MCP Events, the mechanism ChatGPT plugins use to start a dot's work when something changes in a connected app. Tell the dot what to do when mail arrives, and ChatGPT subscribes through our server. Each matching email is pushed to the dot as it lands. No polling, no scheduled check.
| Event | Optional filters | The dot receives |
|---|---|---|
message.received | inbox_id, from_contains, subject_contains | inbox_id, message_id, thread_id, from, to, subject, snippet, received_at |
message.bounced | inbox_id | The bounced message, the bounced address and the bounce type |
You set these up in plain language. Some prompts that create a subscription:
- "Whenever a new email arrives in your inbox, summarise it and tell me in Slack if it needs me." One
message.receivedsubscription on the dot's inbox. - "When any of the three movers replies, add their quote to the comparison and tell me once all three are in." Filtered by the inbox the quote requests went out from.
- "If anything from @acme.com arrives with invoice in the subject, check it against the PO and draft a reply for my approval."
from_containsplussubject_contains, so the dot is not woken for anything else. - "If an email you send bounces, find the right address and try again." A
message.bouncedsubscription.
Under the hood ChatGPT calls events/subscribe on our server with a callback URL and a signing secret. We verify the callback, then sign every delivery with Standard Webhooks HMAC so ChatGPT can prove it came from us. The full wire format is in the MCP server docs.
Recipes
Signup concierge
"Sign up for the free trial of that analytics tool using your own address, finish the email verification, and tell me when you're in." The dot fills the form in its browser with its Dead Simple address, then calls get_verification_code or get_verification_link, which wait for the email and return the code or link already extracted. Nothing touches your personal inbox. For apps that offer Sign in with Dead Simple, sign_in_with_inbox skips the password entirely.
Vendor quote collector
"Email three local printers for a quote on 500 A5 flyers, double sided, by Friday. When they reply, put the quotes in a table." Three sends from one inbox, then a message.received subscription on that inbox. Each reply wakes the dot, which answers follow-up questions in-thread with reply_to_message and keeps the table current.
Inbox triage with approvals
Give the dot's address to people, or forward mail to it. "For anything that arrives, file it, summarise it, and draft replies, but never send without asking me." Set sending email to Ask before taking action in the dot's Custom Rules and you approve each reply from ChatGPT, Slack or Teams. Attachments come through with text extracted server-side, so the dot can read a PDF straight from the message.
Bounce watcher
"If anything you send bounces, tell me which address failed and why." A message.bounced subscription means the dot hears about a dead address the moment the receiving server rejects it, instead of waiting for a reply that never comes.
Meeting scheduler
"Find a time with Sam next week and send a calendar invite from your address." The dot uses send_calendar_invite, which sends a real iCalendar invitation that Gmail and Outlook show with Accept and Decline buttons. RSVPs come back to the dot's inbox and update its agent calendar.
Safety: Two Layers, One on Each Side
Dots already ship with controls: auto-review checks actions such as sending email against your instructions before they run, Custom Rules let you allow, require approval for, or forbid specific actions, and the Activity View shows what the dot did in the background. Dead Simple adds controls that live on the inbox, so they hold even if the agent is confidently wrong:
- Draft approval on the server. Turn on
require_draft_approvaland outgoing mail waits in the Dead Simple dashboard for your click, whatever the dot decides. - Send caps and allowed domains. Per-inbox send limits and an allow-list of recipient domains, enforced by the API.
- Prompt-injection scoring. Anyone can email your dot, and some of them will write to the model. Every inbound message is scored for injection before the dot reads it, and the score travels with the message.
- Easy to cut off. Disconnect the plugin in ChatGPT and the dot loses its tools. Access tokens are short-lived and revocable.
curl -X PUT https://api.deadsimple.email/v1/inboxes/{inbox_id}/guardrails \
-H "Authorization: Bearer dse_your_api_key" \
-d '{"max_sends_per_hour": 20,
"allowed_domains": ["example.com"],
"require_draft_approval": true}'
Why Dead Simple for Dots
- Event-driven, not polled. MCP Events means a reply wakes the dot in seconds, filtered to the inbox, sender or subject you care about.
- OAuth, no key. One sign-in and one Allow. Nothing secret ever appears in the chat.
- Codes come back extracted.
get_verification_codeandget_verification_linkwait for the email and hand back the code or link, so signups finish. - Your own domain. Connect a domain and the dot sends as
dot@yourcompany.com, with your DKIM and your reputation. - Portable. The same inbox works from Claude, Cursor, Codex, a script or any other agent, through MCP, the REST API, webhooks or the Python, TypeScript and Go SDKs. If the work moves out of ChatGPT, the address moves with it.
- Free to start. Five inboxes and 5,000 emails a month on the free plan, no card.
What the Dot Can Call
All 25 tools on the MCP server are available to the dot. The ones it uses most:
| Tool | What it does |
|---|---|
create_inbox / list_inboxes | Create the dot's address, or find the one it already has |
send_email | Send, with CC, BCC, HTML, attachments and scheduled send |
reply_to_message / forward_message | Answer in-thread with correct threading headers, or pass mail on |
read_messages / read_thread | Read the inbox and whole conversations |
get_verification_code / get_verification_link | Wait for a signup email and return the extracted code or link |
read_attachment | Open an attachment's text or image |
send_calendar_invite | Send a real calendar invitation from the dot's address |
sign_in_with_inbox | Log in to apps that offer Sign in with Dead Simple |
The full list is on the MCP server page.
Full Walkthrough
For the long version, including what an event subscription looks like on the wire and what to set before you let a dot run unattended, read the blog post:
FAQ
Not natively at launch; OpenAI's guidance is to connect your personal email account for the dot to use. With Dead Simple added as a custom MCP server, the dot creates and owns an inbox of its own, sends from it, receives replies and verification codes in it, and keeps your personal address out of its work.
No. The MCP server supports OAuth 2.1. ChatGPT opens a Dead Simple sign-in and consent screen the first time it connects; you approve once and it holds a token scoped to your account. Nothing is pasted into the chat.
Yes. Our MCP server supports MCP Events with message.received (filter by inbox_id, from_contains, subject_contains) and message.bounced. Tell the dot what to do when mail arrives and ChatGPT subscribes; each matching email is delivered to the dot as an event, with no polling.
Only if you allow it. Set sending email to Ask before taking action in the dot's Custom Rules. Independently, Dead Simple can hold every outgoing message as a draft until you approve it in the dashboard, enforced on our server rather than by the agent.
Use whatever fits. A Dead Simple inbox can live on your own domain, works the same from ChatGPT, Claude, Cursor, scripts or any other agent, and comes with a REST API, webhooks, threads, attachments, calendar invites and prompt-injection scoring. It stays yours if the work moves somewhere other than ChatGPT.
Dead Simple's free tier is 5 inboxes and 5,000 emails per month with no credit card. Paid plans start at $5 per month. Dots themselves come with ChatGPT Pro and Business Premium.
Related Integrations
- MCP Server: the remote server dots connect to, including the MCP Events reference
- OpenAI Agents SDK: build your own agent on the OpenAI API with the same inboxes
- Meta Muse: the same idea for Meta's personal agent
- Grok & Grok Bot: and for xAI's
- Hermes Agent: an inbox as the agent's email channel