Skip to content
Eden Engine

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.

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": [
    "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.json
{
  "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 (see the sf-bay-area-zoom8 fixture, where 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 (see the pacific-ocean-empty fixture); 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, as returned at routing.responseResultPath ($.output). A bounding box with no monitoring stations in it returns `data.markers` as an empty array rather than omitting the field -- see the pacific-ocean-empty fixture.",
  "additionalProperties": false
}

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 23, 2026