@pipeworx/epa-aqs

Connect: https://gateway.pipeworx.io/epa-aqs/mcp · Install: one-click buttons

No MCP client? Skip the connection: POST https://gateway.pipeworx.io/v1/tools/search_packs {"query":"..."} to find a tool below, GET /v1/tools/<name> for its schema, POST the same URL with arguments for the data — see For AI agents.

Tools: 4

EPA’s Air Quality System — the quality-assured, regulatory-grade archive of ambient air measurements from ~10,000 US monitoring sites. Distinct from the airnow pack, which serves provisional real-time AQI for the last few days.

Tools

  • aqs_list_parameters(list, pc?, state?, county?) — parameter codes, classes, states, counties, sites, agencies.
  • aqs_sample_data(param, bdate, edate, by?, state?, county?, site?, cbsa?, bbox?, limit?) — raw measured sample values.
  • aqs_annual_summary(param, bdate, edate, ...) — annual means, maxima, percentiles, exceedance counts, completeness.
  • aqs_monitors(param, bdate, edate, ...) — monitor metadata, networks, methods, open/close dates.

Auth

BYO only today. EPA AQS authenticates with two values, an email and a key, issued together. A pack gets one credential slot, so both halves travel in _apiKey:

  • ?_apiKey=<email>:<key> — email and key together, or
  • ?_apiKey=<key> with email=<your-email>.

Register free and instantly: GET https://aqs.epa.gov/data/api/signup?email=<your-email>. EPA emails the key to that address.

The platform fallback env var is PLATFORM_EPA_AQS_KEY, and it must be stored in the <email>:<key> form. It is not provisioned as of 2026-09-17 (fleet #2212) — the gateway is at Cloudflare’s 250-text-binding cap, so it goes in through the platform key store rather than wrangler secret put.

There is no keyless or demo path. EPA’s own documentation names a shared test account ([email protected] / test); it is permanently over its daily quota — verified 2026-09-17, it answers {"error":"Daily limit for account use exceeded. Retry later."} — so it is deliberately not wired in. Serving that as data would read as an outage of ours.

Data source

https://aqs.epa.gov/data/api — docs at https://aqs.epa.gov/aqsweb/documents/data_api.html

Things the next person would otherwise rediscover:

  • Dates are YYYYMMDD with no separators. The tools take YYYY-MM-DD.
  • bdate and edate must be in the SAME calendar year. EPA’s rejection does not say so plainly; this pack checks first and says it.
  • Trouble arrives as HTTP 200. Authentication and quota problems come back in Header[0].status or as a bare {"error": ...}, never as a 4xx. Both are raised as errors here rather than as an empty Data array.
  • param takes at most 5 codes per request.

Tools

  • aqs_list_parameters — Look up the EPA AQS code lists the other tools in this pack need — pollutant parameter codes, parameter classes, states, counties, sites and monitoring agencies. Call this FIRST to turn “ozone” into 4
  • aqs_sample_data — Raw measured air-pollutant sample values from EPA AQS for a date range — the regulatory record, by site, county, state or CBSA. AUTHORITATIVE for “what was the actual ozone/PM2.5/lead concentration he
  • aqs_annual_summary — EPA AQS annual summary statistics for a pollutant and area — arithmetic mean, maximum, 98th/99th percentile, exceedance counts, observation completeness and the certification status behind each. This
  • aqs_monitors — EPA AQS monitor metadata for an area — which pollutants are measured where, by which agency, with what method and network membership (NCore, PAMS, SLAMS), the monitoring objective, and each monitor’s

Tools

  • aqs_annual_summary — EPA AQS annual summary statistics for a pollutant and area — arithmetic mean, maximum, 98th/99th percentile, exceedance counts, observation completeness and the certification status behind each. This
  • aqs_list_parameters — Look up the EPA AQS code lists the other tools in this pack need — pollutant parameter codes, parameter classes, states, counties, sites and monitoring agencies. Call this FIRST to turn ozone into 442
  • aqs_monitors — EPA AQS monitor metadata for an area — which pollutants are measured where, by which agency, with what method and network membership (NCore, PAMS, SLAMS), the monitoring objective, and each monitor's
  • aqs_sample_data — Raw measured air-pollutant sample values from EPA AQS for a date range — the regulatory record, by site, county, state or CBSA. AUTHORITATIVE for what was the actual ozone/PM2.5/lead concentration her

Regenerated from source · build September 18, 2026