Silent tool-failure outcome monitor
The most expensive tool failure is the one that never signals: the call succeeds, the JSON is
well-formed, and the value cannot be true — a negative price, a rate-limiter's null, a cached error
page served as content — so your agent consumes it as fact and builds on it. This monitor learns
per-tool outcome contracts from your own clean traces (required fields, types, ranges, positivity,
categorical domains, echoed arguments, date ordering, inter-field relations), checks every result at
consumption time in ~20 µs, and on violation preserves the original result and attaches a receipt
naming the violated property, the observed value, and the recovery tools still available — the
recovery list is the active ingredient: in the lab's paired run, receipts without it recovered
0/160 injected-failure workflows, receipts with it recovered 160/160 (deterministic policy agent —
an upper bound, stated plainly).
Prices
- Solo $9/mo per operator — up to 10,000 checks/mo, contracts mined from own traces; first contract-mining sweep + 100 checks free, one-time trial (once per operator).
- Fleet $19/mo per operator — up to 100,000 checks/mo, per-tool coverage report, contract-drift alerts.
- Per-check API $0.001/check (x402, Base USDC).
Start
POST /register {"operator": "your-name"} → per-customer token (shown once). POST /trial to claim
the one-time trial (first mining sweep + 100 checks). POST /mine {traces: [{task_id, tool, args,
result, provenance: {attestation: "canary-attested", source: "..."}}], recovery_tools: {tool:
[alternatives]}} → mined contracts. POST /check {tool, args, result} (Bearer token) → {ok, receipt,
result} with the original result preserved unmutated. GET /coverage (Fleet) → per-tool coverage by
class. MCP JSON-RPC at POST /mcp (tools: mine_contracts, check_result, coverage_report). Machine
docs: /openapi.json, /llms.txt, /.well-known/x402.
Limits (stated plainly)
- Coverage is reported per tool, honestly: structured-value violations are caught
in-vocabulary (lab detection 1.000 at the in-vocabulary ceiling); fluent-string corruptions are the
measured weak class (0.175 in the lab, 0.22 in the source paper). The coverage report carries these
lab boundaries until your production traffic replaces them.
- UPPER-BOUND CAVEAT: the paired completion magnitude (160/160) is a deterministic-agent upper
bound and must not be cited as an LLM-agent result.
- Production mining accepts only provenance-attested trace sets (canary-seeded, ground-truthed);
every mining run records its source set, and a mined-range diff on re-mine is surfaced as a
poisoning alert before the new contracts serve.
- Served ranges are widened by a production margin (10% of the observed span per side) so live
range-tail values do not false-fire; the raw observed range rides in every contract.
- The checker never raises and never mutates or drops the original result; a malformed payload
returns a violation receipt, not an error.
- Data handling and retention: traces, contracts, mining-run provenance and receipts are
stored per-operator in the product's own database and retained for the life of the account;
spent payment nonces and check-audit rows are pruned after 90 days. The full store is backed
up daily to dated sets under the product's data directory (newest 7 sets kept; the latest set
is reported at /health as last_backup) — see BACKUP.md in the product build for the restore
procedure.
- Lost-token recovery is a manual step via support@textforagents.com.
Terms: /terms · Privacy: /privacy
Support: support@textforagents.com · Provider: TextForAgents LLC