Skip to main content
Glama

Current By Zip

current_by_zip
Read-onlyIdempotent

Latest observed air quality index (AQI) for the EPA AirNow reporting area nearest a US ZIP code: one row per pollutant (ozone, PM2.5, PM10) with the AQI value, category (Good / Moderate / Unhealthy …), observation hour, reporting agency and yesterday's AQI for comparison. Answers "what is the air quality in ZIP 94103 right now".

Input Schema

NameRequiredDescriptionDefault
zip_codeYesUS 5-digit ZIP code
distance_milesNoSearch radius for the nearest reporting area (default 25, max 250)

Output Schema

NameRequiredDescriptionDefault
countYesNumber of observations returned
zip_codeYesUS 5-digit ZIP code queried
observationsYesLatest AQI observations for pollutants at nearest site

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / distance_miles / description
      Previous value: -"Search radius (default 25, max 250)"New value: +"Search radius for the nearest reporting area (default 25, max 250)"
  2. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "zip_code": "10001"
      +  },
      +  {
      +    "distance_miles": 50,
      +    "zip_code": "90210"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "count": {
      +      "description": "Number of observations returned",
      +      "type": "integer"
      +    },
      +    "observations": {
      +      "description": "Latest AQI observations for pollutants at nearest site",
      +      "items": {
      +        "properties": {
      +          "aqi": {
      +            "description": "Air Quality Index value",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "category": {
      +            "description": "AQI category (Good, Moderate, etc.)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "category_number": {
      +            "description": "AQI category numeric code",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "date": {
      +            "description": "Date observed (YYYY-MM-DD)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "hour": {
      +            "description": "Hour observed (0-23)",
      +            "type": [
      +              "integer",
      +              "null"
      +            ]
      +          },
      +          "latitude": {
      +            "description": "Site latitude",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "longitude": {
      +            "description": "Site longitude",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "pollutant": {
      +            "description": "Pollutant name (e.g., O3, PM2.5)",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "reporting_area": {
      +            "description": "Geographic area name",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "state": {
      +            "description": "State code",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "timezone": {
      +            "description": "Local time zone",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "zip_code": {
      +      "description": "US 5-digit ZIP code queried",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "zip_code",
      +    "count",
      +    "observations"
      +  ],
      +  "type": "object"
      +}
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly/openWorld/idempotent/non-destructive, so safety is covered. The description adds real value beyond that: data source (EPA AirNow), row granularity per pollutant, and the specific fields returned including yesterday's AQI for comparison. It does not discuss radius defaults or data staleness beyond 'latest observed'.

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

Conciseness5/5

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

A single dense sentence front-loads the resource, source, and output shape, then a short quoted example query grounds it. No filler clauses; every phrase carries payload.

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?

With a full output schema, complete annotations, and 100% parameter coverage, the description only needs to supply source and semantics, which it does (EPA AirNow, per-pollutant rows, comparison field). Nothing an agent needs to select or invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (zip_code format, distance_miles default 25 / max 250) are already fully documented in the schema. The description's 'nearest reporting area' hints at the radius semantics but adds no format or edge-case detail. Baseline 3 applies.

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?

States a specific verb and resource ('Latest observed air quality index (AQI) for the EPA AirNow reporting area nearest a US ZIP code') with clear scope and granularity (one row per pollutant). The ZIP-code-based lookup distinguishes it from siblings like current_by_location and forecast_by_zip without needing their schemas opened.

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 closing question ('what is the air quality in ZIP 94103 right now') gives a concrete usage context, and 'latest observed' plus 'nearest a US ZIP code' implicitly bounds when this applies. No explicit alternatives or when-not-to-use conditions are named, so it falls short of a 5.

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.