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-mcp
Then 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_domain(domain) |
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.
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/mcp
Metadata
Release files for domain-rdap-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| domain_rdap_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Release files / domain_rdap_mcp-0.1.0-py3-none-any.whl
| Download URL | domain_rdap_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
459a8fdaac959a472a829d18f82bf1dcabf83c4a4903885784a70ca0af666c99
|
|
BLAKE2b-256 checksum How to use checksums |
4064ec9a43547f075592d3b9306fb5070ad882259ae6b37e286a12d253941999
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.2
|