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 callv2

Price

Up to $0.0137 per call; you pay what the call used

You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.

Data source

IQAir

Data from IQAir.

Use it

Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.

Connect once and your AI can find and run this tool, and any other it needs.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/get-city-air-quality" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/get-city-air-quality" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/get-city-air-quality", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/get-city-air-quality", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.

Pricing

Every charge this tool can incur.

ChargePrice
Per call
$0.0137
Updated
Oct 25, 2026

Input and output schemas

Input schema
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
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 -- present only on some hourly entries (e.g. one of 72, for an hour forecast as 'Rain'); absent on others, 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. A city slug that does not resolve returns an empty/null result with none of the fields below present -- 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
}