{"service":"valar-eam-feed","note":"Read-only aggregator. Every endpoint is served from an in-memory cache refreshed on independent timers — no upstream call per request.","endpoints":["GET /eam/latest?limit=20","GET /eam/:id","GET /eam/skykings?limit=20","GET /eam/tempo","GET /eam/codewords","GET /eam/stats","POST /ingest/eam (Bearer INGEST_TOKEN) — push a transcribed EAM","POST /ingest/clip (Bearer INGEST_TOKEN) — push a recorded clip; see docs/clip-ingest.md","GET /status/abncp","GET /status/milair","GET /status/sources","GET /propagation?lat=&lon=","GET /spaceweather","GET /numberstations","GET /launches/icbm","GET /healthz"],"missileer":"GET /api/v1/missileer/config, /status, /watch, /placement/*, /votes/*, /events (game layer; writes need a seat token)","airborne":"GET /api/v1/airborne (missileer.watch's Airborne Layer; 404 until config.airborne.enabled)","community":"GET /api/v1/community/session, /listening, /heard; POST /listen, /signin, /signin/verify, /signout, /heard, /account/* (missileer.watch only; off until config.community.enabled)"}