# Agent-asset reclamation (lost-and-found) — TextForAgents LLC The lost-and-found for assets your agents created and forgot. ## Start (self-serve, no operator step) 1. POST /register {"operator": "your-name"} -> {"account_id", "token"} — keep the token; it is your per-customer credential. Identity is canonicalised (NFKC, casefolded, format characters stripped, whitespace collapsed): registering again under a case/whitespace/unicode variant of the same identity returns the same account and does NOT re-grant the trial. 2. POST /sweep {"traces": [...], "assets": [...]} — traces are creation events {trace_id, provider, ts, name, kind, instrument_hash, params} (plain instrument/recovery material, if sent, is hashed at intake and never stored; assets carry only an instrument_hint hash prefix). Or {"source": "fixture", "seed": 49} to rehearse on the seeded synthetic footprint (44 house assets, 30 orphans, 16 foreign decoys). Response: confidence-scored claims (strict 1:1, per-provider threshold), the register entries created, per-provider discovery-cost rows, and a signed sweep receipt. Billing: the first single-provider mini-sweep (body names one "provider") is free, one time per operator; a full sweep is $29 one-time — pay per sweep with an x402 X-PAYMENT header, or POST /subscribe {"tier": "sweep"} to bank a sweep credit. 3. POST /prove-title {"asset_id", "proofs": {"instrument_full": ..., "params": {...}, "recovery_token": ...}} — hash comparisons against the creation record only; the original credential is never used. Posture A proves via payment instrument or creation replay; posture B via the recovery channel; posture C has no challenge path — the asset stays register-only, title unproved, reported not forced. Forged and empty proofs are rejected. 4. POST /checks {"kind", "provider", "name"} — check-before-create: $0.001/check via x402, or included unlimited on an active Register plan. Returns the existing orphan instead of a duplicate spend. 5. Register plan: POST /subscribe {"tier": "register"} with an x402 payment of $9.00 activates the standing register for 30 days (dormancy clocks + unlimited checks). 6. POST /heartbeat {"asset_id", "ts"?} or POST /telemetry {"asset_id", "kind": "use"|"heartbeat", "ts"?} — the dormancy telemetry contract: an asset is dormant only when NEITHER use nor heartbeat has been seen inside the staleness window (90 days default); heartbeat inside the window with no recent use classifies quiet_but_live, a distinct class, never dormant. POST /dormancy {"asset_id", "now"?} returns the classification. 7. POST /exit-orders {"asset_id"} (or {"entry": {...}}) — emits a CARD-045 / EXCHANGE-162 exit work order from the register entry + dormancy verdict. A complete order carries asset_id, provider, kind, disposition, title_state, credential_status, value_usd, liability_usd; an incomplete entry returns complete=false with every missing field named — never a crash. Boundary: P46 (agent-exit-offboarding-execution) executes exits by service_id from its own portfolio register under its own account and payment and exposes no work-order intake endpoint, so the emitted order is the handoff artifact — this product does not submit or execute exits and never represents an order as submitted. 8. Thresholds: GET /thresholds lists the per-provider claim thresholds (default 0.75). POST /thresholds {"provider", "threshold"} calibrates one provider; the floor is 0.66 — the strongest single signal scores 0.65, so no single signal (e.g. a copied instrument hint alone) can ever be sufficient, and claiming stays strict 1:1 at any allowed setting. 9. Discovery costs: GET /discovery-costs returns your per-provider ledger rows (records read, pairs scored, wall time, minutes estimate). v1 discovery runs over operator-supplied records and the built-in fixture — no real provider APIs are integrated, external provider-API minutes are unmeasured, and the ledger never fabricates them. 10. MCP: POST /mcp (JSON-RPC) — tools sweep, prove_title, check_before_create, register_list, dormancy, heartbeat, exit_work_order — same account token and billing. 11. Receipt keys: GET /verify-key lists accepted signing-key fingerprints (rotation keeps archived keys verifiable). POST /receipts/verify {"receipt": {...}} verifies a signed sweep receipt publicly. ## Limits A fingerprint match is a confidence-scored claim, not a guarantee of title. Posture-C title is unprovable without the original credential. Demand and orphaned-asset value are unmeasured. Support: support@textforagents.com. ## Prices Sweep $29 one-time per operator · Register $9/mo per operator · Check API $0.001/check (x402). One single-provider mini-sweep free, one time per operator. No perpetual free register.