Primitive/domain
[ Primitive ]

Introducing /domain: Buy domains and configure DNS programmatically

Register a domain, point DNS, attach to a Company, and provision DKIM/SPF/MX records in one call. Cloudflare-backed, transfer-friendly, and the foundation of every agent's public identity.

Dennis Zax·Published April 16, 2026·4 min read·/domain
TL;DR
  • /domain register, transfer, and configure domains for any Naïve Company in one call
  • Cloudflare-backed DNS propagation in seconds, not hours; full DNSSEC support
  • Email records auto-configured DKIM, SPF, DMARC, MX records published when /email is attached
  • Connect to apps in one call connect_domain_to_app for landing pages, blogs, and storefronts
  • Composes with /llc, /email, /brand the Company's public identity ships from one primitive
  • Transfer-friendly bring an existing domain via standard transfer codes or auth-code-less in-Cloudflare moves

Today we're launching /domain — the primitive that gives a Naïve Company a real internet identity. Register or transfer a domain, configure DNS via Cloudflare, auto-publish email records when /email is attached, and point the domain at landing pages, blogs, or storefronts. The first thing every Company needs after formation.

The problem: DNS is the slowest blocker for autonomous businesses

Every agent-run business needs a domain. The Company's email lives on it. Customers find the brand through it. Partner integrations route through it. And yet: domain configuration is the slowest, most-fragile primitive in the stack.

The status quo:

  • Buy at GoDaddy / Namecheap, manually copy DNS records into a registrar UI — agent-hostile, error-prone, breaks every time the UI changes.
  • Use a registrar API like Cloudflare, Porkbun, or Hover — works, but you're now building DNS configuration, DNSSEC, email-record publishing, and renewal handling yourself.
  • Static DNS hosted on Vercel or Netlify — fast, but no email, no DNSSEC, no transfer story.

The result: most agent-run companies operate with broken email, missing DNSSEC, or a domain that can't be transferred without a week of registrar dance. Until now.

How /domain works

The workflow is three steps:

  1. Registerregister_domain with a name and a Company ID. Naïve registers via Cloudflare and configures DNS by default.
  2. Configure — DKIM, SPF, DMARC, and MX records auto-publish when /email is attached. CNAMEs and apex records auto-publish when connect_domain_to_app is called.
  3. Verifycheck_domain_dns returns propagation status across major resolvers; retry_domain_dns re-runs verification after a delay.

Two ways to register: prompt or code

1. Natural language

naive domains purchase lumenletters.com

The CLI registers the domain at Cloudflare, attaches it to the Company, and publishes DKIM/SPF/DMARC/MX records for the Company's /email sending pool.

2. Code

const res = await fetch("https://api.usenaive.ai/v1/domains/purchase", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.NAIVE_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    domain: "lumenletters.com",
  }),
});
const domain = await res.json();
// domain.id, domain.status, domain.dns_records

DNSSEC is enabled by default. The runtime publishes the DS records to the registrar automatically.

DNS that propagates in seconds

The thing that makes /domain work end-to-end is Cloudflare's authoritative DNS. Anycast routing, sub-second propagation, automatic DNSSEC. When /email attaches a new domain, the records are visible to receiving mail servers within seconds — not the 24-48 hour TTL nightmare you'd get from a typical registrar.

# Connect a domain
naive domains connect lumenletters.com

# Check DNS records
naive domains dns-records <domain_id>

# Verify DNS propagation
naive domains verify <domain_id>

This matters because email reputation accrues per-domain. If you're waiting hours for DNS, you're waiting hours per Employee, per Company. The compounding cost of slow DNS in an agent context is one of the silent killers of deliverability.

Connect a domain to an app in one call

Most Companies want their domain pointed at something — a landing page, a blog, a storefront. connect_domain_to_app configures the apex (or any subdomain) to point at a Naïve-deployed app:

naive domains connect lumenletters.com --app app_landing_v3
# SSL provisioned, redirects configured, www → apex set up.

For external apps (Vercel, Netlify, Cloudflare Pages), Naïve publishes the appropriate CNAME and pre-validates the SSL hand-off so there's no race condition during issuance.

Bring an existing domain

If you already have a domain, transfer it in or just point its nameservers at Cloudflare:

naive domains connect lumenletters.com

For domains already at Cloudflare under a different account, Naïve supports auth-code-less in-Cloudflare moves. For external registrars, the standard ICANN transfer flow applies.

What you can build with /domain

Provision the full identity for a newly-formed Company — Compose /domain with /llc, /email, and /brand so within minutes of forming, the Company has a domain, branded email, and a landing page.

Run a fleet of single-purpose Companies with isolated identities — Each autonomous business has its own domain, its own email reputation, and its own brand. None contaminate the others.

Spin up disposable domains for experiments — Register a .io for a test campaign, attach email, run the experiment, and either keep it or let it lapse. Cheap and fast.

Manage subdomains for content distribution — blog.lumenletters.com for the blog, mail.lumenletters.com for transactional, studio.lumenletters.com for the public app — all configured per-subdomain in the same primitive.

Migrate existing brand domains to agent-runnable infrastructure — Transfer in via auth code; DNS, email, SSL all auto-configure on the Naïve side; the agent can take over comms and distribution from there.

Get started

Frequently Asked Questions
What is /domain?+
/domain is the Naïve primitive that registers, transfers, and configures internet domains for a Company. It handles DNS via Cloudflare, auto-publishes DKIM/SPF/DMARC/MX records when /email is attached, and exposes connect_domain_to_app so a domain points at a Naïve-deployed landing page or storefront.
How does /domain work?+
Call register_domain with a domain name and a Company ID. Naïve registers the domain via the underlying registrar, configures DNS at Cloudflare, and exposes the domain as a runtime object. From there, /email auto-publishes mail records, /brand can use the domain in marketing, and connect_domain_to_app points it at a Naïve-deployed app.
Which registrar does Naïve use?+
Naïve uses Cloudflare Registrar for at-cost domain pricing and Cloudflare DNS for fast propagation and DNSSEC by default. The registrar relationship is yours — you can transfer domains out at any time.
Can I bring an existing domain?+
Yes. Call retry_domain_dns or use the standard transfer flow with an auth code. Naïve takes over DNS at Cloudflare; the registrar relationship can stay where it is. /email and /brand work either way.
How much does /domain cost?+
Domains are at-cost (Cloudflare wholesale pricing) plus a small Naïve management fee. DNS, DKIM/SPF/DMARC publishing, and DNSSEC are included. See the pricing page for current rates.
What about domain transfers and renewals?+
Renewals are auto-billed unless you opt out. Outbound transfers require an auth code (provided by request) and follow standard ICANN procedures. Naïve does not charge transfer-out fees.
How do I get started with /domain?+
Run naive domains search lumenletters.com and then naive domains purchase lumenletters.com — Naïve registers, configures DNS, and binds the domain to the Company. The full quickstart is at usenaive.ai/docs/getting-started/quickstart.
DZ
Dennis ZaxCTO

CTO of Naïve. Building the open-source agent runtime.

@denniszax