Domain Intelligence
Domain intelligence for agents verifying counterparties, links and sellers. One call queries RDAP — the structured, official registry protocol that replaced WHOIS — through the IANA bootstrap, so answers come from the authoritative registry for each TLD. Returns: registration date and computed age in days (newly-registered domains are the #1 phishing signal), expiry date and days remaining, registrar of record, EPP status codes (hold statuses flagged), nameservers, DNSSEC delegation status. A 404 from the registry is returned as available:true — making this a domain-availability check too. Risk scoring: NEWLY_REGISTERED under 30 days, RECENTLY_REGISTERED under 180, HOLD_STATUS, EXPIRING_SOON, NO_NAMESERVERS, with DNSSEC as a positive signal. Some registries redact fields per policy; the tool reports exactly what the registry publishes. Pairs with counterparty-risk (web posture) and dns-inspect (live DNS).
Call with x402
1. Send the request. 2. Receive 402 with accepts[]. 3. Sign the payment and retry with the X-PAYMENT header.
curl -X POST https://agentbit.app/v1/domain/intel \
-H 'Content-Type: application/json' \
-d '{"domain":"coinbase.com"}'
Input schema
{
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Bare registrable domain, e.g. example.com (no scheme, no path)"
}
},
"required": [
"domain"
]
}Output schema
{
"type": "object",
"properties": {
"domain": {
"type": "string"
},
"registered": {
"type": "boolean"
},
"available": {
"type": "boolean"
},
"created": {
"type": [
"string",
"null"
]
},
"age_days": {
"type": [
"integer",
"null"
]
},
"expires": {
"type": [
"string",
"null"
]
},
"days_to_expiry": {
"type": [
"integer",
"null"
]
},
"registrar": {
"type": [
"string",
"null"
]
},
"statuses": {
"type": "array",
"items": {
"type": "string"
}
},
"nameservers": {
"type": "array",
"items": {
"type": "string"
}
},
"dnssec_signed": {
"type": "boolean"
},
"risk_score": {
"type": "integer"
},
"risk": {
"type": "string",
"enum": [
"clear",
"review",
"high"
]
},
"flags": {
"type": "array",
"items": {
"type": "string"
}
}
}
}Code examples
// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/domain/intel", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({"domain":"coinbase.com"})
});
console.log(await r.json());
# Python (x402 client)
from x402.clients.requests import x402_requests
s = x402_requests(account)
r = s.post("https://agentbit.app/v1/domain/intel",
json={"domain":"coinbase.com"})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
->post('https://agentbit.app/v1/domain/intel',
array (
'domain' => 'coinbase.com',
));
$data = $r->json();