EPA — U.S. Environmental Protection Agency · Capability
EPA Air Quality System (AQS) API — Quality Assurance
Quality Assurance. 12 operations. Lead operation: QA Annual Performance Evaluations by Site. Self-contained Naftiko capability covering one EPA business surface.
What You Can Do
GET
Qaannualbysite
— QA Annual Performance Evaluations by Site
/v1/qaannualperformanceevaluations/bysite
GET
Qaannualbycounty
— QA Annual Performance Evaluations by County
/v1/qaannualperformanceevaluations/bycounty
GET
Qaannualbystate
— QA Annual Performance Evaluations by State
/v1/qaannualperformanceevaluations/bystate
GET
Qaannualbypqao
— QA Annual Performance Evaluations by PQAO
/v1/qaannualperformanceevaluations/bypqao
GET
Qaannualbyma
— QA Annual Performance Evaluations by Monitoring Agency
/v1/qaannualperformanceevaluations/byma
GET
Qablanksbysite
— QA Blanks by Site
/v1/qablanks/bysite
GET
Qablanksbystate
— QA Blanks by State
/v1/qablanks/bystate
GET
Qacollocatedbysite
— QA Collocated Assessments by Site
/v1/qacollocatedassessments/bysite
GET
Qaflowrateverifbysite
— QA Flow Rate Verifications by Site
/v1/qaflowrateverifications/bysite
GET
Qaflowrateauditsbysite
— QA Flow Rate Audits by Site
/v1/qaflowrateaudits/bysite
GET
Qaonepointbysite
— QA One Point QC Raw Data by Site
/v1/qaonepointqcrawdata/bysite
GET
Qapepbysite
— QA PEP Audits by Site
/v1/qapepaudits/bysite
MCP Tools
qa-annual-performance-evaluations-site
QA Annual Performance Evaluations by Site
read-only
idempotent
qa-annual-performance-evaluations-county
QA Annual Performance Evaluations by County
read-only
idempotent
qa-annual-performance-evaluations-state
QA Annual Performance Evaluations by State
read-only
idempotent
qa-annual-performance-evaluations-pqao
QA Annual Performance Evaluations by PQAO
read-only
idempotent
qa-annual-performance-evaluations-monitoring-agency
QA Annual Performance Evaluations by Monitoring Agency
read-only
idempotent
qa-blanks-site
QA Blanks by Site
read-only
idempotent
qa-blanks-state
QA Blanks by State
read-only
idempotent
qa-collocated-assessments-site
QA Collocated Assessments by Site
read-only
idempotent
qa-flow-rate-verifications-site
QA Flow Rate Verifications by Site
read-only
idempotent
qa-flow-rate-audits-site
QA Flow Rate Audits by Site
read-only
idempotent
qa-one-point-qc-raw-data-site
QA One Point QC Raw Data by Site
read-only
idempotent
qa-pep-audits-site
QA PEP Audits by Site
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: EPA Air Quality System (AQS) API — Quality Assurance
description: 'Quality Assurance. 12 operations. Lead operation: QA Annual Performance Evaluations by Site. Self-contained Naftiko capability covering one EPA business surface.'
tags:
- EPA
- Quality Assurance
created: '2026-05-29'
modified: '2026-05-29'
binds:
- namespace: env
keys:
EPA_EMAILKEY_KEY: EPA_EMAILKEY_KEY
capability:
consumes:
- type: http
namespace: aqs-quality-assurance
baseUri: https://aqs.epa.gov/data/api
description: EPA Air Quality System (AQS) API — Quality Assurance business capability. Self-contained, no shared references.
authentication:
type: apikey
key: key
value: '{{env.EPA_EMAILKEY_KEY}}'
placement: query
resources:
- name: qaannualperformanceevaluations-bysite
path: /qaAnnualPerformanceEvaluations/bySite
operations:
- name: qaAnnualBySite
method: GET
description: QA Annual Performance Evaluations 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: qaannualperformanceevaluations-bycounty
path: /qaAnnualPerformanceEvaluations/byCounty
operations:
- name: qaAnnualByCounty
method: GET
description: QA Annual Performance Evaluations 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: qaannualperformanceevaluations-bystate
path: /qaAnnualPerformanceEvaluations/byState
operations:
- name: qaAnnualByState
method: GET
description: QA Annual Performance Evaluations 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: qaannualperformanceevaluations-bypqao
path: /qaAnnualPerformanceEvaluations/byPQAO
operations:
- name: qaAnnualByPQAO
method: GET
description: QA Annual Performance Evaluations by PQAO
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: pqao
in: query
type: string
required: true
description: Primary Quality Assurance Organization code.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: qaannualperformanceevaluations-byma
path: /qaAnnualPerformanceEvaluations/byMA
operations:
- name: qaAnnualByMA
method: GET
description: QA Annual Performance Evaluations by Monitoring Agency
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: ma
in: query
type: string
required: true
description: Monitoring Agency code.
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: qablanks-bysite
path: /qaBlanks/bySite
operations:
- name: qaBlanksBySite
method: GET
description: QA Blanks 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: qablanks-bystate
path: /qaBlanks/byState
operations:
- name: qaBlanksByState
method: GET
description: QA Blanks 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: qacollocatedassessments-bysite
path: /qaCollocatedAssessments/bySite
operations:
- name: qaCollocatedBySite
method: GET
description: QA Collocated Assessments 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: qaflowrateverifications-bysite
path: /qaFlowRateVerifications/bySite
operations:
- name: qaFlowRateVerifBySite
method: GET
description: QA Flow Rate Verifications 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: qaflowrateaudits-bysite
path: /qaFlowRateAudits/bySite
operations:
- name: qaFlowRateAuditsBySite
method: GET
description: QA Flow Rate Audits 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: qaonepointqcrawdata-bysite
path: /qaOnePointQcRawData/bySite
operations:
- name: qaOnePointBySite
method: GET
description: QA One Point QC Raw Data 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: qapepaudits-bysite
path: /qaPepAudits/bySite
operations:
- name: qaPepBySite
method: GET
description: QA PEP Audits 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: $.
exposes:
- type: rest
namespace: aqs-quality-assurance-rest
port: 8080
description: REST adapter for EPA Air Quality System (AQS) API — Quality Assurance. One Spectral-compliant resource per consumed operation, prefixed with /v1.
resources:
- path: /v1/qaannualperformanceevaluations/bysite
name: qaannualperformanceevaluations-bysite
description: REST surface for QA Annual Performance Evaluations by Site.
operations:
- method: GET
name: qaAnnualBySite
description: QA Annual Performance Evaluations by Site
call: aqs-quality-assurance.qaAnnualBySite
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/qaannualperformanceevaluations/bycounty
name: qaannualperformanceevaluations-bycounty
description: REST surface for QA Annual Performance Evaluations by County.
operations:
- method: GET
name: qaAnnualByCounty
description: QA Annual Performance Evaluations by County
call: aqs-quality-assurance.qaAnnualByCounty
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/qaannualperformanceevaluations/bystate
name: qaannualperformanceevaluations-bystate
description: REST surface for QA Annual Performance Evaluations by State.
operations:
- method: GET
name: qaAnnualByState
description: QA Annual Performance Evaluations by State
call: aqs-quality-assurance.qaAnnualByState
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/qaannualperformanceevaluations/bypqao
name: qaannualperformanceevaluations-bypqao
description: REST surface for QA Annual Performance Evaluations by PQAO.
operations:
- method: GET
name: qaAnnualByPQAO
description: QA Annual Performance Evaluations by PQAO
call: aqs-quality-assurance.qaAnnualByPQAO
with:
email: rest.email
key: rest.key
param: rest.param
bdate: rest.bdate
edate: rest.edate
pqao: rest.pqao
outputParameters:
- type: object
mapping: $.
- path: /v1/qaannualperformanceevaluations/byma
name: qaannualperformanceevaluations-byma
description: REST surface for QA Annual Performance Evaluations by Monitoring Agency.
operations:
- method: GET
name: qaAnnualByMA
description: QA Annual Performance Evaluations by Monitoring Agency
call: aqs-quality-assurance.qaAnnualByMA
with:
email: rest.email
key: rest.key
param: rest.param
bdate: rest.bdate
edate: rest.edate
ma: rest.ma
outputParameters:
- type: object
mapping: $.
- path: /v1/qablanks/bysite
name: qablanks-bysite
description: REST surface for QA Blanks by Site.
operations:
- method: GET
name: qaBlanksBySite
description: QA Blanks by Site
call: aqs-quality-assurance.qaBlanksBySite
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/qablanks/bystate
name: qablanks-bystate
description: REST surface for QA Blanks by State.
operations:
- method: GET
name: qaBlanksByState
description: QA Blanks by State
call: aqs-quality-assurance.qaBlanksByState
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/qacollocatedassessments/bysite
name: qacollocatedassessments-bysite
description: REST surface for QA Collocated Assessments by Site.
operations:
- method: GET
name: qaCollocatedBySite
description: QA Collocated Assessments by Site
call: aqs-quality-assurance.qaCollocatedBySite
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/qaflowrateverifications/bysite
name: qaflowrateverifications-bysite
description: REST surface for QA Flow Rate Verifications by Site.
operations:
- method: GET
name: qaFlowRateVerifBySite
description: QA Flow Rate Verifications by Site
call: aqs-quality-assurance.qaFlowRateVerifBySite
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/qaflowrateaudits/bysite
name: qaflowrateaudits-bysite
description: REST surface for QA Flow Rate Audits by Site.
operations:
- method: GET
name: qaFlowRateAuditsBySite
description: QA Flow Rate Audits by Site
call: aqs-quality-assurance.qaFlowRateAuditsBySite
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/qaonepointqcrawdata/bysite
name: qaonepointqcrawdata-bysite
description: REST surface for QA One Point QC Raw Data by Site.
operations:
- method: GET
name: qaOnePointBySite
description: QA One Point QC Raw Data by Site
call: aqs-quality-assurance.qaOnePointBySite
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/qapepaudits/bysite
name: qapepaudits-bysite
description: REST surface for QA PEP Audits by Site.
operations:
- method: GET
name: qaPepBySite
description: QA PEP Audits by Site
call: aqs-quality-assurance.qaPepBySite
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: $.
- type: mcp
namespace: aqs-quality-assurance-mcp
port: 9090
transport: http
description: MCP adapter for EPA Air Quality System (AQS) API — Quality Assurance. One tool per consumed operation, routed inline through this capability's consumes block.
tools:
- name: qa-annual-performance-evaluations-site
description: QA Annual Performance Evaluations by Site
hints:
readOnly: true
destructive: false
idempotent: true
call: aqs-quality-assurance.qaAnnualBySite
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: qa-annual-performance-evaluations-county
description: QA Annual Performance Evaluations by County
hints:
readOnly: true
destructive: false
idempotent: true
call: aqs-quality-assurance.qaAnnualByCounty
with:
email: tools.email
key: tools.key
param: tools.par
# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/capabilities/aqs-quality-assurance.yaml