Fewer statuses, catch-all billing, auto top-up
Fewer status words. Verify is
valid | invalid | catch_all | unknown; find is found | not_found | unknown. risky and blocked are gone: a risky result on an accept-all domain is catch_all, and everything else inconclusive is unknown. A new reason field carries the detail on both operations, so nothing was lost.Catch-all domains can now resolve. When the identity lane ties an exact address to a real account profile on an accept-all domain, the result is valid with reason: "profile_linked" and is charged. Previously this evidence was reported but downplayed, and a find that relied on it earned nothing.Finds are charged. A find is charged when exactly one candidate qualifies (status: "found"). Ambiguous, not-found and failure modes stay free.attribution removed. One confidence tier now carries evidence strength; high means a profile match.Auto top-up. Refill the wallet automatically when the balance falls below a level you choose. See Billing.v1 result contract
Lean, snake_case results. The job envelope is now
id, operation, execution_state, billing, charged_micros, rate_micros, result. Verify results carry status, reason, provider, domain, catch_all, role, free, disposable, retryable, checked_at. Find results carry status, confidence, attribution, mailbox, provider, domain, role, free, disposable.Find status distinguishes not_found (every candidate rejected) from unresolved (candidates could not be confirmed or ruled out) and ambiguous (several accepted), so a catch-all domain never reads as a confident negative.Added: provider (mail provider from MX), reason, role, free, disposable, retryable.Removed: the raw engine payload, alternates, pattern, sources, nextAction, conclusive, summary, outcome, and every camelCase field name.