Included domain
Create an inbox without DNS work. Omit username and domain to use the platform domain for
the account’s plan.
An inbox can use the Extrovert domain included with your plan, a dedicated inbox subdomain from a domain your organization already owns, or a new domain purchased through the human-controlled commerce flow.
Paid accounts without a custom domain use extrovertmail.com. When free signup is enabled, free
accounts use the separate free.extrovertmail.com pool. Check current availability with agent_context
or GET /v1/signup-status before offering a new free account.
Included domain
Create an inbox without DNS work. Omit username and domain to use the platform domain for
the account’s plan.
Use a domain you own
Choose a dedicated inbox subdomain, such as agents.example.com, and add the returned nameserver
records. Extrovert manages mail setup inside that subdomain without changing the rest of your DNS.
Purchase a domain
An agent can quote and request a registration. A signed-in billing member or an existing purchase limit must authorize the exact request before payment and registration.
In the console, enter the domain you own, such as example.com, then choose an inbox subdomain. The
default is agents, producing agents.example.com. Your website, existing email, and other DNS
records remain unchanged.
Create the complete inbox domain, such as agents.example.com, with mode: "ns_delegated".
Add the returned NS records at your DNS provider. Extrovert uses three authoritative
nameservers: ns1.extrovert.dev, ns2.extrovert.dev, and ns3.extrovert.dev.
Extrovert publishes the required inbound and authentication records for the delegated zone.
Use Recheck DNS once you have added the entries. Extrovert also checks automatically. When the entries are confirmed, Extrovert finishes mail setup in the background; no more DNS changes are needed from you.
Create inboxes with domain: "agents.example.com", subject to the key’s allowed domains and project
access.
Delegation allows Extrovert to rotate or repair mail records without asking the customer to update individual values. Do not point a CNAME at Extrovert as a substitute for delegation.
The console, API, SDK and MCP use the same readiness result:
| Result | What it means for you |
|---|---|
| Waiting for DNS | Add the entries shown, then choose Recheck DNS. |
| Setting up mail | Your part is done. Extrovert is finishing setup. |
| Ready | You can create inboxes; existing ready inboxes can send and receive mail. |
| DNS needs fixing | Restore the entries shown. Inboxes may be disrupted until they are restored. |
| Setup needs attention | Extrovert is investigating or retrying. Follow the summary; do not change DNS unless asked. |
Lead with readiness.label and readiness.summary when presenting a result to a human. Use
ready_for_inboxes for the readiness decision, action_required_by to identify who must act, and
next_action for the next step. Legacy verification_status and dkim_status are diagnostic details;
neither alone means mail is ready. The optional inboxes counts include only inboxes visible to the
calling agent, project or organization, as stated by inboxes.scope.
With no visible inboxes, offer to create one when the domain is ready. Creating and sending still require the appropriate permissions, plan capacity and review approval.
npx -y @extrovert.dev/mcp domain status agents.example.comnpx -y @extrovert.dev/mcp domain recheck agents.example.comnpx -y @extrovert.dev/mcp domain wait agents.example.comFor agents, get_domain returns the current result and wait_for_domain waits up to 50 seconds.
timed_out means the wait ended while setup continues. Resume after resume_after_seconds.
The TypeScript equivalents are extrovert.domains.get(domain) and extrovert.domains.wait(domain).
Extrovert continues checking DNS after setup. Verified account owners and administrators receive email when a newly connected domain becomes ready, needs DNS repair, or recovers. The console also shows warnings in Domains and on affected inboxes, with a link to the entries to repair.
To resume agent updates after a restart, call list_domain_events (API:
GET /v1/domains/{domain}/events; SDK: extrovert.domains.events(domain)). Save next_cursor and
pass it as after for that same domain. Fetch the next page immediately when has_more is true;
otherwise wait poll_after_seconds. Events do not wake a disconnected host: keep a polling task
running or resume checking when the agent next runs.
| Operation | Required permission |
|---|---|
| List, inspect, or read status events for a domain | domain:read or domain:manage |
| Recheck or offboard a customer-controlled domain | domain:manage |
| Connect a domain you own with nameserver delegation | domain:manage |
| Quote, request, inspect, or cancel an agent’s purchase request | commerce:request |
An agent’s commerce:request permission does not approve payment and does not grant direct registrar
access.
Customer-controlled domains belong to one project. scope is project; omitting it
uses the connection’s project. Account-level creation without a project uses Default.
Only platform-designated shared domains are available across projects, and each inbox
on a shared domain still belongs to one project.
A project_id in an agent request is an assertion. It cannot move the connection
into another project. Use a reviewed resource transfer
to move existing domains and their inboxes.
Quote. quote_domain returns availability, the exact registration and renewal price, quote
expiry, and any plan requirement. A quote does not reserve, charge, or register the domain.
Request. request_domain_purchase records the quoted commercial facts under a stable
idempotency key.
Authorize. If no matching purchase limit allows the request, Extrovert notifies the billing owner and returns a signed-in approval URL. Ordinary mail/commerce permissions cannot approve the request. An explicitly authorized Full account control connection can approve through administrative actions, including its own request.
Recover payment if needed. If additional payment authentication is required, the console keeps the person on the same durable request and resumes afterward.
Register and configure. Payment confirmation queues registration, DNS, and mail setup. Only the
ready state means inboxes can use the domain.
Purchase limits may constrain budget period, per-purchase amount, domain count, extensions, premium status, and applicability. The most restrictive matching control wins. Plan capacity and purchase authority are separate checks.
Extrovert supports new registrations in this flow. Domain transfers are not supported. Registration fees are non-refundable after a successful purchase, and renewal consent remains separate from the authority to acquire a domain.
Offboarding a domain can affect every inbox on it. Resolve or remove dependent inboxes before starting the teardown job, then poll the returned job id to a terminal state. Cross-project dependencies remain subject to organization and project access checks.