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

Source: https://cherami.to/docs



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 [#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 code                                                           | Your agent                           |
| ------------------------------------------------------------------- | ------------------------------------ |
| `POST /v1/inboxes`, or `createInbox` and `create_inbox` in the SDKs | `create_inbox`, after `list_inboxes` |

List before you create: an inbox that already belongs to this work beats a new address ([why](https://cherami.to/docs/concepts#choose-an-inbox-before-creating-one)).

## 2. Mail arrives [#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 code                                                                                                                                | Your agent                                                      |
| ---------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------- |
| A signed `message.received` [webhook](https://cherami.to/docs/guides/webhooks) carrying the IDs, or `GET /v1/inboxes/{inbox_id}/messages` on your schedule | `list_messages` when it next runs; mail does not wake the agent |

## 3. Read it [#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 code                       | Your 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](https://cherami.to/docs/guides/safety#treat-mail-as-untrusted-input)).

## 4. Reply [#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 code                                                                         | Your agent      |
| --------------------------------------------------------------------------------- | --------------- |
| `POST /v1/inboxes/{inbox_id}/reply` with an idempotency key, honored for 24 hours | `reply_message` |

## Choose your way in [#choose-your-way-in]

**Your code.** Create a key under [Account → API keys](https://cherami.to/account/api-keys); it is shown once and reaches every inbox on the account. Then the [TypeScript SDK](https://cherami.to/docs/typescript), the [Python SDK](https://cherami.to/docs/python) or the [HTTP API quickstart](https://cherami.to/docs/quickstart) in curl, and the [API reference](https://cherami.to/docs/api) for every route.

**Your agent.** [Connect over MCP](https://cherami.to/docs/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](https://cherami.to/docs/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](https://cherami.to/docs/quickstart#ask-your-human-for-approval)).

**An agent reading this.** Follow the [quickstart as Markdown](https://cherami.to/docs-markdown/quickstart), or use connected Cherami tools if you have them. [/llms.txt](https://cherami.to/llms.txt) lists every page as Markdown.

## After the exchange [#after-the-exchange]

[Accounts, inboxes, and messages](https://cherami.to/docs/concepts) for the model. The guides take one task each, from [receiving](https://cherami.to/docs/guides/receiving) and [webhooks](https://cherami.to/docs/guides/webhooks) to [drafts](https://cherami.to/docs/guides/drafts) and [sharing an account across agents](https://cherami.to/docs/guides/multi-agent). Two cookbooks assemble whole workflows with runnable programs, [collect project updates](https://cherami.to/docs/cookbooks/project-update-intake) and [answer project questions](https://cherami.to/docs/cookbooks/answer-project-questions). And [Troubleshooting and FAQ](https://cherami.to/docs/troubleshooting) when something does not arrive or send.
