EPA Air Quality System (AQS) API — Sample Data

Sample Data. 5 operations. Lead operation: Get Sample Data by Site. Self-contained Naftiko capability covering one EPA business surface.

Run with Naftiko EPASample Data

What You Can Do

GET
Sampledatabysite — Get Sample Data by Site
/v1/sampledata/bysite
GET
Sampledatabycounty — Get Sample Data by County
/v1/sampledata/bycounty
GET
Sampledatabystate — Get Sample Data by State
/v1/sampledata/bystate
GET
Sampledatabybox — Get Sample Data by Bounding Box
/v1/sampledata/bybox
GET
Sampledatabycbsa — Get Sample Data by CBSA
/v1/sampledata/bycbsa

MCP Tools

get-sample-data-site

Get Sample Data by Site

read-only idempotent
get-sample-data-county

Get Sample Data by County

read-only idempotent
get-sample-data-state

Get Sample Data by State

read-only idempotent
get-sample-data-bounding-box

Get Sample Data by Bounding Box

read-only idempotent
get-sample-data-cbsa

Get Sample Data by CBSA

read-only idempotent

Capability Spec

aqs-sample-data.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: EPA Air Quality System (AQS) API — Sample Data
  description: 'Sample Data. 5 operations. Lead operation: Get Sample Data by Site. Self-contained Naftiko capability covering one EPA business surface.'
  tags:
    - EPA
    - Sample Data
  created: '2026-05-29'
  modified: '2026-05-29'
binds:
  - namespace: env
    keys:
      EPA_EMAILKEY_KEY: EPA_EMAILKEY_KEY
