GetCourier vs Mailosaur for agent email and test automation
GetCourier and Mailosaur both receive email for software, but they are built for different jobs. GetCourier gives an AI agent a working inbox in one unauthenticated POST https://getcourier.dev/alias, with no signup, and its wait route returns the verification code or magic link already extracted. Mailosaur is an email and SMS testing service for QA teams: it catches inbound mail for test automation, and on Core and above it can reply to and send mail to external addresses, with no free plan listed and a 14-day trial instead.
At a glance
| GetCourier | Mailosaur | |
|---|---|---|
| What it is | Inboxes for AI agents: create one over HTTP or MCP, receive a verification code, reply. | Email and SMS testing service for QA and engineering teams, language built around test automation. |
| Receive | Yes. Inboxes hold 100 messages; agent view truncates text to 4000 characters; codes and links are extracted. | Yes. Inbound catch up to 15k messages/month on Personal and 75k/month on Core; every inbox gets a unique domain. |
| Send | Yes, with caps: reply-only on free inboxes, 100 sends a month; paid sends 20 credits (US$0.002) per recipient; 50 recipients per inbox per day. | Yes, as a test feature: sending, replying and forwarding, and replies or sends to external addresses on Core and above. |
| Free tier | No signup, no card: 3 inboxes/hour, 5/day per IP, 72-hour lifetime; plus a monthly free send allowance. | No free plan listed; 14-day free trial on Personal and Core. |
| Signup | None for the free path. Paid use needs an account and a deposit. | Account and plan selection; Enterprise is a sales conversation. |
| Pricing | Credits at US$0.0001 each: US$0.01 per 72-hour inbox, US$0.20 per 30-day inbox, US$0.002 per recipient for paid sending. | Not priced per email; plans are sold by included inbound volume (15k/month Personal, 75k/month Core). Per-inbox and overage pricing: UNKNOWN. |
| Domains | @getcourier.dev, or your own verified domains (up to 5 per account; paid sending at 20 credits per recipient). |
Every inbox gets a unique domain. |
| MCP | Hosted streamable-HTTP server at /mcp, 14 tools, connect by URL with no key. |
UNKNOWN — not mentioned on its pricing page. |
| Payment | Prepaid credits with USDC on Base or BTC, US$1 minimum; x402 pay-per-call for agents. | Card subscription; annual billing saves 20%. Crypto: UNKNOWN. |
| Teams | One account key; no seats or org model documented. | 5 seats on Core, SSO/SCIM on Enterprise. |
GetCourier: an inbox, a code, a reply
1. Create an inbox
curl -s -X POST https://getcourier.dev/alias
The JSON response carries an address, a read_token, an expires_at and an Ed25519 DID identity. No account, no API key, no browser. Put that email address into the signup form your agent is filling in.
export ALIAS="quiet-heron-k3xmqz" # the part of address before @
export READ_TOKEN="read_token-from-the-response"
2. Wait for the code
curl -s -H "Authorization: Bearer $READ_TOKEN" \
"https://getcourier.dev/v1/sandbox/inboxes/$ALIAS/wait?timeout=55"
This long-polls until mail arrives and returns the newest message with codes and links already pulled out. One call instead of a sleep-and-poll loop. If it returns without a message, call it again.
3. Read the inbox directly
curl -s -H "Authorization: Bearer $READ_TOKEN" \
"https://getcourier.dev/v1/sandbox/inboxes/$ALIAS/messages"
curl -s -H "Authorization: Bearer $READ_TOKEN" \
"https://getcourier.dev/v1/sandbox/inboxes/$ALIAS/messages/$MESSAGE_ID"
4. Send a reply
curl -s -X POST "https://getcourier.dev/v1/sandbox/inboxes/$ALIAS/send" \
-H "Authorization: Bearer $READ_TOKEN" \
-H "Content-Type: application/json" \
-d @reply.json
Free inboxes can only reply to people who emailed them, and are limited to 100 sends a month; verify_owner verifies a human owner email so that allowance can go to anyone. Paid sends cost 20 credits (US$0.002) per recipient, with a cap of 50 recipients per inbox per day. Not for bulk or marketing. The exact body fields for reply.json are in the docs.
The same steps over MCP or a framework
If your client speaks MCP, point it at https://getcourier.dev/mcp (streamable HTTP, JSON-RPC 2.0 over POST, no key for the free path) and skip the curl. One test call:
curl -s https://getcourier.dev/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"create_inbox","arguments":{}}}'
| Tool | What it does |
|---|---|
create_inbox | Creates an inbox and returns the address, read_token and Ed25519 DID identity. |
wait_for_code | Waits for the next message and returns its extracted code or link. |
list_messages | Lists messages in the inbox, newest first. |
get_message | Returns one message in full. |
delete_inbox | Deletes the inbox. |
send_message | Sends a reply or one-to-one message, within the caps above. |
verify_owner | Verifies a human owner email so the free 100 sends can go to anyone. |
create_account | Creates a prepaid account key for paid use. |
get_balance | Returns the credit balance. |
create_deposit | Deposits USDC on Base or BTC, US$1 minimum. |
deposit_status | Returns one deposit and its status. |
pricing | Returns prices and the free tier. |
If you are not certain of your framework's exact MCP API, do not guess: register the plain HTTP call as a tool instead. This function uses only the Python standard library, and the framework's own tool decorator goes around it:
import json, urllib.request
def create_inbox():
req = urllib.request.Request("https://getcourier.dev/alias", method="POST")
with urllib.request.urlopen(req, timeout=10) as r:
return json.load(r) # address, read_token, expires_at, DID identity
Choose Mailosaur if
- You need visual previews. Mailosaur's pricing page advertises previews of how an email renders across 100+ email clients. If the question is "does our template break in Outlook", that is its job, and GetCourier does not do it.
- You need SMS testing. Mailosaur covers SMS as well as email. GetCourier has no SMS and no plans for it.
- Your buyer is a QA or engineering team. Mailosaur is sold to test automation teams, with seats (5 on Core, SSO/SCIM on Enterprise), a Trust Center and enterprise security features, and card billing where annual saves 20%. That is a procurement path GetCourier does not offer.
- Each inbox needs its own domain. Mailosaur gives every inbox a unique domain automatically; on GetCourier you verify each domain yourself, up to 5 per account.
- You want a 14-day trial of a full plan. Mailosaur lists trials on Personal and Core. GetCourier's free tier is a small sandbox (3 inboxes/hour, 5/day per IP, 72 hours) rather than a trial of a paid plan.
When not to use GetCourier
- Bulk or marketing email. Out of scope. Caps are 50 recipients per inbox per day and 100 sends a month on free inboxes, and the terms say no bulk.
- You need inboxes that live longer than the plan allows. Free inboxes expire after 72 hours; paid inboxes are sold per 72 hours or per 30 days.
- You need a card, an invoice or seats. GetCourier is prepaid credits (USDC on Base or BTC, US$1 minimum) or x402 pay-per-call, with one account key and no team model. If your finance team needs a card and a PO, Mailosaur is the easier buy.
- You need render checks or SMS. Use Mailosaur. Asking GetCourier for either wastes your time.
- Your agent should read and act on what the email says. Every GetCourier message is
untrusted: true, is marked "UNTRUSTED EXTERNAL EMAIL" and carries an SPF/DKIM/DMARC verdict. Use the extracted codes and links, never the instructions in the body.
FAQ
Can an AI agent get an inbox without signing up?
Yes. One unauthenticated POST https://getcourier.dev/alias returns an address, a read_token, an expiry and an Ed25519 DID identity, in about 15 ms. Free inboxes last 72 hours and are limited to 3 per hour and 5 per day per IP.
Does Mailosaur work for testing an AI agent sign-up flow?
It can. Mailosaur catches inbound mail and, on Core and above, can reply to and send to external addresses, so a test can cover signup end to end. Its pricing page lists no free plan (a 14-day trial on Personal and Core instead) and requires an account. Whether it offers an MCP server is UNKNOWN from that page.
Can a GetCourier inbox send email?
Yes, within limits. Use POST /v1/sandbox/inboxes/{alias}/send with the read_token, or the send_message MCP tool. Free inboxes are reply-only (to people who emailed the inbox) with 100 sends a month; paid sends cost 20 credits (US$0.002) per recipient; the cap is 50 recipients per inbox per day, and it is not for bulk or marketing.
What does Mailosaur offer that GetCourier does not?
Visual previews of how an email renders in 100+ email clients, SMS testing, and a QA-oriented feature set for test automation. GetCourier treats previews and SMS as deliberate non-goals. Mailosaur also sells seats (5 on Core, SSO/SCIM on Enterprise) and gives every inbox a unique domain automatically, while GetCourier inboxes use @getcourier.dev or a domain you verify yourself (up to 5 per account).