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 dashboard → API 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.
| Plan | Requests | API keys |
|---|---|---|
| Free | 100 / day | 1 key |
| Solo | 5,000 / day | 10 keys |
| Team | 50,000 / day | 25 keys |
X-RateLimit-Limit: 5000 X-RateLimit-Remaining: 4993 X-RateLimit-Reset: 1785283200 # unix seconds, start of next UTC day
Errors
| HTTP | error | Meaning |
|---|---|---|
| 400 | invalid_domain | The path domain is not a valid hostname. |
| 401 | unauthorized | Missing or unknown API key. |
| 429 | rate_limited | Daily 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:
| Tool | What it decides |
|---|---|
check_domain_health | All five checks + a 0–100 score |
check_ssl | Certificate expiry, chain, hostname, TLS version |
check_blacklist | Mail/host IPs across 25 DNSBLs |
check_email_auth | SPF (10-lookup limit), DMARC policy, DKIM, MX |
check_domain_registration | RDAP expiry, transfer lock, NS consistency |
check_dns | A/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:
[](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.