# Atmy air quality (remote · api.atmy.ai)

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

- Trust score: 77/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.atmy.ai`: 77/100 (this document), [markdown](https://verifymcp.io/servers/ai-atmy-air-quality/api.md), [page](https://verifymcp.io/servers/ai-atmy-air-quality/api)
- npm · `atmy-mcp`: 34/100, [markdown](https://verifymcp.io/servers/ai-atmy-air-quality/atmy-mcp.md), [page](https://verifymcp.io/servers/ai-atmy-air-quality/atmy-mcp)

## Channel facts

- Endpoint: `https://api.atmy.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.1.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 80/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 74/100
  - 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2019 tokens (~155/item across 13 items; 11 tools + 2 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 43/100
  - Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 74% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 11 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 13 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### How do I install the Atmy air quality MCP server?

Atmy air quality is a hosted endpoint at https://api.atmy.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http ai-atmy-air-quality 'https://api.atmy.ai/mcp'
```

### Cursor

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

### VS Code

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

### Codex

```toml
[mcp_servers.ai-atmy-air-quality]
url = "https://api.atmy.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-atmy-air-quality": {
      "type": "remote",
      "url": "https://api.atmy.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-atmy-air-quality --url 'https://api.atmy.ai/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-atmy-air-quality:
    url: "https://api.atmy.ai/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "ai-atmy-air-quality": {
      "Transport": "http",
      "Url": "https://api.atmy.ai/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add ai-atmy-air-quality -t streamable-http -u 'https://api.atmy.ai/mcp'
```

### Other

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

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-04 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-02 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-11-01 (score 75, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional] Server version: 1.4.0 → 1.5.0
- [cosmetic] “find_sensors” reworded the description of “city”

### 2026-10-31 (score 75, +1)

No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-29 (score 74, +1)

No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-27 (score 73, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Tool coverage: 88% → 74%
- [functional regression] Schema quality: 1303 → 1980
- [functional] Server version: 1.2.0 → 1.4.0
- [functional] New tool “find_sensors”
- [functional] New tool “get_sensor”
- [functional] New tool “get_sensor_readings”
- [functional] New tool “get_sensors_average”
- [functional] New tool “list_sensor_networks”

### 2026-10-26 (score 73, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-25 (score 72, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_air_quality” rewrote its description, which is the text the model reads
- [security] Tool “get_air_quality_history” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 127 → 162
- [functional] Server version: 1.0.0 → 1.2.0
- [functional] New tool “get_air_quality_monthly”
- [cosmetic] “get_air_quality_history” added an optional parameter “from”
- [cosmetic] “get_air_quality_history” added an optional parameter “to”
- [cosmetic] “get_air_quality_history” reworded the description of “days”

## MCP tools (11)

### `search_cities` (~94 tokens)

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.

Input parameters:

- `country` (string): Country name or ISO code.
- `lang` (string): Language of city and country names and of the page link; default en.
- `limit` (integer)
- `query` (string): Part of the city name in any site language.

### `get_air_quality` (~185 tokens)

Current air quality

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.

Input parameters:

- `city` (string): City name in any of the site languages, a slug like "russia/krasnoyarsk", or the Atmy city id.
- `country` (string): Country name, to tell apart cities with the same name.
- `lang` (string): Language of city and country names and of the page link; default en.
- `lat` (number): Latitude; with lon, the nearest city with an Atmy summary within 50 km.
- `lon` (number): Longitude.

### `get_air_quality_history` (~268 tokens)

Daily 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.

Input parameters:

- `city` (string): City name in any of the site languages, a slug like "russia/krasnoyarsk", or the Atmy city id.
- `country` (string): Country name, to tell apart cities with the same name.
- `days` (integer): How many days back from the last completed day; ignored with from/to.
- `from` (string): First day YYYY-MM-DD (2017-01-01 or later).
- `lang` (string): Language of city and country names and of the page link; default en.
- `lat` (number): Latitude; with lon, the nearest city with an Atmy summary within 50 km.
- `lon` (number): Longitude.
- `to` (string): Last day YYYY-MM-DD; default the last completed day.

### `get_air_quality_monthly` (~185 tokens)

Monthly air quality history

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".

Input parameters:

- `city` (string): City name in any of the site languages, a slug like "russia/krasnoyarsk", or the Atmy city id.
- `country` (string): Country name, to tell apart cities with the same name.
- `lang` (string): Language of city and country names and of the page link; default en.
- `lat` (number): Latitude; with lon, the nearest city with an Atmy summary within 50 km.
- `lon` (number): Longitude.

### `get_city_forecast` (~169 tokens)

Weather and pollution accumulation 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.

Input parameters:

- `city` (string): City name in any of the site languages, a slug like "russia/krasnoyarsk", or the Atmy city id.
- `country` (string): Country name, to tell apart cities with the same name.
- `hours` (integer)
- `lang` (string): Language of city and country names and of the page link; default en.
- `lat` (number): Latitude; with lon, the nearest city with an Atmy summary within 50 km.
- `lon` (number): Longitude.

### `get_country_ranking` (~122 tokens)

Country ranking

Cities of a country ranked by daily PM2.5 for the last completed day (Atmy Data Hub), most polluted or cleanest first.

Input parameters:

- `country` (string, required): Country name in any site language or the ISO code, e.g. "Russia", "Сербия", "DE".
- `lang` (string): Language of city and country names and of the page link; default en.
- `limit` (integer)
- `order` (string)
- `settlements` (string): Large cities only, or every settlement with enough sensors.

### `list_sensor_networks` (~44 tokens)

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.

### `find_sensors` (~251 tokens)

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.

Input parameters:

- `city` (string): Any city or town: a name in any language, a slug like "serbia/belgrade" or the Atmy city id; also towns without an Atmy summary.
- `country` (string): Country slug, the first part of a city slug, e.g. "serbia".
- `lat` (number): With lon: sensors within radius_km of this point.
- `limit` (integer)
- `lon` (number)
- `min_rating` (number): Only sensors with at least this rating on their last checked day.
- `network` (string)
- `page` (integer)
- `quality` (string): passed: only sensors that pass the quality check.
- `radius_km` (number)
- `sort` (string)

### `get_sensor` (~45 tokens)

One sensor

One sensor by its id: location, network, license, quality check with rating and reasons, and the latest reading.

Input parameters:

- `id` (integer, required): Sensor id from find_sensors.

### `get_sensor_readings` (~147 tokens)

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.

Input parameters:

- `from` (string): ISO 8601 date or time, UTC.
- `id` (integer, required)
- `interval` (string)
- `to` (string): ISO 8601 date or time, UTC; default now.

### `get_sensors_average` (~111 tokens)

Mean of a group of sensors

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.

Input parameters:

- `from` (string): ISO 8601 date or time, UTC.
- `ids` (array, required)
- `interval` (string)
- `to` (string): ISO 8601 date or time, UTC; default now.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-atmy-air-quality/api#diagnostics

## Score history

- 2026-11-05: 77
- 2026-11-04: 77
- 2026-11-03: 76
- 2026-11-02: 76
- 2026-11-01: 75
- 2026-10-31: 75
- 2026-10-30: 74
- 2026-10-29: 74
- 2026-10-28: 73
- 2026-10-27: 73
- 2026-10-26: 73
- 2026-10-25: 72
- 2026-10-24: 72
- 2026-10-23: 72

## Common questions

### What is the Atmy air quality MCP server?

Atmy air quality is an MCP server listed in the public MCP registry as ai.atmy/air-quality. PM2.5 of 300+ cities: now, history, forecast, rankings; 12 000 sensors with a quality rating. This page covers its hosted endpoint (https://api.atmy.ai/mcp).

### Is the Atmy air quality MCP server safe to use?

Atmy air quality scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Atmy air quality MCP server expose?

Atmy air quality exposes 11 tools: search_cities, get_air_quality, get_air_quality_history, get_air_quality_monthly, get_city_forecast, and 6 more. Their descriptions and schemas cost roughly 1,621 tokens of context every time the server is loaded.

### Does the Atmy air quality MCP server require authentication?

No. We connected to Atmy air quality without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Atmy air quality MCP server still maintained?

Atmy air quality is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.atmy.ai/mcp
- Website: https://atmy.ai/air-quality/api/
- Changelog RSS feed: https://verifymcp.io/servers/ai-atmy-air-quality/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-atmy-air-quality/api.json
- HTML version of this page: https://verifymcp.io/servers/ai-atmy-air-quality/api
