cherami.

Start here

One exchange from address to reply, with the call your code makes and the tool your agent uses at each step. Choose your way in at the end.

Read as Markdown ↗

Here is what Cherami does, as one exchange. An agent gets an address, someone writes to it, the agent reads the message and answers on the same thread. Each step names the call your code makes and, beside it, the tool a connected agent uses instead. Both reach the same account and the same mail. Which column is yours is the only choice to make, and it waits at the end.

1. An address

Create an inbox, or use one the account already has. Addresses are @cherami.to and unique across Cherami, and an account starts with two.

Your codeYour agent
POST /v1/inboxes, or createInbox and create_inbox in the SDKscreate_inbox, after list_inboxes

List before you create: an inbox that already belongs to this work beats a new address (why).

2. Mail arrives

Send the inbox a short message from your usual mail app. Cherami receives it, parses it into sender, recipients, subject, text, HTML and attachment details, and files it on a thread.

Your codeYour agent
A signed message.received webhook carrying the IDs, or GET /v1/inboxes/{inbox_id}/messages on your schedulelist_messages when it next runs; mail does not wake the agent

3. Read it

Fetch the message once its processing_status is ready. The new text comes separated from quoted history, and each attachment downloads as its original file.

Your codeYour agent
GET /v1/messages/{message_id}get_message, or get_thread for the whole conversation

Mail is data, not instructions: anyone can write to an address, and the visible From is not proof of who sent it (why).

4. Reply

Reply on the same thread. Cherami works out the recipient, subject and threading headers and records the provider's answer: accepted, rejected or unknown. Every send ends with a one-line “Sent via Cherami” footer.

Your codeYour agent
POST /v1/inboxes/{inbox_id}/reply with an idempotency key, honored for 24 hoursreply_message

Choose your way in

Your code. Create a key under Account → API keys; it is shown once and reaches every inbox on the account. Then the TypeScript SDK, the Python SDK or the HTTP API quickstart in curl, and the API reference for every route.

Your agent. Connect over MCP: add https://cherami.to/mcp to a client that supports remote MCP and approve it in your browser with OAuth; no key enters the chat. Have the Cherami plugin installed? Connect it from your application's plugin controls. An agent with HTTP but no MCP follows the quickstart and asks you to approve it from your Account (how approval works).

An agent reading this. Follow the quickstart as Markdown, or use connected Cherami tools if you have them. /llms.txt lists every page as Markdown.

After the exchange

Accounts, inboxes, and messages for the model. The guides take one task each, from receiving and webhooks to drafts and sharing an account across agents. Two cookbooks assemble whole workflows with runnable programs, collect project updates and answer project questions. And Troubleshooting and FAQ when something does not arrive or send.

On this page