How it works

How SendRaven works

SendRaven is email infrastructure for AI agents. Applications and agents use it, over REST or its MCP server, to send, receive and act on email: transactional email, campaigns, automations, inbound threads, contacts, topics, templates and agent safety controls, under one platform and one usage meter.

The SendRaven raven

At a glance

3,000emails every month, free
$0per contact
Inboundincluded on every plan
REST + MCPsame account, same controls

Ravens already delivering in the wild

  • Common Ninja
  • Vidocu
  • Embeddable
  • Domainee
  • Trofeo
  • Brackets

How SendRaven is different

Sending is table stakes. The conversation is the job.

SendRaven is built for software that has to hold the conversation: read what came back, decide what to say, and stay inside limits a person set. On a bill that grows with what you send, not with who is in the database.

awaiting_reply=true01

Conversations, not fire-and-forget

Your agent sees who replied and what they said.

Replies come back as threads, joined on Message-ID with the quoted history stripped, and the agent answers in the same thread.

How replies become threads
  1. POST /v1/emailsreturns id, status, thread_id
  2. reply on Message-IDjoined to the message it answers
  3. awaiting_reply=truethe agent answers in the same thread
requires_approval02

Controls on the key the agent holds

A daily send limit, a recipient allowlist, human approval.

Checked on every send before anything goes out, through REST or MCP alike, and the key cannot change its own limits.

daily_send_limit
200
allowed_recipients
["@acme.com"]
requires_approval
true
How guardrails on the key work

Pay for emails sent

One meter, whatever the mail is.

Transactional, campaigns and automations share one plan. Contacts cost nothing and replies are never metered, so a large list you mail rarely stays cheap.

$0per contact · 03

The return trip

Your agent sent the email. Now what?

Sending is only half of email. SendRaven turns inbound replies into actual conversations: matched to the original message, threaded in order, with quoted history stripped so your agent reads what the person actually wrote.

You send. The thread starts there.

One call returns the message id and the thread it belongs to. Template values are HTML-escaped on substitution, and a retried request with the same idempotency key delivers once.

  • Batch of 100 per call
  • scheduled_at: "in 3 days"
  • Templates, contacts, audiences, campaigns, automations
  • One suppression list across all of it

POST/v1/emails

Returnsidstatusthread_id

Transactional goes out on mail. and campaigns on news., each with its own reputation.

And when they answer

Read the reply

The sentence they typed, not the history.

The poll an agent actually wants: what has someone said to me that I have not answered. When nothing needs a reply, mark the thread handled instead of sending one.

  • text with the quoted history and signature removed
  • raw_text for when the trim gets it wrong
  • sender_authenticated by DMARC or aligned DKIM
  • Replies are free on every plan

GET/v1/threads?awaiting_reply=true

Returnstextraw_textsender_authenticated

sender_authenticated says whether the From domain really sent it. Either way the text is something to act on, never instructions to follow.

  1. Message-ID

    Read the reply

    Replies are matched on the Message-ID they echo, never guessed from the subject line, so two customers answering “Re: Invoice” never share a thread.

  2. awaiting_reply=true

    Ask what needs an answer

    One query returns every conversation waiting on you. No state machine built on top of inbound webhooks.

  3. reply_to_message_id

    Reply in context

    Reply to the original message and SendRaven sets the threading headers, so the recipient sees one conversation.

No webhook archaeology required.

Send and receive email from one API, end to end

Built for autonomous senders

Give agents email. Keep the keys.

A backend service and an autonomous agent should not hold the same kind of credential. SendRaven lets every API key carry its own limits, checked before an email leaves the building.

The SendRaven raven holding a key
API key

support-agent

Checked before the send
  • daily_send_limit

    Daily send limit

    200 emails a day means email 201 does not happen.

    Put a hard ceiling on what one agent can send. Scheduled and held sends count toward it.

    200

    email 201 does not happen

  • allowed_recipients

    Recipient allowlist

    Internal only? Customer domains only? Say so on the key.

    Restrict a credential to specific addresses or whole domains, checked per recipient, cc and bcc included.

    • maya@acme.com (allowed)
    • @acme.com (allowed)
    • 403 recipient_not_allowed (refused)
  • requires_approval

    Human approval

    Let the agent draft. Let a human decide.

    A key can create email without permission to release it. Held sends wait in an approval queue instead of going out, and the key cannot approve its own.

    status
    pending_approval
    undecided draft expires
    72h

