tld-list-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tld-list-mcp find available domains for nexora across .com, .io, .ai and compare 3-year costs"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tld-list-mcp
An unofficial, open-source Model Context Protocol server for querying TLD-List pricing and metadata, calculating domain ownership costs, and performing clearly labeled RDAP-assisted domain availability checks.
This project is independently maintained and is not endorsed, sponsored, or maintained by TLD-List.
Features
Search one base name or bulk-search up to 20 names across TLD variants.
Compare registration, renewal, and transfer prices without assuming the same registrar is cheapest for every operation.
Compare selected registrars or find the cheapest registrar for one price type.
Calculate 1–10 year ownership cost at one registrar.
Filter by price, registrar, availability, and TLD substring.
Sort by registration, renewal, transfer, three-year cost, or alphabetically.
Return documented TLD metadata such as categories, DNSSEC support, privacy support, restrictions, local-presence requirements, premium-domain flags, and registration term limits when present.
Normalize
.comandcomidentically and support Unicode IDNs/punycode.Batch TLD-List requests and bound RDAP concurrency for efficient bulk comparisons.
Cache TLD names, registrar IDs, pricing, IANA RDAP bootstrap data, and short-lived RDAP results in memory.
Return MCP
structuredContentplus readable JSON text.
Related MCP server: domain-checker-mcp
MCP tools
Tool | Purpose |
| Search one name or up to 20 names across specified TLDs; when one name is used, the TLD list may be discovered automatically. |
| Check one fully qualified domain using the separate RDAP provider. |
| Compare selected registrars for one TLD and selected price types. |
| Find the cheapest registrar(s) for registration, renewal, or transfer. |
| Batch-compare up to 100 TLDs, including same-registrar multi-year cost. |
| Calculate ownership cost for one registrar/TLD pair. |
| List active TLD-List registrar IDs with filtering and pagination. |
| List supported extensions with pagination, IDN options, and optional metadata. |
Example tool inputs
{
"name": "nexora",
"tlds": ["com", "io", "ai", "dev"],
"availableOnly": true,
"maxRegistrationPrice": 50,
"maxRenewalPrice": 100,
"registrars": ["porkbun", "namecheap"],
"sortBy": "three_year_cost",
"limit": 50
}{
"names": ["nexora", "lumora", "veltrix"],
"tlds": ["com", "io", "ai", "dev"],
"limit": 100
}{
"tld": "ai",
"years": 5,
"registrar": "porkbun"
}Requirements
Node.js 22 or newer
A working TLD-List public/private API key pair for pricing and metadata tools
Outbound HTTPS access to
api.tld-list.com, and to IANA/RDAP services when RDAP is enabled
Installation
Run the published package directly:
npx -y tld-list-mcpOr install it globally:
npm install --global tld-list-mcp
tld-list-mcpFor development from source:
git clone https://github.com/AliberkYilmaz/tld-list-mcp.git
cd tld-list-mcp
npm install
cp .env.example .env
npm run buildSet credentials through the MCP client's environment configuration. The server intentionally does not load .env itself, which keeps its dependency footprint small and makes credential injection explicit. For shell-only development, edit .env, export its values, and then start the server:
set -a
source .env
set +a
npm run devThe public package is available at npmjs.com/package/tld-list-mcp.
TLD-List API keys
The official legacy API documentation says requests require apiKeyPublic and apiKeyPrivate, and describes creating a pair under the account API tab. TLD-List's current terms also state that earlier paid features and account access were discontinued. Confirm current key eligibility and usage rights directly with TLD-List before depending on the API in production.
This server uses only these documented v1 methods:
extension/getNamesextension/getextension/getCheapestRegistrarregistrar/getIds
It does not scrape the website or use private endpoints.
Environment variables
Variable | Required | Default | Description |
| Yes | — | TLD-List public API key. |
| Yes | — | TLD-List private API key. |
| No |
| API base URL; primarily useful for controlled tests. |
| No |
| Per-request timeout. |
| No |
| Bounded retries for transient timeouts/network/5xx errors. Authentication and rate-limit errors are not retried. |
| No |
| Enable the in-memory cache. |
| No |
| TLD-name cache TTL. |
| No |
| Registrar-ID cache TTL. |
| No |
| Pricing/metadata cache TTL. |
| No |
| Enable RDAP availability inference. |
| No |
| RDAP request timeout. |
| No |
| Maximum concurrent checks in a bulk request. |
| No |
| IANA RDAP bootstrap cache TTL. |
| No |
| Write sanitized diagnostics to stderr. |
MCP client configuration
Replace the key placeholders. The examples run the published npm package directly; pin tld-list-mcp@<version> in args when reproducible installs are required. MCP stdio reserves stdout for protocol messages; this server writes diagnostics only to stderr.
Codex CLI and IDE extension
Codex shares MCP configuration between the CLI and IDE extension. Add this to ~/.codex/config.toml:
[mcp_servers.tld-list]
command = "npx"
args = ["-y", "tld-list-mcp"]
env = { TLD_LIST_PUBLIC_KEY = "your-public-key", TLD_LIST_PRIVATE_KEY = "your-private-key" }Verify with codex mcp list. Configuration shape and location are based on the current official OpenAI Codex MCP documentation.
Claude Code
claude mcp add-json tld-list '{"type":"stdio","command":"npx","args":["-y","tld-list-mcp"],"env":{"TLD_LIST_PUBLIC_KEY":"your-public-key","TLD_LIST_PRIVATE_KEY":"your-private-key"}}'
claude mcp get tld-listUse --scope user with claude mcp add-json to make it available across projects. This syntax follows Anthropic's current Claude Code MCP documentation.
Cursor
Create .cursor/mcp.json in a project or ~/.cursor/mcp.json globally:
{
"mcpServers": {
"tld-list": {
"type": "stdio",
"command": "npx",
"args": ["-y", "tld-list-mcp"],
"env": {
"TLD_LIST_PUBLIC_KEY": "your-public-key",
"TLD_LIST_PRIVATE_KEY": "your-private-key"
}
}
}
}See the current Cursor MCP documentation.
VS Code with GitHub Copilot
Create .vscode/mcp.json:
{
"servers": {
"tld-list": {
"type": "stdio",
"command": "npx",
"args": ["-y", "tld-list-mcp"],
"env": {
"TLD_LIST_PUBLIC_KEY": "your-public-key",
"TLD_LIST_PRIVATE_KEY": "your-private-key"
}
}
}
}VS Code also supports input variables for secrets; avoid committing literal keys. See the current VS Code MCP server documentation.
Development configuration
To run a locally built checkout instead of the npm package, use "command": "node" and "args": ["/absolute/path/to/tld-list-mcp/dist/index.js"] in the equivalent client configuration.
Any compatible stdio client can also run the TypeScript entrypoint during development:
{
"mcpServers": {
"tld-list-dev": {
"type": "stdio",
"command": "npx",
"args": ["tsx", "/absolute/path/to/tld-list-mcp/src/index.ts"],
"env": {
"TLD_LIST_PUBLIC_KEY": "your-public-key",
"TLD_LIST_PRIVATE_KEY": "your-private-key"
}
}
}
}Development
npm install
npm run dev
npm run typecheck
npm run lint
npm test
npm run build
npm run format
npm run auditTests mock HTTP and do not require credentials. Optional real-API integration tests are skipped unless both key variables are set:
TLD_LIST_PUBLIC_KEY=... TLD_LIST_PRIVATE_KEY=... npm run test:integrationArchitecture
MCP stdio layer (server.ts, tools/*)
│
▼
Business rules (domain/*)
│ │
▼ ▼
TldDataProvider DomainAvailabilityProvider
│ │
▼ ▼
TLD-List v1 adapter RDAP adapter
│ │
▼ ▼
typed v1 client IANA bootstrap + RDAP clientThe MCP tools depend on TldDataProvider, not the v1 HTTP client. A future TldListV2Provider can replace the adapter without changing tool schemas. Availability is independently replaceable through DomainAvailabilityProvider. Transport setup is isolated in src/index.ts, so Streamable HTTP can be added without moving pricing or tool logic.
Data sources and calculations
Obtained from TLD-List
Supported extension names
Active registrar IDs
Registrar registration, renewal, and transfer prices
Promotions, terms, fee/tax notes, and free-feature data when returned
Documented TLD metadata returned by
extension/get
Every TLD-List result includes source, checkedAt, and cached. A cache hit retains the original upstream check time and reports cached: true.
Calculated by this server
Cheapest price per operation
Sorting and filtering
Multi-year ownership cost:
year 1 registration + (years - 1) × current renewal
Calculations use one registrar at a time, never treat missing prices as zero, and never combine currencies. They do not forecast price changes and may exclude taxes, optional services, future promotions, or premium-name surcharges not already included in TLD-List's final price.
Obtained from RDAP
Domain-level availability does not come from TLD-List v1. The separate RDAP adapter discovers registry endpoints through the IANA RDAP DNS bootstrap registry:
An RDAP domain record is returned as
available: false.RDAP HTTP 404 is returned as
available: true,inference: "no_record", andauthoritative: false.Missing bootstrap support, timeouts, and ambiguous responses return
available: null.
A missing RDAP record is not a guarantee that a domain can be registered. Reserved names, registry restrictions, premium status, launch phases, and registrar-specific rules still apply.
Limitations
TLD-List labels this API as legacy v1 and says a replacement is in development.
API v1 does not document domain-level availability.
API v1 does not document popularity or ranking data. An example response contains an unexplained
clicksfield, but this project deliberately does not interpret it or offer popularity sorting.Prices are TLD-level listings, not guaranteed quotes for a particular domain. Premium domains can cost more.
RDAP coverage and behavior vary by registry.
In-memory cache contents disappear when the process exits and are not shared across processes.
The documented API limit is currently 100 requests per 15 minutes and can change without notice.
Real-API compatibility cannot be asserted by CI because CI intentionally has no credentials; use the opt-in integration test with a valid account.
Rate limits and reliability
TLD lists and registrar IDs default to 24-hour caching; pricing defaults to 15 minutes. Requests for multiple TLDs are sent as one documented batch wherever possible. Authentication errors and rate-limit responses are never retried. Network errors, timeouts, and eligible 5xx/system failures use bounded exponential backoff with a maximum of four configurable retries.
Bulk limits are intentionally conservative: 20 names, 100 explicitly selected TLDs, 500 domain checks, and 100 returned search results per call. When automatic TLD discovery is used, at most 200 candidates are sent to RDAP and truncation is reported.
Security
Credentials are read only from environment variables, excluded from cache keys, redacted from diagnostics, and never returned in tool output.
.envfiles are ignored;.env.examplecontains placeholders only.Inputs are validated with Zod v4 and bounded before network work.
TLD-List endpoints are a closed internal union; MCP input cannot select a URL.
RDAP endpoints come only from the HTTPS IANA bootstrap registry.
No shell execution, dynamic code execution, filesystem tools, or arbitrary URL-fetching tool is exposed.
npm releases use GitHub Actions trusted publishing with short-lived OpenID Connect credentials and npm provenance; no long-lived npm token is stored in GitHub.
Run
npm run auditand review lockfile changes before release.TLD-List's terms prohibit scraping and impose restrictions on commercial reuse/data redistribution. This project uses the documented API only. The MIT license covers this project's code, not TLD-List data or trademarks; users remain responsible for complying with TLD-List's terms.
See SECURITY.md for vulnerability reporting.
Contributing
Contributions are welcome. Read CONTRIBUTING.md, add mocked tests for behavior changes, and keep TLD-List-specific fields inside the v1 client/adapter boundary.
License
MIT. See LICENSE.
Available Tools
8 toolscalculate_domain_costCalculate domain ownership costARead-onlyIdempotent
Calculate 1-10 year ownership cost for one registrar/TLD pair as year-1 registration plus subsequent current renewal prices. Never combines currencies and returns assumptions.
Inputs: tld (required), years (required), registrar (required).
cheapest_registrarFind cheapest registrarBRead-onlyIdempotent
Find the cheapest registrar or tied registrars for one TLD and one price type. Uses TLD-List v1 extension/getCheapestRegistrar and supports documented registrar include/exclude lists.
Inputs: tld (required), priceType (required), excludeRegistrars, includeRegistrars.
check_domainCheck domain availabilityARead-onlyIdempotent
Check one fully qualified domain through the separate RDAP availability provider. A found record means registered; a 404 suggests availability but is explicitly non-authoritative and not a purchase guarantee.
Inputs: domain (required).
compare_registrarsCompare registrarsBRead-onlyIdempotent
Compare documented registration, renewal, and/or transfer pricing for one TLD at selected TLD-List registrar IDs, including missing prices, promotions, terms, and notes.
Inputs: tld (required), registrars (required), priceTypes.
compare_tldsCompare TLDsBRead-onlyIdempotent
Batch-compare up to 100 extensions by cheapest registration, renewal, transfer, and same-registrar multi-year ownership cost, with documented TLD metadata.
Inputs: tlds (required), years, excludeRegistrars, includeRegistrars.
list_registrarsList TLD-List registrarsARead-onlyIdempotent
List active TLD-List registrar IDs with substring filtering and pagination. Use these exact IDs in other tools.
Inputs: limit, query, offset.
list_tldsList supported TLDsBRead-onlyIdempotent
List extensions supported by TLD-List with substring search, pagination, Unicode/punycode selection, and optional documented metadata for the returned page.
Inputs: limit, query, offset, punycode, +2 more.
search_tld_variantsSearch TLD variantsBRead-onlyIdempotent
Search one name or up to 20 names across TLDs. Batches TLD-List pricing, optionally filters by price/registrar and availability, and returns separate cheapest registration, renewal, transfer, and same-registrar 3-year costs. Popularity sorting is intentionally unavailable because API v1 does not document ranking data.
Inputs: name, tlds, limit, names, +7 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Most tools target clearly distinct operations (list TLDs, list registrars, check availability, calculate cost). However, search_tld_variants and compare_tlds both batch-compare pricing across TLDs, and compare_registrars overlaps with cheapest_registrar for registrar price comparison. Descriptions help clarify intent, but some boundaries remain fuzzy.
All names use consistent snake_case, which is readable and predictable. The only minor deviation is cheapest_registrar, which uses an adjective rather than a verb, unlike the other action-oriented names.
Eight tools is well-scoped for a TLD pricing and availability server. Each tool covers a distinct aspect of lookup, comparison, or calculation without unnecessary bloat.
The surface covers core needs: listing TLDs and registrars, checking availability, comparing prices across TLDs/registrars, finding cheapest options, and calculating multi-year costs. Minor gaps exist, such as no bulk availability check beyond search_tld_variants and no dedicated registrar-detail tool.
Maintenance
Related MCP Connectors
Compare domain registration and renewal prices across registrars and check exact-name availability.
Domain availability over RDAP, watchlists with daily or hourly checks, change history and alerts.
Check domain name availability via RDAP. Single, bulk, and smart suggestions. No API key needed.
Domains MCP — domain registration lookup + availability search over live RDAP (ICANN standard…
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceAn MCP server for domain availability checks, WHOIS lookups, and domain suggestions using RDAP and TCP port 43. It allows users to perform bulk checks and retrieve registration details across multiple TLDs without requiring an API key.28 npm-
- AlicenseAqualityDmaintenanceEnables fast domain availability checking via hybrid DNS and RDAP/WHOIS verification, with support for bulk queries and automatic name expansion across popular TLDs.364 npmMIT

nameai-mcpofficial
FlicenseNot gradedqualityCmaintenanceEnables domain search and availability checks, WHOIS lookups, TLD registration pricing, and TLD requirement queries through MCP tools.-
TLDers Domain Pricesofficial
AlicenseNot gradedqualityBmaintenanceEnables AI assistants to compare live domain registration, renewal, and transfer prices across many registrars and TLDs, find promo codes, and check domain availability.39 npmMIT