Domain lifecycle

Tandem is a domain registrar as well as a host, so an agent can take a domain from “does this exist?” all the way to renewal — entirely over MCP. This guide covers the registrar lifecycle: check → purchase → attach → renew / auto-renew / transfer. For editing zone records, see Managing DNS records; for the mechanics of pointing a hostname at a service, see Custom domains and DNS.

Every cost-bearing action here runs through the org’s payment + approval policy and requires the org to pass the deploy gate (billing + recovery verified).

The approval branch

purchase_domain, renew_domain, and transfer_domain all charge money, so each returns one of two shapes:

  • Org owner → runs synchronously (status='registered' / 'renewed' / 'transferring').
  • Non-owner → returns status='awaiting_owner_approval' with an approvalUrl the owner clicks to authorize; the action then completes automatically.

Both branches include costCents + currency so you can surface the price before or after. All three need the manage action.

Check availability

{ "name": "check_domain_availability", "arguments": { "stem": "acme" } }

Pass an explicit hostnames[] (max 30) or a stem to fan out across the default TLD set (com, io, ai, dev, app, co). Read-only — no charge, no order. Returns { results: [{ hostname, available, costCents, currency }] }. Use it to quote a price before purchasing.

Purchase

{ "name": "purchase_domain",
  "arguments": { "organizationId": "…", "hostname": "acme.dev", "serviceId": "…" } }

Registers the domain via the platform registrar and attaches it to the given service. Requires a paid org. purchase_domain only attaches the exact hostname it bought — to attach a subdomain or an already-owned domain, use attach_domain (see below).

Attach an already-owned or external domain

{ "name": "attach_domain", "arguments": { "serviceId": "…", "hostname": "api.acme.dev" } }
  • For a subdomain of an apex the org registered through Tandem (e.g. api.acme.dev when acme.dev is registered), the A record is published automatically on Tandem’s authoritative NS and TLS is issued within minutes.
  • For an external hostname (a customer’s own domain hosted elsewhere), the tool records the domain and returns a DNS instructions block to pass to the user. Needs manage + developer.

Renew

{ "name": "renew_domain", "arguments": { "organizationId": "…", "hostname": "acme.dev" } }

Renews a Tandem-registered domain for one more year. Identify it by domainOrderId (from the portal’s domain list) or hostname. Needs manage + developer.

Auto-renew

{ "name": "set_domain_auto_renew",
  "arguments": { "organizationId": "…", "hostname": "acme.dev", "autoRenew": true } }

Flips automatic renewal on or off. When on, the daily sweep renews before expiry (each renewal still runs through the approval policy — small price drift auto-approves, larger jumps prompt an owner). When off, the domain lapses at expiry unless renewed manually. This only flips the flag — no charge, so no deploy gate applies. Needs manage + developer.

Transfer in

{ "name": "transfer_domain",
  "arguments": { "organizationId": "…", "hostname": "acme.com", "authCode": "…" } }

Transfers a domain registered elsewhere into Tandem, charging one year up front. Provide the EPP/auth code from the current registrar (optionally projectId/serviceId). Owner runs synchronously (status='transferring' with a transferOrderId); non-owner gets the approval branch. Completion at the registry typically takes a few days — poll status in the portal. Needs manage + developer.