"\n\nOutcome-verified watchdog for scheduled agents \u2014 TextForAgents LLC\n

Outcome-verified watchdog for scheduled agents

\n

A run is done only when its declared artifact exists in the world, not when the agent says so.

\n

Your cron fired. Your agent reported success. The exit code was 0. And the work never happened. Schedulers verify execution; heartbeat monitors verify that the agent itself pinged \u2014 self-report with a deadline. Neither ever looks at the work. This watchdog does: each scheduled job declares an outcome contract \u2014 the artifact that must exist in the world (file, URL, or record: present, non-empty, fresh, optional hash/marker) \u2014 and the watchdog verifies the artifact itself, never the agent's claim, issuing VERIFIED / COMPLETED_UNVERIFIED / STALLED (no progress checkpoint within the job's own wall-clock budget, heartbeat notwithstanding) / MISSED verdicts, with hash-chained receipts bound to the artifact hash and a last_verified_success API that answers \"when was my last verified success?\". Multi-stage jobs can declare a chain contract: each stage's artifact is the next stage's required input, and the first broken seam is named (seam_0, seam_1, ...).

\n

Prices: Per-verdict API $0.002/check (x402) \u00b7 Operator $9/mo per operator (up to 100 jobs, hourly verification cadence cap per job, 72,000 checks/mo included ceiling; checks beyond the cap bill at $0.002/check) \u00b7 Fleet $29/mo per operator (up to 1,000 jobs, hourly cap, 720,000 checks/mo included ceiling). First 100 checks free, one time per operator (account + payer wallet bound) \u2014 there is no perpetual free tier. Support: support@textforagents.com

\n

Stated plainly: A VERIFIED verdict means the watchdog itself fetched, hashed, or read back the declared artifact and found it present, non-empty, and fresh within the run window \u2014 it does not guarantee that a VERIFIED artifact is correct in content beyond the contract's declared checks (existence, non-emptiness, freshness, optional hash/marker/key); contract design is the operator's. The roughly 29% dead-job rate in the launch evidence was reproduced on an evidence-shaped synthetic fleet; it is NOT a field measurement \u2014 the live-fleet census recorded by this service (fixture jobs shaped on the Lab's own scheduled fleet) is published in its monitoring, honestly labeled, and a true field census awaits operators declaring contracts on their real fleets. No batch-activity prediction, no dependency-graph construction from scheduler feeds, no failure-recovery automation, and no timestamping service is offered.

\n

How to start

\n
    \n
  1. POST /register with {\"name\": ..., \"payer_wallet\": ...} \u2014 you get a one-time claim token. No credentials are needed to read this page, the docs (/docs), the OpenAPI spec (/openapi.json) or /llms.txt.
  2. \n
  3. POST /trial/claim with {\"claim_token\": ...} \u2014 you get your API token and the one-time trial grant (first 100 checks free, one time per operator).
  4. \n
  5. With Authorization: Bearer <token>: POST /tools/register_job to declare a job's outcome contract, PUT /artifacts/<path> to place file/record artifacts in your scoped artifact store (or declare a URL contract on your own declared host), POST /tools/start_run, /tools/checkpoint, /tools/complete_run (the watchdog verifies the artifact itself), /tools/verify_now, /tools/watchdog_tick, /tools/last_verified_success, /tools/list_verdicts. The same 8 tools are served over MCP at POST /mcp.
  6. \n
  7. POST /subscribe takes an Operator ($9/mo) or Fleet ($29/mo) plan via x402. POST /verify checks any signed receipt's Ed25519 signature and hash chain binding; GET /verify-key lists the accepted signing-key fingerprints.
  8. \n
\n

Terms: /terms \u00b7 Privacy: /privacy \u00b7 Support: support@textforagents.com

\n"