EPA — U.S. Environmental Protection Agency · Capability
EPA Air Quality System (AQS) API — Monitors
Monitors. 5 operations. Lead operation: List Monitors by Site. Self-contained Naftiko capability covering one EPA business surface.
What You Can Do
GET
Monitorsbysite
— List Monitors by Site
/v1/monitors/bysite
GET
Monitorsbycounty
— List Monitors by County
/v1/monitors/bycounty
GET
Monitorsbystate
— List Monitors by State
/v1/monitors/bystate
GET
Monitorsbybox
— List Monitors by Bounding Box
/v1/monitors/bybox
GET
Monitorsbycbsa
— List Monitors by CBSA
/v1/monitors/bycbsa
MCP Tools
list-monitors-site
List Monitors by Site
read-only
idempotent
list-monitors-county
List Monitors by County
read-only
idempotent
list-monitors-state
List Monitors by State
read-only
idempotent
list-monitors-bounding-box
List Monitors by Bounding Box
read-only
idempotent
list-monitors-cbsa
List Monitors by CBSA
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: EPA Air Quality System (AQS) API — Monitors
description: 'Monitors. 5 operations. Lead operation: List Monitors by Site. Self-contained Naftiko capability covering one EPA business surface.'
tags:
- EPA
- Monitors
created: '2026-05-29'
modified: '2026-05-29'
binds:
- namespace: env
keys:
EPA_EMAILKEY_KEY: EPA_EMAILKEY_KEY
capability:
consumes:
- type: http
namespace: aqs-monitors
baseUri: https://aqs.epa.gov/data/api
description: EPA Air Quality System (AQS) API — Monitors business capability. Self-contained, no shared references.
authentication:
type: apikey
key: key
value: '{{env.EPA_EMAILKEY_KEY}}'
placement: query
resources:
- name: monitors-bysite
path: /monitors/bySite
operations:
- name: monitorsBySite
method: GET
description: List Monitors by Site
inputParameters:
- name: email
in: query
type: string
required: true
description: Registered email address.
- name: key
in: query
type: string
required: true
description: Account-specific access key.
- name: param
in: query
type: string
required: true
description: Comma-separated list of up to 5 AQS 5-digit parameter codes.
- name: bdate
in: query
type: string
required: true
description: Begin date (YYYYMMDD).
- name: edate
in: query
type: string
required: true
description: End date (YYYYMMDD). Must be in the same year as bdate for most services.
- name: state
in: query
type: string
required: true
description: 2-digit state FIPS code.
- name: county
in: query
type: string
required: true
description: 3-digit county code.
- name: site
in: query
type: string
required: true
description: 4-digit site code.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: monitors-bycounty
path: /monitors/byCounty
operations:
- name: monitorsByCounty
method: GET
description: List Monitors by County
inputParameters:
- name: email
in: query
type: string
required: true
description: Registered email address.
- name: key
in: query
type: string
required: true
description: Account-specific access key.
- name: param
in: query
type: string
required: true
description: Comma-separated list of up to 5 AQS 5-digit parameter codes.
- name: bdate
in: query
type: string
required: true
description: Begin date (YYYYMMDD).
- name: edate
in: query
type: string
required: true
description: End date (YYYYMMDD). Must be in the same year as bdate for most services.
- name: state
in: query
type: string
required: true
description: 2-digit state FIPS code.
- name: county
in: query
type: string
required: true
description: 3-digit county code.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: monitors-bystate
path: /monitors/byState
operations:
- name: monitorsByState
method: GET
description: List Monitors by State
inputParameters:
- name: email
in: query
type: string
required: true
description: Registered email address.
- name: key
in: query
type: string
required: true
description: Account-specific access key.
- name: param
in: query
type: string
required: true
description: Comma-separated list of up to 5 AQS 5-digit parameter codes.
- name: bdate
in: query
type: string
required: true
description: Begin date (YYYYMMDD).
- name: edate
in: query
type: string
required: true
description: End date (YYYYMMDD). Must be in the same year as bdate for most services.
- name: state
in: query
type: string
required: true
description: 2-digit state FIPS code.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: monitors-bybox
path: /monitors/byBox
operations:
- name: monitorsByBox
method: GET
description: List Monitors by Bounding Box
inputParameters:
- name: email
in: query
type: string
required: true
description: Registered email address.
- name: key
in: query
type: string
required: true
description: Account-specific access key.
- name: param
in: query
type: string
required: true
description: Comma-separated list of up to 5 AQS 5-digit parameter codes.
- name: bdate
in: query
type: string
required: true
description: Begin date (YYYYMMDD).
- name: edate
in: query
type: string
required: true
description: End date (YYYYMMDD). Must be in the same year as bdate for most services.
- name: minlat
in: query
type: number
required: true
description: Minimum latitude of bounding box.
- name: maxlat
in: query
type: number
required: true
description: maxlat
- name: minlon
in: query
type: number
required: true
description: minlon
- name: maxlon
in: query
type: number
required: true
description: maxlon
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: monitors-bycbsa
path: /monitors/byCBSA
operations:
- name: monitorsByCBSA
method: GET
description: List Monitors by CBSA
inputParameters:
- name: email
in: query
type: string
required: true
description: Registered email address.
- name: key
in: query
type: string
required: true
description: Account-specific access key.
- name: param
in: query
type: string
required: true
description: Comma-separated list of up to 5 AQS 5-digit parameter codes.
- name: bdate
in: query
type: string
required: true
description: Begin date (YYYYMMDD).
- name: edate
in: query
type: string
required: true
description: End date (YYYYMMDD). Must be in the same year as bdate for most services.
- name: cbsa
in: query
type: string
required: true
description: 5-digit Core Based Statistical Area code.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
exposes:
- type: rest
namespace: aqs-monitors-rest
port: 8080
description: REST adapter for EPA Air Quality System (AQS) API — Monitors. One Spectral-compliant resource per consumed operation, prefixed with /v1.
resources:
- path: /v1/monitors/bysite
name: monitors-bysite
description: REST surface for List Monitors by Site.
operations:
- method: GET
name: monitorsBySite
description: List Monitors by Site
call: aqs-monitors.monitorsBySite
with:
email: rest.email
key: rest.key
param: rest.param
bdate: rest.bdate
edate: rest.edate
state: rest.state
county: rest.county
site: rest.site
outputParameters:
- type: object
mapping: $.
- path: /v1/monitors/bycounty
name: monitors-bycounty
description: REST surface for List Monitors by County.
operations:
- method: GET
name: monitorsByCounty
description: List Monitors by County
call: aqs-monitors.monitorsByCounty
with:
email: rest.email
key: rest.key
param: rest.param
bdate: rest.bdate
edate: rest.edate
state: rest.state
county: rest.county
outputParameters:
- type: object
mapping: $.
- path: /v1/monitors/bystate
name: monitors-bystate
description: REST surface for List Monitors by State.
operations:
- method: GET
name: monitorsByState
description: List Monitors by State
call: aqs-monitors.monitorsByState
with:
email: rest.email
key: rest.key
param: rest.param
bdate: rest.bdate
edate: rest.edate
state: rest.state
outputParameters:
- type: object
mapping: $.
- path: /v1/monitors/bybox
name: monitors-bybox
description: REST surface for List Monitors by Bounding Box.
operations:
- method: GET
name: monitorsByBox
description: List Monitors by Bounding Box
call: aqs-monitors.monitorsByBox
with:
email: rest.email
key: rest.key
param: rest.param
bdate: rest.bdate
edate: rest.edate
minlat: rest.minlat
maxlat: rest.maxlat
minlon: rest.minlon
maxlon: rest.maxlon
outputParameters:
- type: object
mapping: $.
- path: /v1/monitors/bycbsa
name: monitors-bycbsa
description: REST surface for List Monitors by CBSA.
operations:
- method: GET
name: monitorsByCBSA
description: List Monitors by CBSA
call: aqs-monitors.monitorsByCBSA
with:
email: rest.email
key: rest.key
param: rest.param
bdate: rest.bdate
edate: rest.edate
cbsa: rest.cbsa
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: aqs-monitors-mcp
port: 9090
transport: http
description: MCP adapter for EPA Air Quality System (AQS) API — Monitors. One tool per consumed operation, routed inline through this capability's consumes block.
tools:
- name: list-monitors-site
description: List Monitors by Site
hints:
readOnly: true
destructive: false
idempotent: true
call: aqs-monitors.monitorsBySite
with:
email: tools.email
key: tools.key
param: tools.param
bdate: tools.bdate
edate: tools.edate
state: tools.state
county: tools.county
site: tools.site
outputParameters:
- type: object
mapping: $.
- name: list-monitors-county
description: List Monitors by County
hints:
readOnly: true
destructive: false
idempotent: true
call: aqs-monitors.monitorsByCounty
with:
email: tools.email
key: tools.key
param: tools.param
bdate: tools.bdate
edate: tools.edate
state: tools.state
county: tools.county
outputParameters:
- type: object
mapping: $.
- name: list-monitors-state
description: List Monitors by State
hints:
readOnly: true
destructive: false
idempotent: true
call: aqs-monitors.monitorsByState
with:
email: tools.email
key: tools.key
param: tools.param
bdate: tools.bdate
edate: tools.edate
state: tools.state
outputParameters:
- type: object
mapping: $.
- name: list-monitors-bounding-box
description: List Monitors by Bounding Box
hints:
readOnly: true
destructive: false
idempotent: true
call: aqs-monitors.monitorsByBox
with:
email: tools.email
key: tools.key
param: tools.param
bdate: tools.bdate
edate: tools.edate
minlat: tools.minlat
maxlat: tools.maxlat
minlon: tools.minlon
maxlon: tools.maxlon
outputParameters:
- type: object
mapping: $.
- name: list-monitors-cbsa
description: List Monitors by CBSA
hints:
readOnly: true
destructive: false
idempotent: true
call: aqs-monitors.monitorsByCBSA
with:
email: tools.email
key: tools.key
param: tools.param
bdate: tools.bdate
edate: tools.edate
cbsa: tools.cbsa
outputParameters:
- type: object
mapping: $.