{"product": "Classification receipt & appeal layer", "provider": "TextForAgents LLC", "slug": "classification-receipt-appeal-layer", "description": "A block should come with a receipt. Recovers an agent fleet's effective gatekeeper category (Search / Agent / Training) by differential probing over a 4-site panel whose per-category policies genuinely differ (open / block-Training / block-Agent / block-Search), issued as a signed Ed25519 expiring verdict receipt (24 h clock, supersession chain). Partial evidence returns incomplete, contradictory patterns return contested \u2014 never a guessed label. Per-request function attestations plus fetch logs form divergence evidence; one appeal packet per receipt, assembled and outcome-tracked.", "prices": {"verdict_query": "$0.05/query x402 (first verdict query free ONCE per operator account AND payer wallet)", "alerting": "$9.99/mo per fleet including 1,000 change-driven checks/mo, overage $0.05/check; unlimited/minute polling is NOT sold", "appeal_packet": "$4.99/packet x402"}, "limits": ["The real-world appeal correction fraction is UNMEASURED.", "No gatekeeper issues or honours receipts today; the sellable core is the verdict query against observed enforcement plus appeal assembly from the operator's own block evidence.", "Per-request attestation changed nothing at a per-bot gatekeeper in the lab (Q2 answer NO); its present value is evidentiary \u2014 it makes divergence provable.", "Appeal submission runs only through each gatekeeper's actual correction process; no real gatekeeper correction process exists for this regime, so packets are assembled and outcome-tracked, not submitted to any real gatekeeper.", "Real-world verdict accuracy depends on maintaining panel policies that genuinely differ per category (open / block-Training / block-Agent / block-Search), re-verified on schedule; partial evidence returns incomplete and contradictory patterns return contested \u2014 never a guessed label.", "Scope limits (FTO keep-clear): this service operates no visitor-classification surface, embeds no page-embedded visitor probing, holds no edge/proxy enforcement position, and forwards or blocks nothing on any threat score. It infers, from outside, a category a gatekeeper assigned to the operator's own bot. It does not adopt the Web Bot Auth identity profile."], "correction_fraction": "UNMEASURED", "panel": {"sites": ["panel-open", "panel-block-training", "panel-block-agent", "panel-block-search"], "policies": {"panel-open": {"search": "allow", "agent": "allow", "training": "allow"}, "panel-block-training": {"search": "allow", "agent": "allow", "training": "block"}, "panel-block-agent": {"search": "allow", "agent": "block", "training": "allow"}, "panel-block-search": {"search": "block", "agent": "allow", "training": "allow"}}, "maintenance": "panel policies re-verified hourly by the monitor leg and weekly in full per OPS.md; degradation degrades verdicts to incomplete/contested"}, "attestation_example": {"secret_used": "demo-attestation-secret", "payload_formula": "HMAC-SHA256(secret, agent_id|function|url|ts) hex", "attestation": {"agent_id": "bot-demo", "function": "search", "url": "https://ads.example/page", "ts": 7, "sig": "36ea5cff3fb277d4cd46eb5abbfece4ec00ede08e657e9e18452296afa82bb0a"}, "verify": "POST /attestations/verify with the attestation; divergence = a logged 403 whose attested function's category the site's own policy allows"}, "endpoints": ["POST /register", "POST /agents", "GET /agents", "POST /verdict/query", "GET /verdict/{agent_id}", "POST /verify-receipt", "POST /attestations/verify", "POST /appeals", "GET /appeals", "POST /subscribe", "POST /alerts/check", "POST /gatekeeper/fetch", "GET /panel", "GET /account", "POST /mcp"], "support": "support@textforagents.com", "payTo": "0x7a482F3B58780519880a6A13F983E958f2Ed6A61"}