Resolve402 / services
Email pre-check
GET /api/verify-email · $0.003 per call (USDC on Base or Solana, x402)
Verify and validate an email address before sending: syntax, MX records, disposable domain, free webmail, role account. Email verification from DNS only: input an email, output a 0-100 deliverability score with its reasons, mail provider (Google, Microsoft 365, OVH...), SPF, DMARC, null MX and random-looking local part. Mailbox not tested (no SMTP: smtp_check:false, accept_all:null), so the score is capped at 90.
Problem solved
You want to pre-check an email address (syntax, MX, provider, disposable, webmail, role account) before sending.
Use cases
- Drop obviously bad addresses (no MX, disposable, random-looking) from a list before a send.
- Check the domain of a probable email returned by decision makers: MX present, provider, SPF and DMARC.
Input
GET /api/verify-email?email=<address>
| Parameter | Where | Type | Description |
|---|---|---|---|
email (required) | query | string | Email address to check |
Output
Pre-check with score 0-100 and reasons [{code, points, detail}] from DNS only: syntax, MX, null MX, provider, SPF, DMARC, disposable, free webmail, role account, random-looking local part. Capped at 90: the mailbox is not tested (mailbox_checked:false, smtp_check:false, accept_all:null).
Price
$0.003 per call. Charged on every valid call (a missing email parameter is a 400, not charged).
Example
GET https://resolve402.dev/api/verify-email?email=jane%40acme.fr
{
"email": "jane@acme.fr",
"syntax_valid": true,
"has_mx": true,
"mail_provider": "google_workspace",
"deliverable": "likely",
"score": 90,
"score_band": "good",
"reasons": [
{
"code": "mx_present",
"points": 30,
"detail": "Domain has 2 MX record(s)."
}
],
"accept_all": null,
"smtp_check": false,
"mailbox_checked": false
}Bazaar discovery example served in the production 402 (abridged).
Sources
- DNS records of the domain (MX, A, SPF, DMARC)
- Built-in lists of disposable and free webmail domains
Limits
- No SMTP connection: the mailbox itself is not tested, so accept_all is unknown (null) and the score is capped at 90.
- Disposable detection uses a short built-in list of common throwaway domains.
Use it
- HTTP + x402: call the URL, pay the 402 with any x402 v2 client, retry with the PAYMENT-SIGNATURE header.
- OpenAPI: /openapi.json (operation
verifyEmail) - MCP:
npx -y resolve402-mcp, toolverify_email(npm) - Agent guide: /llms.txt · skill: /SKILL.md