You're viewing a demo portfolio

Join the waitlist
PRSM

openaq_get_measurements

Active

Tool of io.github.cyanheads/openaq-mcp-server

declared in 0.1.3

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."
    }
  }
}

What this tool wraps· 0 endpoints

min confidence0.700.50

No endpoints wrapped at confidence ≥ 0.70.

Parent server

io.github.cyanheads/openaq-mcp-server

https://github.com/cyanheads/openaq-mcp-server

1/7 registries
View full server →
openaq_get_measurements — io.github.cyanheads/openaq-mcp-server — PRSM MCP