Contract
{
"type": "object",
"required": [
"country",
"city",
"state"
],
"properties": {
"city": {
"type": "string",
"description": "City URL slug (e.g. 'new-york-city', 'beijing', 'santiago'). Obtainable from the url field of get_live_city_ranking or get_world_air_quality results."
},
"state": {
"type": "string",
"description": "State/region URL slug (e.g. 'new-york', 'beijing', 'santiago-metropolitan')."
},
"country": {
"type": "string",
"description": "Country URL slug (e.g. 'usa', 'china', 'chile')."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"data": {
"type": [
"object",
"null"
],
"properties": {
"details": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The resolved city's display name, e.g. 'New York'."
},
"state": {
"type": "string",
"description": "Display state/region name, e.g. 'New York'."
},
"country": {
"type": "string",
"description": "Display country name, e.g. 'USA'."
},
"current": {
"type": "object",
"properties": {
"ts": {
"type": "string",
"description": "ISO 8601 timestamp of the current reading."
},
"aqi": {
"type": "number",
"description": "Current overall air quality index."
},
"icon": {
"type": "string",
"description": "Weather icon code, not customer-meaningful without a lookup table."
},
"wind": {
"type": "object",
"properties": {
"speed": {
"type": "number"
},
"direction": {
"type": "number",
"description": "Degrees."
}
},
"additionalProperties": true
},
"pollen": {
"type": "object",
"properties": {
"pollens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "e.g. 'grass', 'weed', 'tree'."
},
"level": {
"type": "number"
}
},
"additionalProperties": true
}
},
"globalIndexLevel": {
"type": "number",
"description": "0-3 on the one real call observed (low to high) -- the upstream ceiling isn't documented, treat as at least that range."
}
},
"additionalProperties": true
},
"humidity": {
"type": "number",
"description": "Percent."
},
"pressure": {
"type": "number",
"description": "Atmospheric pressure, hPa on the one real call."
},
"condition": {
"type": "string",
"description": "Weather condition text, e.g. 'Broken clouds'."
},
"estimated": {
"type": "boolean",
"description": "Whether this reading is measured from a real station or estimated/modeled -- observed as `false` on the one real call; the customer-facing meaning of `true` is inferred from the field name, not confirmed against a real estimated reading."
},
"pollutants": {
"type": "array",
"items": {
"type": "object",
"properties": {
"aqi": {
"type": "number"
},
"unit": {
"type": "string",
"description": "e.g. 'µg/m³'."
},
"description": {
"type": "string",
"description": "e.g. 'Fine particles (≤ 2.5 µm)'."
},
"concentration": {
"type": "number"
},
"pollutantName": {
"type": "string",
"description": "Short code, e.g. 'pm25', 'o3'."
}
},
"additionalProperties": true
},
"description": "Per-pollutant breakdown for the current reading, e.g. PM2.5 and ozone on the one real call observed."
},
"WHOExposure": {
"type": "object",
"properties": {
"WHOExposure": {
"type": "number",
"description": "0-1 exposure fraction against WHO guideline thresholds."
},
"WHOExposureColor": {
"type": "string",
"description": "Color-coded severity for the WHO exposure level, e.g. 'green'."
}
},
"description": "WHO guideline exposure, alongside the AQI figure above.",
"additionalProperties": true
},
"temperature": {
"type": "number",
"description": "Celsius on the one real call observed."
},
"concentration": {
"type": "number",
"description": "Concentration of the main pollutant, in the unit its own pollutants[] entry documents."
},
"mainPollutant": {
"type": "string",
"description": "Short code of the pollutant driving the current AQI, e.g. 'o3'."
},
"aqiDescription": {
"type": "string",
"description": "Observed as 'Air quality index' on the one real call -- likely a fixed label, not a per-city description."
}
},
"additionalProperties": true
},
"timezone": {
"type": "string",
"description": "IANA timezone, e.g. 'America/New_York'."
},
"forecasts": {
"type": "object",
"properties": {
"daily": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ts": {
"type": "string"
},
"aqi": {
"type": "number"
},
"icon": {
"type": "string"
},
"wind": {
"type": "object",
"properties": {
"speed": {
"type": "number"
},
"direction": {
"type": "number"
}
},
"additionalProperties": true
},
"pollen": {
"type": "object",
"properties": {
"pollens": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"level": {
"type": "number"
}
},
"additionalProperties": true
}
},
"globalIndexLevel": {
"type": "number"
}
},
"additionalProperties": true
},
"humidity": {
"type": "number"
},
"pressure": {
"type": "number"
},
"condition": {
"type": "string"
},
"temperature": {
"type": "object",
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
}
},
"additionalProperties": true
}
},
"additionalProperties": true
},
"description": "7 entries on the one real call observed."
},
"hourly": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ts": {
"type": "string"
},
"aqi": {
"type": "number"
},
"icon": {
"type": "string"
},
"wind": {
"type": "object",
"properties": {
"speed": {
"type": "number"
},
"direction": {
"type": "number"
}
},
"additionalProperties": true
},
"humidity": {
"type": "number"
},
"pressure": {
"type": "number"
},
"condition": {
"type": "string"
},
"temperature": {
"type": "number"
},
"probabilityOfRain": {
"type": "number",
"description": "Percent -- observed on only ONE of 72 hourly entries in the real fixture (the hour forecast as 'Rain'); absent on every other entry, not a guaranteed field."
}
},
"additionalProperties": true
},
"description": "72 entries on the one real call observed (hourly, 3 days out)."
}
},
"additionalProperties": true
},
"coordinates": {
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"additionalProperties": true
},
"recommendations": {
"type": "object",
"properties": {
"pollution": {
"type": "object",
"properties": {
"mask": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Observed as 'hidden' on the one real call (recommendation not shown at this AQI level)."
}
},
"additionalProperties": true
},
"windows": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"value": {
"type": "string"
}
},
"additionalProperties": true
},
"exercise": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"value": {
"type": "string"
}
},
"additionalProperties": true
},
"airPurifier": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "Same 'hidden'/shown pattern as `mask.value`."
}
},
"additionalProperties": true
}
},
"additionalProperties": true
}
},
"description": "Health guidance keyed by activity, each with a color-coded severity `value` ('green'/'hidden' on the one real call observed -- other severities are inferred from the pattern, not confirmed) and, for exercise/windows, a short human-readable `text`.",
"additionalProperties": true
},
"activeStationsCount": {
"type": "number",
"description": "Number of monitoring stations currently feeding this location's data."
}
},
"additionalProperties": true
}
},
"description": "null when the given city/state/country slug does not resolve to a known location.",
"additionalProperties": true
},
"status": {
"type": "string",
"description": "'success' on the one real found-city call observed."
}
},
"description": "The air-quality record, as returned at routing.responseResultPath ($.output). A city slug that does not resolve returns an empty/null result with none of the fields below present -- see the `invalid-city` fixture, whose raw output is the bare literal `null`, not an object containing a null `data` -- so a caller must check for this before reading any nested field.",
"additionalProperties": true
}Pricing
Every real charge, itemised. A model that quietly omits one is a slow financial leak, so nothing here is rolled up, and a charge that only applies to some inputs says so rather than being added in.
Prices in this catalog are the provider's own list price, not your bill: Omnial MCP charges provider cost plus a platform markup on top, so what you are charged is higher than the figure shown. For the exact amount a specific call will cost, run omnial_execute with dry_run: true; that number includes the markup and is what we hold while the call runs. It is a quote, not a cap on the charge.
| Charge | Rate |
|---|---|
Per call Flat, regardless of what comes back | $0.01365 |
- Cost basis
- Not recorded
This tool's catalog entry does not record how its final bill is determined, so we will not tell you whether its cost is fixed before the call or reported by the provider afterwards. Either way what is held is a quote rather than a cap: you are charged what the call actually costs, bounded at 2x the quote.
- Updated
- Sep 8, 2026
