Email API for AI agents

Give Claude Code, Cursor, Codex or any other AI agent what it needs to add transactional email to your app: a hosted MCP server, a REST API and a sandbox domain that sends your first test email before you touch DNS.
Quick start

Your first test email in minutes, no DNS setup

The sandbox is for testing: up to 10 confirmed recipients and 100 emails a day. To email your users, verify your own domain.

Connect your agent
Add the UniOne MCP server and sign in to UniOne in your browser.
Your agent gets a sandbox domain
It's a test domain that comes with every account, with DKIM and SPF already set up.
Confirm your inbox
UniOne sends a confirmation link to your address. Click it, and the sandbox can send to that address.
Get the test email
Your agent sends it from the sandbox domain and shows you the job_id.
Setup prompt

Setup prompt for AI coding agents

Paste this prompt into Claude Code, Cursor, Codex or any other coding agent. It reads the UniOne docs, sends a test email from the sandbox domain and adds sending to your app's server code. When you're ready for production, it walks you through verifying your domain.

Docs your agent reads: llms.txt · llms-full.txt · OpenAPI spec · MCP server docs · pricing.md

API key
Calling UniOne
First email
Production
Code quality
API key
Integrate UniOne transactional email into this project. Follow these rules exactly.

1. API key
- Application code reads the UniOne API key from the environment variable UNIONE_API_KEY and calls UniOne only server-side: an API route, server function, edge function or backend worker.
- Never ask me to paste the key into chat, never hard-code or commit it, and never use it in browser or client-side code.
- The UniOne MCP server does not use UNIONE_API_KEY. If it is connected, use its tools even when the variable is not set.
- If UNIONE_API_KEY is not set, tell me to copy my key from https://cp.unione.io/en/settings/security/api into my environment or secrets manager. Don't run application code that calls UniOne until the key is set. If the MCP server is not connected either, stop and wait for the key.
Calling UniOne
2. How to call UniOne
- If the UniOne MCP server is connected, use its tools for setup and checks.
- In application code use the Web API: POST https://api.unione.io/en/transactional/api/v1/<method>.json with a JSON body and the X-API-KEY header. Do not send api_key in the body.
- Docs for you: https://docs.unione.io/llms.txt and the OpenAPI spec https://docs.unione.io/openapi/unione-web-api-latest.json. Do not invent methods or fields that are not in the spec.
First email
3. First email: sandbox domain, no DNS
- Get the account's sandbox domain: get_sandbox_domain (MCP) or domain/get-sandbox-domain (REST). This and the confirmed-email methods don't work with a project key: use the MCP server connected by sign-in or the account API key.
- The sandbox domain delivers only to confirmed addresses. Ask me which inbox to use. If it is not confirmed yet, add it (add_confirmed_email (MCP) or confirmed-email/create (REST)) and wait until I click the link in the confirmation email (valid for 48 hours).
- Send one test email from noreply@<sandbox-domain> to that address and show me the job_id.
Production
4. Before production
- The sandbox is test-only: confirmed recipients only, 100 emails a day, the domain expires after 31 days. Never ship a sandbox domain as the production sender; read from_email from config.
- Help me verify my own domain: domain/get-dns-records → add the records to DNS → domain/validate-verification-record and domain/validate-dkim → domain/list until verification is confirmed and DKIM is active.
Code quality
5. Code quality
- Set message.idempotence_key on sends that can be retried.
- Max 500 recipients and 10 MB per request; always include body.html or body.plaintext.
- Get delivery events with a webhook (webhook/set) and a fast, idempotent HTTPS handler instead of polling.
- Keep default unsubscribe and tracking behavior; changing it requires UniOne support.
- Ask me before any action that sends real email or deletes anything.

Trusted by Industry Leaders

Chicco
Futurra
Metropolitan
Pin-up
Sitniks
Viqeo
Wizards
Zoozy
MCP

Connect the UniOne MCP server

Let your agent handle email in plain language: send messages, get the sandbox domain, set up your own domain, build templates, wire up webhooks, check the suppression list and validate addresses. The server is hosted, so there is nothing to install.

Server URL: https://mcp.unione.io/mcp

Add the URL to your agent and sign in when it asks: your browser opens UniOne, you click Allow access, and you're connected. There is no API key to copy.

claude mcp add --transport http unione https://mcp.unione.io/mcp
# then run /mcp, select unione and choose Authenticate
codex mcp add unione --url https://mcp.unione.io/mcp
codex mcp login unione
// ~/.cursor/mcp.json, then click Connect
{
  "mcpServers": {
    "unione": { "url": "https://mcp.unione.io/mcp" }
  }
}
// .vscode/mcp.json, then click Start
{
  "servers": {
    "unione": { "type": "http", "url": "https://mcp.unione.io/mcp" }
  }
}
URL:        https://mcp.unione.io/mcp
Transport:  Streamable HTTP
Sign-in:    OAuth, in your browser (UniOne account)

