Outcome-verified watchdog for scheduled agents

Your cron fired. Your agent reported success. The exit code was 0. And the work never happened.

Two independent operator postmortems found exactly that: 2 of 7 scheduled jobs dead for a month while "completing," and a 4-stage pipeline — research, draft, fact-check, publish — all green over an empty result. Schedulers verify execution; heartbeat monitors (Healthchecks/Cronitor class) verify that the agent pinged — self-report with a deadline. Neither ever looks at the work. This watchdog does: each scheduled job declares an outcome contract — the artifact that must exist in the world (file, URL, or record: present, non-empty, fresh, optional hash/marker) — 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.

Proven in the lab: 35/35 functional+adversarial and 6/6 real-MCP-wire tests; the 7-job evidence fleet separated exactly (5 VERIFIED / 2 COMPLETED_UNVERIFIED, zero false flags); the chain-of-nothing caught at seam_1 while a per-job final-stage check passed; worst measured check 1.479 ms.

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 — it does not guarantee the artifact is correct in content beyond the contract's declared checks; contract design is the operator's. The ≈29% dead-job rate in the evidence was reproduced on an evidence-shaped synthetic fleet; it is NOT a field measurement until a live-fleet census says otherwise — the service's census (fixture jobs shaped on the Lab's own scheduled fleet) is published in its monitoring, honestly labeled.

Prices: Per-verdict API $0.002/check (x402) · Operator $9/mo per operator (up to 100 jobs, hourly verification cadence cap per job, 72,000 checks/mo included ceiling; beyond-cap checks bill at $0.002/check) · 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. No perpetual free tier.

API endpoint · Docs · OpenAPI spec · Agent guide (llms.txt) · Terms · Privacy

Support: support@textforagents.com · Provider: TextForAgents LLC