mxgate

Email for a domain, set up by an agent in one command

mxgate receives mail for a domain you own and forwards it to your mailbox. It sends mail as an address at that domain. One command writes the DNS records at your DNS host and checks them.

npx mxgate signup you@example.com
CLOUDFLARE_API_TOKEN=... npx mxgate setup example.com --to you@gmail.com

Free plan, no card. Mail to anything@example.com now arrives at you@gmail.com.

What the one command does

  1. It adds the domain to your account.
  2. It finds the DNS host from the NS records: Cloudflare, Vercel or Porkbun.
  3. It writes the records there: the ownership TXT, the MX, the DKIM key, and a DMARC record if the domain has none.
  4. It waits until mxgate sees the records, then sets the catch-all.

The DNS token stays on your machine. If the domain has a mail server already, the command stops and tells you: --replace-mx moves the mail, --dry-run shows the plan and changes nothing. With another DNS host, mxgate domain add prints the records and you add them by hand.

Give it to your agent

claude mcp add mxgate -- npx -y mxgate mcp

Any MCP client: {"mcpServers":{"mxgate":{"command":"npx","args":["-y","mxgate","mcp"]}}}

The MCP server has 25 tools and the CLI has the same commands: signup, domains, aliases, DNS setup, send-as, send_email, the log, notifications, key recovery. Each error is JSON with a code, a message and the next step, so an agent can correct the problem without you. llms.txt has the API on one page.

Every message has a log row

$ npx mxgate logs example.com
2026-11-13 09:14:02  in   forwarded  ada@sender.org -> hello@example.com -> you@gmail.com
2026-11-13 09:20:41  in   rejected   promo@bulk.example -> hello@example.com
    rspamd scored it as spam and mxgate refused it at SMTP time. The sender got an error; nothing was forwarded.
2026-11-13 10:02:10  in   bounced    bob@sender.org -> sales@example.com -> old@gmail.com
    The destination mailbox does not exist.
2026-11-13 10:30:55  out  sent       ada@example.com -> client@example.org

mxgate does not drop mail silently. A message is forwarded, delayed, bounced, or refused while the sending server is still connected, and the log says which, with the reply of the other server. The log has no subject and no body. An hourly email tells you about mail that did not arrive; a signed webhook can tell your program.

Mail that Gmail accepts

Forwarded mail keeps the DKIM signature of the sender. mxgate rewrites the envelope sender (SRS), so SPF passes, and adds an ARC seal. A destination must confirm through a link before any mail goes to it, so an alias cannot point at a mailbox of another person.

Send as your domain

npx mxgate smtp create example.com        # a login for smtp.mxgate.io, port 587 or 465
npx mxgate send --from "Ada <ada@example.com>" --to client@example.org \
  --subject "Hello" --text "Hi"           # or one API call, no SMTP login

Each domain signs with its own DKIM key. A login sends only as addresses of its own domain. The send API takes plain text: no HTML, no tracking, a link arrives as you wrote it. It has idempotency keys and thread headers, so an agent can answer a message and not send it twice.

Or use the API

curl -X POST https://api.mxgate.io/v1/signup \
  -H "Content-Type: application/json" -d '{"email":"you@example.com"}'

The key comes back in the response and by mail. The API describes itself. A lost key: npx mxgate recover you@example.com.

Plans

FreePaid
Domains1No limit
Aliases per domain10, plus a catch-allNo limit
Destinations per alias310
Log7 days90 days
Send-as50 recipients a day3,000 recipients a month
CLI, MCP, DNS setupAll of itAll of it
Price0. No card.Planned: 9 USD a month

The paid plan has no checkout yet. If you reach a limit of the free plan, write to hello@mxgate.io and a person turns the paid plan on for your account.

What mxgate is not

Abuse and suspension

mxgate tells you the reason before it stops anything. If the mail you send bounces too much or is refused as spam, sending is paused and you get an email that says why; forwarding continues. Only a person suspends an account, and the account gets a warning with the reason first. Report abuse of an mxgate address to abuse@mxgate.io.