Open-Meteo Air Quality
Use the CLI-owned open-meteo.air-quality capability. This Skill supplies
intent routing and result-use boundaries only; the CLI owns source discovery,
input/output schemas, HTTP behavior, limits, validation, and receipts.
Before running
- Read
references/tiangong-data-requirement.json.
- Use the caller- or workspace-resolved stable CLI. The requirement declares
compatible capability and operation contract majors; it does not select a
package build.
- Run
data describe with that same CLI. Continue only when the capability
ID, required contract majors, and the
open-meteo.series-all-null operation feature match; then copy the exact current
capability/operation versions from that response into the run request.
- Run the default static doctor. Do not add
--live unless the user explicitly
asks for a provider probe.
tiangong-ai data describe open-meteo.air-quality --json
tiangong-ai data doctor open-meteo.air-quality --json
Use the returned Discovery Metadata to confirm current model coverage,
variable availability, freshness, public-endpoint terms, attribution,
provides, and doesNotProvide. Do not substitute facts remembered from an
older Skill revision.
Prepare the request
Build a tiangong.data.run-request.v1 envelope and replace the two version
placeholders with the exact versions from the same data describe response. Coordinates are WGS84
decimal degrees. The CLI fixes timestamps to GMT, preserves coordinate order,
and normalizes the variable order:
{
"schemaVersion": "tiangong.data.run-request.v1",
"capabilityId": "open-meteo.air-quality",
"capabilityVersion": "<describe.manifest.capabilityVersion>",
"operationId": "fetch-hourly",
"operationVersion": "<describe.manifest.operations[0].operationVersion>",
"input": {
"locations": [
{ "latitude": 52.52, "longitude": 13.41 },
{ "latitude": 48.85, "longitude": 2.35 }
],
"startDate": "2026-03-17",
"endDate": "2026-03-18",
"hourlyVariables": ["pm2_5", "pm10", "nitrogen_dioxide", "ozone", "us_aqi"],
"domain": "auto",
"cellSelection": "nearest"
}
}
Use the operation input schema returned by the same data describe response for current variable
codes, enum meanings, and limits. Do not add an API key: this capability uses
the public non-commercial endpoint only. Commercial customer-endpoint access
requires a separately reviewed capability. Do not silently geocode names,
widen the date range, add locations or variables, or change model-domain
selection beyond the user's intent.
Run
tiangong-ai data run open-meteo.air-quality fetch-hourly \
--input /absolute/path/to/request.json --json
The command emits a tiangong.data.run-result.v1 envelope. Preserve its
contract, warnings, errors, and receipt with data when handing the
result to another workflow.
Result boundaries
- Treat every value as a CAMS-derived model-grid estimate, not a measurement at
the requested coordinate. Preserve requested and returned grid coordinates.
- Retain nulls as unavailable model values. Never convert them to zero.
- Distinguish
series-missing from series-all-null: missing means the
provider did not return a requested series, while all-null means it returned
a structurally valid, aligned series with no usable numeric values. Preserve
an all-null series and report the machine-readable issue code.
- Treat
partial as incomplete coordinate, timestamp, or variable coverage and
report the affected paths with the usable columns.
- In GMT mode, require exactly 24 strictly ascending hourly timestamps per
inclusive date and a zero provider UTC offset. Preserve time-count, ordering,
timezone, unit, array-alignment, and non-numeric-value issues instead of
treating a structurally short response as complete.
- Treat
blocked as no usable business result and surface the structured
errors instead of bypassing limits or switching endpoints.
- Report record-limit truncation; all variable arrays are aligned to the
returned GMT time axis, but a truncated result is not an exhaustive window.
- Attribute Open-Meteo and the underlying CAMS data provider. The public
endpoint is non-commercial; do not imply commercial-use permission.
- Do not infer station conditions, regulatory compliance, health effects,
personal exposure, alerts, or causes from these modeled fields.
- Cross-source comparison and research evidence admission belong to the caller
or Auto Research, not this atomic Skill.
- The fixed public execution contract intentionally omits the source script's
arbitrary timezone, optional API-key/customer access, endpoint overrides, and
raw JSON/log artifacts. Those require separately reviewed contracts rather
than Skill-local parameters.
Reference
references/tiangong-data-requirement.json: stable capability requirement; it is not a package lock.
1---2name: open-meteo-air-quality-fetch3description: Retrieve hourly modeled Open-Meteo air-quality, aerosol, pollen, UV, or AQI fields through the Tiangong CLI for up to ten known coordinates and one bounded date window. Use for spatially continuous CAMS model context beyond station coverage; do not use for monitoring-station observations, regulatory records, health or exposure advice, geocoding, commercial public-endpoint use, or causal interpretation.4---5
6# Open-Meteo Air Quality
7
8Use the CLI-owned `open-meteo.air-quality` capability. This Skill supplies
9intent routing and result-use boundaries only; the CLI owns source discovery,
10input/output schemas, HTTP behavior, limits, validation, and receipts.
11
12## Before running
13
141. Read `references/tiangong-data-requirement.json`.
152. Use the caller- or workspace-resolved stable CLI. The requirement declares
16 compatible capability and operation contract majors; it does not select a
17 package build.
183. Run `data describe` with that same CLI. Continue only when the capability
19 ID, required contract majors, and the
20 `open-meteo.series-all-null` operation feature match; then copy the exact current
21 capability/operation versions from that response into the run request.
224. Run the default static doctor. Do not add `--live` unless the user explicitly
23 asks for a provider probe.
24
25```bash
26tiangong-ai data describe open-meteo.air-quality --json
27tiangong-ai data doctor open-meteo.air-quality --json
28```
29
30Use the returned Discovery Metadata to confirm current model coverage,
31variable availability, freshness, public-endpoint terms, attribution,
32`provides`, and `doesNotProvide`. Do not substitute facts remembered from an
33older Skill revision.
34
35## Prepare the request
36
37Build a `tiangong.data.run-request.v1` envelope and replace the two version
38placeholders with the exact versions from the same `data describe` response. Coordinates are WGS84
39decimal degrees. The CLI fixes timestamps to GMT, preserves coordinate order,
40and normalizes the variable order:
41
42```json
43{
44 "schemaVersion": "tiangong.data.run-request.v1",
45 "capabilityId": "open-meteo.air-quality",
46 "capabilityVersion": "<describe.manifest.capabilityVersion>",
47 "operationId": "fetch-hourly",
48 "operationVersion": "<describe.manifest.operations[0].operationVersion>",
49 "input": {
50 "locations": [
51 { "latitude": 52.52, "longitude": 13.41 },
52 { "latitude": 48.85, "longitude": 2.35 }
53 ],
54 "startDate": "2026-03-17",
55 "endDate": "2026-03-18",
56 "hourlyVariables": ["pm2_5", "pm10", "nitrogen_dioxide", "ozone", "us_aqi"],
57 "domain": "auto",
58 "cellSelection": "nearest"
59 }
60}
61```
62
63Use the operation input schema returned by the same `data describe` response for current variable
64codes, enum meanings, and limits. Do not add an API key: this capability uses
65the public non-commercial endpoint only. Commercial customer-endpoint access
66requires a separately reviewed capability. Do not silently geocode names,
67widen the date range, add locations or variables, or change model-domain
68selection beyond the user's intent.
69
70## Run
71
72```bash
73tiangong-ai data run open-meteo.air-quality fetch-hourly \
74 --input /absolute/path/to/request.json --json
75```
76
77The command emits a `tiangong.data.run-result.v1` envelope. Preserve its
78`contract`, `warnings`, `errors`, and `receipt` with `data` when handing the
79result to another workflow.
80
81## Result boundaries
82
83- Treat every value as a CAMS-derived model-grid estimate, not a measurement at
84 the requested coordinate. Preserve requested and returned grid coordinates.
85- Retain nulls as unavailable model values. Never convert them to zero.
86- Distinguish `series-missing` from `series-all-null`: missing means the
87 provider did not return a requested series, while all-null means it returned
88 a structurally valid, aligned series with no usable numeric values. Preserve
89 an all-null series and report the machine-readable issue code.
90- Treat `partial` as incomplete coordinate, timestamp, or variable coverage and
91 report the affected paths with the usable columns.
92- In GMT mode, require exactly 24 strictly ascending hourly timestamps per
93 inclusive date and a zero provider UTC offset. Preserve time-count, ordering,
94 timezone, unit, array-alignment, and non-numeric-value issues instead of
95 treating a structurally short response as complete.
96- Treat `blocked` as no usable business result and surface the structured
97 errors instead of bypassing limits or switching endpoints.
98- Report record-limit truncation; all variable arrays are aligned to the
99 returned GMT time axis, but a truncated result is not an exhaustive window.
100- Attribute Open-Meteo and the underlying CAMS data provider. The public
101 endpoint is non-commercial; do not imply commercial-use permission.
102- Do not infer station conditions, regulatory compliance, health effects,
103 personal exposure, alerts, or causes from these modeled fields.
104- Cross-source comparison and research evidence admission belong to the caller
105 or Auto Research, not this atomic Skill.
106- The fixed public execution contract intentionally omits the source script's
107 arbitrary timezone, optional API-key/customer access, endpoint overrides, and
108 raw JSON/log artifacts. Those require separately reviewed contracts rather
109 than Skill-local parameters.
110
111## Reference
112
113- `references/tiangong-data-requirement.json`: stable capability requirement; it is not a package lock.