Email address verification (syntax, MX, risk flags) API
Checks an email address without sending mail: syntax rules (IDN domains in punycode and Unicode), MX records by preference, null MX (RFC 7505), implicit A/AAAA fallback, NXDOMAIN, SPF and DMARC policy, disposable, role, free-webmail and +tag flags, mail provider from MX hosts, and typo suggestions for popular domains. Returns a verdict and 0-100 score with reasons. Mailbox existence is not confirmed. Sources: Cloudflare DNS over HTTPS, disposable-email-domains (CC0).
$0.003 per call USDC over x402 v2 on Base, Polygon, Arbitrum, Avalanche or Sei. No signup, no API key. Requests that fail or match nothing are not charged.
Endpoint
GET https://domain.kit-rx.com/v1/email/verify
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
email | string | yes | Email address to check, up to 512 characters (addresses over 254 octets are reported as invalid). A mailto: link (its ?query and #fragment dropped) or a Name <address> header form is unwrapped first. Inputs without an @, quoted local parts, IP-literal domains and mailto links with several addresses are rejected with 400 and not charged. e.g. jane.doe+news@gmail.com |
Example request
https://domain.kit-rx.com/v1/email/verify?email=jane.doe%2Bnews%40gmail.com
Without payment the server answers 402 Payment Required with the price (3000 atomic USDC) in the PAYMENT-REQUIRED header. Any x402 v2 client pays and retries automatically. A request with no parameters runs this example.
curl -i "https://domain.kit-rx.com/v1/email/verify?email=jane.doe%2Bnews%40gmail.com"
Pay from an agent
AgentCash: fetch the URL. OpenDexter MCP: x402_fetch. Kit Rx MCP server: https://domain.kit-rx.com/mcp. Code:
import { x402Client } from "@x402/core/client";
import { registerExactEvmScheme } from "@x402/evm/exact/client";
import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";
const client = new x402Client();
registerExactEvmScheme(client, { signer: privateKeyToAccount(process.env.BUYER_KEY) });
const pay = wrapFetchWithPayment(fetch, client);
const res = await pay("https://domain.kit-rx.com/v1/email/verify?email=jane.doe%2Bnews%40gmail.com");
console.log(await res.json());
Example response
{
"query": {
"email": "jane.doe+news@gmail.com"
},
"result": {
"address": "jane.doe+news@gmail.com",
"verdict": "deliverable_domain",
"score": 90,
"score_reasons": [
{
"code": "mailbox_unverified",
"points": -10,
"detail": "Mailbox existence was not checked (no SMTP probe)."
}
],
"did_you_mean": null,
"mailbox_verified": false,
"syntax": {
"valid": true,
"local_part": "jane.doe+news",
"domain": "gmail.com",
"domain_unicode": null,
"idn": false,
"length": 23
},
"flags": {
"disposable": false,
"disposable_match": null,
"role_account": false,
"role": null,
"free_provider": true,
"subaddress": {
"base": "jane.doe",
"tag": "news"
},
"typo_suspected": false,
"non_ascii_local": false
},
"mail_provider": {
"id": "google",
"name": "Gmail (Google)",
"category": "mailbox_provider",
"mx_host": "gmail-smtp-in.l.google.com"
},
"dns": {
"rcode": "NOERROR",
"accepts_mail": true,
"mx": [
{
"preference": 5,
"exchange": "gmail-smtp-in.l.google.com",
"provider": "google"
},
{
"preference": 10,
"exchange": "alt1.gmail-smtp-in.l.google.com",
"provider": "google"
},
{
"preference": 20,
"exchange": "alt2.gmail-smtp-in.l.google.com",
"provider": "google"
}
],
"mx_count": 5,
"null_mx": false,
"implicit_mx": false,
"implicit_mx_addresses": null,
"primary_mx": {
"host": "gmail-smtp-in.l.google.com",
"status": "resolves",
"addresses": [
"142.250.31.26",
"2607:f8b0:4004:c08::1a"
]
}
},
"email_auth": {
"spf": {
"present": true,
"record": "v=spf1 redirect=_spf.google.com",
"all": null,
"multiple_records": false
},
"dmarc": {
"present": true,
"record_domain": "gmail.com",
"policy": "none",
"record": "v=DMARC1; p=none; sp=quarantine; rua=mailto:mailauth-reports@google.com",
"inherited_from_org_domain": false,
"multiple_records": false
}
}
},
"sources": [
{
"name": "Cloudflare DNS over HTTPS (JSON API)",
"url": "https://developers.cloudflare.com/1.1.1.1/encryption/dns-over-https/make-api-requests/dns-json/"
},
{
"name": "disposable-email-domains blocklist (CC0 1.0, commit ba992a0, 2026-11-08)",
"url": "https://github.com/disposable-email-domains/disposable-email-domains"
}
],
"notes": [
"Mailbox existence is not confirmed: no SMTP connection is made (Cloudflare Workers cannot open outbound connections on port 25), so the result covers address syntax, the domain's mail DNS and list-based flags only. Catch-all and full-mailbox status are unknown."
],
"attribution": [
"DNS resolved via Cloudflare 1.1.1.1 DNS-over-HTTPS."
],
"generated_at": "2026-11-13T22:10:00.000Z"
}
Kit Rx Domain WHOIS, DNS & Email Security: Domain intelligence for AI agents: WHOIS (RDAP), DNS, SPF/DKIM/DMARC email security, bulk checks and due-diligence scores, paid per call over x402. Machine-readable: OpenAPI, llms.txt, /.well-known/x402, agent skills.