OpenAQ · Capability
OpenAQ — Measurements
OpenAQ — Measurements. 5 operations. Lead operation: OpenAQ Get a list of measurements. Self-contained Naftiko capability covering one Openaq business surface.
What You Can Do
GET
Measurementsgetv1v1measurementsget
— OpenAQ Get a list of measurements
/v1/v1/measurements
GET
Measurementsgetv2measurementsget
— OpenAQ Get measurements
/v1/v2/measurements
GET
Sensormeasurementsgetv3sensorssensorsidmeasurementsget
— OpenAQ Get measurements by sensor ID
/v1/v3/sensors/{sensors-id}/measurements
GET
Sensormeasurementsaggregatedgetdailyv3sensorssensorsidmeasurementsdailyget
— OpenAQ Get measurements aggregated to days by sensor ID
/v1/v3/sensors/{sensors-id}/measurements/daily
GET
Sensormeasurementsaggregatedgethourlyv3sensorssensorsidmeasurementshourlyget
— OpenAQ Get measurements aggregated to hours by sensor ID
/v1/v3/sensors/{sensors-id}/measurements/hourly
MCP Tools
openaq-get-list-measurements
OpenAQ Get a list of measurements
read-only
idempotent
openaq-get-measurements
OpenAQ Get measurements
read-only
idempotent
openaq-get-measurements-sensor-id
OpenAQ Get measurements by sensor ID
read-only
idempotent
openaq-get-measurements-aggregated-days
OpenAQ Get measurements aggregated to days by sensor ID
read-only
idempotent
openaq-get-measurements-aggregated-hours
OpenAQ Get measurements aggregated to hours by sensor ID
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: OpenAQ — Measurements
description: 'OpenAQ — Measurements. 5 operations. Lead operation: OpenAQ Get a list of measurements. Self-contained Naftiko
capability covering one Openaq business surface.'
tags:
- Openaq
- Measurements
created: '2026-05-19'
modified: '2026-05-19'
binds:
- namespace: env
keys:
OPENAQ_API_KEY: OPENAQ_API_KEY
capability:
consumes:
- type: http
namespace: openaq-measurements
baseUri: ''
description: OpenAQ — Measurements business capability. Self-contained, no shared references.
resources:
- name: v1-measurements
path: /v1/measurements
operations:
- name: measurementsgetv1v1measurementsget
method: GET
description: OpenAQ Get a list of measurements
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: format
in: query
type: string
- name: date_from
in: query
type: string
description: From when?
- name: date_to
in: query
type: string
description: to when?
- name: limit
in: query
type: string
description: Change the number of results returned. e.g. limit=1000 will return up to 1000 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
- name: has_geo
in: query
type: string
- name: parameter_id
in: query
type: string
description: (optional) A parameter ID to filter measurement results. e.g. parameter_id=2 (i.e. PM2.5) will limit
measurement results to only PM2.5 measurements
- name: parameter
in: query
type: string
description: (optional) A parameter name or ID by which to filter measurement results. e.g. parameter=pm25 or parameter=pm25¶meter=pm10
- name: unit
in: query
type: string
- name: coordinates
in: query
type: string
description: Coordinate pair in form lat,lng. Up to 8 decimal points of precision e.g. 38.907,-77.037
- name: radius
in: query
type: integer
description: Search radius from coordinates as center in meters. Maximum of 25,000 (25km) defaults to 1000 (1km)
e.g. radius=10000
- name: country_id
in: query
type: string
description: Limit results by a certain country using two digit country ID. e.g. 13
- name: country
in: query
type: string
description: Limit results by a certain country using two letter country code. e.g. ?country=US or ?country=US&country=MX
- name: city
in: query
type: string
description: Limit results by a certain city or cities. (e.g. ?city=Chicago or ?city=Chicago&city=Boston)
- name: location_id
in: query
type: string
- name: location
in: query
type: string
- name: order_by
in: query
type: string
- name: is_mobile
in: query
type: string
description: Location is mobile e.g. ?isMobile=true
- name: is_analysis
in: query
type: string
description: Data is the product of a previous analysis/aggregation and not raw measurements e.g. ?isAnalysis=false
- name: project
in: query
type: string
- name: entity
in: query
type: string
- name: sensor_type
in: query
type: string
description: Filter by sensor type (i,e. reference grade, low-cost sensor) e.g. ?sensorType=reference%20grade
- name: value_from
in: query
type: string
- name: value_to
in: query
type: string
- name: include_fields
in: query
type: string
description: Additional fields to include in response e.g. ?include_fields=sourceName
- name: v2-measurements
path: /v2/measurements
operations:
- name: measurementsgetv2measurementsget
method: GET
description: OpenAQ Get measurements
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: format
in: query
type: string
- name: date_from
in: query
type: string
description: From when?
- name: date_to
in: query
type: string
description: to when?
- name: limit
in: query
type: string
description: Change the number of results returned. e.g. limit=1000 will return up to 1000 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
- name: has_geo
in: query
type: string
- name: parameter_id
in: query
type: string
description: (optional) A parameter ID to filter measurement results. e.g. parameter_id=2 (i.e. PM2.5) will limit
measurement results to only PM2.5 measurements
- name: parameter
in: query
type: string
description: (optional) A parameter name or ID by which to filter measurement results. e.g. parameter=pm25 or parameter=pm25¶meter=pm10
- name: unit
in: query
type: string
- name: coordinates
in: query
type: string
description: Coordinate pair in form lat,lng. Up to 8 decimal points of precision e.g. 38.907,-77.037
- name: radius
in: query
type: integer
description: Search radius from coordinates as center in meters. Maximum of 25,000 (25km) defaults to 1000 (1km)
e.g. radius=10000
- name: country_id
in: query
type: string
description: Limit results by a certain country using two digit country ID. e.g. 13
- name: country
in: query
type: string
description: Limit results by a certain country using two letter country code. e.g. ?country=US or ?country=US&country=MX
- name: city
in: query
type: string
description: Limit results by a certain city or cities. (e.g. ?city=Chicago or ?city=Chicago&city=Boston)
- name: location_id
in: query
type: string
- name: location
in: query
type: string
- name: order_by
in: query
type: string
- name: is_mobile
in: query
type: string
description: Location is mobile e.g. ?isMobile=true
- name: is_analysis
in: query
type: string
description: Data is the product of a previous analysis/aggregation and not raw measurements e.g. ?isAnalysis=false
- name: project
in: query
type: string
- name: entity
in: query
type: string
- name: sensor_type
in: query
type: string
description: Filter by sensor type (i,e. reference grade, low-cost sensor) e.g. ?sensorType=reference%20grade
- name: value_from
in: query
type: string
- name: value_to
in: query
type: string
- name: include_fields
in: query
type: string
description: Additional fields to include in response e.g. ?include_fields=sourceName
- name: v3-sensors-sensors_id-measurements
path: /v3/sensors/{sensors_id}/measurements
operations:
- name: sensormeasurementsgetv3sensorssensorsidmeasurementsget
method: GET
description: OpenAQ Get measurements by sensor ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: sensors_id
in: path
type: integer
description: Limit the results to a specific sensors id
required: true
- name: datetime_to
in: query
type: string
description: To when?
- name: datetime_from
in: query
type: string
description: From when?
- 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-sensors-sensors_id-measurements-daily
path: /v3/sensors/{sensors_id}/measurements/daily
operations:
- name: sensormeasurementsaggregatedgetdailyv3sensorssensorsidmeasurementsdailyget
method: GET
description: OpenAQ Get measurements aggregated to days by sensor ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: sensors_id
in: path
type: integer
description: Limit the results to a specific sensors id
required: true
- name: datetime_to
in: query
type: string
description: To when?
- name: datetime_from
in: query
type: string
description: From when?
- 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-sensors-sensors_id-measurements-hourly
path: /v3/sensors/{sensors_id}/measurements/hourly
operations:
- name: sensormeasurementsaggregatedgethourlyv3sensorssensorsidmeasurementshourlyget
method: GET
description: OpenAQ Get measurements aggregated to hours by sensor ID
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
inputParameters:
- name: sensors_id
in: path
type: integer
description: Limit the results to a specific sensors id
required: true
- name: datetime_to
in: query
type: string
description: To when?
- name: datetime_from
in: query
type: string
description: From when?
- 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
authentication:
type: apikey
key: X-API-Key
value: '{{env.OPENAQ_API_KEY}}'
placement: header
exposes:
- type: rest
namespace: openaq-measurements-rest
port: 8080
description: REST adapter for OpenAQ — Measurements. One Spectral-compliant resource per consumed operation, prefixed
with /v1.
resources:
- path: /v1/v1/measurements
name: v1-measurements
description: REST surface for v1-measurements.
operations:
- method: GET
name: measurementsgetv1v1measurementsget
description: OpenAQ Get a list of measurements
call: openaq-measurements.measurementsgetv1v1measurementsget
with:
format: rest.format
date_from: rest.date_from
date_to: rest.date_to
limit: rest.limit
page: rest.page
offset: rest.offset
sort: rest.sort
has_geo: rest.has_geo
parameter_id: rest.parameter_id
parameter: rest.parameter
unit: rest.unit
coordinates: rest.coordinates
radius: rest.radius
country_id: rest.country_id
country: rest.country
city: rest.city
location_id: rest.location_id
location: rest.location
order_by: rest.order_by
is_mobile: rest.is_mobile
is_analysis: rest.is_analysis
project: rest.project
entity: rest.entity
sensor_type: rest.sensor_type
value_from: rest.value_from
value_to: rest.value_to
include_fields: rest.include_fields
outputParameters:
- type: object
mapping: $.
- path: /v1/v2/measurements
name: v2-measurements
description: REST surface for v2-measurements.
operations:
- method: GET
name: measurementsgetv2measurementsget
description: OpenAQ Get measurements
call: openaq-measurements.measurementsgetv2measurementsget
with:
format: rest.format
date_from: rest.date_from
date_to: rest.date_to
limit: rest.limit
page: rest.page
offset: rest.offset
sort: rest.sort
has_geo: rest.has_geo
parameter_id: rest.parameter_id
parameter: rest.parameter
unit: rest.unit
coordinates: rest.coordinates
radius: rest.radius
country_id: rest.country_id
country: rest.country
city: rest.city
location_id: rest.location_id
location: rest.location
order_by: rest.order_by
is_mobile: rest.is_mobile
is_analysis: rest.is_analysis
project: rest.project
entity: rest.entity
sensor_type: rest.sensor_type
value_from: rest.value_from
value_to: rest.value_to
include_fields: rest.include_fields
outputParameters:
- type: object
mapping: $.
- path: /v1/v3/sensors/{sensors-id}/measurements
name: v3-sensors-sensors-id-measurements
description: REST surface for v3-sensors-sensors_id-measurements.
operations:
- method: GET
name: sensormeasurementsgetv3sensorssensorsidmeasurementsget
description: OpenAQ Get measurements by sensor ID
call: openaq-measurements.sensormeasurementsgetv3sensorssensorsidmeasurementsget
with:
sensors_id: rest.sensors_id
datetime_to: rest.datetime_to
datetime_from: rest.datetime_from
limit: rest.limit
page: rest.page
outputParameters:
- type: object
mapping: $.
- path: /v1/v3/sensors/{sensors-id}/measurements/daily
name: v3-sensors-sensors-id-measurements-daily
description: REST surface for v3-sensors-sensors_id-measurements-daily.
operations:
- method: GET
name: sensormeasurementsaggregatedgetdailyv3sensorssensorsidmeasurementsdailyget
description: OpenAQ Get measurements aggregated to days by sensor ID
call: openaq-measurements.sensormeasurementsaggregatedgetdailyv3sensorssensorsidmeasurementsdailyget
with:
sensors_id: rest.sensors_id
datetime_to: rest.datetime_to
datetime_from: rest.datetime_from
limit: rest.limit
page: rest.page
outputParameters:
- type: object
mapping: $.
- path: /v1/v3/sensors/{sensors-id}/measurements/hourly
name: v3-sensors-sensors-id-measurements-hourly
description: REST surface for v3-sensors-sensors_id-measurements-hourly.
operations:
- method: GET
name: sensormeasurementsaggregatedgethourlyv3sensorssensorsidmeasurementshourlyget
description: OpenAQ Get measurements aggregated to hours by sensor ID
call: openaq-measurements.sensormeasurementsaggregatedgethourlyv3sensorssensorsidmeasurementshourlyget
with:
sensors_id: rest.sensors_id
datetime_to: rest.datetime_to
datetime_from: rest.datetime_from
limit: rest.limit
page: rest.page
outputParameters:
- type: object
mapping: $.
- type: mcp
namespace: openaq-measurements-mcp
port: 9090
transport: http
description: MCP adapter for OpenAQ — Measurements. One tool per consumed operation, routed inline through this capability's
consumes block.
tools:
- name: openaq-get-list-measurements
description: OpenAQ Get a list of measurements
hints:
readOnly: true
destructive: false
idempotent: true
call: openaq-measurements.measurementsgetv1v1measurementsget
with:
format: tools.format
date_from: tools.date_from
date_to: tools.date_to
limit: tools.limit
page: tools.page
offset: tools.offset
sort: tools.sort
has_geo: tools.has_geo
parameter_id: tools.parameter_id
parameter: tools.parameter
unit: tools.unit
coordinates: tools.coordinates
radius: tools.radius
country_id: tools.country_id
country: tools.country
city: tools.city
location_id: tools.location_id
location: tools.location
order_by: tools.order_by
is_mobile: tools.is_mobile
is_analysis: tools.is_analysis
project: tools.project
entity: tools.entity
sensor_type: tools.sensor_type
value_from: tools.value_from
value_to: tools.value_to
include_fields: tools.include_fields
outputParameters:
- type: object
mapping: $.
- name: openaq-get-measurements
description: OpenAQ Get measurements
hints:
readOnly: true
destructive: false
idempotent: true
call: openaq-measurements.measurementsgetv2measurementsget
with:
format: tools.format
date_from: tools.date_from
date_to: tools.date_to
limit: tools.limit
page: tools.page
offset: tools.offset
sort: tools.sort
has_geo: tools.has_geo
parameter_id: tools.parameter_id
parameter: tools.parameter
unit: tools.unit
coordinates: tools.coordinates
radius: tools.radius
country_id: tools.country_id
country: tools.country
city: tools.city
location_id: tools.location_id
location: tools.location
order_by: tools.order_by
is_mobile: tools.is_mobile
is_analysis: tools.is_analysis
project: tools.project
entity: tools.entity
sensor_type: tools.sensor_type
value_from: tools.value_from
value_to: tools.value_to
include_fields: tools.include_fields
outputParameters:
- type: object
mapping: $.
- name: openaq-get-measurements-sensor-id
description: OpenAQ Get measurements by sensor ID
hints:
readOnly: true
destructive: false
idempotent: true
call: openaq-measurements.sensormeasurementsgetv3sensorssensorsidmeasurementsget
with:
sensors_id: tools.sensors_id
datetime_to: tools.datetime_to
datetime_from: tools.datetime_from
limit: tools.limit
page: tools.page
outputParameters:
- type: object
mapping: $.
- name: openaq-get-measurements-aggregated-days
description: OpenAQ Get measurements aggregated to days by sensor ID
hints:
readOnly: true
destructive: false
idempotent: true
call: openaq-measurements.sensormeasurementsaggregatedgetdailyv3sensorssensorsidmeasurementsdailyget
with:
sensors_id: tools.sensors_id
datetime_to: tools.datetime_to
datetime_from: tools.datetime_from
limit: tools.limit
page: tools.page
outputParameters:
- type: object
mapping: $.
- name: openaq-get-measurements-aggregated-hours
description: OpenAQ Get measurements aggregated to hours by sensor ID
hints:
readOnly: true
destructive: false
idempotent: true
call: openaq-measurements.sensormeasurementsaggregatedgethourlyv3sensorssensorsidmeasurementshourlyget
with:
sensors_id: tools.sensors_id
datetime_to: tools.datetime_to
datetime_from: tools.datetime_from
limit: tools.limit
page: tools.page
outputParameters:
- type: object
mapping: $.