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
- 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.
- 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.
.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.
- 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).