Provider-connected · no token stored
v0.1 · public preview

Custom-Domain Email for AI Agents

Custom-domain email for AI agents. A hosted email API on your own domain — one provider sign-in, no token to paste, and an inbox your agent can actually call.

Your domain, your providersCloudflareResendoutboundOne sign-in, no token
flowmails · activity
deliveredinbound  support@yourdomain.com   38 msinboxspam score 0.4sentoutbound  welcome@yourdomain.com → Resendloggedevent    webhook delivered

A preview of the activity feed in your dashboard

Where a domain stands

Every domain says exactly where it stands.

“Not connected” is not the same as “switched off”, and neither is the same as “we could not check”. Those three send you to three different places, so they look different here. Hover a state to read what it means.

Ready
Needs setup
Unverified
Misconfigured
Off
Unknown
Check failed
Not connected

How it works

From one sign-in to your first message in about a minute.

Three steps, and all of them happen in the browser. There is no DNS record to hand-edit, no token to paste, and nothing to deploy on your side.

01

Connect your domain provider

Sign in to your provider over OAuth — Cloudflare is the first one supported, and more are on the way. We never store an API token, and the authorization expires on its own; no long-lived credential of yours sits in our database.

02

Add your custom domain

Pick the domain your provider can route. DNS records are detected automatically; you approve the routing rules and the domain flips to active in under a minute.

03

Send, receive, and automate

Use the dashboard for human workflows, or call the REST API from your service code. Inbound mail lands in your domain's mailbox, the route table decides which addresses it accepts, and outbound is dispatched to the provider you picked for that domain.

How your mail moves

One mailbox on your domain, one API in front of it.

Inbound mail is captured by your provider's email routing and handed to Flowmails, where it lands in the mailbox for that domain. Outbound leaves through the channel you picked for that domain. Everything in between — inbox, outbox, route tables, events — is reachable from your code.

Email Routing
Hosted inbox
Domain isolation
Email Sending
Spam filtering
How mail moves through Flowmails: inbound mail arrives through your domain, lands in the hosted inbox, and leaves again through your sending provider when your app or agent calls the API.A sender's mail is captured by your provider's email routing and handed to Flowmails, which stores it in the inbox for that domain and logs the event. Your application and your coding agent reach the mailbox through the REST API, and mail they send leaves through your chosen sending channel — Cloudflare Email Sending or Resend — to its recipient.SenderSMTP / HTTPYour domainEmail RoutingFlowmailsinbox · eventsInboxyour addressesOutboundCloudflare · ResendREST APIyour backendYour agentSDK · MCPRecipienttheir inbox

One letter, start to finish: your provider’s routing, the platform, the inbox — and back out through the channel you picked for this domain.

Why teams pick Flowmails

A hosted mailbox, an API your service can call, and AI on the way.

01Setup speed
60s to first message
02Credential handling
One sign-in — no token stored
03Automation
REST API + event log
04Agent access
SDK · skill · MCP · CLI

For AI agents

Point an agent at your mailbox.

Three ways in, one mailbox behind them: point an MCP client at the hosted server, install the skill for a coding agent, or call the REST API — or the CLI — from your own service. Whichever one your agent already speaks, it lands in the same inbox on your own domain, under a key you can revoke.

MCP
Agent skill
REST API + SDK

Any MCP client

MCP server

Point a support agent, a research agent or a workflow runtime at one URL. Every call is checked against the credential's scopes, and there is no skill to install — MCP is a protocol, not a directory.

endpointhttp
https://sdk.flowmails.net/mcp
Read the MCP guide

Coding agents

Agent skill

Claude Code, Cursor and Copilot install the skill from their own directory. One command, and every session starts from the same contract instead of whatever the model remembers.

installbash
npx skills add wms-why/flowmails-sdk-plugin@flowmails-sdk
Agent setup guide

Your own service

REST API + SDK

Anything that can make an HTTPS request is an agent here: send, wait for a reply, read it, search the mailbox, create an address. A backend needs no filesystem and no terminal.

SDKbash
npm install @flowmails/flowmails-sdk
Install the SDK

Not sure which door?

Whichever one your agent speaks, the first step is the same: sign in, pick a domain, mint a key. The key is bound to one domain and revoked in one click, so the worst case is one mailbox rather than an SMTP password. Every send lands in your outbox, and inbound mail is queryable through the API — so an agent can confirm a message landed instead of polling for it.

Delivery-status webhooks · v1.0 roadmap

Try the API

Send your first email in five minutes.

Three copy-paste examples for the runtimes you actually use — pick one, paste it, ship. Every example targets the same wire endpoint, with the inbox and outbox landing in Flowmails' storage, scoped to your domain.

What you get

Five things your email layer has to get right.

01Setup

Connect your domain provider once

