Prompt: sweep domain expiries and renew what you confirm
Have an agent list every domain on the account that expires within a
window — with its auto-renew flag and the price of extending it — check
the balance, renew only the ones you confirm, set auto-renew the way
you want it, and prove the new expiry dates.
Needs: ird access (MCP server or the ird CLI, logged in; the auto-renew switch is CLI-only)
Costs: the renewal fee per domain (credits_prices → domains.renew.per_year × years); listing and pricing are free; credits_prices lists no fee for the auto-renew switch
Group: domains & dns
Paste everything below the line into a fresh conversation. Fill in the
FILL IN block first.
Task
Report what expires within WINDOW_DAYS, price the renewals, renew the
domains I confirm and set auto-renew per AUTO_RENEW. Nothing is charged
before I confirm the list.
FILL IN
WINDOW_DAYS: 90 # report domains expiring within this many days
YEARS: 1 # years to add per renewal (1-10)
AUTO_RENEW: on # on | off | leave — applied to every domain I confirm
EXCLUDE: old-project.ro # domains I am letting lapse (blank = none)
Non-negotiable rules
- Confirm per domain. Show the candidates with per-domain and
total price and wait; renew only the names I say back, never one in
EXCLUDE.
- Balance first.
credits_balance must cover the total. If not,
say what is missing and propose the subset that fits, ordered by
soonest expiry; renew nothing until I choose.
- One call per domain, once.
renew_domain costs credits. On an
error report it verbatim and do not retry — re-read list_domains;
if the expiry moved, it went through.
- Auto-renew is not a renewal. The switch means "renew
automatically before expiry"; it extends nothing today. A domain
expiring within days still needs
renew_domain now.
- Numbers from the account. Prices from
credits_prices, dates
from list_domains, nothing from memory.
Steps
A. Inventory. list_domains (CLI: ird domains list) → per
domain: domain, state, expires_at, expired, auto_renew,
period_years, nameservers, transferred_in,
ownership_verification_required. Compute days left from today. Show
one table sorted by days left, flagging: within WINDOW_DAYS, already
expired, auto_renew off, in EXCLUDE, state not active.
B. Verification flag. The CLI's ird domains verify-email <domain>
proves control of the registrant email and is "needed for some
changes" — the help does not say which, so treating renewal as one of
them is an inference, not documented; --adopt adopts the email on a
transferred-in domain. If a candidate shows
ownership_verification_required: true, tell me, suggest running it
first, and if renew_domain then refuses for that reason, say so
rather than retrying.
C. Price. credits_prices → domains.renew.per_year × YEARS per
candidate; total; credits_balance; balance after. For a domain whose
auto_renew is already on, note that it will renew by itself before
expiry — renewing it early is still my call. Expired domains: read the
renew_domain description and report what it says before pricing
them; do not assume an expired name can be renewed.
D. Wait for my confirmation.
E. Renew, one domain at a time, in order of soonest expiry:
renew_domain(domain, years=YEARS) (CLI: ird domains renew <domain>
--years N). Read the tool's description before the first call; report
each result before the next one.
F. Auto-renew. Unless AUTO_RENEW is leave:
ird domains auto-renew <domain> on|off for each confirmed domain —
CLI-only, there is no MCP tool for it. If no shell is available, list
the exact commands for me to run.
G. Verify. list_domains again: expires_at advanced by YEARS
for every renewed domain, auto_renew as requested. With the CLI,
ird credits ledger --kind charge --limit 30 should show a charge per
renewal; credits_balance for the final figure. Domains hosted
elsewhere (nameservers not ird's) renew the same way — the registration
and the DNS are independent.
Deliverable
One table: domain, old expiry, new expiry, years added, auto-renew
before and after, credits charged. Then the balance left, the domains
left to lapse (EXCLUDE and unconfirmed) with their dates, and any
domain blocked on registrant-email verification.