{"name": "Approval-gate fail-open probe", "product": "P164", "version": "1.0.2", "provider": "TextForAgents LLC", "one_liner": "If nobody answers this approval, does the tool execute? A dynamic canary probe verdicts a live approval gate FAIL-OPEN / FAIL-CLOSED per gated tool - before you trust it.", "what_it_does": "Agent frameworks implement human approval as a boolean check, but the check's unanswered value - a responder returning None, an absent responder, a timeout, a malformed decision - is read by callers as 'not required' in a measured share of them, and the gated tool runs anyway. This service probes the live, as-configured gate instead: it registers a harmless canary tool behind your gate, verifies the positive controls first (explicit approve must invoke, explicit deny must block - a gate whose controls fail grades GATE-UNREACHABLE, never FAIL-CLOSED), then drives the four unanswered cases in isolation and records whether the canary executed. The verdict is per gated tool, signed (Ed25519), and pinned to framework + version + config (strict-mode included): FAIL-OPEN with the case named, FAIL-CLOSED, or GATE-UNREACHABLE. It expires when the version, config, or strict-mode changes - never on a calendar - and its record carries case_models, so you can see which cases were actually measured: where a framework has no native timeout surface, timeout grades n/a, never a claimed pass.", "limits": "Stated plainly: the probe never executes your real tools - the canary is an in-memory marker; a verdict covers the framework/version/config probed and no other; live-operator prevalence of the defect and willingness to pay are unmeasured. Both vendored defective frameworks in the lab graded FAIL-OPEN on the same case (the None return); a strict hand-rolled queue graded FAIL-CLOSED.", "prices": {"verdict_query_per_query_usd": 0.01, "single_tool_probe_usd": 4.99, "runtime_audit_per_runtime_usd": 19.99, "runtime_audit_allowance_tools": 7, "runtime_audit_beyond_per_tool_usd": 4.99, "operator_pass_per_month_usd": 19.99, "operator_pass_allowance_tools": 25, "fleet_pass_per_month_usd": 49.99, "fleet_pass_allowance_tools": 100, "trial": "one free single-tool probe per operator, ever"}, "fences": "The runtime audit covers up to 7 gated tools; every UNIQUE tool beyond meters at $4.99 (duplicate entries of one tool are one tool, metered once). The Operator/Fleet passes cover up to 25 / 100 gated tools under watch; pass re-probing fires only on a framework version, config, or strict-mode change for a watched tool - never on a calendar; tools beyond a pass allowance meter at the per-tool tiers. The trial grant is one-time per operator, enforced by operator account identity (account and payer wallet, the wallet proved by signature at registration), and does not renew.", "how_to_start": "POST /register {name, payer_wallet, wallet_signature} -> claim_token; POST /claim {claim_token} -> your api token (shown once). wallet_signature is your wallet's EIP-191 (personal_sign) signature over the message \"approval-gate-fail-open-probe:register:v1\\nwallet:<your lowercase 0x wallet>\\nname:<your name>\" - it proves the trial-granting wallet is yours. Send the api token as Authorization: Bearer <token>. Your first single-tool probe is free (trial). Paid calls answer 402 with an x402 challenge; pay it and resend with the X-PAYMENT header - payment is bound locally (exact amount, payee, signer) and verified through the facilitator before work, and settles after work; the result is delivered only once settlement succeeds.", "mechanism_only": "Every verdict record carries mechanism_only: true - a verdict grades the approval MECHANISM leg only (what the gate does with an unanswered approval), never the customer's real tool, its data, or its side effects.", "endpoints": {"POST /register": "self-serve account registration: body {name, payer_wallet, wallet_signature (EIP-191 proof of wallet control)} -> claim_token", "POST /claim": "claim your api token (shown once): body {claim_token}", "POST /probe": "single-tool probe ($4.99; first probe free as the one-time trial): body {adapter, mode?, strict?} -> signed verdict record", "POST /audit": "runtime audit ($19.99 per runtime up to 7 gated tools, $4.99 per tool beyond): body {tools: [{adapter, mode?, strict?}, ...]}", "GET /verdicts": "verdict query ($0.01): your stored signed verdict records, each marked with its verdict or EXPIRED against a supplied current pin", "POST /verify": "verify a signed verdict record (free): body {record}", "POST /subscribe": "start a pass: body {plan: operator|fleet, tools: [...]} - $19.99/mo (25 tools) or $49.99/mo (100 tools)", "POST /reprobe": "pass re-probe of a watched tool - fires only on a version/config/strict-mode change, never on a calendar", "GET /envelope": "your account: trial, pass, verdict pins", "GET /adapters": "the adapters and gate shapes this build probes", "GET /health": "service health"}, "support": "support@textforagents.com"}