Migrate from AgentMail

Moving an agent from AgentMail to SendRaven.

AgentMail gives an agent a mailbox. SendRaven gives it your product's mail: sending from your domain, replies joined to the message they answer, and per-key guardrails around what the agent can do. There is no contact list to move, and nothing to import.

The migration is a change of tools on the agent's side (the MCP server or the REST calls) and a domain on yours. Threads in flight finish where they started.

Export steps checked 6 September 2026 against agentmail.to. Weighing it up? SendRaven vs AgentMail.

Gather from AgentMail
  1. List the inboxes the agent uses and which of them need to keep receiving. Each becomes an address on your domain.
  2. Note the threads that are still open. They finish on AgentMail; new conversations start here.
  3. Collect the webhook endpoints and what each one handles, so the same handlers can be pointed at SendRaven's events.
  4. If the agent keeps a list of addresses that bounced or asked it to stop, export that as a CSV of address and reason.

Compared

What changes when you move from AgentMail.

What changes the architecture or the billSendRavenAgentMail
Priced per email sent, never per contactYes One meter. A contact is free.No per inbox and per plan: $20/mo for 10 inboxes and 10,000 emails
Transactional, campaigns and automations on one planYes One key, one plan, one dashboard, one suppression list.No no campaigns or automations
The reply is a thread, not a webhookYes Joined on Message-ID to the message it answers.Yes
One query for what is awaiting a replyYes GET /v1/threads?awaiting_reply=truePartly labels and drafts; no awaiting-reply query documented
Per-key daily cap and recipient allowlistYes daily_send_limit and allowed_recipients on the key, checked on every send.Partly per-key permissions and inbox scope; allow and block lists sit on inboxes, not keys
Human approval hold on a keyYes requires_approval drafts the message and waits for a person.Partly a key can write drafts it cannot send; a person sends them
Unsubscribe cancels queued sends and ends the sequenceYes Two writes: suppress the address, cancel what is scheduled for it.No no sequences

From AgentMail's own pricing and documentation, last verified 16 September 2026. A “No” means not offered or not documented on that date. Everything else is on SendRaven vs AgentMail.

What moves

What comes across, and what you rebuild.

In AgentMailIn SendRaven
InboxesA verified domain with an inbound route. Any address on it receives; the agent reads threads rather than an inbox.
SendingPOST /v1/emails from your own domain, or the send_email MCP tool. From addresses are yours, not a hosted one.
ThreadsReplies are joined by Message-ID to the message they answer, with quoted text stripped. GET /v1/threads/{id} and the MCP thread tools.
WebhooksOne endpoint per event type, signed. An inbound reply fires message.received with the thread id.
GuardrailsNew here: a daily cap, an allowed-recipient list and an approval hold on the agent's key, checked on every send.
SuppressionsAny address that bounced for the agent should be suppressed here before it is mailed again. Import the list if you have one.

The part that matters

Bring the opt-outs.

An agent that mails people one at a time still builds a list of addresses that bounced or asked it to stop. If that list exists anywhere, import it with the matching status before the agent sends from the new domain. A hard bounce it already learned is one the new domain does not need to learn again.

Templates and sending

The copy and the code.

For an agent on MCP, the change is the server: npx -y @sendraven/mcp with a SendRaven key, or the remote server at the MCP URL with OAuth. The tools are send_email, get_thread, list_threads and the rest; the descriptions say what each costs to get wrong, and a refused send explains itself in the error. For REST, POST /v1/emails with from, to, subject and html or text, and GET /v1/threads for the conversation.

{
  "mcpServers": {
    "sendraven": {
      "command": "npx",
      "args": ["-y", "@sendraven/mcp"],
      "env": { "SENDRAVEN_API_KEY": "sk_live_..." }
    }
  }
}

Then, in order

The steps, in order.

Verify your domain first

Add the domain under Domains and publish the DNS records it gives you. The agent sends from an address on it and receives on any address at it. Nothing sends until this is green.

Create a key with guardrails

Under API keys, give the agent its own key with the contacts, emails and threads scopes it needs, a daily send limit, and an allowed-recipient list if it only ever mails known people. Turn on the approval hold for the first week: every send waits for a person, and you see what it would have done.

Point the agent at SendRaven

Swap the MCP server or the REST base URL and key. Send one message to yourself and reply to it; the reply should appear as a thread with the quoted text stripped.

Repoint the webhooks

Create endpoints under Webhooks for the events the handlers need (message.received, delivered, bounced) and verify the signature. Then move the MX record so inbound mail arrives here.

Let open threads finish

Conversations already under way stay on AgentMail until they end; a reply to a message sent from there goes there. New ones start here. Turn the old inboxes off once the last thread is quiet.

Questions

Asked by people leaving AgentMail.

Does the agent lose its own address?

It gets one on your domain instead (agent@mail.acme.com or whatever you choose), and mail sent from it carries your domain's reputation rather than a hosted one. Anything sent to any address on the domain is received, so the agent can use several.

What is different about threads?

They are joined by Message-ID, never by subject. Two customers replying to the same "Re: Invoice" stay in two threads, and an agent reading one cannot leak the other's context into a reply. A reply that cannot be matched starts a new thread rather than guessing.

Is there anything to import at all?

Only what the agent learned about addresses: bounces and people who asked it to stop. Everything else (domain, key, webhooks) is configuration, and takes an afternoon.

Start with the domain.

3,000 emails a month, inbound included, and no charge until you switch paid sending on. Verify the domain today. The other guides are on the migrate page.