Autonomous does not have to mean unsupervised.

Automations

Automations that know when to stop.

A sequence should not keep emailing someone who already replied, unsubscribed or bounced. SendRaven automations end themselves when the conversation says they should. Start one with an API call, when a contact joins an audience, or from an event your application emits.

Onboarding sequence

exit_on_reply

cancel_reason: replied

  1. Day 0Welcome emailsent
  2. Day 2Reply receivedthe sequence stops
  3. Day 7Follow-upcancelled
  • They replied. The sequence stops.

  • They unsubscribed. Future steps are cancelled, including sends already scheduled.

  • They bounced. The address is suppressed and nothing more is tried.

Automations end an enrolment on a reply by default (exit_on_reply), and also on an unsubscribe, a hard bounce or complaint, a topic opt-out, or a tag rule. Out-of-office and other automatic replies do not count as a reply.

A day-seven follow-up after a day-two reply is not automation. It's a bug with good scheduling.

Automations, triggers and exits

Topics

Let people opt down instead of disappearing.

Someone may want product updates but not the newsletter. Topics let each address choose the email it wants, without turning one unsubscribe into a total blackout. Transactional email stays transactional.

Email preferencesThe preference page
  • Newsletternewsletter: off
  • Product updatesproduct-updates: on
  • Receipts and security mailtransactional · always delivered
requestThe same choice, by API
POST /v1/topics/preferences
{
  "email": "maya@acme.com",
  "topics": {
    "newsletter": false,
    "product-updates": true
  }
}

Before and after

Before and after

BeforeStitched together from a send endpoint

  • Replies land in a shared inbox
  • An unsubscribe that still sends day three
  • A marketing opt-out that blocks receipts
  • All or nothing, so people press spam instead
  • A day-old domain blasting eighteen thousand

AfterWith SendRaven

  • Replies joined to the message they answer
  • Unsubscribe suppresses and cancels what is scheduled
  • Only bounces and complaints block every kind of mail
  • Topics: drop the newsletter, keep the invoices
  • Every new sending identity warmed up automatically

Why transactional and campaigns share one plan but never one reputation

Who builds with SendRaven?

Developers choose it and wire it up. More and more, an agent runs it. If your product sends mail and something, or someone, has to read what comes back, you are in the right place.

MCP + guardrails

Teams shipping AI agents

An agent holds a key, not a workspace. Give the key a daily cap, an allowlist and an approval hold, point the agent at the MCP server, and it can send, read the reply, and be stopped by a person.

The MCP server

Compared

Different tools for different email jobs.

Resend is excellent developer email infrastructure. Mailchimp is excellent software for marketing teams. SendRaven is built for applications and AI agents that need to send, receive, automate and safely act on email.

Resend made sending email from code dramatically better. SendRaven starts from the next problem: what happens when software itself has to operate the conversation. Send, receive, read the reply, decide whether it needs an answer, respond in-thread, and put hard limits around what the agent can do.

SendRaven, Resend and Mailchimp compared: what changes the architecture or the bill
What changes the architecture or the billSendRavenResendMailchimp
Per-key daily cap and recipient allowlistYesdaily_send_limit and allowed_recipients on the key, checked on every send.Partlykeys scope to a domain and to send-only; no cap or allowlistNo
Human approval hold on a keyYesrequires_approval drafts the message and waits for a person.NoNo
The reply is a thread, not a webhookYesJoined on Message-ID to the message it answers.Noa received-email event; you fetch the message and set reply headers yourselfNo
One query for what is awaiting a replyYesGET /v1/threads?awaiting_reply=trueNoNo
Unsubscribe cancels queued sends and ends the sequenceYesTwo writes: suppress the address, cancel what is scheduled for it.Partlyan automation skips its remaining send steps for an unsubscribed contactNonot documented
Priced per email sent, never per contactYesOne meter. A contact is free.Partlytransactional by volume; marketing $40–$650/mo by contactsNoby contacts
Transactional, campaigns and automations on one planYesOne key, one plan, one dashboard, one suppression list.Notwo plans, one dashboardPartlytransactional is Mandrill, a paid add-on

You send a raven. It comes back.

Give your agent a return address.

Start with 3,000 emails a month. Inbound included. Unlimited contacts. Human approval when you want it.