# mugilu - India's open sky > Give a coordinate anywhere in India and get what the sky is doing to you right > now: air, heat (with wet-bulb), rain, UV, dust, and the official government > warning over that spot, plus an Ambient read naming the single worst hazard for > you. Open and free; code is MIT, each data source keeps its own licence. > Informational only, not for medical, emergency, or safety-critical decisions. ## Entry points - MCP server (for AI agents): https://mugilu.live/mcp (JSON-RPC 2.0 over Streamable HTTP, MCP 2025-06-18; tools: conditions_at, search_place, nearest_stations, active_warnings, national_now; plus resources and prompts) - OpenAPI spec (REST): https://mugilu.live/openapi.json - Conditions (HTML): https://mugilu.live/c/{lat},{lon} e.g. https://mugilu.live/c/12.97,77.59 - Conditions (JSON): https://mugilu.live/c/{lat},{lon}.json - Conditions (Markdown): https://mugilu.live/c/{lat},{lon}.md - Persona weighting: add ?as=asthma|elderly|child|outdoor|heart to any /c URL - Nearest air stations: https://mugilu.live/near?lat={lat}&lon={lon} - Place search / typeahead: https://mugilu.live/suggest?q={name} - Air leaderboard: https://mugilu.live/index.json and https://mugilu.live/index.md - Active warnings (national): https://mugilu.live/warnings (also .json and .md) - Per-station: https://mugilu.live/s/{provider}/{id}.json and .md - Attribution: add ?ref=your-app to any API or /embed URL to identify your app or site (aggregate, domain-level; helps us see who builds on mugilu) - About: https://mugilu.live/about - Methodology (the Ambient thresholds, glass-box): https://mugilu.live/methodology - Terms and attribution: https://mugilu.live/terms ## What a conditions response carries The JSON is a versioned, self-describing contract: a "schema" and "version", and a "units" map (notably CO is mg/m3 while other pollutants are ug/m3). Layers: air (AQI + band + pollutants + AQLI years-of-life-lost), heat (temperature, humidity, feels-like, wet-bulb, WBGT), rain, uv, dust, wind, visibility, fire/crop-burn smoke (NASA FIRMS), and any official NDMA/SACHET warnings at the point. Each layer carries its "source", a "kind" (measured / modelled / observed) and its own "as_of". An "ambient" object names the single worst hazard weighted by persona, with a plain "summary". Every response also carries "refresh_after_seconds" (how long the reading stays current). Attribution and a disclaimer travel inside every response. ## Freshness and polling mugilu recomputes on a ~15-minute cycle. Air quality and official warnings only change hourly; weather (heat, wet-bulb, wind, UV, dust) moves at most every 15 minutes. A single conditions response already carries every layer, each with its own "as_of", so you never need to poll per-metric. Refresh at most once every 15 minutes (the "refresh_after_seconds" value, also sent as the Cache-Control max-age on JSON, Markdown and /embed): polling faster returns identical data. If you display many places, that rate is per place. Readings are current, never a forecast. ## Sources Air: CPCB, Airnet (CSTEP), Aurassure via the OAQ broker, plus OpenAQ. Weather / heat / UV / dust: Open-Meteo (CC-BY 4.0). Official warnings: NDMA / IMD (SACHET). Geography: bharatlas. Health impact: AQLI methodology (U Chicago EPIC). Code: MIT.