Air Quality Map Clusters (by Bounding Box)
omnial/get-map-data
Given a geographic bounding box and a map zoom level, returns geographic clusters of air quality monitoring stations within that box -- each cluster's approximate coordinates, average AQI, and how many stations it groups. At high enough zoom a cluster resolves down to a single named monitoring station instead of an aggregate. Built for plotting an air quality heatmap or cluster overlay on a map, not for looking up one city's air quality.
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 $5.00.
Data source
Data from IQAir.
Use it
Your AI assistant does the work: it finds this tool, shows you the price first, runs it, and you are charged when the run finishes. There is nothing to set up for this tool in particular.
Connect once and your AI can find and run this tool, and any other it needs.
For developers: the calls your assistant makes
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "omnial/get-map-data" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "omnial/get-map-data" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "omnial/get-map-data", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "omnial/get-map-data", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot 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.
| Charge | Price |
|---|---|
Per call | $0.0137 |
- Updated
- Oct 27, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"bbox"
],
"properties": {
"bbox": {
"type": "string",
"description": "Bounding box as comma-separated string: minLng,minLat,maxLng,maxLat (e.g. '-122.5,37.0,-121.5,38.0'). Required -- identifies the geographic area to query."
},
"zoom": {
"type": "integer",
"description": "Map zoom level (1-20). Higher values return more granular clusters with fewer stations per cluster."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"status",
"data"
],
"properties": {
"data": {
"type": "object",
"required": [
"markers"
],
"properties": {
"markers": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"geohash",
"stationsCount",
"coordinates",
"aqi"
],
"properties": {
"aqi": {
"type": "number",
"description": "Air quality index for this marker -- the cluster's average on a 'cluster' type marker, or that one station's own reading on a 'station' type marker."
},
"name": {
"type": "string",
"description": "The individual monitoring station's display name -- only present when `type` is 'station', never on a 'cluster' marker (e.g. in an SF Bay Area box at zoom 8, only 1 of 22 markers carries this field)."
},
"type": {
"type": "string",
"description": "Either 'cluster' (an aggregate of nearby stations) or 'station' (a single resolved monitoring station) -- both values observed on the same real call at zoom 8."
},
"geohash": {
"type": "string",
"description": "The geohash cell this marker was clustered into."
},
"coordinates": {
"type": "object",
"required": [
"latitude",
"longitude"
],
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"additionalProperties": false
},
"stationsCount": {
"type": "integer",
"description": "Number of monitoring stations grouped into this marker; 1 on every 'station' type marker observed."
}
},
"additionalProperties": false
},
"description": "Empty when no monitoring stations fall inside the given bbox; otherwise one entry per cluster or, at high zoom over a sparse area, one entry per individual station."
}
},
"additionalProperties": false
},
"status": {
"type": "string",
"description": "'success' on both real calls observed."
}
},
"description": "The map-cluster record. A bounding box with no monitoring stations in it returns `data.markers` as an empty array rather than omitting the field (e.g. a box over the open Pacific Ocean).",
"additionalProperties": false
}