Hand the inbox to software
and keep the keys
Give an agent an address of its own and a key scoped to what it may do. It reads, labels, drafts and sends, and every call it makes is logged.
The role decides the tools. Narrow it and the writing tools go.
Where it starts
What this looks like today.
An assistant logs in as you
It works from your account with your password, so the record cannot tell the two of you apart.
Mail sits until somebody opens it
Nothing is labelled, filed or summarised before a person gets to the tab.
Your code polls for new mail
There is no event on arrival, so the app asks again on a timer and hears about it late.
How it works
Running in four steps.
- 01
Create the address
Make it in settings, then share it with a person or issue a key that may send as it.
- 02
Point a client at it
Connect Claude, or any MCP client, to the server, sign in and approve it.
- 03
Say what happens on arrival
Write a rule to label or archive the message, or register an endpoint to receive a signed webhook.
- 04
Read the log, key by key
Each call shows its method, path, status and duration, and rotating a key keeps that history.
What it runs on
The parts doing the work.
This runs on an MCP server, an HTTP API with keys you can scope and revoke, a typed SDK, webhooks, and prompts you can rewrite.
Point Claude, or any MCP client, at your mailbox.
A documented HTTP API with issuable, scopable, revocable keys.
A TypeScript client first, then the rest.
Triage, labelling, summaries and first-pass replies, done before you open the tab.
Self-service client registration with PKCE, so an app can ask for access properly.
Tell your endpoint when mail arrives, instead of making you poll.
In practice
Every piece, walked through.
Four shorter pages walk it through: the mailbox an agent works, the rules on arriving mail, mail delivered to your code, and the call log.
Point an assistant at a mailbox and let it read, draft and send.
Say what happens to a message before anybody opens it.
Mail arriving at your domain reaches your server as a signed webhook, seconds later.
Questions
Asked before signing up.
Can an agent send mail as me?
Only from the addresses named on its key, and only if its role allows sending. Give it the Viewer role and the writing tools are gone.
Do I have to write code to use this?
No. An MCP client signs in and gets the tools its role allows, and you can remove the app whenever you like. The API, the SDK and webhooks are there when you do want your own code.
Does the webhook carry the message?
No. The event names the thread, so you fetch the message and its files by id afterwards. Your endpoint has to answer within five seconds.
Nearby
Other jobs for the same mailbox.
Every ticket, record or customer can have its own address. Mail sent there reaches your endpoint as a signed event, and your code answers as that address.
Your app posts a message and OpenEmail sends it from your own domain. Every call sits against the key that made it, and every send has an outcome to read.