2.1.0
Added
- The tool has its own icon, in a dark and a light version. Codex shows it on the plugin card and in the skill list, and the toolkit site shows it on the tool's page and in share previews.
Connect one or more Namecheap accounts once, then run the domains from the agent. List them, see what expires and what will not renew by itself, check the balance, look up nameservers, check whether a name is free, see registration and renewal prices, change nameservers, and edit DNS records for domains that use Namecheap's own DNS — without opening the dashboard. Setup adopts a key the machine already has, and handles Namecheap's address whitelist, including sending requests through an SSH server with a fixed address when the machine's own address keeps changing. Several accounts are kept apart by name. Works on macOS, Windows and Linux.
Once it is installed, that is the whole interface. Your agent picks the skill up on its own and runs whatever it needs to. The commands further down are there for anyone who would rather drive it themselves.
node scripts/setup.mjs add <a-name-for-it>
It prints the steps, including which address to put on the whitelist. Fill in the two lines it names in the credential file, then:
node scripts/setup.mjs verify <a-name-for-it>
/namecheap-ops:namecheap-ops, with the plugin name in front. This has been true since 1.2.0, and this release marks it as breaking. Use the new name, or ask in words, which works as before. A copy in a skills folder keeps the plain name /namecheap-ops.agents/openai.yaml inside the skill folder. Other agents ignore that file.SKILL.md. It tells the agent how to check for a newer version, and to report what changed before it updates.An agent that has this installed reads CHANGELOG.md in the skill folder.
The same history is at changelog.json,
and every tool's releases are at /updates.json.
You do not need to run anything. Once the skill is installed, say what you want in your own words and the agent does it:
"connect my Namecheap account" "which of my domains expire soon, and will they renew on their own?" "is mybrand.com free? what would it cost?" "point example.com at Cloudflare" "where does this domain's DNS actually live?" "add app.example.com pointing at my server"
The agent runs the commands and tells you in plain words what happened. It shows you exactly what will change first, asks before changing it, and always says which account it is working in.
There are two things it cannot do for you, and both are on Namecheap's side: switch API access on, and add an address to Namecheap's whitelist. The agent walks you through both. You also paste the API key into a file yourself, so it never passes through a chat window.
Other providers give you a token. Namecheap gives you an API key, and then refuses every request that does not come from an address on a list you keep in its dashboard. Nothing in the API can edit that list.
That is fine on a fixed connection. On home or mobile internet your address changes, and the list needs editing each time. So the skill has a second route: send the requests through a server you can ssh into. Namecheap then sees the server's address, which never changes, and you edit the list once.
node scripts/setup.mjs add mycompany --relay "-i ~/.ssh/id_ed25519 user@203.0.113.5"
If the key is in a .env file for some script, or in a tool server's configuration, adopt it instead of making another:
node scripts/setup.mjs import # tool configurations; changes nothing
node scripts/setup.mjs import --file ./.env # a file you name; changes nothing
node scripts/setup.mjs import --file ./.env --yes # adopts it
If the old setup was whitelisted for an address other than this machine's, import looks for an SSH server already configured for that address and offers it as the relay. The originals stay where they are and keep working.
Namecheap will not tell you which account a key belongs to, so each one gets a name here, and the name is printed on everything that changes something.
node scripts/setup.mjs add clientname
node scripts/setup.mjs status # every account, and whether Namecheap accepts it from here
node scripts/setup.mjs use clientname # make one the default
node scripts/nc.mjs --account clientname domains # or point a single command elsewhere
With several accounts and no default, commands refuse to run rather than guess.
sh scripts/setup-deps.sh checks and offers to install it (Windows: scripts\setup-deps.ps1).ssh, and a server you can reach without a password prompt.node scripts/nc.mjs whoami # account, route Namecheap sees, balance
node scripts/nc.mjs domains --expiring 90 # what expires soon, and what will not renew
node scripts/nc.mjs domain example.com # one in full
node scripts/nc.mjs check mybrand.com # free or taken
node scripts/nc.mjs price com io # registration and renewal, per year
node scripts/nc.mjs nameservers example.com
node scripts/nc.mjs nameservers-set example.com ns1.host.net ns2.host.net --yes
node scripts/nc.mjs dns example.com # records, when Namecheap holds them
node scripts/nc.mjs dns-add app.example.com A 203.0.113.9 --yes
node scripts/nc.mjs dns-remove app.example.com --type A --yes
dns-add and dns-remove read the list, show you every line that will change, send it all back, and read it again to check.domains flags these.node scripts/nc.mjs call namecheap.domains.getContacts DomainName=example.com
call adds the credentials and address itself and prints the answer. Anything that changes something or spends money waits for --yes. Sending the DNS write command by hand is refused, because it deletes every record it is not given.
It does not register, renew or transfer domains, because those spend money. It cannot edit Namecheap's whitelist. It does not cover Namecheap hosting, email or SSL products.
Run against a live account through a relay: connecting, listing, domain details, nameservers, availability, prices, balance, and the messages for a refused address and a wrong key. The record-editing logic was tested offline, and has not yet been run against a real domain, because the account it was built on keeps all its DNS elsewhere. The nameserver changes have not been run either. Both refuse to act without --yes and the DNS one reads its result back.
references/playbooks.md has the multi-step jobs: what needs attention, moving a domain to Cloudflare safely, pointing a name at a server, and working out why a request was refused.
Built at Itqan Lab, a design and technology studio.
إتقان — itqan, the Arabic word for mastery: doing a thing precisely, and completely.