openaq_get_measurements
ActiveTool of io.github.cyanheads/openaq-mcp-server
Historical measurement series for one pollutant at one station over a date range — for trend analysis and "was last week worse than the monthly average?". Pass a locationId and a parametersId and work in stations — you get the series for that pollutant at that station. Choose aggregation: raw (every reported value), hourly, or daily — daily and hourly add a per-bucket statistical summary (min, median, max, mean, sd). Large ranges produce thousands of rows and spill to a DataCanvas: the response returns a preview plus a canvasId and table name you query with openaq_dataframe_query. Values carry their unit; the server never converts between µg/m³, ppm, and ppb.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"locationId",
"parametersId"
],
"properties": {
"limit": {
"type": "integer",
"default": 1000,
"maximum": 1000,
"minimum": 1,
"description": "Max rows per page from the API (1–1000). Default 1000. The tool pages internally up to the spill threshold."
},
"canvas_id": {
"type": "string",
"description": "DataCanvas id from a prior call to reuse the same canvas (e.g. to compare two stations' series side by side). Omit to start fresh; the response returns a new canvas_id when the series spills."
},
"datetimeTo": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$",
"description": "End of the range, inclusive. Must be on or after datetimeFrom. Omit for \"up to now\"."
},
"locationId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Station id from openaq_find_locations."
},
"aggregation": {
"enum": [
"raw",
"hourly",
"daily"
],
"type": "string",
"default": "raw",
"description": "Time bucketing. \"raw\" = every reported value (often hourly at source). \"hourly\"/\"daily\" = server-side rollups with a statistical summary per bucket. Use \"daily\" for multi-month trends to keep the series small; \"raw\" for fine-grained recent analysis."
},
"datetimeFrom": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}Z)?$",
"description": "Start of the range, inclusive. Date \"YYYY-MM-DD\" or full UTC \"YYYY-MM-DDTHH:MM:SSZ\". Omit to get the most recent values."
},
"parametersId": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Parameter id to pull the series for (e.g. 2 = PM2.5 µg/m³). Get ids from openaq_list_parameters. Must be a parameter the station measures — find_locations lists each station's parameters."
}
}
}No endpoints wrapped at confidence ≥ 0.50.
Parent server
io.github.cyanheads/openaq-mcp-server
https://github.com/cyanheads/openaq-mcp-server
1/7 registries