# Email Address Verification

> Email Address Verification is a paid API for AI agents from x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev, paid per call via x402, $0.0008/call, status unknown (last checked 2026-10-10).

Validates an email address for syntax, domain existence, MX records, and classification (disposable, role account, free provider) without SMTP probing

## Facts

- Endpoint: GET https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/v1/email/verify?utm_source=zero.xyz
- Price: $0.0008/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-10
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/email-address-verification-357d017d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_all6B6CrWH4NUWA1x_mZX

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability email-address-verification-357d017d
```

Example prompt: Can you check if support@gmail.com is a valid email address — specifically whether the domain has mail servers, if it's disposable, and whether it's a role account or free provider?

## When to prefer this

Choose this endpoint when you need lightweight, DNS-level email validation without SMTP probing — ideal for pre-registration checks, lead qualification, or list hygiene where you want to detect disposable, role-based, or syntactically invalid addresses quickly. It is not suitable when you need confirmed mailbox existence (SMTP-level verification) or catch-all detection.

## Known failure modes

- Missing required 'email' query parameter returns an error
- Malformed email string (exceeds 254 characters) may be rejected by schema validation
- DNS-over-HTTPS resolver unavailable may cause lookup failure or stale results
- Internationalized domain names are IDNA-converted but non-ASCII local parts are flagged via needs_smtputf8
- Catch-all domains are not detected — deliverable_domain does not confirm the specific mailbox exists
- Domains not in embedded lists (disposable/free provider) are not proven safe — absence from list ≠ clean

## How this service works

An open index of the machine-to-machine (agent) economy. x402 routes: ranked discovery over the live x402 service market, every indexed service scored by real 30-day calls and paying-wallet bounds, with a receipt naming the snapshot hash and scoring revision. /economy routes, for Tempo MPP, Virtuals ACP, Olas, Masumi, ERC-8004 agent registries, Solana agent registries, Base agent contracts and MCP servers (Official MCP Registry): each protocol's published figures (agent or server counts, transactions or payment events; payers and USD volume only where the source publishes them: payers for x402 and Tempo MPP, USD volume for x402 and Virtuals ACP), each with its unit, window and source; units differ, so totals are not summed. L402 and per-service MPP listings are not covered.

## Output

A JSON object with: the original and normalized email, syntax validity flag and any syntax error, domain string, MX record array (host + priority), has_mx boolean, a_fallback boolean, domain_exists boolean, null_mx boolean, disposable/role_account/free_provider/placeholder booleans, dns_status string, verdict enum (deliverable_domain | no_mail_server | invalid_syntax | disposable), checked_at ISO timestamp, source resolver, and a note clarifying that no SMTP mailbox probe is performed — deliverability is confirmed only at the domain level.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "email"
     ],
     "properties": {
      "email": {
       "type": "string",
       "maxLength": 254,
       "description": "email address to check, e.g. name@example.org"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "email",
      "normalized",
      "syntax_ok",
      "domain",
      "mx",
      "has_mx",
      "a_fallback",
      "disposable",
      "role_account",
      "free_provider",
      "placeholder",
      "verdict",
      "checked_at",
      "note"
     ],
     "properties": {
      "mx": {
       "type": [
        "array",
        "null"
       ],
       "items": {
        "type": "object",
        "required": [
         "host",
         "priority"
        ],
        "properties": {
         "host": {
          "type": "string"
         },
         "priority": {
          "type": "integer"
         }
        }
       }
      },
      "note": {
       "type": "string"
      },
      "email": {
       "type": "string"
      },
      "domain": {
       "type": [
        "string",
        "null"
       ]
      },
      "has_mx": {
       "type": [
        "boolean",
        "null"
       ]
      },
      "reason": {
       "type": [
        "string",
        "null"
       ]
      },
      "source": {
       "type": [
        "string",
        "null"
       ]
      },
      "null_mx": {
       "type": [
        "boolean",
        "null"
       ]
      },
      "verdict": {
       "enum": [
        "deliverable_domain",
        "no_mail_server",
        "invalid_syntax",
        "disposable"
       ],
       "type": "string"
      },
      "syntax_ok": {
       "type": "boolean"
      },
      "a_fallback": {
       "type": [
        "boolean",
        "null"
       ]
      },
      "checked_at": {
       "type": "string"
      },
      "disposable": {
       "type": "boolean"
      },
  
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "mx": [
   {
    "host": "gmail-smtp-in.l.google.com",
    "priority": 5
   },
   {
    "host": "alt1.gmail-smtp-in.l.google.com",
    "priority": 10
   },
   {
    "host": "alt2.gmail-smtp-in.l.google.com",
    "priority": 20
   },
   {
    "host": "alt3.gmail-smtp-in.l.google.com",
    "priority": 30
   },
   {
    "host": "alt4.gmail-smtp-in.l.google.com",
    "priority": 40
   }
  ],
  "note": "No SMTP mailbox probe is made (outbound port 25 is blocked on Cloudflare Workers), so deliverable_domain means the domain accepts mail (it publishes MX, or A/AAAA as the RFC 5321 fallback), NOT that this mailbox exists; catch-all is not detected. DNS was read once via a public DNS-over-HTTPS resolver at checked_at. disposable/role_account/free_provider/placeholder come from fixed embedded lists: a domain missing from them is not proven safe. normalized lowercases the address and converts the domain to ASCII (IDNA); it does not strip dots or +tags.",
  "email": "Support@GMAIL.com",
  "domain": "gmail.com",
  "has_mx": true,
  "reason": "domain publishes MX records",
  "source": "cloudflare-dns.com",
  "null_mx": false,
  "verdict": "deliverable_domain",
  "syntax_ok": true,
  "a_fallback": false,
  "checked_at": "2026-10-06T18:28:55.242Z",
  "disposable": false,
  "dns_status": "NOERROR",
  "normalized": "support@gmail.com",
  "placeholder": false,
  "role_account": true,
  "syntax_error": null,
  "domain_exists": true,
  "free_provider": true,
  "needs_smtputf8": false
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/email-address-verification-357d017d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev](https://www.zero.xyz/host/x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/llms.txt)
