Building status.live: ski lifts, roads, and webcams with visible data freshness A developer built status.live, a free site that aggregates ski lift status, road conditions, webcams, park alerts and surf conditions across 284 ski resorts, exposing the data through a read-only JSON API and MCP tools. The implementation distinguishes reported closures from empty or failed sources, tracks observation time separately from check time, and uses scheduled ingestion on Cloudflare Workers with KV snapshots and D1 to keep upstream calls at 432 per day rather than scaling with traffic. A ski lift can be running while the access road is restricted. A webcam can respond successfully while showing an old image. An empty lift board can mean the resort has stopped publishing its winter report. These are different states, but a simple “open” or “closed” badge can hide the distinction. I’m building status.live https://status.live/ , a free website for checking ski lifts, road conditions, webcams, park alerts, campground opening schedules, and surf conditions. It also exposes a read-only JSON API and MCP tools. The ski catalog currently includes 284 resorts; available data and freshness vary by source. Here are four decisions that have shaped the implementation, including a map mistake that made an otherwise valid build hard to use. A successful HTTP response doesn’t necessarily contain a useful lift report. A parser can return an empty list because the resort has removed its seasonal board, changed its markup, or genuinely has nothing listed. The data model needs to preserve that uncertainty. A simplified version looks like this: type LiveSection