FETCHX402

LIVE

x402 WHOIS

WHOIS Intelligence

whois MCP for agents. Pay-per-request WHOIS lookup on Base USDC. Not @x402/fetch.

LIVE $0.005 USDC GET /v1/tools/whois

When to use

WHOIS lookup via RDAP (registrar, status, dates, nameservers, DNSSEC). Use when you need live registry data and must not guess. Unregistered names return not_found.

Try

Opens the live endpoint. Unpaid browser requests show the paywall; agents should send Accept: application/json.

/v1/tools/whois?domain=example.com

Full URL: https://api.fetchx402.com/v1/tools/whois?domain=example.com

Request

GET /v1/tools/whois · x402 V2 · USDC on Base · $0.005 USDC

x402 V2 curl

Expect HTTP 402 and a PAYMENT-REQUIRED header until you retry with PAYMENT-SIGNATURE.

curl -i -H "Accept: application/json" "https://api.fetchx402.com/v1/tools/whois?domain=example.com"

Cursor mcp.json

Intended config for @fetchx402/mcp. This is not npm @x402/fetch (a payment fetch wrapper).

{
  "mcpServers": {
    "fetchx402": {
      "args": [
        "-y",
        "@fetchx402/mcp"
      ],
      "command": "npx",
      "env": {
        "X402_PRIVATE_KEY": "0xYOUR_SPENDING_KEY"
      }
    }
  }
}

Query parameters

Name Type Required Description
domain string required Public fully-qualified domain name to look up, such as example.com. IPs, localhost, and internal/mDNS names are rejected.

Success fields

Field Type Description
domain string Normalized FQDN that was queried
source string Always rdap in v1
rdap_server string RDAP base URL selected from the IANA bootstrap
handle string | null Registry object handle, if published
status array Registry status strings as published
registrar object | null Registrar name and IANA ID when present; null if RDAP omitted them
created_at string | null Registration event (ISO-8601 UTC)
updated_at string | null Last-changed event (ISO-8601 UTC)
expires_at string | null Expiration event (ISO-8601 UTC)
nameservers array LDH nameserver hostnames, lowercase, no trailing dot
dnssec boolean True when secureDNS.delegationSigned is true

Example

Frozen fixture. Not a live lookup.

{
  "created_at": "1995-08-14T04:00:00Z",
  "dnssec": true,
  "domain": "example.com",
  "expires_at": "2025-08-13T04:00:00Z",
  "handle": "2336799_DOMAIN_COM-VRSN",
  "nameservers": [
    "a.iana-servers.net",
    "b.iana-servers.net"
  ],
  "rdap_server": "https://rdap.verisign.com/com/v1/",
  "registrar": {
    "iana_id": "376",
    "name": "RESERVED-Internet Assigned Numbers Authority"
  },
  "source": "rdap",
  "status": [
    "client delete prohibited",
    "client transfer prohibited",
    "client update prohibited"
  ],
  "updated_at": "2024-08-14T07:01:39Z"
}

Payment

Unpaid requests return HTTP 402 with a base64 PAYMENT-REQUIRED header. Retry the same URL with PAYMENT-SIGNATURE. Settlement completes before the tool runs. Full handshake and shared payment errors: Payments.

Errors

HTTP Code When
400 invalid_domain Domain is missing, malformed, an IP address, or a blocked/internal name
402 payment_required Missing or invalid PAYMENT-SIGNATURE; decode the PAYMENT-REQUIRED header
404 rdap_unavailable This TLD has no RDAP server in the IANA bootstrap
404 not_found RDAP has no registration object for this domain
502 rdap_upstream RDAP server returned an unusable response
503 bootstrap_unavailable IANA RDAP bootstrap could not be loaded
503 overloaded Tool concurrency cap reached; retry shortly
504 whois_timeout RDAP lookup timed out
409 payment_in_progress The same authorization nonce is already being settled; retry shortly
429 rate_limited Too many requests from this client
503 settlement_uncertain Settlement is unconfirmed; retry with the same PAYMENT-SIGNATURE
503 facilitator_unavailable Payment facilitator unavailable
503 facilitator_misconfigured Payment facilitator is not configured
503 facilitator_unauthorized Payment facilitator rejected credentials
503 ledger_unavailable Payment ledger unavailable
503 payment_unavailable Payment processing unavailable

Guarantees

  • Settlement finishes before the tool executes. Uncertain settlement fails closed (HTTP 503).
  • Lookups run on our nodes — no third-party data API wrappers.
  • Localhost, IP literals, and metadata hostnames are rejected.
  • Execution is timeout-bounded and concurrency-capped.