reflow
OfficialSends email through Resend, using configured templates and workflows to deliver messages to contacts.
Provides durable workflow execution for email enrollments, keeping them alive across restarts, long waits, and retries.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@reflowCreate a welcome email workflow, then enroll a new contact."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.

Reflow
Reflow runs email workflows that survive restarts, long waits, and retries.
You describe the flow. An MCP agent (or you, via CLI) creates templates, saves a graph, publishes it, and enrolls contacts. Temporal keeps each enrollment alive. Resend sends the mail.
There is no operator dashboard. CLI and MCP use the same operations.
What you need
Node.js 22+
pnpm 11+
Docker Compose (Postgres + Temporal)
A Resend API key if you want real email (optional for validate/simulate)
Related MCP server: Nitrosend
1. Start the stack locally
cp .env.dev.example .env
pnpm install --frozen-lockfile
make dev-infra
pnpm migrate
mkdir -p secrets
umask 077
openssl rand -base64 18 > secrets/admin_password
pnpm setup -- --email admin@example.com --name Admin --password-file ./secrets/admin_passwordStart three host processes (keep each terminal open):
pnpm dev # API :3000
pnpm dev:worker # Temporal worker
pnpm dev:dispatcher # Outbox / webhook side workLocal ports:
Service | Address |
API | |
Postgres | localhost:5433 |
Temporal | localhost:7233 |
Temporal UI |
Stop infra with make dev-infra-down.
For production Compose with TLS, see docs/DEPLOYMENT.md.
2. Sign in
pnpm build
pnpm link --global # once, so `reflow` is on your PATH
export REFLOW_URL=http://localhost:3000
reflow auth login --email admin@example.com --password-file ./secrets/admin_password
reflow workspace useYour session is stored under ~/.config/reflow/. Later accounts need an admin (account.create). Open signup stays off unless ALLOW_REGISTRATION=true.
3. Send email (Resend)
Put your key in a secret file (do not commit it):
printf '%s' 're_...' > secrets/resend_api_key
chmod 600 secrets/resend_api_keyAdd to .env or .env.local:
RESEND_API_KEY_FILE=./secrets/resend_api_key
REFLOW_FROM=Reflow <onboarding@resend.dev>Restart pnpm dev and pnpm dev:worker so they reload the key.
With Resend’s test sender (onboarding@resend.dev), you can only send to the email on your Resend account. Use a verified domain for other recipients.
4. First project: welcome + nudge
A short worked example lives in examples/welcome-nudge/. It:
Creates and publishes two email templates
Publishes a workflow (welcome → wait → reminder or done)
Upserts a contact and enrolls them
Optionally emits
product.activatedso the reminder is skipped
Run it after the stack is up and you are logged in:
cd examples/welcome-nudge
./run.sh socialrobotio@gmail.comRead that folder’s README for each step and the JSON shapes.
5. Day-to-day commands
reflow call system.capabilities
reflow call workflow.actions
reflow call template.list --input '{"workspaceId":"YOUR_WORKSPACE_ID"}'
reflow call workflow.list --input '{"workspaceId":"YOUR_WORKSPACE_ID"}'
reflow call message.list --input '{"workspaceId":"YOUR_WORKSPACE_ID"}'MCP clients talk to http://localhost:3000/mcp with a session token or API key. Cursor can use .cursor/mcp.json.
Mental model
Piece | Role |
Template | Subject + body with |
Template version | Immutable pin used by |
Workflow | Graph of actions, waits, branches, ends |
Workflow version | Immutable pin used by enrollment |
Contact | Recipient + fields ( |
Enrollment | One durable Temporal run for one contact |
Event | Named signal into a waiting enrollment |
Installed actions today: email.send, contact.update. See docs/OPERATIONS.md.
Checks
make checkDocs
Doc | Topic |
Small end-to-end tutorial | |
Full operation catalog | |
Auth and accounts | |
Production Compose | |
System design | |
Product requirements | |
Agent operating skill |
This server cannot be deployed
Maintenance
Related MCP Connectors
Send transactional email and manage domains, audiences, and broadcasts from any MCP client.
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Email inboxes for AI agents: send, receive, reply, search, and manage threaded email over MCP.
Create and manage Templated email templates from any MCP client - bring your own model.
Related MCP Servers
- AlicenseAqualityDmaintenanceEmail infrastructure for AI agents — create inboxes, send/receive email, search messages, and manage threads via MCP tools.107 npm2MIT
- AlicenseNot gradedqualityCmaintenanceAI-native email marketing platform built for agents. Control campaigns, automations, contacts, templates, and analytics via MCP with OAuth authentication.76 npm2MIT
- AlicenseAqualityBmaintenanceEnables MCP-capable agents to send, receive, and manage email, including domains, inboxes, contacts, templates, webhooks, and delivery metrics, through the Drin API.894 npmMIT
- FlicenseBqualityBmaintenanceEnables external AI agents to read, send, and manage email over IMAP/SMTP via MCP, including inbox listing, search, drafts, scheduled/batch sending, and operations like reply, archive, and labels.302-