# Add a domain or alias with a bot

After Cursor, Grok, or another MCP client is connected, the bot can list domains, start a sending+receiving domain, and create aliases like hello@winos.lol. Extra domains never get charged from the bot.

5 min read. HTML: https://sendwithflare.com/help/add-a-domain-with-a-bot/

A connected bot can configure mail the same way **Settings → Sending domains** does in the app: add a Cloudflare domain for sending and receiving, then create aliases such as `hello@winos.lol`. You still connect the bot once (OAuth or an API key). After that, you can ask in chat instead of clicking through the UI.

*Ask the bot to list domains, then create hello@winos.lol. Extra domains return requires_payment instead of charging.*

> **NOTE:** Connect the bot first — [Connect an AI bot with MCP](/help/mcp-bots/). The server URL is `https://flaremail-api.tcrxx0.workers.dev/mcp`. Grok uses OAuth; Cursor and Claude use a Bearer `fm_live_…` key from Settings → Bots & MCP.

## The four setup tools

These tools sit next to the existing mail tools. They do not send or read messages:

- `list_domains` — every sending/receiving domain on the account, the mailboxes on each one, and whether the *next* extra domain would need Paddle. Does not charge.
- `add_domain` — start a domain (for example `winos.lol`). FlareMail provisions Cloudflare Email Sending and inbound Email Routing when it can. Optional `display_name` sets the From name. Optional `local_part` creates `hello@` only after the domain is already verified.
- `create_mailbox` — add an alias on a **verified** domain. Pass `local_part` plus `domain` (`hello` + `winos.lol`) or a full `address` (`hello@winos.lol`). Optional `display_name`. Does not send mail.
- `get_domain_setup` — DNS and Email Routing status plus the next human step. Set `refresh=true` to re-check Cloudflare verification and retry inbound routing.

## Add an alias on a domain you already have

This is the common path once `winos.lol` (or any domain) is already verified in FlareMail:

1. **Ask the bot to list domains** — It should call `list_domains` and show status (verified / pending) and receiving (on / off / error).
2. **Create the mailbox** — Ask for `hello@winos.lol` (or support@, you@, …). The bot calls `create_mailbox` with `local_part` and `domain`, or with `address`.
3. **Confirm it landed** — The new address appears under that domain and in `list_mailboxes`. Use it as `from` on drafts and sends.

```
List my FlareMail domains, then create hello@winos.lol.
```

## Add a new sending + receiving domain

Your first domain is free. The domain must already be an **active zone** on the Cloudflare account connected to FlareMail. Then:

1. **Name the hostname** — Ask the bot to add `winos.lol` (or your domain). It calls `add_domain`.
2. **Watch next_steps** — If Cloudflare wrote DNS, verification is usually quick. If the tool returns pending DNS or leftover MX, call `get_domain_setup` with `refresh=true`, or open the app and click **Verify** / **Fix receiving**.
3. **Create the first alias** — Once status is verified, call `create_mailbox` for `hello@` (or pass `local_part` on `add_domain` only if the domain is already verified).

> **WARNING:** If the domain is not on this Cloudflare account, the bot returns a Cloudflare error and a next step: add the zone in Cloudflare, connect or reconnect Cloudflare in [app.sendwithflare.com](https://app.sendwithflare.com) → Settings, then retry `add_domain`.

## Extra domains: the bot never charges

The first sending domain is free. Each additional domain is **$9.99/mo** through Paddle — same as adding it in the app. The MCP path will **not** increase your subscription or open a hidden checkout.

- If a seat is still needed, `add_domain` returns `requires_payment: true`, the $9.99/mo price, a `checkout_url` of `https://app.sendwithflare.com`, and next steps.
- Open **Settings → Sending domains** in the app and add the domain there. Paddle checkout runs in the app.
- After payment completes, ask the bot to call `add_domain` again (or `list_domains` to confirm).
- If billing is **past due**, the bot returns that code and tells you to update the card from the Paddle receipt — it will not retry a failed charge.

> **TIP:** A domain the account already paid for (unused extra seat) can be added from the bot without another checkout. Only a domain that would raise the Paddle quantity is blocked.

## When setup still needs a human

- **Pending DNS** — records are usually written automatically. Wait a minute, then `get_domain_setup` with `refresh=true`. If it stalls, confirm the returned `dns_records` in Cloudflare DNS.
- **Receiving not live** — leftover MX (Google, Microsoft, WordPress `_dc-mx`) must be replaced with Cloudflare Email Routing. In the app: Settings → Sending domains → **Fix receiving**.
- **Unverified domain** — `create_mailbox` is rejected until the domain is verified. Use `get_domain_setup`, then retry.

## Prefer the app?

The same flow lives in **Settings → Sending domains**. See [Add a sending domain](/help/add-a-sending-domain/). Manual inbound routing (when you are not using automatic provisioning) is [Connect Cloudflare Email Routing](/help/connect-cloudflare-email-routing/).