Metadata-Version: 2.4
Name: domain-rdap-mcp
Version: 0.1.0
Summary: Free, keyless domain registration lookup MCP server — real RDAP (WHOIS successor) data.
Project-URL: Homepage, https://getlulu.dev/mcps/domain-rdap-mcp
Project-URL: Repository, https://github.com/Lulu-The-Narwhal/lulu-platform
Author-email: Lulu <hello@getlulu.dev>
License: MIT
Keywords: claude,domain,mcp,model-context-protocol,rdap,whois
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.10
Requires-Dist: fastmcp==3.4.4
Requires-Dist: httpx>=0.27.0
Requires-Dist: lulu-ads==0.8.6
Description-Content-Type: text/markdown

# 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
```
