SmogRank
Server Details
PM2.5 air pollution by city: worst-first rankings, current air and daily history.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: find_city for search, city_air for current city status, city_history for historical daily data, and rankings for comparative multi-city rankings. No two tools appear to do the same thing, and descriptions make the boundaries clear.
Names mix conventions: city_air and city_history are noun phrases, find_city is verb_noun, and rankings is a single noun. All use snake_case and are readable, but the pattern is not consistent.
Four tools is well-scoped for the server's purpose, covering search, current data, historical data, and rankings without redundancy or bloat.
The surface covers the core air quality workflows: finding cities, current conditions, historical trends, and rankings. Minor gaps exist, such as no multi-city current comparison or forecast (explicitly excluded), but agents can work around these.
Available Tools
4 toolscity_airAir quality now in a cityARead-onlyInspect
PM2.5 now in a city: the latest hourly value, its 24-hour, 7-day, 30-day and year-to-date averages with its rank among all measured cities, the US EPA category, how it compares with the WHO guideline, and the "why it ranks here" notes (patterns in its own history and nearby fire, smoke and volcano evidence, named as likely causes, never confirmed). Cities without a monitor get a model estimate, labelled as one. No forecasts.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | City as its page path ("us/los-angeles"), a SmogRank URL, or a name ("Lahore", "Delhi, India"). find_city lists the paths. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, non-open-world profile, and the description adds genuine behavioral context beyond them: model estimates are labelled as such, fire/smoke/volcano attributions are 'named as likely causes, never confirmed', and the tool explicitly excludes forecasts. These are useful epistemic caveats an agent needs to frame results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, but it is front-loaded with the core value ('PM2.5 now in a city') and every clause adds a distinct output element or caveat. No padding or repetition, though the run-on structure is heavier than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing returns, and it does so thoroughly — hourly value, four averaging windows, rank context, EPA and WHO comparison, and attribution notes. Nothing an agent needs to call or interpret this tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage, and the schema already explains the accepted formats (page path, SmogRank URL, or name) plus the find_city fallback. The description adds nothing about the city argument, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-and-resource pair (latest hourly PM2.5 for a city) and enumerates exactly what the payload contains, so an agent knows the tool's output shape from the description alone. It distinguishes itself from city_history implicitly via 'now' and 'No forecasts', but never names the siblings outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'No forecasts' and the note that monitorless cities get a labelled model estimate sketch the boundary, but there is no explicit when-to-use-this-vs-city_history or vs rank/rankings guidance. The pointer to find_city for path resolution lives in the schema, not the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
city_historyA city's daily historyARead-onlyInspect
A measured city's daily mean PM2.5 (its local calendar days, µg/m³) and its daily rank, between two dates (up to 400 days; default the last 30), with monthly means.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | YYYY-MM-DD, default yesterday | |
| city | Yes | City as its page path ("us/los-angeles"), a SmogRank URL, or a name ("Lahore", "Delhi, India"). find_city lists the paths. | |
| from | No | YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds real behavioral context beyond that: a hard 400-day cap, a default of the last 30 days, local-calendar-day semantics, and that monthly means are folded into the result — all useful for planning a call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads what is returned (daily mean PM2.5 and rank) and appends the scoping constraints. Every clause carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey the return payload, and it does: daily mean, daily rank, and monthly means. Only the exact result structure/ordering is left unspecified, which is a minor gap for a read-only three-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description nonetheless adds meaning the schema does not carry — the 400-day maximum span and the default 30-day window — which helps an agent size the from/to arguments correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific resource and payload — daily mean PM2.5 and daily rank for a city over a date range, plus monthly means. It is clearly a historical daily-data tool, but it never contrasts itself with the sibling city_air, so an agent must infer which one to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance, and no sibling (city_air, rankings, find_city) is named as an alternative. Usage is only implied by the data described, leaving the agent to infer the choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_cityFind a cityARead-onlyInspect
Search SmogRank's cities by name, or find the nearest ones to a point. Returns each city's path for the other tools, whether it is measured by ground monitors (ranked) or only estimated from a model, and its page.
| Name | Required | Description | Default |
|---|---|---|---|
| lat | No | Latitude, with lon, instead of a name. | |
| lon | No | ||
| limit | No | ||
| query | No | City name, optionally with region or country: "Springfield, Illinois". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds real substance beyond that: it discloses the returned provenance flag distinguishing ground-monitor (ranked) cities from model-only estimates, plus the page link. No output schema exists, so this disclosure carries extra weight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the first front-loads the two search modes, the second enumerates return contents. No filler, no restatement of the title or name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and four loosely-documented parameters, the description does the necessary work of explaining what comes back and why (path, ranked-vs-estimated, page). Minor gaps remain around ambiguous name matches and the default limit of 8, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% — lat and query are documented but lon and limit rely on type/default bounds alone. The description partially compensates by explaining the query-vs-coordinates dichotomy and hinting that lat/lon supply "instead of a name," but it adds no format, limit, or ambiguity-resolution detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Search SmogRank's cities") and covers both operating modes: name lookup and nearest-to-point. It also frames the tool as the discovery entry point by noting it returns each city's path "for the other tools," which implicitly separates it from siblings like city_air and city_history, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly lays out the two selection modes — query by name vs. supply lat/lon for nearest cities — and signals that this is the lookup step preceding the per-city tools. It stops short of explicit when-not guidance or naming alternatives (e.g., "use rankings for score order").
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rankingsMost (or least) polluted citiesBRead-onlyInspect
The ranking of measured cities by average PM2.5, worst first: a rolling window (24h, 7d, 30d, year to date) or a past period (a day 2026-09-30, a week 2026-W40, a month 2026-09, a year 2025). Optionally one country.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| order | No | worst | |
| period | No | A past period instead of a window: YYYY-MM-DD, YYYY-Www, YYYY-MM or YYYY. | |
| window | No | 24h | |
| country | No | ISO country code, e.g. IN. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description usefully adds that only 'measured' cities appear in the ranking and that results are ordered worst-first by default, but says nothing about result size (limit) or what a ranking entry contains. With annotations in place, that is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with a colon-delimited list; the core purpose and ordering are front-loaded before the parameter details. Efficient for the amount of information carried, though the embedded examples make it slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a five-parameter tool with no output schema, the description covers time modes, ordering, and country filtering, but never addresses the limit parameter or what a ranking entry looks like (city plus PM2.5 value?). An agent can call it, but not fully predict the result shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 40% (limit, order, and window carry no schema descriptions), so the description must compensate. It partially does: it gives example formats for period (2026-09-30, 2026-W40, 2026-09, 2025) and country, and states the worst-first default, but it never mentions the limit parameter or the cleanest option. The 'year to date' phrasing also sits awkwardly against the schema's 'year' enum value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (measured cities) and a specific metric (average PM2.5), and states the default ordering ('worst first'). This is clearly distinct from the ranking-free siblings city_air and city_history, though those siblings are never named to confirm the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It sets out the two time-selection modes (rolling window vs. past period) and the optional country filter, which implies usage but never states when to prefer this tool over city_air or city_history. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
- First observed
city_air - First observed
city_history - First observed
find_city - First observed
rankings
Related MCP Connectors
China Air Quality MCP — nationwide hourly AQI from CNEMC (中国环境监测总站).
Free, keyless real-time air quality (US AQI plus PM2.5, PM10, ozone, NO2, SO2, CO) for any city.
Live data: weather, air quality, FX, CN/HK/US stocks, IP geo, domain, SSL, China reachability.
Stay ahead of pollution with our Air Quality MCP. Access real-time air quality data, including
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables real-time China nationwide air quality monitoring via CNEMC, with AQI, pollutant concentrations and levels, quality ratings, city rankings, and station-level details.269 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables querying real-time air quality index (AQI) data for Chinese cities, including PM2.5, PM10, and other pollutant information with health recommendations from the World Air Quality Index Project API.-
- AlicenseNot gradedqualityBmaintenanceEnables querying current weather, multi-day forecasts, and air quality (PM2.5, PM10, AQI) for Chinese cities, with fuzzy Chinese city-name resolution and a combined all-in-one lookup. Requires no API key or registration.MIT
- AlicenseAqualityCmaintenanceProvides real-time air quality data (US AQI, PM2.5, PM10, ozone, NO2, SO2, CO) for any city via natural language, using free Open-Meteo data and a single tool.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.