OpenAQ · Capability

OpenAQ — Countries

OpenAQ — Countries. 6 operations. Lead operation: OpenAQ Get countries. Self-contained Naftiko capability covering one Openaq business surface.

Run with Naftiko OpenaqCountries

What You Can Do

GET
Countriesgetv1v1countriesget — OpenAQ Get countries
/v1/v1/countries
GET
Countriesbypathv1countriescountryidget — OpenAQ Get country by ID
/v1/v1/countries/{country-id}
GET
Countriesgetv2countriesget — OpenAQ Get countries
/v1/v2/countries
GET
Countriesbypathv2countriescountryidget — OpenAQ Get country by ID
/v1/v2/countries/{country-id}
GET
Countriesgetv3countriesget — OpenAQ Get countries
/v1/v3/countries
GET
Countrygetv3countriescountriesidget — OpenAQ Get a country by ID
/v1/v3/countries/{countries-id}

MCP Tools

openaq-get-countries

OpenAQ Get countries

read-only idempotent
openaq-get-country-id

OpenAQ Get country by ID

read-only idempotent
openaq-get-countries-2

OpenAQ Get countries

read-only idempotent
openaq-get-country-id-2

OpenAQ Get country by ID

read-only idempotent
openaq-get-countries-3

OpenAQ Get countries

read-only idempotent
openaq-get-country-id-3

OpenAQ Get a country by ID

read-only idempotent

Capability Spec

