Skip to content
Eden Engine

City Air Quality, Pollutant Breakdown & Forecast

omnial/get-city-air-quality

Given a city, state, and country, returns the current air quality index for that location with a pollutant-by-pollutant breakdown (e.g. PM2.5, ozone), an hourly and multi-day forecast of AQI and weather conditions, seasonal pollen levels, and health recommendations (whether it's safe to exercise outdoors, wear a mask, use an air purifier, or open windows) for that location.

activeper callv1
Provider
Web & Business Data Network
Category
weather
Provider price
$0.01365 per call
Latency p50 / p95
— / —
Success rate
Verified

Provider list price; Omnial MCP charges provider cost plus a platform markup on top.

Contract

input_schema.json
{
  "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
}
output_schema.json
{
  "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.

ChargeRate
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