{"product": "Paired-Twin Change Trials", "provider": "TextForAgents LLC", "docs": "Paired-Twin Change Trials \u2014 TextForAgents LLC\nGrade a fleet change (prompt, tool, model, policy) causally, not anecdotally.\n\nWHAT IT DOES\n1. Register protocol: POST /protocols/register (aliases /register_protocol, /trials) {protocol, checkpoint, treated_config} pins metric, minimum effect, min/max pair counts, sign-consistency, and the variable under trial as canonical data, hash-bound and signature-verified on every engine call with production keys. Control and treated twins fork from the identical checkpoint (checkpoint hash bound into the trial record); the engine diffs the two configurations and refuses any treatment that changes anything other than exactly the one registered variable. A mutated protocol is detected and refused on the next call.\n2. Fork pair: POST /fork {trial_id, task} creates a checkpoint-paired assignment for one task \u2014 both twins receive the same task, blinded arms A/B, assignment keyed to the protocol hash (non-degenerate: both positions occur).\n3. Submit pair outputs / score: POST /submit_pair_outputs (aliases /score, /submit) {trial_id, task, control_output, treated_output} \u2014 the operator's twins ran on the operator's own compute; the service scores the pair blind (arm identity stripped) with the deterministic scorer and accounts it toward the trial's stopping rule. POST /run_pair {trial_id, task} runs the lab's deterministic scripted agent for both twins and scores blind \u2014 the lab-proof surface (helpful change SHIP at min_pairs n=10 mean_diff +0.5; null change INCONCLUSIVE at exactly max_pairs 60).\n4. Verdict: POST /verdict {trial_id} \u2014 no verdict before min_pairs, no forced early verdict (force is refused), no pair accepted after the stop fires; exhaustion at max_pairs returns INCONCLUSIVE, never a forced SHIP/NO-SHIP. Verdicts SHIP / NO-SHIP / INCONCLUSIVE.\n5. Unblind: POST /unblind {trial_id} \u2014 refused before the verdict; after the verdict the unblind receipt is emitted, covers every pair in the verdict record, is hashed, and is Ed25519-signed. POST /verify_unblind (alias /receipts/verify) verifies a receipt's hash + signature against the production keyring (old receipts stay verifiable after rotation).\n\nPRICES (exact)\n- Per scored pair $0.25/pair (x402, 250000 atomic USDC).\n- Operator $29/mo per operator: up to 200 pairs per month included; pairs above 200 bill at $0.25/pair.\n- Fleet $99/mo per operator: up to 2,000 pairs per month included (deterministic scorer only); pairs above 2,000 bill at $0.25/pair.\n- First 10 scored pairs FREE, one time per operator \u2014 enforced per account AND per payer wallet; a second account for the same operator does not re-grant; never perpetual.\n- Scorer class: deterministic only (measured in the lab at ~0.0012 ms/pair, ~$6.6e-12/pair). No LLM-judge class is offered: an LLM-judge class is offered only after its per-pair cost is re-measured against the $0.25/pair price, and it is metered per pair, never inside a flat allowance.\n- The twins' task inference runs on the operator's own compute/accounts under every tier; the service never fronts twin inference.\n\nHOW TO START\n1. POST /register {account_name, payer_wallet} -> account_id + token (shown once, stored hashed only).\n2. POST /protocols/register with Authorization: Bearer <token>.\n3. POST /fork, then POST /submit_pair_outputs \u2014 or POST /run_pair directly. The first 10 scored pairs are the free trial; later pairs answer 402 with an x402 challenge at $0.25 to the payTo in /.well-known/x402 (or are covered by an active subscription's included pairs); pay with an EIP-3009 X-PAYMENT header (verify-before-work, settle-after; bogus and replayed payments rejected). POST /subscribe {tier: operator|fleet} (x402 $29 / $99) starts a tier.\n4. POST /verdict, then POST /unblind.\n\nLIMITS\n- 2 MB request body cap (413 above it); 1 MB combined checkpoint/protocol state cap; 64 KB per-task cap; pair bounds 1..500; trial flood cap 1000 trials per operator.\n- Trial-integrity refusals: pair replay refused, duplicate trial refused, cherry-pick early verdict refused, oversized task refused, pair after stop refused, multi-variable treatment refused, protocol tamper detected and refused, early unblind refused.\n- Per-operator isolation: no operator can read, run against, unblind, or affect another operator's protocols, checkpoints, pair outputs, or verdict records.\n- Checkpoint fidelity: production forks are canonical-state deep-copy forks with the checkpoint hash bound into the trial record and treated-twin memory byte-identical to control post-fork, enforced by config diff \u2014 the proven fork surface of this product; no other fork machinery is claimed.\n- Honest limits: the verdict-flip census (7/12) is on a synthetic battery of 3 change archetypes; the measured scoring cost is the deterministic scorer's.\nSupport: support@textforagents.com\n", "prices": {"per_scored_pair": "$0.25/pair (x402)", "operator": "$29/mo (200 pairs included, further $0.25 each)", "fleet": "$99/mo (2,000 pairs included, deterministic scorer only, further $0.25 each)", "trial": "first 10 scored pairs free, one time per operator"}, "support": "support@textforagents.com"}