domain-rdap-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., "@domain-rdap-mcpIs example.com available?"
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.
domain-rdap-mcp
Real, live domain registration lookups -- is it registered, when does it expire, who's the registrar -- free, in one command.
pip install domain-rdap-mcp # or: uvx domain-rdap-mcpThen ask your agent: "is example.com available?" or "when does getlulu.dev expire?"
No API key. No signup. Free.
Tools
Tool | What the model sees it for |
| Check whether a domain is registered, and if so its status, registration date, expiration date, and registrar. "Is domain-x.com available?", "when does domain-x.com expire?", "who registered domain-x.com?" |
Data comes from RDAP (Registration Data Access Protocol), the IETF-standardized, ICANN-mandated successor to WHOIS -- structured JSON instead of free-text, and it auto-routes to whichever registry actually holds the record.
Related MCP server: MCP Domain Availability Server
Examples
Registered domain:
> check_domain("getlulu.dev")
{
"domain": "getlulu.dev",
"registered": true,
"status": [
"client delete prohibited",
"client renew prohibited",
"client transfer prohibited",
"client update prohibited"
],
"registered_date": "2025-12-16T14:20:57.819Z",
"expiration_date": "2027-12-16T14:20:57.819Z",
"last_changed_date": "2025-12-21T14:20:57.819Z",
"registrar": "GoDaddy.com, LLC",
"attribution": "Domain registration data via RDAP (rdap.org), the IETF-standardized successor to WHOIS"
}Unregistered (available) domain:
> check_domain("zzqx9v7k2m4p8qw-nosuchdomain-xk92.com")
{
"domain": "zzqx9v7k2m4p8qw-nosuchdomain-xk92.com",
"registered": false,
"attribution": "Domain registration data via RDAP (rdap.org), the IETF-standardized successor to WHOIS"
}A 404 from RDAP means the domain isn't registered -- that's a normal, meaningful "available" answer, not an error.
Some registrars redact registrant/registrar detail for privacy; when that happens registrar comes back null rather than guessed or omitted.
How it's free
This server is part of the Lulu Ads network:
tool results may carry one clearly labeled, disclosed sponsored data field
(never instructions, never hidden). That sponsorship pays the hosting, so the
lookup stays free. Fail-open by design -- if the ads backend is slow, down,
or (as with a local install) has no credentials at all, the tools behave
exactly like an unmonetized server.
Run your own MCP? The same one-line integration is open to every publisher -- getlulu.dev/publishers, 70% rev share.
Data
Domain registration data via RDAP (rdap.org), querying each domain's authoritative registry RDAP server. This project is not affiliated with ICANN, rdap.org, or any registry/registrar.
Self-hosting over HTTP
pip install fastmcp lulu-ads httpx uvicorn
MCP_TRANSPORT=http DOMAIN_LOCAL_DEV=1 python server.py # serves http://localhost:8080/domain/mcpAvailable Tools
1 toolcheck_domainARead-only
Check whether a domain name is registered, using real-time RDAP data (the IETF-standardized successor to WHOIS). Use for "is domain-x.com available/registered", "who is domain-x.com registered with", or "when does domain-x.com expire" style questions.
domain is a bare domain like "example.com" -- no protocol prefix, no
path, no spaces.
If the domain is NOT registered, returns {"domain": ..., "registered": false} -- this is a normal, meaningful answer (the domain is
available), not an error.
If the domain IS registered, returns {"domain", "registered": true, "status", "registered_date", "expiration_date", "last_changed_date", "registrar"}. status is a list of RDAP status codes (e.g. "active",
"client transfer prohibited"). Dates are ISO 8601. registrar is the
registrar's name, or null if the registry redacts it for privacy.
For obviously malformed input (not a domain -- e.g. missing a dot, has
spaces, or includes a protocol like "https://"), returns a clean
{"error": ...} instead of calling the API.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given the readOnlyHint annotation, the description adds substantial behavioral context beyond it: real-time RDAP data, exact response shapes for both registered and unregistered domains, fields like status and dates, potential registrar redaction for privacy, and a clean error path for malformed input. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence earns its place: purpose, usage examples, parameter format, two possible successful responses, and error behavior are each covered. It is well-organized and front-loaded with the primary purpose, making it easy for an agent to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with an output schema, the description effectively explains all relevant runtime behaviors: availability, registration details, field format (ISO 8601), status codes, privacy redaction, and error handling. The output schema existence is acknowledged indirectly through the described return structures, and nothing important seems omitted.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by precisely defining the 'domain' parameter: 'a bare domain like "example.com" — no protocol prefix, no path, no spaces.' It also clarifies that malformed inputs trigger an error rather than risking an API call. This is exactly the kind of detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Check whether a domain name is registered, using real-time RDAP data.' It further clarifies the tool's purpose with concrete example questions like 'is domain-x.com available/registered' and 'when does domain-x.com expire,' making the scope unmistakable. There are no sibling tools to differentiate from, but the description is self-sufficient.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides a pattern of usage: 'Use for ... style questions' with three representative examples. It also states input requirements and behavior for malformed input. However, it doesn't explicitly mention when not to use the tool or provide alternative tools (none exist in context), so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
check_domain
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion between tools. The tool's purpose is clearly defined.
The single tool 'check_domain' follows a clear verb_noun convention, which is consistent and descriptive.
A single tool is perfectly scoped for a server dedicated to RDAP domain lookups. It covers the entire domain without unnecessary bloat.
The tool provides comprehensive domain information: registration status, dates, and registrar. It fully addresses the primary use cases for RDAP queries.
Maintenance
Related MCP Connectors
Free, keyless domain registration lookup via RDAP: registered, available, registrar, expiration.
Check domain name availability via RDAP. Single, bulk, and smart suggestions. No API key needed.
Normalized JSON for any domain across 1,200+ TLDs, reading WHOIS where no RDAP server exists.
WHOIS/RDAP lookup, IP geolocation and Punycode conversion. 1400+ TLDs incl. IDN. No API key.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI agents to perform WHOIS lookups to retrieve domain registration details, including ownership, registration dates, and availability status without requiring browser searches.415 npm21MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to check domain name availability for single or multiple domains using DNS, RDAP, and WHOIS lookups. It provides detailed registration status including registrar information and expiration dates while supporting bulk checks of up to 50 domains.2MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables users to check domain name availability across 877 TLDs, generate intelligent suggestions, and retrieve WHOIS registration information. It supports bulk domain checks and cross-TLD searches through natural language interfaces.0-
- AlicenseNot gradedqualityFmaintenanceCheck domain name availability via RDAP. Single lookups, bulk checks (up to 50), and smart name suggestions with registration links. No API key needed.MIT