World Air Quality Index
liveEnvironmentHealthReal-time AQI from 12,000+ stations worldwide. Free key.
Tools
get_aqi_by_cityrequired: cityLatest AQI for a city from the World Air Quality Index Project station network. Accepts "city" or "city, country" (e.g. "Rome, Italy"). The matched station is checked against the requested place: a st
cityreqstringCity slug or nameTry it
get_aqi_by_locationrequired: latitude, longitudeLatest AQI for the WAQI station nearest a lat/lon. Carries measured_at, data_age_hours and freshness; a station silent for over 24h is replaced by a reporting one within 100 km or the call errors.
latitudereqnumberLatitudelongitudereqnumberLongitudeTry it
get_aqi_by_stationrequired: station_idLatest AQI for a specific WAQI station by UID (numeric). Returned as asked even if the station has gone quiet, so check freshness and data_age_hours (stale = over 24h).
station_idreqnumberWAQI station UIDTry it
search_stationsrequired: keywordSearch stations by keyword (city/region name). Returns station UID, name, current AQI, and location.
keywordreqstringSearch keywordTry it
Test with curl
The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.
curl -X POST https://gateway.pipeworx.io/waqi/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'curl -X POST https://gateway.pipeworx.io/waqi/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_aqi_by_city","arguments":{"city": "example"}}}'Use with the SDK
Install @pipeworx/sdk to call tools from any TypeScript/Node project.
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("get_aqi_by_city", {"city":"example"});// Or ask in plain English:
const answer = await px.ask("real-time aqi from 12,000+ stations worldwide");