Status
Status
Section titled “Status”Live status is published at the public endpoint /api/status — a heartbeat the engine writes once per scheduled data run (freshness, active-listing count, last run, MCP health). This page fetches it and renders it below. If the fetch fails, or before the first probe lands, the manual check further down still works.
Loading live status… If this doesn't update in a moment, the manual check below always works.
Live engine health (/api/health)
Section titled “Live engine health (/api/health)”The heartbeat above is a curated snapshot written once per scheduled run. This panel calls /api/health directly, live, on page load — a deeper (and slightly heavier — it reads D1 directly) probe of the same underlying state: engine version, last run, and active-listing count, straight from the database rather than from the once-per-run snapshot above. If it fails to load, the heartbeat above and the manual commands further down still work.
Loading live engine health… If this doesn't update in a moment, the heartbeat above or the manual check below still work.
What is probed
Section titled “What is probed”- Listings freshness: did the daily 13:00 UTC run land, and how many active listings resulted (
listings_count,last_run). /mcp: the tool catalog is reachable (mcp_ok).- Model version: the engine build stamped on the run (
model_version). - Per-feed last-refresh: each source in data sources is checked against its freshness target during a run.
- Live engine health panel above: the same version/last-run/active-listings signals, read directly from
/api/healthinstead of the once-per-run heartbeat — useful right after a manual rescore, when the heartbeat above hasn’t caught up yet.
Checking manually
Section titled “Checking manually”curl https://api.plantedmoney.ai/api/status # public heartbeat (this page)curl https://api.plantedmoney.ai/api/health # deeper bindings + last runWhat to read in /api/health:
| Field | Meaning |
|---|---|
ok, d1, kv |
service and storage bindings up |
last_run |
most recent listings run: kind, finished timestamp, found, new_count. Older than ~24 h = the daily run failed |
active_listings |
current active inventory |
stale_model_rows |
active rows still scored by an older model_version — nonzero right after a release, draining via rescore |
/api/metrics/scorecard also returns last_data_run alongside the published accuracy numbers. If something looks stuck for more than a day, open a GitHub issue (repository link to be published).
