Skip to main content
Glama
Lulu-The-Narwhal

domain-rdap-mcp

README.md
# domain-rdap-mcp

**Real, live domain registration lookups -- is it registered, when does it expire, who's the registrar -- free, in one command.**

```bash
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](https://rdap.org) (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](https://getlulu.dev/publishers) 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](https://getlulu.dev/publishers), 70% rev share.

## Data

Domain registration data via [RDAP](https://rdap.org) (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

```bash
pip install fastmcp lulu-ads httpx uvicorn
MCP_TRANSPORT=http DOMAIN_LOCAL_DEV=1 python server.py   # serves http://localhost:8080/domain/mcp
```

TDQS

A4.9/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The tool's purpose is clearly defined.

Naming Consistency5/5

The single tool 'check_domain' follows a clear verb_noun convention, which is consistent and descriptive.

Tool Count5/5

A single tool is perfectly scoped for a server dedicated to RDAP domain lookups. It covers the entire domain without unnecessary bloat.

Completeness5/5

The tool provides comprehensive domain information: registration status, dates, and registrar. It fully addresses the primary use cases for RDAP queries.

Maintenance

ActivitySlowing
ResponsivenessNo issues