Skip to main content
Glama

Air Quality

air_quality
Read-onlyIdempotent

"Air quality / AQI in [city]" / "is the air safe to breathe in [location]" / "pollution levels for [place]" / "smoke / smog / wildfire-smoke forecast" / "pollen forecast" — global air quality and pollen forecast at any lat/lng. Returns PM2.5, PM10, ozone (O3), NO2, SO2, CO, dust, and pollen (alder/birch/grass/mugwort/olive/ragweed) up to 5 days ahead, plus European AQI / US AQI. Free, keyless.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hourlyNoComma-separated variables. Default pm2_5,pm10,o3,no2,european_aqi
latitudeYes
longitudeYes
forecast_daysNo1-5 (default 5)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
hourlyNoHourly air quality data
latitudeNoQuery latitude
timezoneNoIANA timezone string
elevationNoElevation of the location in meters
longitudeNoQuery longitude
hourly_unitsNoUnits for hourly air quality variables
generationtime_msNoAPI response generation time in milliseconds
utc_offset_secondsNoUTC offset in seconds

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "latitude": 40.7128,
      +    "longitude": -74.006
      +  },
      +  {
      +    "forecast_days": 3,
      +    "hourly": "pm2_5,pm10,o3,no2",
      +    "latitude": 52.52,
      +    "longitude": 13.405
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "elevation": {
      +      "description": "Elevation of the location in meters",
      +      "type": "number"
      +    },
      +    "generationtime_ms": {
      +      "description": "API response generation time in milliseconds",
      +      "type": "number"
      +    },
      +    "hourly": {
      +      "additionalProperties": {
      +        "items": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "type": "array"
      +      },
      +      "description": "Hourly air quality data",
      +      "properties": {
      +        "time": {
      +          "description": "ISO 8601 timestamps",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "hourly_units": {
      +      "additionalProperties": {
      +        "type": "string"
      +      },
      +      "description": "Units for hourly air quality variables",
      +      "type": "object"
      +    },
      +    "latitude": {
      +      "description": "Query latitude",
      +      "type": "number"
      +    },
      +    "longitude": {
      +      "description": "Query longitude",
      +      "type": "number"
      +    },
      +    "timezone": {
      +      "description": "IANA timezone string",
      +      "type": "string"
      +    },
      +    "utc_offset_seconds": {
      +      "description": "UTC offset in seconds",
      +      "type": "integer"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it lists returned pollutants and pollen types, mentions a 5-day forecast horizon, and notes that it is free and keyless. All annotations (readOnlyHint, idempotentHint, etc.) are consistent and complemented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with embedded examples, which is reasonably concise but could be broken into clearer segments. It front-loads common queries, making it easy to grasp quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists (though not shown), the description fully covers what the tool returns, including pollutants, pollen, and AQI types, as well as the data range. It leaves no major gaps for an AI agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

While latitude and longitude have no schema description, the description covers their purpose by stating 'any lat/lng' and provides examples. It also explains the 'hourly' parameter's possible values (PM2.5, PM10, etc.) and the 'forecast_days' range. This compensates for the 50% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it provides global air quality and pollen forecast data at any lat/lng, with specific examples like 'is the air safe to breathe in [location]'. It distinguishes itself from sibling tools like 'forecast' by focusing exclusively on air quality parameters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete example queries that implicitly guide when to use this tool (e.g., for pollution levels, smoke, pollen). It does not explicitly mention when not to use it or compare with alternatives, but the specificity makes the intended use clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.