Tools that send or delete are marked destructive, so your client asks you to confirm first. Revoke access at any time in Settings → Security → Connected applications.

Coding agents

Send email from Claude Code, Cursor and other coding agents

Customer Testimonials

Why UniOne

Why UniOne for AI-built apps

Test email without DNS
Every account has a sandbox domain with DKIM and SPF already set up. Your agent sends a real test email before you touch DNS records.
Data centers in the EU and the US
Your account is created in the EU or US data center, depending on where you sign up. One API address, api.unione.io, routes every call to your account's region. No regional URLs in your code.
Free plan, paid plans from $6
The Free plan gives you 100 emails a day with no credit card, to addresses on your own domain or to confirmed addresses. Ready to email customers? The 4-month free trial gives you 6,000 emails a month, then $4 a month. Paid plans start at $6 for 10,000 emails.
Safe for agents by default
Keys stay on the server, the sandbox stays in testing, and your client asks you to confirm before the agent sends or deletes anything. The setup prompt gives your agent the rules below.
Rules

Email integration rules for AI agents

Your agent gets these rules from the setup prompt. They apply to the code your app runs in production: use them to review what the agent writes.

Key on the server
Your app sends email from server code. The API key lives in an environment variable and goes in the X-API-KEY header, never in the browser.
Sandbox for testing
The sandbox is for testing. In production, send from your own verified domain with active DKIM.
Idempotent sends
Set idempotence_key on every send that can be retried.
Request limits
Up to 500 recipients and 10 MB per request.
Webhooks for events
Get delivery events with webhooks. Keep the handler fast and idempotent.
Default unsubscribe and tracking
Stay on the default path: changes to unsubscribe and tracking go through support.

FAQ

The UniOne MCP server is a hosted Model Context Protocol server at https://mcp.unione.io/mcp. It gives AI agents 32 tools to send email, manage domains, templates and webhooks, and check addresses. Add the URL to your agent and sign in to UniOne in your browser. There is nothing to install. See the MCP server docs.
Yes, you can start on the Free plan: 100 emails a day and 5 email validations a month, with no credit card and no time limit. On it, you send from your verified domain or the sandbox domain to addresses on your own domain or to confirmed addresses. For more volume, the free trial gives you 6,000 emails and 100 email validations a month for 4 months. It needs a card, and after the trial the plan continues at $4 a month. Paid plans start at $6 for 10,000 emails. The MCP server costs nothing extra: you pay for emails and validations, as with the API.
Add the UniOne MCP server. In Codex, run codex mcp add unione --url https://mcp.unione.io/mcp, then codex mcp login unione. In Claude Code, run claude mcp add --transport http unione https://mcp.unione.io/mcp, then /mcp → Authenticate. In Cursor, add the server URL to ~/.cursor/mcp.json and click Connect. Then ask the agent to send a test email. To add sending to your app's code, paste the setup prompt above.
Yes. Every account has a sandbox domain with DKIM and SPF already set up. Your agent gets it, adds your address and sends the test email after you click the link in the confirmation email. The sandbox sends only to confirmed addresses, up to 10, and up to 100 emails a day. To email your users, verify your own domain. Your agent can walk you through the DNS records.
Every MCP tool is marked read, write or destructive, so your client asks you to confirm before the agent sends or deletes anything. When you connect by signing in, the agent never sees your password or API keys, and you can revoke access at any time in Settings → Security → Connected applications. Keys and tokens are never written to our logs.
No. MCP lets the agent set things up for you: the sandbox, your domain, templates and webhooks. Your application code calls the REST API directly with the key kept on the server. The setup prompt covers both.
Paste the setup prompt into the platform's chat. UniOne calls run in a server-side function, so the key never reaches the browser: a Supabase Edge Function in Lovable, a server route in Bolt, a backend call with Replit Secrets in Replit, a Next.js Route Handler in v0.
Any MCP client that supports Streamable HTTP. Setup steps are ready for Claude Code, Cursor, Codex, GitHub Copilot in VS Code and Windsurf, and for Claude and ChatGPT, where you add the server URL as a custom connector. Without MCP, any agent can use the REST API with the setup prompt above.

Send your first test email in minutes

Start on the Free plan, with no credit card: 100 emails a day to addresses on your own domain or to confirmed addresses. Your agent sends the first test email from the sandbox domain before you set up DNS. When you need more volume, choose a paid plan or talk to our sales team about a custom plan.