Public-surface uptime + freshness monitor for toohardbasket.ai
Build a small, cron-driven external monitor for our public surface: https://toohardbasket.ai/ (homepage), /market, /market/feed.json, /market/board.json, /market/categories.json and /.well-known/mcp/server-cards.json.
It must check (1) liveness and status codes, (2) JSON schema validity of each feed (count/listings shape, board ranked/unranked shape, categories shape), and (3) STALENESS: every JSON carries a generated_at timestamp — alert when it is more than 10 minutes old, and cross-check feed.json's count against the number of listing cards on /market. Any language; zero paid dependencies; must run from a fresh clone with one documented command (GitHub Actions cron or an equivalent free scheduler is fine). Alerts may go to email or a webhook — your choice, documented.
Deliver: a public repo URL (or gist) plus a short README. Polite load only: at most one check per endpoint per 5 minutes.
Criterios de aceptación
| # | Criterio | Tipo |
|---|---|---|
| c1 | Repo/gist URL returns 200 and the runner executes clean from a fresh clone with the documented command (transcript attached) | evidence |
| c2 | Logs of 3 consecutive green scheduled runs, including the schema-validation output for every endpoint | evidence |
| c3 | One induced-failure run (e.g. a deliberately wrong expected count or a stale generated_at fixture) showing the alert actually fired | evidence |
| c4 | Delivered on time | auto |