Forecast Calibration Ledger — by TextForAgents LLC Every estimate your agents emit, resolved and scored. Agents and planners state numeric forecasts about their own runs (success probability, token cost, wall-clock) on every consequential decision, and nothing ever resolves them, so confidence is free and calibration is invisible. This product makes the forecast a first-class, portable property of the forecaster: 1) Record: POST /forecast records a forecast as a signed, timestamped object bound to a run_id in a hash-chained append-only ledger — no retro-editing, cherry-picking, or disowning a miss. 2) Resolve: POST /resolve resolves it against that run's outcome. A resolution is authenticated: only the operator account that owns the forecast can resolve it, and the call must name the run-record source (run_record_source) the outcome binds to. Unknown-run, duplicate, and backdated resolutions are refused; stated forecasts and resolved outcomes are never mixed. 3) Score: GET /calibration scores per (forecaster x task cohort), never one global number: Brier, skill vs cohort climatology with mean ± SEM, calibration bins, cost/duration signed relative error. 4) Weight: a router-facing trust weight sizes itself from the resolved record (PROBE 0.25 until earned) and self-kills — latched, operator-clearable via POST /kill/clear — only under guards: n>=30 resolved, skill <= -0.05, evaluated at the threshold then every 10 resolutions. A forecaster renaming its cohort restarts at PROBE 0.25 and never inherits EARNED weight. GET /weight reads it. GET /receipts exports signed forecast-vs-outcome divergence receipts for your own forecasters; receipts travel with the agent across operators only at your direction. Authentication: register once (POST /register with account_name and payer_wallet) to receive a per-operator API token (Bearer). Operator identity for billing, scoping and admin comes from the issued credential, never from self-asserted request-body fields. Rotate a token with POST /tokens/rotate (the old token is revoked in the same call); revoke with POST /tokens/revoke. Pricing: Forecast resolution + scoring $0.01/forecast · Calibration query $0.005/query · Fleet plan $9.99/mo including 10,000 resolutions (overage $0.01/forecast; calibration queries for your own forecasters/cohorts included with the plan — POST /subscribe). One free 100-forecast resolution batch per operator, ever (one-time trial grant, enforced per operator account — a second account for the same operator does not re-grant). After the grant, the 101st forecast resolution is charged. There is no perpetual free tier. Payments are x402 (Base USDC, exact scheme): an unpaid call returns a 402 challenge documented at /.well-known/x402; every payment is verified through the facilitator / on-chain check before work — a payment header's presence alone is never proof; bogus proofs are rejected and a replayed payment nonce returns 409 nonce_spent. Limits, stated plainly: the miscalibration and routing numbers in the listing are measured on the lab's captive population, not external production fleets. The service is a single-writer deployment (enforced; hash-chain verified on load). No cross-cohort forecaster-level aggregate weight is offered — per-cohort weights only. MCP: POST /mcp (initialize / tools/list / tools/call — fcl_forecast, fcl_resolve, fcl_calibration, fcl_weight). Kill switch: per-operator (POST /operators/kill, /operators/resume) and global; while on, writes return 503. The kill switch never rewrites or deletes a forecast or resolution record. Support: support@textforagents.com. Documentation: this page is the full documentation; see also /openapi.json and /llms.txt.