You sign in to your provider over OAuth and approve the routing rules in the same flow. That authorization is used only to finish the setup: it expires on its own, and we never keep a long-lived credential for your account.

connectbash
$ flowmails connect
✅ Connected provider: cloudflare (OAuth grant, 24h)
   domains available: 3
02Delivery

Send and receive on your own domain

Inbound mail is routed by your provider to a dedicated address for your domain and lands in your inbox. Outbound goes through Cloudflare Email Sending or Resend — you choose per domain — and there is no SMTP relay to operate.

curlbash
$ curl -X POST https://sdk.flowmails.net/api/v1/messages \
    -H "Authorization: Bearer fm_…" \
    -d '{"to":"hi@yourdomain.com","subject":"hi"}'
{ "id": "8421", "status": "sent",
  "messageId": "<abc123@yourdomain.com>",
  "recipients": [ { "to": "hi@yourdomain.com", "status": "sent" } ] }
03Automation

One API in front of the whole mailbox

Send over HTTPS with a key scoped to a single domain, and read what arrived through the same API. Inbox, outbox, route tables and the event log are all reachable from code, so a verification flow can wait for its mail instead of polling for it.

messagesbash
$ curl https://sdk.flowmails.net/api/v1/messages \
    -H "Authorization: Bearer fm_…"
from_email          subject
no-reply@stripe.com Order #8421 confirmed
04Agents

An email surface your agent can call — not guess at

Claude Code, Cursor and Copilot install the flowmails-sdk skill and get the exact send, read and wait contract, the error hierarchy and the retry policy in every session. A hosted MCP server and a flowmails CLI ship alongside — a support agent, a research agent or your own service calls the same ten tools. Either way it gets a typed contract instead of invented method signatures, and a key scoped to one domain instead of SMTP credentials.

skillbash
$ npx skills add wms-why/flowmails-sdk-plugin@flowmails-sdk
✔ installed: flowmails-sdk
  → fm.send(SendOptions) → SendResult
05AI
In preview

AI draft and reply, scoped to your data

AI draft and reply is in preview: model-backed drafting and summarization. Your prompt templates and the messages used as context stay with your domain's data, and you choose the model provider.

draft.jsonjson
{ "model": "flowmails-draft",
  "scope": "domain:yourdomain.com",
  "prompt": "draft reply to support ticket #8421",
  "context": "your own messages only" }

Who it's for

For the agent that calls it, and the team that owns the domain.

An agent does the sending and the reading; the domain, the key and the bill stay with a person. Flowmails is for both — any agent that speaks MCP or plain HTTPS, and the teams who stay accountable for what leaves that domain.

Spam filtering

Rspamd spam filtering is now live on every inbound message.

Flowmails now integrates Rspamd, the high-performance open-source spam, phishing, and malware classifier, as the default scanner for every inbound message. The moment your provider's email routing hands a message over, Rspamd scores it against its rulesets: reject-classified mail is quarantined into a dedicated Junk tab and never reaches the live inbox, while borderline messages stay in Inbox with the verdict and the rules that fired surfaced in the reading pane.

Rspamd
Spam + phishing + malware
Inline classification
Per-message audit
Fail-open

Scoring happens right after the message is accepted, so Inbox latency is unchanged. If Rspamd is unreachable the email stays delivered — the system fails open rather than drop a real message because the scanner hiccupped.

rspamd.jsonjson
{
  "is_skipped": false,
  "score": 24.4,
  "required_score": 15.0,
  "action": "reject",
  "thresholds": { "reject": 15, "add header": 6, "greylist": 4 },
  "symbols": {
    "RBL_SPAMHAUS":   { "score": 8.5 },
    "URIBL_BLACK":    { "score": 6.0 },
    "MISSING_TO":     { "score": 2.0 },
    "MIME_HTML_ONLY": { "score": 1.0 }
  }
}

FAQ

The questions buyers ask before they connect a provider.

From the journal

Operator notes on provider-connected email.

How mail moves through Flowmails: inbound mail arrives through your domain, lands in the hosted inbox, and leaves again through your sending provider when your app or agent calls the API.A sender's mail is captured by your provider's email routing and handed to Flowmails, which stores it in the inbox for that domain and logs the event. Your application and your coding agent reach the mailbox through the REST API, and mail they send leaves through your chosen sending channel — Cloudflare Email Sending or Resend — to its recipient.SenderSMTP / HTTPYour domainEmail RoutingFlowmailsinbox · eventsInboxyour addressesOutboundCloudflare · ResendREST APIyour backendYour agentSDK · MCPRecipienttheir inbox

Ship it on your domain

Bring your domain. Keep your data.

Custom-domain email on your own domain, live in about a minute — a hosted email API, one provider sign-in, no token to paste.