---
title: "Email for AI agents - OpenEmail"
description: "Give an agent an address of its own and a scoped key, let it read, label, draft and send, then read back every call it made"
url: "https://openemail.uk/use-cases/ai-agents"
---

Mail your agents handle

# 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.

[Open mail](https://openemail.uk/mail/inbox) [Get Started](https://openemail.uk/signup.md)[All use cases](https://openemail.uk/use-cases.md)

agent@acme.com

agent@yourco.com Member

listThreads getThread searchMail sendEmail createDraft createLabel

6 tools this role allows

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.

1. 01
   
   Create the address
   
   Make it in settings, then share it with a person or issue a key that may send as it.
2. 02
   
   Point a client at it
   
   Connect Claude, or any MCP client, to the server, sign in and approve it.
3. 03
   
   Say what happens on arrival
   
   Write a rule to label or archive the message, or register an endpoint to receive a signed webhook.
4. 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.

MCP server

Point Claude, or any MCP client, at your mailbox.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

REST API

A documented HTTP API with issuable, scopable, revocable keys.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

Typed SDKs

A TypeScript client first, then the rest.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

Agents on the inbox

Soon

Triage, labelling, summaries and first-pass replies, done before you open the tab.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

OAuth for third-party clients

Soon

Self-service client registration with PKCE, so an app can ask for access properly.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

Webhooks

Tell your endpoint when mail arrives, instead of making you poll.

/threads?query=invoice

{ "threads": 12 }

Same mailbox, whether a person or a program is holding it.

Editable prompts

Read and rewrite the system prompts OpenEmail uses.

What did Sarah decide about the launch?

AnswerShe moved it to the 14th and owns the changelog.

Included on every plan.

Ask your inbox

A chat that can act, not just answer. On every plan, Free included.

What did Sarah decide about the launch?

AnswerShe moved it to the 14th and owns the changelog.

Included on every plan.

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.

An inbox for agents

Point an assistant at a mailbox and let it read, draft and send.

agent@yourco.com Member

listThreads getThread searchMail sendEmail

Rules for arriving mail

Say what happens to a message before anybody opens it.

billing@northwind.co

Invoice 2214 for August Invoices Archive

1 Subject has invoice 24 +1

2 From domain is pinefield.dev 61 +1

Email into your app

Mail arriving at your domain reaches your server as a signed webhook, seconds later.

billing@in.yourapp.com Arrived

POST hooks.acme.dev/mail 200

type email.received

to billing@in.yourapp.com

Watch your integration

Every call a key made, every webhook you sent, with the code and the timing.

oe\_live\_ … 7f20 Rotated

GET /emails 200 61 ms

POST /emails 429 send\_quota\_exceeded

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.

Your product gets the mail

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.

Ticket 8123 ticket-8123@ in.yourapp.com

Ticket 8124 ticket-8124@ in.yourapp.com

To ticket-8123@ in.yourapp.com

From ticket-8123@ in.yourapp.com Same address

The mail your product sends

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.

to buyer@northwind.co

template order-receipt

202 msg\_9f2c7a14

email.sent msg\_9f2c7a14

email.delivered msg\_9f2c7a14

email.opened msg\_9f2c7a14

Answer your customers

One address on your own domain, worked by the people you grant it to. Rules label and answer mail as it arrives, and everybody reads the same thread.

Subject has refund

dana@northwind.co Refunds

omar@lumen.io Billing

[All use cases](https://openemail.uk/use-cases.md)
