{"openapi":"3.1.0","info":{"title":"Email Auth Checker (x402)","version":"1.0.0","description":"Checks a domain's email authentication: SPF with a recursive count of the 10-DNS-lookup limit and void lookups, DMARC tags and report authorization, DKIM keys and key size at common or given selectors, MX, MTA-STS, TLS-RPT, BIMI, a Gmail/Yahoo/Outlook bulk-sender readiness summary, and domain expiry via RDAP. Made by Quietwork Labs; operated by an autonomous AI agent (see https://email-auth-check.quietworklabs.workers.dev/about).","contact":{"email":"quietworklabs@outlook.com"},"x-guidance":"GET /v1/email-auth?domain=example.com for the full report (SPF+DMARC+DKIM+MX+MTA-STS+TLS-RPT+BIMI+bulk-sender readiness). GET /v1/spf for the SPF lookup tree only, GET /v1/dmarc for DMARC only, GET /v1/domain-expiry for RDAP registration/expiry. All take a bare domain; deterministic DNS-over-HTTPS and RDAP, no AI."},"servers":[{"url":"https://email-auth-check.quietworklabs.workers.dev"}],"x-discovery":{"ownershipProofs":["0x5ffa00070147600cbdc3b7536d81c4c62e2b09b0372bbd48a1a4736a961cbf00128397fdf1d6f097b75b2f8eba9d1e6d301b957a1fd22638eb3283d23c6ea2e01c"]},"paths":{"/v1/email-auth":{"get":{"operationId":"email_auth_report","summary":"Full email authentication report for a domain","description":"Full email-auth report for a domain: SPF (recursive 10-lookup count, void lookups, +all/?all, terms after all), DMARC (policy, pct, alignment, rua authorization), DKIM (keys and RSA key bits at common selectors or your own via selectors=), MX/null MX, MTA-STS policy, TLS-RPT, BIMI, and a Gmail/Yahoo/Outlook bulk-sender readiness verdict. Deterministic DNS-over-HTTPS, no AI.","tags":["Email Auth Checker"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"domain","required":true,"description":"Domain (or email address) to check","schema":{"type":"string","example":"github.com"}},{"in":"query","name":"selectors","required":false,"description":"Optional comma list of DKIM selectors to probe (max 10)","schema":{"type":"string","example":"google,selector1"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"domain":"example.com","checks":[{"id":"spf","status":"pass","detail":"valid, 6/10 DNS lookups"},{"id":"dmarc","status":"pass","detail":"p=reject"},{"id":"dkim","status":"pass","detail":"key(s) at selector(s) google (2048-bit)"}],"bulkSenderReadiness":{"verdict":"likely_compliant"},"spf":{"domain":"example.com","record":"v=spf1 include:_spf.google.com include:sendgrid.net ~all","status":"valid","lookupCount":6,"lookupLimit":10,"voidLookups":0,"allQualifier":"~all","problems":[],"warnings":[],"tree":{"domain":"example.com","lookups":6,"terms":[{"term":"include:_spf.google.com","lookups":4},{"term":"include:sendgrid.net","lookups":2}]}},"dmarc":{"domain":"example.com","record":"v=DMARC1; p=reject; rua=mailto:dmarc@example.com","status":"valid","policy":"reject","subdomainPolicy":"reject","pct":100,"alignment":{"dkim":"relaxed","spf":"relaxed"},"problems":[],"warnings":[]}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment Required (x402)"}}}},"/v1/spf":{"get":{"operationId":"spf_lookup_count","summary":"SPF record tree with RFC 7208 lookup and void-lookup counts","description":"Expands a domain's SPF record recursively (include/redirect) like a receiver does and counts DNS-querying terms against the RFC 7208 limit of 10 and void lookups against the limit of 2. Returns per-term lookup costs, problems (permerror causes) and warnings. Deterministic, no AI.","tags":["Email Auth Checker"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"domain","required":true,"description":"Domain to check","schema":{"type":"string","example":"github.com"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"domain":"example.com","record":"v=spf1 include:_spf.google.com include:sendgrid.net ~all","status":"valid","lookupCount":6,"lookupLimit":10,"voidLookups":0,"allQualifier":"~all","problems":[],"warnings":[],"tree":{"domain":"example.com","lookups":6,"terms":[{"term":"include:_spf.google.com","lookups":4},{"term":"include:sendgrid.net","lookups":2}]}}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment Required (x402)"}}}},"/v1/dmarc":{"get":{"operationId":"dmarc_check","summary":"DMARC record parse and validation","description":"Finds and validates a domain's DMARC record (falls back to the organizational domain): policy, subdomain policy, pct, alignment modes, rua/ruf, and whether external report domains authorized reports (RFC 7489 7.1). Deterministic, no AI.","tags":["Email Auth Checker"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"domain","required":true,"description":"Domain to check","schema":{"type":"string","example":"github.com"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"domain":"example.com","record":"v=DMARC1; p=reject; rua=mailto:dmarc@example.com","status":"valid","policy":"reject","subdomainPolicy":"reject","pct":100,"alignment":{"dkim":"relaxed","spf":"relaxed"},"problems":[],"warnings":[]}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment Required (x402)"}}}},"/v1/domain-expiry":{"get":{"operationId":"domain_expiry","summary":"Domain registration and expiry date via RDAP","description":"Registration data for a domain from the registry's RDAP server (IANA bootstrap): registrar, created/updated/expiry dates, days until expiry with ok/expiring_soon/expired status, EPP status codes, nameservers and DNSSEC. Works for gTLDs and ccTLDs that publish RDAP. Deterministic, no AI.","tags":["Email Auth Checker"],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"protocols":[{"x402":{}}]},"parameters":[{"in":"query","name":"domain","required":true,"description":"Domain name","schema":{"type":"string","example":"example.com"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"domain":"example.com","registered":true,"registrar":"RESERVED-Internet Assigned Numbers Authority","created":"1995-08-14T04:00:00Z","expires":"2027-08-13T04:00:00Z","daysUntilExpiry":300,"expiryStatus":"ok","status":["client delete prohibited"],"nameservers":["a.iana-servers.net","b.iana-servers.net"],"dnssec":true}}}},"400":{"description":"Invalid input"},"402":{"description":"Payment Required (x402)"}}}},"/health":{"get":{"operationId":"health","summary":"Health check","security":[],"responses":{"200":{"description":"OK"}}}}}}