prompts / bring-domain-dns.md
edit FILL IN & copy this prompt →768 words

Prompt: bring a domain from another registrar onto ird DNS

Have an agent move the DNS hosting of a domain you already own elsewhere (.com, .eu, .dev, anything but .ro) onto ird nameservers without downtime: copy the live records first, hand you the exact nameservers to set at your registrar, then confirm the switch and the seeded zone.

Needs: ird access (MCP server or the ird CLI, logged in); you, at your registrar's control panel, for the nameserver change Costs: the DNS copy (credits_prices → domains.dns-snapshot), then the tiny hourly zone fee (recurring.dns-zone-hourly); the claim itself and record edits are free Group: domains & dns

Paste everything below the line into a fresh conversation. Fill in the FILL IN block first.


Task

Bring the domain below onto ird DNS with its current records intact. The registration stays where it is — ird only hosts the zone.

FILL IN

DOMAIN:      example.com          # the registrable domain (not a subdomain, not .ro)
EXTRA_NAMES: intranet, vpn        # subdomains to copy beyond the common ones (blank = none; at most 38)
CT_SCAN:     no                   # also discover subdomains from certificate logs (slower, priced separately)

Non-negotiable rules

  1. Copy before switching. The record copy must be taken while the domain still resolves at its current host. After the nameservers change, ird refuses to copy (it would read its own servers). So: claim with copy_records=true first, review the seed, and only then tell me to switch.
  2. Never poll dns_claim_verify. It is rate-limited (one per claim per minute, hourly account cap) and ird re-reads every pending claim on its own every few minutes. Call it once after I say the nameservers are set; otherwise read dns_claim_get → last_check.
  3. .ro is different. ird is a .ro registrar: a .ro domain is transferred in (ird domains transfer in <domain>), not claimed. If DOMAIN is .ro, stop and say so.
  4. The nameserver change is mine. You cannot do it. Give me the exact nameservers, copy-pasteable, and wait.

Steps

A. Preflight. dns_claim_list (CLI: ird dns claims list) — if a pending claim for DOMAIN already exists, reuse it (creating again is idempotent). dns_list_zones — if DOMAIN is already hosted, stop: nothing to do.

B. Claim + copy. dns_claim_create(domain=DOMAIN, copy_records=true, names=EXTRA_NAMES, subdomains=CT_SCAN) (CLI: ird dns claims create <DOMAIN> --names …, copying is on by default). Keep from the answer: nameservers (unique to this claim), expires_at (the 7-day window), seed.records, and any seed_error.

C. Review the seed with me. Show seed.records as a table (name, type, values, TTL). The previous host's apex SOA/NS are dropped on purpose — ird publishes its own. Ask me whether any name is missing (mail, verification TXTs, subdomains used by services). To add names, call dns_claim_seed(claim=DOMAIN, names=[...]) — it takes a fresh copy and replaces the seed, so pass every extra name each time. If seed_error came back, retry the seed once and report if it fails again.

D. DS record check. If dns_claim_get shows last_check.ds_present or the registrar has DNSSEC on for DOMAIN, tell me to remove the DS record at the registrar before switching — claimed zones are unsigned and a stale DS breaks resolution.

E. Hand-off. Print, verbatim and alone in a code block, the claim's nameservers and the date the window closes. Tell me: at the registrar, set exactly these nameservers, nothing else, and come back.

F. After I confirm the switch. One dns_claim_verify(claim=DOMAIN). Interpret check.reason — none of these are errors, they are states: not-delegated (registrar change not visible yet — wait, the parent usually updates within an hour, sometimes 24h), partial (check.missing lists the names still to set), delegated-to-ird (ird nameservers but not this claim's — set exactly claim.nameservers), elsewhere (still another provider — check.names shows what the parent says), parent-unreachable (retry later), expired (open a new claim — the copy must be taken again, and only works if the domain still resolves at the old host), activation-refused (report check.message; ird was alerted). Report the state and stop; don't loop. When the claim is active the zone is live.

G. Verify the live zone. dns_get_zone(DOMAIN) and compare with the seed: every seeded record must be there. If a shell is available: dig +short NS DOMAIN from a public resolver must list ird's nameservers, and dig +short A www.DOMAIN @<ird nameserver> must answer what the seed says.

Deliverable

State of the claim (pending with what is left to do, or active), the nameservers I set, the record table now served by ird, and any record that was in the seed but not in the zone (should be none).

static mirror of HEAD · about · clone: git clone https://ird.cod-sursa.ro/prompts.git