# Atmy air quality

> PM2.5 of 300+ cities: now, history, forecast, rankings; 12 000 sensors with a quality rating.

- name: ai.atmy/air-quality
- version: 1.1.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 75/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.atmy%2Fair-quality
- tools: https://api.protogrid.dev/v1/servers/ai.atmy%2Fair-quality/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "air-quality": {
      "type": "http",
      "url": "https://api.atmy.ai/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-11d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 75/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 11 of 11 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,724 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 12 tool changes in 30 days
- fail `stability.rug_pull`: 1 tools kept their name but changed most of their description in 30 days; review before trusting them

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: deps.dev does not know atmy-mcp@1.1.0

- tools: 11, about 2,724 tokens to load them all
- tool set hash: 4b6e1121aad811f052595029402ae0e1
- tools last changed: 2026-11-06T09:18:47.675Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.atmy/air-quality.svg)](https://protogrid.dev/servers/ai.atmy/air-quality)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-06 `get_air_quality` changed (description)
  - before: PM2.5 now in a city (mean of the latest reading of each eligible sensor, at most 60 minutes old) with its US EPA category and the weather now (temperature, humidity, pressure, wind, clouds, precipitation), plus the last completed day from the Atmy Data Hub with its weather. Pass city or lat/lon.
  - after: PM2.5 now in a city (mean of the latest reading of each eligible sensor, at most 60 minutes old; a government station hour up to 3 hours old, with the time it was measured) with its US EPA category and the weather now (temperature, humidity, pressure, wind, clouds, precipitation), plus the last completed day from the Atmy Data Hub with its weather. Pass city or lat/lon.
- 2026-10-31 `find_sensors` changed (inputSchema)
- 2026-10-27 `get_sensors_average` added
  - The mean of up to 100 sensors per 5 minutes, hour or UTC day, each sensor counted once per bucket, with the number of sensors in each bucket. Windows as in get_sensor_readings; by day at most 92 days a call.
- 2026-10-27 `get_sensor_readings` added
  - Readings of one sensor: raw (the last 31 days, at most 7 days a call), 5-minute means (the same windows), hourly means (the last 366 days, at most 92 days a call) or daily means (UTC days of the last 366 days, with the quality check of each day). Default: the last 24 hours, or 30 days by day. Times are UTC.
- 2026-10-27 `get_sensor` added
  - One sensor by its id: location, network, license, quality check with rating and reasons, and the latest reading.
- 2026-10-27 `find_sensors` added
  - Single sensors with their latest reading (PM1, PM2.5, PM10, temperature, humidity, pressure), network and quality check: status, rating 0–10 of the last checked day, the mean rating of the last 7 days and the reasons. Filter by city, country, or a point with a radius; sort=rating puts the most reliable sensors first.
- 2026-10-27 `list_sensor_networks` added
  - The sensor networks in Atmy (Sensor.Community, AirGradient, Atmy) with their number of sensors, how many pass the quality check, and their license.
- 2026-10-24 `get_air_quality_monthly` changed (description)
  - before: The whole measurement history of a city from the Atmy Data Hub: PM2.5 per month, yearly means (complete years marked), the dirtiest and cleanest months and days. For questions like "how has the air changed" or "the most polluted month on record".
  - after: The whole measurement history of a city from the Atmy Data Hub: PM2.5 per month with the month's weather from 2026-01, yearly means (complete years marked), the dirtiest and cleanest months and days. For questions like "how has the air changed" or "the most polluted month on record".
- 2026-10-24 `get_air_quality_history` changed (description)
  - before: Daily PM2.5 of a city from the Atmy Data Hub (UTC days, sensors after the quality check): the last days, or any period since 2017 with from/to, at most 400 days per call. For the whole history or records use get_air_quality_monthly first.
  - after: Daily PM2.5 of a city from the Atmy Data Hub (UTC days, sensors after the quality check) with the day's weather from 2026-01-19 (mean, lowest and highest temperature, humidity, pressure, wind, strongest gust, clouds): the last days, or any period since 2017 with from/to, at most 400 days per call. For the whole history or records use get_air_quality_monthly first.
- 2026-10-24 `get_air_quality` changed (description)
  - before: PM2.5 now in a city (mean of the latest reading of each eligible sensor, at most 60 minutes old) with its US EPA category, plus the last completed day from the Atmy Data Hub. Pass city or lat/lon.
  - after: PM2.5 now in a city (mean of the latest reading of each eligible sensor, at most 60 minutes old) with its US EPA category and the weather now (temperature, humidity, pressure, wind, clouds, precipitation), plus the last completed day from the Atmy Data Hub with its weather. Pass city or lat/lon.

Full history: https://api.protogrid.dev/v1/servers/ai.atmy%2Fair-quality/changes

## Dependencies

- npm atmy-mcp@1.1.0: unknown

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://api.atmy.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

- npm atmy-mcp@1.1.0

## Tools (11)

- `find_sensors`: Single sensors with their latest reading (PM1, PM2.5, PM10, temperature, humidity, pressure), network and quality check: status, rating 0–10 of the last checked day, the mean rating of the last 7 days and the reasons. Filter by city, country, or a point with a radius; sort=rating puts the most reliable sensors first.
- `get_air_quality`: PM2.5 now in a city (mean of the latest reading of each eligible sensor, at most 60 minutes old; a government station hour up to 3 hours old, with the time it was measured) with its US EPA category and the weather now (temperature, humidity, pressure, wind, clouds, precipitation), plus the last completed day from the Atmy Data Hub with its weather. Pass city or lat/lon.
- `get_air_quality_history`: Daily PM2.5 of a city from the Atmy Data Hub (UTC days, sensors after the quality check) with the day's weather from 2026-01-19 (mean, lowest and highest temperature, humidity, pressure, wind, strongest gust, clouds): the last days, or any period since 2017 with from/to, at most 400 days per call. For the whole history or records use get_air_quality_monthly first.
- `get_air_quality_monthly`: The whole measurement history of a city from the Atmy Data Hub: PM2.5 per month with the month's weather from 2026-01, yearly means (complete years marked), the dirtiest and cleanest months and days. For questions like "how has the air changed" or "the most polluted month on record".
- `get_city_forecast`: The next hours of a city: temperature, wind, humidity, precipitation and the pollution accumulation index 0–100 (how strongly the weather keeps particles near the ground). A weather estimate, not a PM2.5 forecast.
- `get_country_ranking`: Cities of a country ranked by daily PM2.5 for the last completed day (Atmy Data Hub), most polluted or cleanest first.
- `get_sensor`: One sensor by its id: location, network, license, quality check with rating and reasons, and the latest reading.
- `get_sensor_readings`: Readings of one sensor: raw (the last 31 days, at most 7 days a call), 5-minute means (the same windows), hourly means (the last 366 days, at most 92 days a call) or daily means (UTC days of the last 366 days, with the quality check of each day). Default: the last 24 hours, or 30 days by day. Times are UTC.
- `get_sensors_average`: The mean of up to 100 sensors per 5 minutes, hour or UTC day, each sensor counted once per bucket, with the number of sensors in each bucket. Windows as in get_sensor_readings; by day at most 92 days a call.
- `list_sensor_networks`: The sensor networks in Atmy (Sensor.Community, AirGradient, Atmy) with their number of sensors, how many pass the quality check, and their license.
- `search_cities`: Find the cities with an Atmy air-quality summary by name (any language) or country. Returns slugs to pass to the other tools.
