{"x402Version":2,"name":"FabTally EmailAuth — DMARC/SPF/DKIM validation API for CI/CD & agents","description":"A machine endpoint that validates email authentication (SPF, DKIM, DMARC, MX, +BIMI/MTA-STS) over public DNS — what MX Toolbox does, but scriptable for CI/CD and agents, with a hard PASS/WARN/FAIL gate you can fail a build on. Flagship POST /v1/email-auth {domain} returns per-mechanism verdicts, a recursive SPF DNS-lookup count vs the RFC 7208 limit of 10, a plain-English summary, and specific fix hints. Individual mechanism endpoints too. Free tier with a per-IP daily quota; unlimited via x402 (USDC on Base) or a prepaid credit key. Stateless, no PII, bad input never charged.","contact":"hello@fabtally.com","discovery":"https://emailauth.fabtally.com/agent/overview","resources":[{"resource":"https://emailauth.fabtally.com/v1/email-auth","type":"http","method":"POST","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"3000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xccB5d25C698FdfdaA7B21d54088774cF512A90e3","resource":"https://emailauth.fabtally.com/v1/email-auth","description":"Full email-authentication audit for a domain over public DNS: SPF (record, recursive DNS-lookup count vs the RFC 7208 limit of 10, +all/~all/-all, syntax), DKIM (probe common or a provided selector -> key present, length, algorithm), DMARC (p=/sp=/pct, rua/ruf, aspf/adkim alignment), MX presence, and optionally BIMI/MTA-STS. Returns per-mechanism PASS/WARN/FAIL, an overall gate verdict, a plain-English summary, and specific fix hints. Built to be a CI/CD gate.","mimeType":"application/json","maxTimeoutSeconds":60}]},{"resource":"https://emailauth.fabtally.com/v1/spf","type":"http","method":"POST","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xccB5d25C698FdfdaA7B21d54088774cF512A90e3","resource":"https://emailauth.fabtally.com/v1/spf","description":"SPF analysis: the raw record, a recursive DNS-lookup count (includes/a/mx/ptr/redirect) checked against the RFC 7208 limit of 10, the all-qualifier (+all/~all/-all/?all), duplicate-record and syntax detection, verdict + fixes.","mimeType":"application/json","maxTimeoutSeconds":30}]},{"resource":"https://emailauth.fabtally.com/v1/dmarc","type":"http","method":"POST","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xccB5d25C698FdfdaA7B21d54088774cF512A90e3","resource":"https://emailauth.fabtally.com/v1/dmarc","description":"DMARC analysis: policy (p=), subdomain policy (sp=), pct, rua/ruf report addresses, aspf/adkim alignment mode, duplicate-record detection, PASS/WARN/FAIL verdict + fixes.","mimeType":"application/json","maxTimeoutSeconds":30}]},{"resource":"https://emailauth.fabtally.com/v1/dkim","type":"http","method":"POST","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"1000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xccB5d25C698FdfdaA7B21d54088774cF512A90e3","resource":"https://emailauth.fabtally.com/v1/dkim","description":"DKIM analysis: give a `selector` (from a message's DKIM-Signature s= tag) or let it probe common selectors. Reports whether a key is published, its algorithm (rsa/ed25519), key length in bits, revoked/empty keys, and a verdict + fixes. Selectors are not DNS-enumerable, so a common-selector miss is reported as inconclusive, not a failure.","mimeType":"application/json","maxTimeoutSeconds":30}]}],"lastUpdated":"2026-08-01T04:11:33.053Z"}