openaq-countries.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: OpenAQ — Countries
  description: 'OpenAQ — Countries. 6 operations. Lead operation: OpenAQ Get countries. Self-contained Naftiko capability
    covering one Openaq business surface.'
  tags:
  - Openaq
  - Countries
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    OPENAQ_API_KEY: OPENAQ_API_KEY
capability:
  consumes:
  - type: http
    namespace: openaq-countries
    baseUri: ''
    description: OpenAQ — Countries business capability. Self-contained, no shared references.
    resources:
    - name: v1-countries
      path: /v1/countries
      operations:
      - name: countriesgetv1v1countriesget
        method: GET
        description: OpenAQ Get countries
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: limit
          in: query
          type: integer
        - name: page
          in: query
          type: string
        - name: offset
          in: query
          type: string
        - name: sort
          in: query
          type: string
        - name: order_by
          in: query
          type: string
    - name: v1-countries-country_id
      path: /v1/countries/{country_id}
      operations:
      - name: countriesbypathv1countriescountryidget
        method: GET
        description: OpenAQ Get country by ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: country_id
          in: path
          type: integer
          required: true
        - name: limit
          in: query
          type: integer
          description: Limit the number of results returned. e.g. limit=100 will return up to 100 results
        - name: page
          in: query
          type: string
          description: Paginate through results. e.g. page=1 will return first page of results
        - name: offset
          in: query
          type: string
        - name: sort
          in: query
          type: string
          description: Define sort order. e.g. ?sort=asc
        - name: order_by
          in: query
          type: string
          description: Order by a field e.g. ?order_by=name
    - name: v2-countries
      path: /v2/countries
      operations:
      - name: countriesgetv2countriesget
        method: GET
        description: OpenAQ Get countries
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: limit
          in: query
          type: integer
        - name: page
          in: query
          type: string
        - name: offset
          in: query
          type: string
        - name: sort
          in: query
          type: string
        - name: country_id
          in: query
          type: string
        - name: order_by
          in: query
          type: string
        - name: body
          in: body
          type: object
          description: Request body (JSON).
          required: false
    - name: v2-countries-country_id
      path: /v2/countries/{country_id}
      operations:
      - name: countriesbypathv2countriescountryidget
        method: GET
        description: OpenAQ Get country by ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: country_id
          in: path
          type: integer
          required: true
        - name: limit
          in: query
          type: integer
          description: Limit the number of results returned. e.g. limit=100 will return up to 100 results
        - name: page
          in: query
          type: string
          description: Paginate through results. e.g. page=1 will return first page of results
        - name: offset
          in: query
          type: string
        - name: sort
          in: query
          type: string
          description: Define sort order. e.g. ?sort=asc
        - name: order_by
          in: query
          type: string
          description: Order by a field e.g. ?order_by=name
    - name: v3-countries
      path: /v3/countries
      operations:
      - name: countriesgetv3countriesget
        method: GET
        description: OpenAQ Get countries
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: order_by
          in: query
          type: string
          description: The field by which to order results
        - name: sort_order
          in: query
          type: string
          description: Sort results ascending or descending. Default ASC
        - name: providers_id
          in: query
          type: string
          description: Limit the results to a specific provider or multiple providers  with a single provider ID or a comma
            delimited list of IDs
        - name: parameters_id
          in: query
          type: string
        - name: limit
          in: query
          type: integer
          description: Change the number of results returned.
        - name: page
          in: query
          type: integer
          description: Paginate through results. e.g. page=1 will return first page of results
    - name: v3-countries-countries_id
      path: /v3/countries/{countries_id}
      operations:
      - name: countrygetv3countriescountriesidget
        method: GET
        description: OpenAQ Get a country by ID
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: countries_id
          in: path
          type: integer
          required: true
    authentication:
      type: apikey
      key: X-API-Key
      value: '{{env.OPENAQ_API_KEY}}'
      placement: header
  exposes:
  - type: rest
    namespace: openaq-countries-rest
    port: 8080
    description: REST adapter for OpenAQ — Countries. One Spectral-compliant resource per consumed operation, prefixed with
      /v1.
    resources:
    - path: /v1/v1/countries
      name: v1-countries
      description: REST surface for v1-countries.
      operations:
      - method: GET
        name: countriesgetv1v1countriesget
        description: OpenAQ Get countries
        call: openaq-countries.countriesgetv1v1countriesget
        with:
          limit: rest.limit
          page: rest.page
          offset: rest.offset
          sort: rest.sort
          order_by: rest.order_by
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v1/countries/{country-id}
      name: v1-countries-country-id
      description: REST surface for v1-countries-country_id.
      operations:
      - method: GET
        name: countriesbypathv1countriescountryidget
        description: OpenAQ Get country by ID
        call: openaq-countries.countriesbypathv1countriescountryidget
        with:
          country_id: rest.country_id
          limit: rest.limit
          page: rest.page
          offset: rest.offset
          sort: rest.sort
          order_by: rest.order_by
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v2/countries
      name: v2-countries
      description: REST surface for v2-countries.
      operations:
      - method: GET
        name: countriesgetv2countriesget
        description: OpenAQ Get countries
        call: openaq-countries.countriesgetv2countriesget
        with:
          limit: rest.limit
          page: rest.page
          offset: rest.offset
          sort: rest.sort
          country_id: rest.country_id
          order_by: rest.order_by
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v2/countries/{country-id}
      name: v2-countries-country-id
      description: REST surface for v2-countries-country_id.
      operations:
      - method: GET
        name: countriesbypathv2countriescountryidget
        description: OpenAQ Get country by ID
        call: openaq-countries.countriesbypathv2countriescountryidget
        with:
          country_id: rest.country_id
          limit: rest.limit
          page: rest.page
          offset: rest.offset
          sort: rest.sort
          order_by: rest.order_by
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v3/countries
      name: v3-countries
      description: REST surface for v3-countries.
      operations:
      - method: GET
        name: countriesgetv3countriesget
        description: OpenAQ Get countries
        call: openaq-countries.countriesgetv3countriesget
        with:
          order_by: rest.order_by
          sort_order: rest.sort_order
          providers_id: rest.providers_id
          parameters_id: rest.parameters_id
          limit: rest.limit
          page: rest.page
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/v3/countries/{countries-id}
      name: v3-countries-countries-id
      description: REST surface for v3-countries-countries_id.
      operations:
      - method: GET
        name: countrygetv3countriescountriesidget
        description: OpenAQ Get a country by ID
        call: openaq-countries.countrygetv3countriescountriesidget
        with:
          countries_id: rest.countries_id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: openaq-countries-mcp
    port: 9090
    transport: http
    description: MCP adapter for OpenAQ — Countries. One tool per consumed operation, routed inline through this capability's
      consumes block.
    tools:
    - name: openaq-get-countries
      description: OpenAQ Get countries
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openaq-countries.countriesgetv1v1countriesget
      with:
        limit: tools.limit
        page: tools.page
        offset: tools.offset
        sort: tools.sort
        order_by: tools.order_by
      outputParameters:
      - type: object
        mapping: $.
    - name: openaq-get-country-id
      description: OpenAQ Get country by ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openaq-countries.countriesbypathv1countriescountryidget
      with:
        country_id: tools.country_id
        limit: tools.limit
        page: tools.page
        offset: tools.offset
        sort: tools.sort
        order_by: tools.order_by
      outputParameters:
      - type: object
        mapping: $.
    - name: openaq-get-countries-2
      description: OpenAQ Get countries
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openaq-countries.countriesgetv2countriesget
      with:
        limit: tools.limit
        page: tools.page
        offset: tools.offset
        sort: tools.sort
        country_id: tools.country_id
        order_by: tools.order_by
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: openaq-get-country-id-2
      description: OpenAQ Get country by ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openaq-countries.countriesbypathv2countriescountryidget
      with:
        country_id: tools.country_id
        limit: tools.limit
        page: tools.page
        offset: tools.offset
        sort: tools.sort
        order_by: tools.order_by
      outputParameters:
      - type: object
        mapping: $.
    - name: openaq-get-countries-3
      description: OpenAQ Get countries
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openaq-countries.countriesgetv3countriesget
      with:
        order_by: tools.order_by
        sort_order: tools.sort_order
        providers_id: tools.providers_id
        parameters_id: tools.parameters_id
        limit: tools.limit
        page: tools.page
      outputParameters:
      - type: object
        mapping: $.
    - name: openaq-get-country-id-3
      description: OpenAQ Get a country by ID
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: openaq-countries.countrygetv3countriescountriesidget
      with:
        countries_id: tools.countries_id
      outputParameters:
      - type: object
        mapping: $.