Skip to main content
Glama
Lulu-The-Narwhal

domain-rdap-mcp

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.

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/mcp

Available Tools

1 tool
check_domainA
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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. 1 tool updatev0.1.0
    • First observedcheck_domain

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI agents to perform WHOIS lookups to retrieve domain registration details, including ownership, registration dates, and availability status without requiring browser searches.
    4
    15 npm
    21
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    2
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables 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
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Check domain name availability via RDAP. Single lookups, bulk checks (up to 50), and smart name suggestions with registration links. No API key needed.
    MIT