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.param bdate: tools.bdate edate: tools.edate state: tools.state county: tools.county outputParameters: - type: object mapping: $. - name: qa-annual-performance-evaluations-state description: QA Annual Performance Evaluations by State hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaAnnualByState with: email: tools.email key: tools.key param: tools.param bdate: tools.bdate edate: tools.edate state: tools.state outputParameters: - type: object mapping: $. - name: qa-annual-performance-evaluations-pqao description: QA Annual Performance Evaluations by PQAO hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaAnnualByPQAO with: email: tools.email key: tools.key param: tools.param bdate: tools.bdate edate: tools.edate pqao: tools.pqao outputParameters: - type: object mapping: $. - name: qa-annual-performance-evaluations-monitoring-agency description: QA Annual Performance Evaluations by Monitoring Agency hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaAnnualByMA with: email: tools.email key: tools.key param: tools.param bdate: tools.bdate edate: tools.edate ma: tools.ma outputParameters: - type: object mapping: $. - name: qa-blanks-site description: QA Blanks by Site hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaBlanksBySite 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-blanks-state description: QA Blanks by State hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaBlanksByState with: email: tools.email key: tools.key param: tools.param bdate: tools.bdate edate: tools.edate state: tools.state outputParameters: - type: object mapping: $. - name: qa-collocated-assessments-site description: QA Collocated Assessments by Site hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaCollocatedBySite 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-flow-rate-verifications-site description: QA Flow Rate Verifications by Site hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaFlowRateVerifBySite 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-flow-rate-audits-site description: QA Flow Rate Audits by Site hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaFlowRateAuditsBySite 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-one-point-qc-raw-data-site description: QA One Point QC Raw Data by Site hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaOnePointBySite 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-pep-audits-site description: QA PEP Audits by Site hints: readOnly: true destructive: false idempotent: true call: aqs-quality-assurance.qaPepBySite 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: $.