naftiko: 1.0.0-alpha2 info: label: AQICN JSON Air Quality API — Stations description: 'AQICN JSON Air Quality API — Stations. 5 operations. Lead operation: Air Quality Programmatic APIs AQICN Get AQI by Geographic Coordinates. Self-contained Naftiko capability covering one Air Quality Programmatic Apis business surface.' tags: - Air Quality Programmatic Apis - Stations created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: AIR_QUALITY_PROGRAMMATIC_APIS_API_KEY: AIR_QUALITY_PROGRAMMATIC_APIS_API_KEY capability: consumes: - type: http namespace: aqicn-json-stations baseUri: https://api.waqi.info description: AQICN JSON Air Quality API — Stations business capability. Self-contained, no shared references. resources: - name: feed-geo:{lat};{lng} path: /feed/geo:{lat};{lng}/ operations: - name: getaqibygeocoordinates method: GET description: Air Quality Programmatic APIs AQICN Get AQI by Geographic Coordinates outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: lat in: path type: number description: Latitude coordinate required: true - name: lng in: path type: number description: Longitude coordinate required: true - name: token in: query type: string description: API authentication token required: true - name: feed-ip path: /feed/ip/ operations: - name: getaqibyip method: GET description: Air Quality Programmatic APIs AQICN Get AQI by IP Geolocation outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: token in: query type: string description: API authentication token required: true - name: feed-city path: /feed/{city}/ operations: - name: getaqibycity method: GET description: Air Quality Programmatic APIs AQICN Get AQI by City Name outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: city in: path type: string description: City name or station ID required: true - name: token in: query type: string description: API authentication token required: true - name: map-bounds path: /map/bounds/ operations: - name: getstationsinbounds method: GET description: Air Quality Programmatic APIs AQICN Get Stations Within Map Bounds outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: latlng in: query type: string description: Bounding box as lat1,lng1,lat2,lng2 required: true - name: networks in: query type: string description: Filter by network (all, china, us, etc.) - name: token in: query type: string description: API authentication token required: true - name: search path: /search/ operations: - name: searchstations method: GET description: Air Quality Programmatic APIs AQICN Search Monitoring Stations outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: keyword in: query type: string description: Search keyword (city or station name) required: true - name: token in: query type: string description: API authentication token required: true authentication: type: apikey key: token value: '{{env.AIR_QUALITY_PROGRAMMATIC_APIS_API_KEY}}' placement: query exposes: - type: rest namespace: aqicn-json-stations-rest port: 8080 description: REST adapter for AQICN JSON Air Quality API — Stations. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/feed/geo-lat-lng name: feed-geo-lat-lng description: REST surface for feed-geo:{lat};{lng}. operations: - method: GET name: getaqibygeocoordinates description: Air Quality Programmatic APIs AQICN Get AQI by Geographic Coordinates call: aqicn-json-stations.getaqibygeocoordinates with: lat: rest.lat lng: rest.lng token: rest.token outputParameters: - type: object mapping: $. - path: /v1/feed/ip name: feed-ip description: REST surface for feed-ip. operations: - method: GET name: getaqibyip description: Air Quality Programmatic APIs AQICN Get AQI by IP Geolocation call: aqicn-json-stations.getaqibyip with: token: rest.token outputParameters: - type: object mapping: $. - path: /v1/feed/{city} name: feed-city description: REST surface for feed-city. operations: - method: GET name: getaqibycity description: Air Quality Programmatic APIs AQICN Get AQI by City Name call: aqicn-json-stations.getaqibycity with: city: rest.city token: rest.token outputParameters: - type: object mapping: $. - path: /v1/map/bounds name: map-bounds description: REST surface for map-bounds. operations: - method: GET name: getstationsinbounds description: Air Quality Programmatic APIs AQICN Get Stations Within Map Bounds call: aqicn-json-stations.getstationsinbounds with: latlng: rest.latlng networks: rest.networks token: rest.token outputParameters: - type: object mapping: $. - path: /v1/search name: search description: REST surface for search. operations: - method: GET name: searchstations description: Air Quality Programmatic APIs AQICN Search Monitoring Stations call: aqicn-json-stations.searchstations with: keyword: rest.keyword token: rest.token outputParameters: - type: object mapping: $. - type: mcp namespace: aqicn-json-stations-mcp port: 9090 transport: http description: MCP adapter for AQICN JSON Air Quality API — Stations. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: air-quality-programmatic-apis-aqicn description: Air Quality Programmatic APIs AQICN Get AQI by Geographic Coordinates hints: readOnly: true destructive: false idempotent: true call: aqicn-json-stations.getaqibygeocoordinates with: lat: tools.lat lng: tools.lng token: tools.token outputParameters: - type: object mapping: $. - name: air-quality-programmatic-apis-aqicn-2 description: Air Quality Programmatic APIs AQICN Get AQI by IP Geolocation hints: readOnly: true destructive: false idempotent: true call: aqicn-json-stations.getaqibyip with: token: tools.token outputParameters: - type: object mapping: $. - name: air-quality-programmatic-apis-aqicn-3 description: Air Quality Programmatic APIs AQICN Get AQI by City Name hints: readOnly: true destructive: false idempotent: true call: aqicn-json-stations.getaqibycity with: city: tools.city token: tools.token outputParameters: - type: object mapping: $. - name: air-quality-programmatic-apis-aqicn-4 description: Air Quality Programmatic APIs AQICN Get Stations Within Map Bounds hints: readOnly: true destructive: false idempotent: true call: aqicn-json-stations.getstationsinbounds with: latlng: tools.latlng networks: tools.networks token: tools.token outputParameters: - type: object mapping: $. - name: air-quality-programmatic-apis-aqicn-5 description: Air Quality Programmatic APIs AQICN Search Monitoring Stations hints: readOnly: true destructive: false idempotent: true call: aqicn-json-stations.searchstations with: keyword: tools.keyword token: tools.token outputParameters: - type: object mapping: $.