MailCheck API

Email address and domain checks for AI agents: syntax, MX, disposable/role/free flags, typo suggestions, SPF/DMARC/DKIM, RDAP and a deliverability grade. Pay per item with x402 (USDC on Base) or Lightning sats. No signup.

Client note: Send a descriptive User-Agent header (e.g. User-Agent: mailcheck-client/1.0). Cloudflare blocks Python urllib's default User-Agent ("Python-urllib/3.x") on workers.dev with HTTP 403 "error code: 1010" before the request reaches this API. curl, python-requests and fetch work as-is. No API key is needed.

# Python (standard library): set the header explicitly
import json, urllib.request
req = urllib.request.Request("https://mailcheck.toolschemaforge.workers.dev/v1/free/email-check",
    data=json.dumps({"email": "someone@gmial.com"}).encode(),
    headers={"content-type": "application/json", "User-Agent": "mailcheck-client/1.0"})
print(json.load(urllib.request.urlopen(req)))

Machine-readable: /openapi.json · /llms.txt · /.well-known/x402 · /health

/v1/email-check $0.001 / item

Check 1-100 email addresses ($0.001 each): RFC syntax, normalization and canonical form, MX lookup (A fallback), disposable domain (CC0 list), role account, free provider, typo suggestion (gmial.com -> gmail.com), verdict and 0-100 score. No SMTP probing.

Free:

curl -s -X POST https://mailcheck.toolschemaforge.workers.dev/v1/free/email-check -H 'content-type: application/json' -d '{"email":"someone@gmial.com"}'

Paid (x402): any x402 client, e.g. npx @x402/fetch or an agent wallet:

curl -i -X POST https://mailcheck.toolschemaforge.workers.dev/v1/email-check -H 'content-type: application/json' -d '{"emails":["jane.doe@gmial.com","info@example.com"]}'
# -> 402 with PAYMENT-REQUIRED; pay and retry with PAYMENT-SIGNATURE

Paid (Lightning credits):

curl -s -X POST https://mailcheck.toolschemaforge.workers.dev/v1/email-check -H 'X-Credits-Token: mc_...' -H 'content-type: application/json' -d '{"emails":["jane.doe@gmial.com","info@example.com"]}'
Example response
{
  "count": 1,
  "results": [
    {
      "input": "jane.doe@gmial.com",
      "email": "jane.doe@gmial.com",
      "syntax_valid": true,
      "local": "jane.doe",
      "domain": "gmial.com",
      "canonical": "jane.doe@gmial.com",
      "mx": {
        "status": "ok",
        "source": "dns",
        "records": [
          {
            "priority": 10,
            "exchange": "mx.example-parking.net"
          }
        ]
      },
      "flags": {
        "disposable": false,
        "role_account": false,
        "free_provider": false,
        "plus_tag": false
      },
      "suggestion": "gmail.com",
      "verdict": "risky",
      "score": 60,
      "reasons": [
        "possible typo: did you mean gmail.com?"
      ]
    }
  ],
  "summary": {
    "valid": 0,
    "risky": 1,
    "invalid": 0,
    "disposable": 0,
    "unknown": 0
  }
}

/v1/domain-check $0.001 / item

Check 1-2 domains ($0.001 each): A/AAAA/MX/NS/TXT records, SPF parse (all qualifier, includes, lookup count), DMARC parse (policy, pct, rua), DKIM keys at common selectors, RDAP registrar/created/expiry/status, and an A-F grade with reasons.

Free:

curl -s -X POST https://mailcheck.toolschemaforge.workers.dev/v1/free/domain-check -H 'content-type: application/json' -d '{"domain":"example.org"}'

Paid (x402): any x402 client, e.g. npx @x402/fetch or an agent wallet:

curl -i -X POST https://mailcheck.toolschemaforge.workers.dev/v1/domain-check -H 'content-type: application/json' -d '{"domain":"example.org"}'
# -> 402 with PAYMENT-REQUIRED; pay and retry with PAYMENT-SIGNATURE

Paid (Lightning credits):

curl -s -X POST https://mailcheck.toolschemaforge.workers.dev/v1/domain-check -H 'X-Credits-Token: mc_...' -H 'content-type: application/json' -d '{"domain":"example.org"}'
Example response
{
  "count": 1,
  "results": [
    {
      "input": "example.org",
      "domain": "example.org",
      "valid": true,
      "exists": true,
      "mail": {
        "accepts_mail": false,
        "null_mx": true,
        "spf": {
          "present": true,
          "all": "-all"
        },
        "dmarc": {
          "present": true,
          "policy": "reject"
        },
        "dkim": {
          "found": []
        }
      },
      "registration": {
        "status": "ok",
        "registrar": "Example Registrar",
        "created": "1995-08-31T04:00:00Z",
        "expires": "2027-08-30T04:00:00Z"
      },
      "grade": "A",
      "score": 100,
      "reasons": [
        "null MX: domain declares it sends/receives no mail"
      ]
    }
  ]
}

Lightning credits

curl -s -X POST https://mailcheck.toolschemaforge.workers.dev/v1/credits -H 'content-type: application/json' -d '{"sats":100}'
# {"payment_id":"...","bolt11":"lnbc...","sats":100,"poll":"https://mailcheck.toolschemaforge.workers.dev/v1/credits/..."}
curl -s https://mailcheck.toolschemaforge.workers.dev/v1/credits/<payment_id>     # after paying: {"status":"paid","token":"mc_..."}
curl -s https://mailcheck.toolschemaforge.workers.dev/v1/credits/balance -H 'X-Credits-Token: mc_...'

What it does not do