domain-search — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited domain-search (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Brainstorm brandable names, find which domains can really be registered, and screen the shortlist before the user buys.
says "not found"). It can still be premium-priced or reserved; confirm at a registrar.
Never present UNKNOWN as available. Say which names need a manual check.
(free, no key; server https://mcp.instantdomainsearch.com/mcp). Use check_domain_availability (up to 50 full domains per call), search_domains (one name across TLDs) and generate_domain_variations (.com alternatives). Results add what the script cannot: registry premium prices, aftermarket listings with prices (Atom, Afternic, Sedo) and etldCount (how many TLDs already hold the name; high means contested). Its status comes from a daily index, so treat it as a filter, not a verdict.
scripts/check-domains.sh (below). Its answer isthe one to report.
cost; Porkbun is a good second quote. Run the script with --no-cache first.
Without the MCP tools, run step 2 on every candidate and warn that premium and for-sale status is unchecked.
bash scripts/check-domains.sh --tlds com,ai,io acme otherword # names x TLDs
bash scripts/check-domains.sh acme.com acme.ai foo.co # explicit domains
bash scripts/check-domains.sh --json --tlds com,ai acme # adds "source"Output: ✅ AVAILABLE / ❌ taken / ❓ unknown (with the reason). --json returns domain, status, source (rdap, whois or doh), detail and cached. Bare names without --tlds are checked as .com. In zsh, pass names as separate arguments or an array: an unquoted $NAMES is not word-split.
How it decides, per domain, in parallel (Python 3 standard library, no key):
delegation proves nothing, so those names go on to the registry. Local dig is not used; networks that intercept DNS make it wrong.
registries missing from it (.co, .io, .me, .sh). rdap.org is never used: for TLDs it has no server for it answers 404, which the old script reported as AVAILABLE (google.io, google.co and google.me all showed as available).
Rate limits: parallel requests are capped per registry (Verisign 8, Google 4, Identity Digital 1, others 2). A Retry-After up to 30 s is honored; a longer one switches that registry to WHOIS and is remembered across runs so the lockout is not extended. Results are cached for 6 hours in ${XDG_CACHE_HOME:-~/.cache}/domain-search/; --no-cache forces fresh checks and --no-doh skips the DNS step.
positioning, audience and tone.
compounds, verb + suffix (-ly, -ify). Short dictionary words are almost always taken on .com; compounds and coined words are where .com wins are.
what the name evokes, plus price or listing when known.
Default TLDs: .com and .ai; add .io/.dev/.app for developer tools. If the user already owns domains, check whether one fits before suggesting purchases.
For a large brainstorm with several agents:
compound, real word, foreign word, verb + suffix). Lanes make no network calls; each returns a plain list.
Instant Domain Search pass and one script run. Never let each agent run the checker: they share one IP and its rate limits, and parallel runs trip registry lockouts.
quality gate below on its share.
What the evidence says:
domain (or URL path) alone have hardly any effect beyond appearing in breadcrumbs" (SEO Starter Guide). Pick the name for the brand.
.ai, .io, .co and .me as generic, like .com, not as countrytargeting (managing multi-regional sites). .sh is not on that list.
.io has a sovereignty risk: the UK's agreement to transfer the Chagos Islands toMauritius could retire the IO country code, and IANA retires ccTLDs whose code is removed. Retirement comes with years of notice, but prefer another TLD for a brand meant to last.
dictionary word, which competes with the word's meaning and every other user of it.
Check each shortlisted name:
search_trademarks, or USPTO search) and EUIPOTMview in the classes the product uses.
At launch, publish Organization schema with sameAs links to every profile, and use one consistent category sentence ("<Name> is a <category> for <audience>") everywhere.
.ai, .io, .me, .sh and many newgTLDs) locked an IP out of RDAP for about 24 hours after a few quick requests. The script then uses WHOIS, which still answers, but keep batches small and never run checkers in parallel.
search_domains reports false for TLDs itdoes not cover; check_domain_availability reports null there. Confirm with the script.
the registrar's checkout is the final word.
--no-cache right before buying.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.