check_availability
Checks whether domains can be registered. It is the NameBeta search box as a tool: a full domain such as kettlory.com is checked on its own, and a bare label such as kettlory is expanded across the default TLD set and the domain hacks the search page shows.
Read-only · Open world
Ask your assistant
Paste this into a chat with NameBeta connected:
Which TLDs are still free for brewlab? Of the taken ones, which are for sale?
Your assistant calls check_availability with brewlab, and the answer should mix all three states — the Example shows what the tool returned on 2026-09-29.
Input
| Field | Type | Required | Constraints |
|---|---|---|---|
domains | string[] | Yes | 1–20 items; each 1–253 characters |
Output
Returned as structuredContent, and repeated as JSON in a text content block.
| Field | Type | Required | Constraints |
|---|---|---|---|
results | object[] | Yes | |
results[].domain | string | Yes | |
results[].status | string | Yes | One of available, taken, unknown, forsale, reserved, tld, sld, publicsuffix |
results[].url | string | Yes | Format uri |
Behavior
- Each entry in
domainsis handled separately, and the results are concatenated in input order. - An entry with a dot is checked as one domain and yields one result.
- An entry without a dot is a bare label. It yields one result per default TLD (
.com,.net,.org,.io,.aiand others), followed by domain hacks such aske.tt. One label typically yields 10–20 results. - Characters that cannot appear in a domain name — spaces,
!,_and other punctuation apart from dots and hyphens — are removed before an entry is parsed, and the rest is lower-cased.my startup!is checked as the bare labelmystartup, without an error. Thedomainfield of each result shows what was actually checked. statuscomes from a live DNS delegation check, the same signal as the search box on namebeta.com. One exception: a WHOIS lookup of a domain — throughlookup_whoisor the WHOIS tool on namebeta.com, by any user — records that domain's status for 1 hour, and during that hourcheck_availabilityreturns the recorded status instead of checking again. Uselookup_whoisto confirm before you register.urlopens the domain's page on namebeta.com, with prices and WHOIS.
Status values
status | Meaning |
|---|---|
available | Can be registered now |
taken | Already registered |
forsale | Registered, but listed for sale |
reserved | Held by the registry and not open for normal registration |
unknown | The DNS check got no definite answer, usually a nameserver timeout; retry |
tld | The input is a top-level domain itself, such as com |
sld | The input is a second-level suffix such as co.uk, not a registrable domain |
publicsuffix | The input is on the Public Suffix List and cannot be registered as a domain |
Example
Arguments:
{ "domains": ["brewlab"] }
Result of a call on 2026-09-29, complete:
{
"results": [
{
"domain": "brewlab.com",
"status": "taken",
"url": "https://namebeta.com/search/brewlab.com"
},
{
"domain": "brewlab.net",
"status": "taken",
"url": "https://namebeta.com/search/brewlab.net"
},
{
"domain": "brewlab.org",
"status": "taken",
"url": "https://namebeta.com/search/brewlab.org"
},
{
"domain": "brewlab.info",
"status": "available",
"url": "https://namebeta.com/search/brewlab.info"
},
{
"domain": "brewlab.io",
"status": "taken",
"url": "https://namebeta.com/search/brewlab.io"
},
{
"domain": "brewlab.co",
"status": "forsale",
"url": "https://namebeta.com/search/brewlab.co"
},
{
"domain": "brewlab.xyz",
"status": "forsale",
"url": "https://namebeta.com/search/brewlab.xyz"
},
{
"domain": "brewlab.ai",
"status": "taken",
"url": "https://namebeta.com/search/brewlab.ai"
},
{
"domain": "brewlab.online",
"status": "available",
"url": "https://namebeta.com/search/brewlab.online"
},
{
"domain": "brewlab.dev",
"status": "taken",
"url": "https://namebeta.com/search/brewlab.dev"
},
{
"domain": "brew.la",
"status": "taken",
"url": "https://namebeta.com/search/brew.la"
},
{
"domain": "brw.lb",
"status": "available",
"url": "https://namebeta.com/search/brw.lb"
},
{
"domain": "b.re",
"status": "available",
"url": "https://namebeta.com/search/b.re"
},
{
"domain": "b.rw",
"status": "taken",
"url": "https://namebeta.com/search/b.rw"
}
]
}
The first ten results are the default TLDs, in this order; the last four are domain hacks. Statuses change as domains are registered and dropped, so the same call made later can return a different mix.
Quota
Which bucket a call counts against depends on its input: if any entry in domains is a bare label, the call counts against query, the same bucket as a search on the website; if every entry is a full domain, it counts against check.
| Tool | Bucket | Free (hour / day) | Pro (hour / day) | Business (hour / day) | Enterprise (hour / day) |
|---|---|---|---|---|---|
check_availability with any bare label | query | 90 / 450 | 360 / 1,800 | 600 / 3,000 | Unlimited |
check_availability with full domain names only | check | 45 / 135 | 120 / 360 | 300 / 900 | Unlimited |
To check many specific names cheaply, send them as full domains in one call of up to 20.
Errors
Errors specific to this tool. Errors covers the rest, including how each kind reaches your client.
Malformed entries rarely fail: stray characters are removed first, as described under Behavior.
| Situation | Result |
|---|---|
| An entry is empty once invalid characters are removed, or is a full name with a TLD NameBeta does not know | Tool error Invalid domain format; no results are returned for the call |
| Empty array, or more than 20 entries | Tool error MCP error -32602: Input validation error: … |
See also
suggest_domains: names to checkcompare_prices: prices of the domains that are availablelookup_whois: confirm a status before you register- Tools: all five tools and how they fit together
- Quotas and Errors
- Connect a client, if your assistant does not list NameBeta's tools yet