capability:
  consumes:
    - type: http
      namespace: aqs-sample-data
      baseUri: https://aqs.epa.gov/data/api
      description: EPA Air Quality System (AQS) API — Sample Data business capability. Self-contained, no shared references.
      authentication:
        type: apikey
        key: key
        value: '{{env.EPA_EMAILKEY_KEY}}'
        placement: query
      resources:
        - name: sampledata-bysite
          path: /sampleData/bySite
          operations:
            - name: sampleDataBySite
              method: GET
              description: Get Sample 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.
                - name: duration
                  in: query
                  type: string
                  required: false
                  description: 1-character duration code filter.
                - name: cbdate
                  in: query
                  type: string
                  required: false
                  description: Optional change begin date (returns records updated since cbdate).
                - name: cedate
                  in: query
                  type: string
                  required: false
                  description: Optional change end date.
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
        - name: sampledata-bycounty
          path: /sampleData/byCounty
          operations:
            - name: sampleDataByCounty
              method: GET
              description: Get Sample Data 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.
                - name: duration
                  in: query
                  type: string
                  required: false
                  description: 1-character duration code filter.
                - name: cbdate
                  in: query
                  type: string
                  required: false
                  description: Optional change begin date (returns records updated since cbdate).
                - name: cedate
                  in: query
                  type: string
                  required: false
                  description: Optional change end date.
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
        - name: sampledata-bystate
          path: /sampleData/byState
          operations:
            - name: sampleDataByState
              method: GET
              description: Get Sample Data 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.
                - name: duration
                  in: query
                  type: string
                  required: false
                  description: 1-character duration code filter.
                - name: cbdate
                  in: query
                  type: string
                  required: false
                  description: Optional change begin date (returns records updated since cbdate).
                - name: cedate
                  in: query
                  type: string
                  required: false
                  description: Optional change end date.
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
        - name: sampledata-bybox
          path: /sampleData/byBox
          operations:
            - name: sampleDataByBox
              method: GET
              description: Get Sample Data 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
                - name: duration
                  in: query
                  type: string
                  required: false
                  description: 1-character duration code filter.
                - name: cbdate
                  in: query
                  type: string
                  required: false
                  description: Optional change begin date (returns records updated since cbdate).
                - name: cedate
                  in: query
                  type: string
                  required: false
                  description: Optional change end date.
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
        - name: sampledata-bycbsa
          path: /sampleData/byCBSA
          operations:
            - name: sampleDataByCBSA
              method: GET
              description: Get Sample Data 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.
                - name: duration
                  in: query
                  type: string
                  required: false
                  description: 1-character duration code filter.
                - name: cbdate
                  in: query
                  type: string
                  required: false
                  description: Optional change begin date (returns records updated since cbdate).
                - name: cedate
                  in: query
                  type: string
                  required: false
                  description: Optional change end date.
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: $.
  exposes:
    - type: rest
      namespace: aqs-sample-data-rest
      port: 8080
      description: REST adapter for EPA Air Quality System (AQS) API — Sample Data. One Spectral-compliant resource per consumed operation, prefixed with /v1.
      resources:
        - path: /v1/sampledata/bysite
          name: sampledata-bysite
          description: REST surface for Get Sample Data by Site.
          operations:
            - method: GET
              name: sampleDataBySite
              description: Get Sample Data by Site
              call: aqs-sample-data.sampleDataBySite
              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
                duration: rest.duration
                cbdate: rest.cbdate
                cedate: rest.cedate
              outputParameters:
                - type: object
                  mapping: $.
        - path: /v1/sampledata/bycounty
          name: sampledata-bycounty
          description: REST surface for Get Sample Data by County.
          operations:
            - method: GET
              name: sampleDataByCounty
              description: Get Sample Data by County
              call: aqs-sample-data.sampleDataByCounty
              with:
                email: rest.email
                key: rest.key
                param: rest.param
                bdate: rest.bdate
                edate: rest.edate
                state: rest.state
                county: rest.county
                duration: rest.duration
                cbdate: rest.cbdate
                cedate: rest.cedate
              outputParameters:
                - type: object
                  mapping: $.
        - path: /v1/sampledata/bystate
          name: sampledata-bystate
          description: REST surface for Get Sample Data by State.
          operations:
            - method: GET
              name: sampleDataByState
              description: Get Sample Data by State
              call: aqs-sample-data.sampleDataByState
              with:
                email: rest.email
                key: rest.key
                param: rest.param
                bdate: rest.bdate
                edate: rest.edate
                state: rest.state
                duration: rest.duration
                cbdate: rest.cbdate
                cedate: rest.cedate
              outputParameters:
                - type: object
                  mapping: $.
        - path: /v1/sampledata/bybox
          name: sampledata-bybox
          description: REST surface for Get Sample Data by Bounding Box.
          operations:
            - method: GET
              name: sampleDataByBox
              description: Get Sample Data by Bounding Box
              call: aqs-sample-data.sampleDataByBox
              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
                duration: rest.duration
                cbdate: rest.cbdate
                cedate: rest.cedate
              outputParameters:
                - type: object
                  mapping: $.
        - path: /v1/sampledata/bycbsa
          name: sampledata-bycbsa
          description: REST surface for Get Sample Data by CBSA.
          operations:
            - method: GET
              name: sampleDataByCBSA
              description: Get Sample Data by CBSA
              call: aqs-sample-data.sampleDataByCBSA
              with:
                email: rest.email
                key: rest.key
                param: rest.param
                bdate: rest.bdate
                edate: rest.edate
                cbsa: rest.cbsa
                duration: rest.duration
                cbdate: rest.cbdate
                cedate: rest.cedate
              outputParameters:
                - type: object
                  mapping: $.
    - type: mcp
      namespace: aqs-sample-data-mcp
      port: 9090
      transport: http
      description: MCP adapter for EPA Air Quality System (AQS) API — Sample Data. One tool per consumed operation, routed inline through this capability's consumes block.
      tools:
        - name: get-sample-data-site
          description: Get Sample Data by Site
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: aqs-sample-data.sampleDataBySite
          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
            duration: tools.duration
            cbdate: tools.cbdate
            cedate: tools.cedate
          outputParameters:
            - type: object
              mapping: $.
        - name: get-sample-data-county
          description: Get Sample Data by County
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: aqs-sample-data.sampleDataByCounty
          with:
            email: tools.email
            key: tools.key
            param: tools.param
            bdate: tools.bdate
            edate: tools.edate
            state: tools.state
            county: tools.county
            duration: tools.duration
            cbdate: tools.cbdate
            cedate: tools.cedate
          outputParameters:
            - type: object
              mapping: $.
        - name: get-sample-data-state
          description: Get Sample Data by State
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: aqs-sample-data.sampleDataByState
          with:
            email: tools.email
            key: tools.key
            param: tools.param
            bdate: tools.bdate
            edate: tools.edate
            state: tools.state
            duration: tools.duration
            cbdate: tools.cbdate
            cedate: tools.cedate
          outputParameters:
            - type: object
              mapping: $.
        - name: get-sample-data-bounding-box
          description: Get Sample Data by Bounding Box
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: aqs-sample-data.sampleDataByBox
          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
            duration: tools.duration
            cbdate: tools.cbdate
            cedate: tools.cedate
          outputParameters:
            - type: object
              mapping: $.
        - name: get-sample-data-cbsa
          description: Get Sample Data by CBSA
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: aqs-sample-data.sampleDataByCBSA
          with:
            email: tools.email
            key: tools.key
            param: tools.param
            bdate: tools.bdate
            edate: tools.edate
            cbsa: tools.cbsa
            duration: tools.duration
            cbdate: tools.cbdate
            cedate: tools.cedate
          outputParameters:
            - type: object
              mapping: $.