Search newly registered, expired, aged, active, deleted and for-sale domains, plus WHOIS and DNS.
io.github.ABTdomain/domainkits-mcp is a Model Context Protocol (MCP) server that searches newly registered, expired, aged, active, deleted, and for-sale domains. It also provides WHOIS and DNS data, connecting AI assistants to live domain registration and related market information via MCP. (32 tools)
Search active gTLD domains from a database of ~240 million registered domains, filtered by keyword, TLD, length, and character set. A market-analysis instrument for keyword distribution and saturation; results are registered domains, not available for registration.
Related: expired, whois, dns.
Parameters12
keyword
string
optional
Brand or industry term (min 2 chars). Omit to use TLD browse mode.
length
string
optional
Domain name length filter
no_hyphen
string
optional
Exclude hyphenated domains (true/false)
no_number
string
optional
Exclude domains containing numbers (true/false)
page
string
optional
Page number for pagination
position
string
optional
Keyword placement in domain name. Default is 'all' (substring match). Unlike the other search tools, this one has no minimum-length restriction on substring matching.
sort
string
optional
Sort order
status
string
optional
Filter by status: 'forsale' for domains listed for sale
tld
string
optional
Filter by TLD (e.g., 'com', 'net', 'org'); when keyword is omitted, this is the browse target
tld_count_max
string
optional
Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min.
tld_count_min
string
optional
Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count.
type
string
optional
Character set filter
Raw schema
{
"type": "object",
"properties": {
"keyword": {
"type": "string",
"description": "Brand or industry term (min 2 chars). Omit to use TLD browse mode."
},
"length": {
"type": "string",
"description": "Domain name length filter",
"enum": [
"<5",
"5-10",
"11-15",
"15+"
]
},
"no_hyphen": {
"type": "string",
"description": "Exclude hyphenated domains (true/false)"
},
"no_number": {
"type": "string",
"description": "Exclude domains containing numbers (true/false)"
},
"page": {
"type": "string",
"description": "Page number for pagination"
},
"position": {
"type": "string",
"description": "Keyword placement in domain name. Default is 'all' (substring match). Unlike the other search tools, this one has no minimum-length restriction on substring matching.",
"enum": [
"start",
"end",
"middle",
"all"
]
},
"sort": {
"type": "string",
"description": "Sort order",
"enum": [
"length_asc",
"length_desc",
"alpha"
]
},
"status": {
"type": "string",
"description": "Filter by status: 'forsale' for domains listed for sale",
"enum": [
"forsale"
]
},
"tld": {
"type": "string",
"description": "Filter by TLD (e.g., 'com', 'net', 'org'); when keyword is omitted, this is the browse target"
},
"tld_count_max": {
"type": "string",
"description": "Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min."
},
"tld_count_min": {
"type": "string",
"description": "Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count."
},
"type": {
"type": "string",
"description": "Character set filter",
"enum": [
"all_alpha",
"all_number"
]
}
},
"additionalProperties": false
}
aged
Search currently registered domains with 5-20+ years of history, filtered by keyword, TLD, age range, length, and sale status. These are live domains owned by someone, not free to register.
Related: expired, whois, dns.
Parameters14
age_range
string
optional
Domain age filter in years
exclude
string
optional
Negative keywords to exclude
has_sale
string
optional
Filter to domains listed for sale by their owner
keyword
string
optional
Search term (min 2 chars). IMPORTANT: 2-character keywords match the START of the name only; 'contain' and 'end' are unavailable at this length and total_found will exclude mid-name matches. Use 3+ characters for true substring matching.
length
string
optional
Domain name length filter
no_hyphen
string
optional
Exclude hyphenated domains
no_number
string
optional
Exclude domains containing numbers
page
string
optional
Page number for pagination
position
string
optional
Keyword placement in domain name. Default is 'all' (substring match). Ignored when keyword is 2 characters (always start).
sort
string
optional
Sort order
tld
string
optional
Filter by TLD (e.g., 'com', 'net', 'org')
tld_count_max
string
optional
Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min.
tld_count_min
string
optional
Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results.
type
string
optional
Character set filter
Raw schema
{
"type": "object",
"properties": {
"age_range": {
"type": "string",
"description": "Domain age filter in years",
"enum": [
"5-10",
"10-15",
"15-20",
"20+",
"5-10,10-15",
"10-15,15-20",
"15-20,20+"
]
},
"exclude": {
"type": "string",
"description": "Negative keywords to exclude"
},
"has_sale": {
"type": "string",
"description": "Filter to domains listed for sale by their owner",
"enum": [
"true",
"false"
]
},
"keyword": {
"type": "string",
"description": "Search term (min 2 chars). IMPORTANT: 2-character keywords match the START of the name only; 'contain' and 'end' are unavailable at this length and total_found will exclude mid-name matches. Use 3+ characters for true substring matching."
},
"length": {
"type": "string",
"description": "Domain name length filter",
"enum": [
"<5",
"5-10",
"10-15",
"15+"
]
},
"no_hyphen": {
"type": "string",
"description": "Exclude hyphenated domains"
},
"no_number": {
"type": "string",
"description": "Exclude domains containing numbers"
},
"page": {
"type": "string",
"description": "Page number for pagination"
},
"position": {
"type": "string",
"description": "Keyword placement in domain name. Default is 'all' (substring match). Ignored when keyword is 2 characters (always start).",
"enum": [
"start",
"end",
"middle",
"all"
]
},
"sort": {
"type": "string",
"description": "Sort order",
"enum": [
"age_desc",
"age_asc",
"length_asc",
"length_desc",
"reg_date_asc",
"reg_date_desc",
"alpha",
"tld_counter_asc",
"tld_counter_desc"
]
},
"tld": {
"type": "string",
"description": "Filter by TLD (e.g., 'com', 'net', 'org')"
},
"tld_count_max": {
"type": "string",
"description": "Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min."
},
"tld_count_min": {
"type": "string",
"description": "Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results."
},
"type": {
"type": "string",
"description": "Character set filter",
"enum": [
"all_alpha",
"all_number"
]
}
},
"additionalProperties": false
}
available
Confirm a single domain's registrability and price. The definitive availability check for one domain.
Related: bulk_available, whois, monitor.
Return a domain's backlink profile: domain rank, total backlinks, referring domains, spam score, and link distribution.
Related: whois, safety.
Parameters1
domain
string
required
Domain name (no protocol or path)
Raw schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Domain name (no protocol or path)"
}
},
"required": [
"domain"
],
"additionalProperties": false
}
bulk_available
Return the upstream Availability service's point-in-time status for up to 50 domains. available is an affirmative registrability result; registered is already registered; expiring is in an expiry-related lifecycle and is not directly registrable; reserved is registry-reserved; unknown means no verification path produced a reliable conclusion. MCP does not infer availability from failures and removes affiliate fields from the upstream response.
Parameters1
domains
string
required
Comma-separated fully qualified domain names, maximum 50.
Check registration status of one keyword across many TLDs at once, returning which TLDs are taken, available, or listed for sale.
Related: tld_check, available.
Search domains that have completed the deletion cycle and are open for immediate registration at standard cost, filtered by keyword, TLD, age range, length, and character set.
Related: available, bulk_available, whois.
Parameters14
age_range
string
optional
Historical age before deletion
exclude
string
optional
Negative keywords to exclude
hold
string
optional
Registry hold status — no_hold = immediately registrable
keyword
string
required
Search term (min 2 chars). IMPORTANT: 2-character keywords match the START of the name only; 'contain' and 'end' are unavailable at this length and total_found will exclude mid-name matches. Use 3+ characters for true substring matching.
length
string
optional
Domain name length filter
no_hyphen
string
optional
Exclude hyphenated domains
no_number
string
optional
Exclude domains containing numbers
page
string
optional
Page number for pagination
position
string
optional
Keyword placement in domain name. Default is 'all' (substring match). Ignored when keyword is 2 characters (always start).
sort
string
optional
Sort order
tld
string
optional
Filter by TLD (e.g., 'com', 'net', 'org')
tld_count_max
string
optional
Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min.
tld_count_min
string
optional
Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results.
type
string
optional
Character set filter
Raw schema
{
"type": "object",
"properties": {
"age_range": {
"type": "string",
"description": "Historical age before deletion",
"enum": [
"0-5",
"5-10",
"10-20",
"20+",
"10-20,20+"
]
},
"exclude": {
"type": "string",
"description": "Negative keywords to exclude"
},
"hold": {
"type": "string",
"description": "Registry hold status — no_hold = immediately registrable",
"enum": [
"no_hold",
"has_hold"
]
},
"keyword": {
"type": "string",
"description": "Search term (min 2 chars). IMPORTANT: 2-character keywords match the START of the name only; 'contain' and 'end' are unavailable at this length and total_found will exclude mid-name matches. Use 3+ characters for true substring matching."
},
"length": {
"type": "string",
"description": "Domain name length filter",
"enum": [
"<5",
"5-10",
"10-15",
"15+"
]
},
"no_hyphen": {
"type": "string",
"description": "Exclude hyphenated domains"
},
"no_number": {
"type": "string",
"description": "Exclude domains containing numbers"
},
"page": {
"type": "string",
"description": "Page number for pagination"
},
"position": {
"type": "string",
"description": "Keyword placement in domain name. Default is 'all' (substring match). Ignored when keyword is 2 characters (always start).",
"enum": [
"start",
"end",
"middle",
"all"
]
},
"sort": {
"type": "string",
"description": "Sort order",
"enum": [
"age_desc",
"age_asc",
"length_asc",
"length_desc",
"tld_counter_asc",
"tld_counter_desc"
]
},
"tld": {
"type": "string",
"description": "Filter by TLD (e.g., 'com', 'net', 'org')"
},
"tld_count_max": {
"type": "string",
"description": "Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min."
},
"tld_count_min": {
"type": "string",
"description": "Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results."
},
"type": {
"type": "string",
"description": "Character set filter",
"enum": [
"all_alpha",
"all_number"
]
}
},
"required": [
"keyword"
],
"additionalProperties": false
}
dns
Resolve a domain's DNS records, including nameservers and hosting-related records.
Related: whois, ns_reverse.
List registration and status changes to premium .com domains (short 1-4 letter and high-value single-word names) over a rolling 7-day window, filtered by change reason and length.
Related: whois, ns_reverse.
Parameters7
has_digit
string
optional
false = letters only (default), true = contains digits, all = digits only
keyword
string
optional
Search by domain or keyword within the monitored pool
Explain domain EPP status codes: what a code means, why it is set, how serious it is, and what the holder can do. Matches on the code, its aliases, or a category name; call with no query to list every code. Use this to interpret the status field returned by whois instead of relying on recall.
Related: whois, expired, monitor.
Parameters1
query
string
optional
Status code, alias, or category (e.g. 'clientHold', 'redemption period', 'Grace Period'). Omit to list every code
Raw schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Status code, alias, or category (e.g. 'clientHold', 'redemption period', 'Grace Period'). Omit to list every code"
}
},
"additionalProperties": false
}
expired
Search domains in the deletion cycle: expired, in redemption, or pending delete. Still held by the current registrant, with time-sensitive acquisition windows. Filter by lifecycle status, TLD, age range, drop date, length, and character set.
Related: monitor, deleted, whois.
Parameters15
age_range
string
optional
Historical age of the domain
exclude
string
optional
Negative keywords to exclude
hold
string
optional
Registry hold status
keyword
string
optional
Search term (min 2 chars). IMPORTANT: 2-character keywords match the START of the name only; 'contain' and 'end' are unavailable at this length and total_found will exclude mid-name matches. Use 3+ characters for true substring matching.
length
string
optional
Domain name length filter
no_hyphen
string
optional
Exclude hyphenated domains
no_number
string
optional
Exclude domains containing numbers
page
string
optional
Page number for pagination
position
string
optional
Keyword placement in domain name. Default is 'all' (substring match). Ignored when keyword is 2 characters (always start).
sort
string
optional
Sort order
status
string
optional
expired = in registrar auction, redemption = owner can reclaim, pending_delete = drops in 1-5 days
tld
string
optional
Filter by TLD (e.g., 'com', 'net', 'org')
tld_count_max
string
optional
Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min.
tld_count_min
string
optional
Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results.
type
string
optional
Character set filter
Raw schema
{
"type": "object",
"properties": {
"age_range": {
"type": "string",
"description": "Historical age of the domain",
"enum": [
"0-5",
"5-10",
"10-20",
"20+",
"5-10,10-15",
"10-20,20+"
]
},
"exclude": {
"type": "string",
"description": "Negative keywords to exclude"
},
"hold": {
"type": "string",
"description": "Registry hold status",
"enum": [
"no_hold",
"has_hold"
]
},
"keyword": {
"type": "string",
"description": "Search term (min 2 chars). IMPORTANT: 2-character keywords match the START of the name only; 'contain' and 'end' are unavailable at this length and total_found will exclude mid-name matches. Use 3+ characters for true substring matching."
},
"length": {
"type": "string",
"description": "Domain name length filter",
"enum": [
"<5",
"5-10",
"10-15",
"15+"
]
},
"no_hyphen": {
"type": "string",
"description": "Exclude hyphenated domains"
},
"no_number": {
"type": "string",
"description": "Exclude domains containing numbers"
},
"page": {
"type": "string",
"description": "Page number for pagination"
},
"position": {
"type": "string",
"description": "Keyword placement in domain name. Default is 'all' (substring match). Ignored when keyword is 2 characters (always start).",
"enum": [
"start",
"end",
"middle",
"all"
]
},
"sort": {
"type": "string",
"description": "Sort order",
"enum": [
"age_desc",
"age_asc",
"length_asc",
"length_desc"
]
},
"status": {
"type": "string",
"description": "expired = in registrar auction, redemption = owner can reclaim, pending_delete = drops in 1-5 days",
"enum": [
"pending_delete",
"redemption",
"expired"
]
},
"tld": {
"type": "string",
"description": "Filter by TLD (e.g., 'com', 'net', 'org')"
},
"tld_count_max": {
"type": "string",
"description": "Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min."
},
"tld_count_min": {
"type": "string",
"description": "Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results."
},
"type": {
"type": "string",
"description": "Character set filter",
"enum": [
"all_alpha",
"all_number"
]
}
},
"additionalProperties": false
}
ip_lookup
Resolve an IP address or domain name to its network operator and approximate location: ASN, organization, country, region, city, coordinates, and timezone. Domains are resolved to their first IPv4 address before lookup. Location is IP-level and approximate; it is not the address of the site owner.
Related: dns, whois, ns_reverse.
Parameters1
query
string
required
IP address or domain name. Scheme, port, path, and a leading www. are stripped automatically
Raw schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "IP address or domain name. Scheme, port, path, and a leading www. are stripped automatically"
}
},
"required": [
"query"
],
"additionalProperties": false
}
keyword_data
Return search-volume, CPC, and competition data for a keyword.
Related: keywords_trends.
Return provider-computed keyword registration statistics. hot and emerging cover rolling keyword cohorts; prefix returns prefix activity buckets. scope=all represents the provider's filtered all-gTLD sample, while scope=com represents its pure-letter .com subset and is not available for prefix. Results are representative samples, not a complete registry feed, demand measurement, valuation, or investment recommendation.
Parameters2
scope
string
optional
all = filtered all-gTLD sample; com = pure-letter .com subset. prefix supports all only.
Search currently registered domains that carry marketplace listing data, filtered by keyword, TLD, listing status, length, and character set. Results are live domains owned by someone.
Related: keyword_data, tld_check.
Parameters13
exclude
string
optional
Negative keywords to exclude
keyword
string
optional
Brand or industry term (min 2 chars). IMPORTANT: 2-character keywords match the START of the name only; 'contain' and 'end' are unavailable at this length and total_found will exclude mid-name matches. Use 3+ characters for true substring matching.
length
string
optional
Domain name length filter
no_hyphen
string
optional
Exclude hyphenated domains (true/false)
no_number
string
optional
Exclude domains containing numbers (true/false)
page
string
optional
Page number for pagination
position
string
optional
Keyword placement in domain name. Default is 'all' (substring match). Ignored when keyword is 2 characters (always start).
sort
string
optional
Sort order
status
string
optional
Filter by status: 'forsale' for domains listed for sale
tld
string
optional
Filter by TLD (e.g., 'com', 'net', 'org'). Provide WITHOUT keyword to enter TLD browse mode (gTLDs only)
tld_count_max
string
optional
Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min.
tld_count_min
string
optional
Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results.
type
string
optional
Character set filter
Raw schema
{
"type": "object",
"properties": {
"exclude": {
"type": "string",
"description": "Negative keywords to exclude"
},
"keyword": {
"type": "string",
"description": "Brand or industry term (min 2 chars). IMPORTANT: 2-character keywords match the START of the name only; 'contain' and 'end' are unavailable at this length and total_found will exclude mid-name matches. Use 3+ characters for true substring matching."
},
"length": {
"type": "string",
"description": "Domain name length filter",
"enum": [
"<5",
"5-10",
"10-15",
"15+"
]
},
"no_hyphen": {
"type": "string",
"description": "Exclude hyphenated domains (true/false)"
},
"no_number": {
"type": "string",
"description": "Exclude domains containing numbers (true/false)"
},
"page": {
"type": "string",
"description": "Page number for pagination"
},
"position": {
"type": "string",
"description": "Keyword placement in domain name. Default is 'all' (substring match). Ignored when keyword is 2 characters (always start).",
"enum": [
"start",
"end",
"middle",
"all"
]
},
"sort": {
"type": "string",
"description": "Sort order",
"enum": [
"length_asc",
"length_desc",
"alpha",
"tld_counter_asc",
"tld_counter_desc"
]
},
"status": {
"type": "string",
"description": "Filter by status: 'forsale' for domains listed for sale",
"enum": [
"forsale"
]
},
"tld": {
"type": "string",
"description": "Filter by TLD (e.g., 'com', 'net', 'org'). Provide WITHOUT keyword to enter TLD browse mode (gTLDs only)"
},
"tld_count_max": {
"type": "string",
"description": "Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min."
},
"tld_count_min": {
"type": "string",
"description": "Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results."
},
"type": {
"type": "string",
"description": "Character set filter",
"enum": [
"all_alpha",
"all_number"
]
}
},
"additionalProperties": false
}
market_price
Check Sedo aftermarket listing price for a domain. Returns status (for_sale, make_offer, or not_found) and listing price when available. Data source is Sedo only; other marketplaces (Afternic, Dan, etc.) are not covered.
Related: available, aged.
Manage cross-platform domain monitoring tasks that track changes in WHOIS, DNS, and host-supplied page content. Data is encrypted at rest (AES-256-GCM) in a private per-user directory.
Actions:
- get: retrieve monitors and check eligible WHOIS/DNS targets, returning current and previous data with change flags.
- set: create a monitor, subject to the account tier's maximum.
- update: save host-supplied page, WHOIS, or DNS state for a monitor.
- delete: remove a monitor.
- history: list the changes actually observed over time, optionally for one domain. get compares against the previous check only; history answers when a domain changed and what it changed from.
Requires a registered account with memory enabled.
Parameters9
action
string
optional
'get', 'set', 'update', 'delete', or 'history'. Defaults to 'get' if not specified.
days
string
optional
history only: how far back to look, in days. Default 30, maximum 365.
dns
string
optional
DNS result, backward compatibility (update only)
domain
string
optional
Domain to monitor (set; also optional on history to filter to one domain)
id
string
optional
Monitor task ID (update and delete)
note
string
optional
What to watch for — user's intent in natural language (set only)
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "'get', 'set', 'update', 'delete', or 'history'. Defaults to 'get' if not specified."
},
"days": {
"type": "string",
"description": "history only: how far back to look, in days. Default 30, maximum 365."
},
"dns": {
"type": "string",
"description": "DNS result, backward compatibility (update only)"
},
"domain": {
"type": "string",
"description": "Domain to monitor (set; also optional on history to filter to one domain)"
},
"id": {
"type": "string",
"description": "Monitor task ID (update and delete)"
},
"note": {
"type": "string",
"description": "What to watch for — user's intent in natural language (set only)"
},
"page": {
"type": "string",
"description": "Page content summary from web_fetch (update only)"
},
"tools": {
"type": "string",
"description": "Comma-separated: whois, dns, web_fetch. Default: whois,dns (set only)"
},
"whois": {
"type": "string",
"description": "WHOIS result, backward compatibility (update only)"
}
},
"additionalProperties": false
}
nrds
Search newly registered domains from the last 60 days by keyword, or browse a single TLD without a keyword. Filter by recency, registration term, length, character set, and sale status; returns the cross-TLD count for each name. New registrations are folded in continuously, typically 15 to 20 minutes after registration. Two coverage limits worth knowing: dates here are day-level, not clock times, and the 60-day history is gTLD-based, so country-code TLDs such as .ai and .io are present only for the last few days. When you need the exact registration time, the name split into words, or full country-code coverage, use nrds_live, which holds the last three days.
Related tools: nrds_live, whois, dns, ns_reverse, typosquat
Parameters15
days_range
string
optional
Registration recency
exclude
string
optional
Negative keywords to exclude
has_sale
string
optional
Filter to domains listed for sale
keyword
string
optional
Search term (min 2 chars). Substring matching applies at every length, including 2-character terms.
length
string
optional
Domain name length filter
no_hyphen
string
optional
Exclude hyphenated domains
no_number
string
optional
Exclude domains containing numbers
page
string
optional
Page number for pagination
period
string
optional
Registration term length in years
position
string
optional
Keyword placement in domain name. Default is 'all' (substring match).
sort
string
optional
Sort order
tld
string
optional
Filter by TLD (e.g., 'com', 'ai', 'io')
tld_count_max
string
optional
Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min.
tld_count_min
string
optional
Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results. Domains first seen only hours ago (live rows) carry a count of 1.
type
string
optional
Character set filter
Raw schema
{
"type": "object",
"properties": {
"days_range": {
"type": "string",
"description": "Registration recency",
"enum": [
"0-10",
"10-20",
"20+"
]
},
"exclude": {
"type": "string",
"description": "Negative keywords to exclude"
},
"has_sale": {
"type": "string",
"description": "Filter to domains listed for sale",
"enum": [
"true",
"false"
]
},
"keyword": {
"type": "string",
"description": "Search term (min 2 chars). Substring matching applies at every length, including 2-character terms."
},
"length": {
"type": "string",
"description": "Domain name length filter",
"enum": [
"<5",
"5-10",
"10-15",
"15+"
]
},
"no_hyphen": {
"type": "string",
"description": "Exclude hyphenated domains"
},
"no_number": {
"type": "string",
"description": "Exclude domains containing numbers"
},
"page": {
"type": "string",
"description": "Page number for pagination"
},
"period": {
"type": "string",
"description": "Registration term length in years",
"enum": [
"1",
"2-5",
"6+"
]
},
"position": {
"type": "string",
"description": "Keyword placement in domain name. Default is 'all' (substring match).",
"enum": [
"start",
"end",
"middle",
"all"
]
},
"sort": {
"type": "string",
"description": "Sort order",
"enum": [
"reg_date_desc",
"reg_date_asc",
"length_asc",
"length_desc",
"period_asc",
"period_desc",
"tld_counter_asc",
"tld_counter_desc",
"alpha"
]
},
"tld": {
"type": "string",
"description": "Filter by TLD (e.g., 'com', 'ai', 'io')"
},
"tld_count_max": {
"type": "string",
"description": "Maximum cross-TLD registration count for the name. Integer 0-10000. See tld_count_min."
},
"tld_count_min": {
"type": "string",
"description": "Minimum cross-TLD registration count for the name. Integer 0-10000. Combine with tld_count_max for a range; set both equal for an exact count. Matches the prefix_tld_count field in results. Domains first seen only hours ago (live rows) carry a count of 1."
},
"type": {
"type": "string",
"description": "Character set filter",
"enum": [
"all_alpha",
"all_number"
]
}
},
"additionalProperties": false
}
nrds_live
Search domains registered in the last three days from a live feed covering all TLDs, including country-code ones such as .ai and .io. Returns exact registration and expiry timestamps plus the name split into words; names usually appear within minutes of registration. Use nrds instead for history beyond three days, for registration-term or for-sale filters, for the cross-TLD count, or for deeper paging. nrds carries most of the same recent names, but with day-level dates and a 60-day history that is gTLD-based.
Related tools: nrds, whois, dns, typosquat
Parameters10
exclude
string
optional
Negative keywords to exclude, comma-separated
keyword
string
optional
Search term, 2-64 characters, letters/digits/hyphens only. Matches anywhere in the name unless position is set.
length
string
optional
Domain name length filter
no_hyphen
string
optional
Exclude hyphenated domains
no_number
string
optional
Exclude domains containing numbers
page
string
optional
Page number for pagination. The live feed pages through the first 10000 matches; narrow the filters to reach beyond that.
position
string
optional
Keyword placement in domain name. Default is 'all' (substring match). Requires keyword.
sort
string
optional
Sort order. Default is reg_date_desc (most recent first).
tld
string
optional
Filter by a single TLD (e.g., 'com', 'ai', 'io'). One TLD per call; omit to cover all TLDs.
type
string
optional
Character set filter
Raw schema
{
"type": "object",
"properties": {
"exclude": {
"type": "string",
"description": "Negative keywords to exclude, comma-separated"
},
"keyword": {
"type": "string",
"description": "Search term, 2-64 characters, letters/digits/hyphens only. Matches anywhere in the name unless position is set."
},
"length": {
"type": "string",
"description": "Domain name length filter",
"enum": [
"<5",
"5-10",
"10-15",
"15+"
]
},
"no_hyphen": {
"type": "string",
"description": "Exclude hyphenated domains"
},
"no_number": {
"type": "string",
"description": "Exclude domains containing numbers"
},
"page": {
"type": "string",
"description": "Page number for pagination. The live feed pages through the first 10000 matches; narrow the filters to reach beyond that."
},
"position": {
"type": "string",
"description": "Keyword placement in domain name. Default is 'all' (substring match). Requires keyword.",
"enum": [
"start",
"end",
"middle",
"all"
]
},
"sort": {
"type": "string",
"description": "Sort order. Default is reg_date_desc (most recent first).",
"enum": [
"reg_date_desc",
"reg_date_asc",
"length_asc",
"length_desc",
"alpha"
]
},
"tld": {
"type": "string",
"description": "Filter by a single TLD (e.g., 'com', 'ai', 'io'). One TLD per call; omit to cover all TLDs."
},
"type": {
"type": "string",
"description": "Character set filter",
"enum": [
"all_alpha",
"all_number"
]
}
},
"additionalProperties": false
}
ns_reverse
Reverse NS lookup: find all gTLD domains hosted on a specific nameserver, filtered by TLD and keyword.
Related: whois, dns.
Manage user preferences and memory settings. Data is encrypted at rest (AES-256-GCM) in isolated per-user directories.
Actions:
- get: report whether memory is enabled and return saved preferences.
- set: save preferences; memory_enabled must be true before any preferences, monitors, or strategies can be stored, and requires explicit user consent.
- delete: permanently erase all stored user data (GDPR Article 17).
Related: monitor, strategy.
Parameters8
action
string
optional
'get', 'set', or 'delete'. Defaults to 'get' if not specified.
budget
string
optional
'low', 'medium', 'high' (set only)
exclude_hyphens
string
optional
'true' or 'false' (set only)
exclude_numbers
string
optional
'true' or 'false' (set only)
industry
string
optional
Industry type (set only)
memory_enabled
string
optional
'true' to enable memory, 'false' to disable. Must be enabled before using monitors or strategies. (set only)
preferred_tlds
string
optional
Comma-separated TLDs, e.g. 'com,net,io' (set only)
style
string
optional
'short', 'brandable', 'keyword' (set only)
Raw schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "'get', 'set', or 'delete'. Defaults to 'get' if not specified."
},
"budget": {
"type": "string",
"description": "'low', 'medium', 'high' (set only)"
},
"exclude_hyphens": {
"type": "string",
"description": "'true' or 'false' (set only)"
},
"exclude_numbers": {
"type": "string",
"description": "'true' or 'false' (set only)"
},
"industry": {
"type": "string",
"description": "Industry type (set only)"
},
"memory_enabled": {
"type": "string",
"description": "'true' to enable memory, 'false' to disable. Must be enabled before using monitors or strategies. (set only)"
},
"preferred_tlds": {
"type": "string",
"description": "Comma-separated TLDs, e.g. 'com,net,io' (set only)"
},
"style": {
"type": "string",
"description": "'short', 'brandable', 'keyword' (set only)"
}
},
"additionalProperties": false
}
price
Return standard registration and renewal price for a TLD.
Related: available.
Parameters1
tld
string
required
TLD to query, comma-separated for multiple (e.g., 'com', 'com,io,ai')
Look up ICANN-accredited registrars by name, alias, or IANA ID. Returns accreditation status, RDAP endpoint, business contact details, a drop-catch flag, and the parent entity for reseller shells. Around 60 percent of accredited registrars are shells operated by a handful of parents, so parent_id is what tells you who actually runs a name.
Related: whois, available, expired.
Parameters2
page
string
optional
Page number for pagination
query
string
required
Registrar name, alias, or IANA ID (e.g. 'namecheap', 'gname', '1441')
Raw schema
{
"type": "object",
"properties": {
"page": {
"type": "string",
"description": "Page number for pagination"
},
"query": {
"type": "string",
"description": "Registrar name, alias, or IANA ID (e.g. 'namecheap', 'gname', '1441')"
}
},
"required": [
"query"
],
"additionalProperties": false
}
safety
Return Google Safe Browsing status for a domain.
Related: whois, backlink_summary.
Store user-authored strategy text, execution timestamps, and the most recent result in encrypted per-user storage. This tool does not provide presets, define opportunities, choose domains, or execute a workflow. Requires a registered account with memory enabled.
Parameters5
action
string
optional
get, set, update, or delete. Defaults to get.
id
string
optional
Saved strategy ID for update or delete.
name
string
optional
Optional user-defined name for set.
result
string
optional
Latest user- or host-supplied result summary for update.
strategy
string
optional
User-authored text, maximum 500 characters, for set.
Raw schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "get, set, update, or delete. Defaults to get.",
"enum": [
"get",
"set",
"update",
"delete"
]
},
"id": {
"type": "string",
"description": "Saved strategy ID for update or delete."
},
"name": {
"type": "string",
"description": "Optional user-defined name for set."
},
"result": {
"type": "string",
"description": "Latest user- or host-supplied result summary for update."
},
"strategy": {
"type": "string",
"description": "User-authored text, maximum 500 characters, for set."
}
},
"additionalProperties": false
}
tld_check
Check how a prefix is registered across core TLDs, returning per-TLD status and aggregate counts.
Related: bulk_tld, available.
Rank TLDs by registration volume and related metrics over a chosen period.
Related: tld_trends.
Parameters2
limit
string
optional
Number of results (default 20, max 100)
type
string
optional
Ranking type: 'newly' for today's new registrations, 'active' for total active domains
Raw schema
{
"type": "object",
"properties": {
"limit": {
"type": "string",
"description": "Number of results (default 20, max 100)"
},
"type": {
"type": "string",
"description": "Ranking type: 'newly' for today's new registrations, 'active' for total active domains",
"enum": [
"newly",
"active"
]
}
},
"additionalProperties": false
}
tld_trends
Return registration trend data for a TLD over time, or compare multiple TLDs, in active-total or newly-registered mode.
Related: tld_rank, keywords_trends.
Parameters5
action
string
optional
'data' for single TLD deep-dive, 'compare' for multi-TLD comparison
days
string
optional
Time horizon
tld
string
optional
Single TLD for 'data' mode, gTLDs only (e.g., 'com', 'xyz'). Country-code TLDs are not covered and return an error.
tlds
string
optional
Comma-separated TLDs for 'compare' mode (max 5, gTLDs only, e.g. 'xyz,online,shop,store'). Country-code TLDs such as io, ai, co are not covered by this dataset.
type
string
optional
'newly' for daily new registrations, 'active' for total active domains
Raw schema
{
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "'data' for single TLD deep-dive, 'compare' for multi-TLD comparison",
"enum": [
"data",
"compare"
]
},
"days": {
"type": "string",
"description": "Time horizon",
"enum": [
"7",
"14",
"30",
"60",
"90",
"180"
]
},
"tld": {
"type": "string",
"description": "Single TLD for 'data' mode, gTLDs only (e.g., 'com', 'xyz'). Country-code TLDs are not covered and return an error."
},
"tlds": {
"type": "string",
"description": "Comma-separated TLDs for 'compare' mode (max 5, gTLDs only, e.g. 'xyz,online,shop,store'). Country-code TLDs such as io, ai, co are not covered by this dataset."
},
"type": {
"type": "string",
"description": "'newly' for daily new registrations, 'active' for total active domains",
"enum": [
"active",
"newly"
]
}
},
"additionalProperties": false
}
typosquat
Generate typosquat permutations for a domain and check which variants are registered. Produces omission, transposition, keyboard-adjacent replacement, insertion, repetition, hyphenation, vowel-swap, homoglyph, plural/singular, and TLD-swap variants. Each result includes the variant domain, mutation type, prefix TLD count (how many TLDs the prefix is registered under), and registration date if known.
Use for brand protection, phishing detection, and defensive registration planning.
Related tools: nrds, ns_reverse, dns, whois, safety.
Search unregistered short .ai domains by pattern (CVCV, CVCC, and other 3-4 letter shapes) that are still available for registration.
Related: available, bulk_available.
Parameters8
exclude
string
optional
Exclude characters (comma-separated)
keyword
string
optional
Filter by characters in prefix
no_hyphen
string
optional
Exclude hyphens
no_number
string
optional
Exclude numbers
page
integer
optional
Page number, 10 results per page. Page depth depends on your plan.
Domain data server for AI assistants. DomainKits MCP connects Claude, GPT, Gemini, and other AI assistants to live domain registration, DNS, availability, trend, and market data through the Model Context Protocol.
This is the official MCP server for the DomainKits API, published and maintained by the DomainKits team. DomainKits is built and operated by Lyalpha GmbH, with domain data and infrastructure provided by ABTdomain, our domain intelligence and data aggregation platform. This repository is hosted under the ABTdomain GitHub organisation. Learn more about the relationship at domainkits.com/about.
MCP is the data layer. For domain industry workflows (naming consultation, brand protection, domain analysis, valuation, keyword intelligence, and more), see DomainKits Skills, an open-source collection of workflow prompts that any AI assistant can use on top of this data.
Tools
Search
Tool
Description
nrds
Newly registered domains by keyword, or browse a gTLD
nrds_live
Live feed of domains registered in the last three days, updated continuously
aged
Established domains with registration history by keyword, or browse a gTLD
expired
Domains entering the deletion cycle by keyword, or browse a gTLD
deleted
Just-dropped domains available for standard registration
active
Live registered domains
market
Domains carrying marketplace listing data by keyword, or browse a gTLD
ns_reverse
Reverse lookup by nameserver
unregistered_ai
Unregistered short .ai domains (3-4 letter, pattern-based)
domain_changes
Registration and status changes to premium .com names over the last 7 days
typosquat
Typosquat scanner (dnstwist-style permutations) with live registration verification
Lookup
Tool
Description
dns
DNS records (A, AAAA, MX, NS, TXT, SOA)
whois
WHOIS/RDAP registration data (registrar, dates, status, nameservers)
safety
Google Safe Browsing status
available
Single-domain availability with pricing
ip_lookup
Resolve an IP or hostname to its network operator and approximate location
registrar
Look up ICANN-accredited registrars by name, alias or IANA ID
epp_status
Explain a domain EPP status code and what the holder can do about it
tld_check
Prefix registration status across core TLDs, with aggregate counts
keyword_data
Google Ads keyword data (volume, CPC, competition)
price
Standard registration and renewal prices by TLD
market_price
Secondary market listing prices
backlink_summary
SEO backlink profile
Trends
Tool
Description
keywords_trends
Hot, emerging, and prefix keywords in domain registrations
tld_trends
Historical registration trends by TLD
tld_rank
TLD rankings by registration volume
Bulk
Tool
Description
bulk_tld
Registration status of one keyword across many TLDs
bulk_available
Batch availability check (up to 50 domains)
Stateful (memory-backed)
Tool
Action
Description
preferences
get
Check memory status and saved preferences
preferences
set
Save preferences (TLDs, budget, style, industry)
preferences
delete
Delete all stored data (GDPR Article 17)
monitor
get
Retrieve and check all monitored domains
monitor
set
Create a monitoring task (WHOIS, DNS, page changes)
monitor
update
Save check results for a monitor
monitor
delete
Remove a monitoring task
monitor
history
Change history for monitored domains (filter by domain, up to 365 days)
strategy
get
Retrieve saved strategies with run status
strategy
set
Store user-authored strategy text
strategy
update
Save strategy execution results
strategy
delete
Remove a strategy
usage
Current tier, per-group usage, and remaining quota
Stateful data is server-side and cross-platform: preferences, monitors, and strategies persist across Claude, Gemini, Cursor, and any other MCP client under the same account. All data encrypted at rest (AES-256-GCM) in isolated per-user directories.
Quick Start
Endpoint: https://api.domainkits.com/v1/mcp (optional header X-API-Key for account limits)
Claude Code: claude mcp add --transport http domainkits https://api.domainkits.com/v1/mcp
Setup for Claude.ai, Claude Desktop, Gemini CLI, Cursor: domainkits.com/mcp
Skills
DomainKits MCP serves raw data. DomainKits Skills are open-source workflow prompts that teach AI assistants how to use that data for domain industry tasks:
Brand Protection -- scan typosquats and lookalike registrations around a brand, evaluated per domain on registration facts
Domain Analyze -- registration, DNS, website, safety, backlink, cross-TLD and market evidence for one domain
Domain CMA Valuation -- comparative market analysis against current for-sale listings
Domain Generator -- creative domain name generation with validation
Domain Market Beat -- time-bounded domain market briefing with source tiers and explicit inference limits
Domain Name Advisor -- naming consultation with availability checking
Keyword Intel -- keyword-level supply, demand, and concentration analysis
Keyword Trend Hunter -- spot trending keywords and validate them against new registration cohorts
Skills work with any agent that supports the Agent Skills open standard. Add them alongside this server and the AI assistant gains both raw data access and structured workflows.
Access
Works without an API key on a guest quota. A free account raises it; paid tiers raise it further and unlock the full filter set and deeper paging. Current per-tier limits are listed at domainkits.com/pricing; the usage tool reports the live quota for your own account.