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: $.