Transactional email API
One POST to send. Durable message records with a full event trail. And the part the incumbents treat as an afterthought: every capability is callable as an MCP tool, so software agents send, inspect, and verify — no scripted browser, no second-class surface.
For you
curl https://bobtailmail.com/v1/messages \
-H "authorization: Bearer bm_live_…" \
-d '{ "from": "hello@notify.yourdomain.com",
"to": "customer@example.com",
"subject": "Your receipt",
"text": "Thanks!" }'For your agents
{ "mcpServers": {
"bobtailmail": {
"url": "https://bobtailmail.com/mcp",
"headers": {
"authorization": "Bearer bm_live_…"
} } } }same keys, same contracts, two surfaces →
Proof, not promises
Append-only events, enforced at the database grant — an edited trail is not a thing that can exist here.
CNAME token1._domainkey → …dkim…
CNAME token2._domainkey → …dkim…
CNAME token3._domainkey → …dkim…
TXT _dmarc → v=DMARC1; p=none;
The API serves the exact records to set and polls until they hold. An unverified sender is refused with the records still missing — in the error.
HMAC-signed, retried with backoff, every attempt on an append-only ledger. Kill your receiver mid-run; nothing is lost and nothing arrives twice unread.
Records, not logs
A message is recorded before the carrier is ever called, so a failure is a recorded failure — never a lost message. Status only moves forward; a late delivery never erases a bounce.
Agents are first-class
The MCP surface calls the exact same code as REST, advertises real input schemas, and returns the API's typed errors — an agent sees what your backend sees, not a chat wrapper.
Honest infrastructure
Deliverability is rented from an established carrier behind an adapter seam, on purpose — the product is the surface on top, and the repo argues that trade in the open.
Quickstart
01 · Register a sending domain.
curl https://bobtailmail.com/v1/domains \
-H "authorization: Bearer bm_live_…" \
-d '{ "name": "notify.yourdomain.com" }'
# → the exact DKIM / MAIL FROM / DMARC records to set02 · Set the records at your DNS host, then poll.
curl -X POST https://bobtailmail.com/v1/domains/dom_…/verify \ -H "authorization: Bearer bm_live_…"
03 · Send — and read the record back, forever.
curl https://bobtailmail.com/v1/messages \
-H "authorization: Bearer bm_live_…" \
-d '{ "from": "hello@notify.yourdomain.com", … }'Pricing
No public pricing signal exists for an API this new, so we didn't invent a tier ladder to fit one. One number, one cap, reconsidered honestly once real usage says otherwise.
$15/ month