Stage-Completeness Receipts (P115) - TextForAgents LLC Signed proof that a zero is a real zero. At every pipeline stage boundary an empty result is byte-identical to a failed scan (auth expired, wrong path, swallowed exception, truncated pagination). This service issues a signed receipt at the boundary: scan parameters, scanned count, SHA-256 listing hash, Merkle root, the full listing, the matched set, and the explicit missing list (expected - scanned). Completeness is computed by the issuer, never asserted by the caller: an auth_failed/error scan can only be UNKNOWN, a truncated or missing-bearing scan PARTIAL at best, and only a clean ok scan with an empty missing list is COMPLETE. A downstream stage concludes EMPTY only from a verified, fresh, COMPLETE receipt whose listing hash and parameters match what it is about to trust; every other state is UNKNOWN. Start: POST /register {"account_name": "...", "payer_wallet": "0x..."} returns a per-customer token (self-serve; no operator-issued tokens). Then, with Authorization: Bearer : - POST /receipts {stage, source, query, listing, matched, expected, scan_status, pages_seen, truncated, ttl} - first receipt free (one per operator, ever); then x402 $0.02/receipt. - POST /verify {receipt, presented_listing, expected_source, expected_query} - x402 $0.005/check. Returns valid/trusted/fresh, the completeness grade, and the downstream conclusion (EMPTY / NONEMPTY / UNKNOWN). - POST /probe {receipt_id or receipt, source_listing, sample_fraction} - x402 $0.25/probe. Independent re-scan of a sampled slice, hard-capped server-side at 5% of the claimed set (above the cap: HTTP 400). The probe is a coarse-fault tripwire only - measured at a 5% sample: wrong-path 1.00, truncated-50% 1.00, 10%-missing 1.00, 3%-missing 0.80, 0.3%-missing 0.15. It does NOT reliably detect small holes; small-hole completeness is carried by the listing hash + explicit missing list, not by sampling. - GET /receipts/ - your own receipt (operator-scoped). - GET /issuer-key - the issuer's Ed25519 public keys (current + archived) so any third party can verify a receipt offline. - POST /mcp - MCP surface (initialize / tools/list / tools/call) with tools issue_receipt, verify_receipt, coverage_probe, get_receipt; the same prices and trial rule apply. TTL guidance (per pipeline): TTL is issuer-set at issuance, 1-3600s, default 300s; verification refuses stale receipts. Set the TTL just above your stage's scan interval plus downstream hand-off latency: a receipt should expire before the scanned set can plausibly change underneath the downstream stage - short TTLs (60-300s) for fast queues/inboxes, up to 3600s only for slow, append-mostly sources whose scan interval is itself long. Never reuse a receipt across scan cycles. Prices: Receipt issuance $0.02/receipt - Verification $0.005/check - Coverage probe $0.25/probe (sample capped at 5% of the claimed set). One free receipt per operator, ever; no perpetual free tier. No priced direct competitor is named in the diligence record; the prices sit far below one hand recount of a scan. Pay-to (x402): 0x7a482F3B58780519880a6A13F983E958f2Ed6A61 (Base USDC). Support: support@textforagents.com. Terms: /terms - Privacy: /privacy. This product is not represented as FTO-cleared; its freedom-to- operate screen is AMBER (screen-level, no claim chart yet).