API & MCP

Run all five domain-health checks — SSL, email blacklists, SPF/DKIM/DMARC, registration and DNS — from your code or an AI agent. The JSON API is one bearer-authenticated GET; the MCP server exposes the same checks as agent tools. Same engine as the website, so results match.

Authentication

Create a key in your dashboardAPI keys (shown once). Send it as a bearer token on every request:

Authorization: Bearer rw_sk_your_key_here

Check a domain

GET https://api.rdapwatch.com/v1/check/{domain}

Returns the full five-check report and a 0–100 score. Add ?checks=ssl,dns to run only a subset (comma-separated ids: ssl, blacklist, email, registration, dns). Full reports are cached for one hour ("cached": true when served from cache).

Request

curl https://api.rdapwatch.com/v1/check/example.com \
  -H "Authorization: Bearer rw_sk_your_key_here"

Response

{
  "domain": "example.com",
  "score": 86,
  "cached": false,
  "results": [
    {
      "id": "ssl",
      "status": "pass",
      "summary": "Certificate valid, expires in 71 days.",
      "fix": null,
      "raw": { "daysToExpiry": 71, "tlsVersion": "TLSv1.3", "chainComplete": true },
      "checkedAt": "2026-07-25T00:00:00.000Z"
    }
    // …blacklist, email, registration, dns
  ],
  "checkedAt": "2026-07-25T00:00:00.000Z"
}

Each result's status is one of pass, warn, fail or error (indeterminate). fix is a remediation string or null. raw holds the structured detail for that check.

Rate limits

A per-day request quota by plan. Every response includes the standard headers.

PlanRequestsAPI keys
Free100 / day1 key
Solo5,000 / day10 keys
Team50,000 / day25 keys
X-RateLimit-Limit: 5000
X-RateLimit-Remaining: 4993
X-RateLimit-Reset: 1785283200   # unix seconds, start of next UTC day

Errors

HTTPerrorMeaning
400invalid_domainThe path domain is not a valid hostname.
401unauthorizedMissing or unknown API key.
429rate_limitedDaily quota reached — see the X-RateLimit-* headers.

MCP server (for AI agents)

Connect any Model Context Protocol client to https://mcp.rdapwatch.com/mcp (Streamable HTTP, no auth). The agent gets six tools:

ToolWhat it decides
check_domain_healthAll five checks + a 0–100 score
check_sslCertificate expiry, chain, hostname, TLS version
check_blacklistMail/host IPs across 25 DNSBLs
check_email_authSPF (10-lookup limit), DMARC policy, DKIM, MX
check_domain_registrationRDAP expiry, transfer lock, NS consistency
check_dnsA/AAAA/MX/NS/TXT/CAA snapshot; resolvability; CAA

Claude Code

claude mcp add --transport http domain-health https://mcp.rdapwatch.com/mcp

Claude Desktop & other stdio clients

{
  "mcpServers": {
    "domain-health": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.rdapwatch.com/mcp"]
    }
  }
}

Every tool takes a { domain } argument and returns human-readable text plus the structured CheckResult. check_email_auth also accepts optional dkim_selectors.

Status badge

Embed a live health-score badge that links back to the full report:

Example domain health badge

[![Domain health](https://rdapwatch.com/badge/example.com.svg)](https://rdapwatch.com/report/example.com)

The badge refreshes hourly from the same report cache.

FAQ

How do I authenticate to the API?

Send your key as a bearer token: Authorization: Bearer rw_sk_…. Create and revoke keys in your dashboard under "API keys". The key is shown once at creation.

What are the rate limits?

A per-UTC-day request quota by plan: Free 100/day, Solo 5,000/day, Team 50,000/day. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers.

Does the API return the same results as the website?

Yes. The API, the free web checker and the monitoring engine all run one implementation of each check, so scores and findings match. Full reports are cached for one hour.

Can an AI agent call these checks?

Yes — connect the MCP server at https://mcp.rdapwatch.com/mcp. It exposes all five checks plus a scored aggregate as Model Context Protocol tools, with no auth required.

Machine-readable index: /llms.txt. Need higher limits or a feature? See pricing.