EPA Air Quality & Toxics
Server Details
Toxics Release Inventory, Superfund sites, air quality data, and AQI
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.5/5 across 5 of 5 tools scored.
The two air quality tools (current and forecast) are clearly separated by time frame, and the historical summary is distinct. The two toxics tools (Superfund and TRI) are both state-based hazard listings but differ in content (cleanup sites vs. reporting facilities). Minor potential confusion between Superfund and TRI, but descriptions clarify.
All tools use the consistent 'get_' prefix followed by descriptive noun phrases in snake_case. The pattern is uniform across the set.
Five tools cover the server's stated scope of air quality and toxics without redundancy. Each tool addresses a distinct data need, and the count is within the ideal 3-15 range.
The air quality surface covers current, forecast, and annual historical data. The toxics surface covers site and facility listings. Missing are detailed facility-level emissions or site-specific cleanup data, but core queries are supported.
Available Tools
5 toolsget_annual_air_qualityAInspect
Get annual air quality summary data for a US state.
Returns annual statistics from the EPA Air Quality System (AQS),
including mean concentrations, max values, and exceedance counts
for the specified pollutant across all monitoring sites in the state.
Args:
state: Two-letter US state abbreviation (e.g. 'CA', 'NY').
parameter: Pollutant to query. Options: 'PM2.5', 'Ozone', 'SO2', 'NO2', 'CO'.
Default is 'PM2.5'.
start_year: Start year for the query range (e.g. 2020). Default is 2020.
end_year: End year for the query range (e.g. 2023). Default is 2023.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | ||
| end_year | No | ||
| parameter | No | PM2.5 | |
| start_year | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It specifies the data source (EPA AQS), the aggregation across all monitoring sites, and the types of statistics returned (mean concentrations, max values, exceedance counts). It does not mention edge cases or rate limits, but for a read-only query tool, this is adequate.
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?
The description is well-structured with a clear overview, followed by a concise Args list that adds valuable parameter details. It is front-loaded and avoids unnecessary fluff, though the Args block is somewhat redundant with the schema.
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?
The tool has an output schema, so return format is already specified. The description covers the data source, aggregation level, and parameter options, making it complete enough for an agent to decide when and how to invoke the tool. It does not explicitly address error handling, but that is not critical for this use case.
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?
The description's Args section provides detailed semantics for all four parameters, including allowed values for 'parameter' (PM2.5, Ozone, etc.) and explicit defaults for years. This compensates for the 0% schema description coverage, adding value beyond the raw input 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?
The description clearly states the tool 'Get annual air quality summary data for a US state' with a specific verb and resource. It distinguishes itself from sibling tools by focusing on historical annual summaries (EPA AQS) rather than current AQI or forecasts, making its purpose unambiguous.
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 implies usage for historical annual air quality data, differentiating it from current AQI and forecast tools. While no explicit exclusions or alternative tool names are mentioned, the context provides clear guidance for when to use this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_aqi_forecastAInspect
Get the air quality forecast for a ZIP code.
Returns forecast AQI values and health categories for upcoming days,
typically covering today and the next 1-2 days.
Args:
zip_code: US ZIP code (e.g. '20001').
| Name | Required | Description | Default |
|---|---|---|---|
| zip_code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It discloses the return content (forecast AQI values and health categories) and a behavioral caveat ('typically covering today and the next 1-2 days'), which is useful context for a read-only retrieval tool.
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?
The description is brief and front-loaded, with the core purpose stated first, followed by a concise return summary and a clear Args section. Every sentence adds value, with no redundancy or filler.
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?
This is a simple one-parameter tool with an output schema present, so the description need not explain return structures. It covers the parameter format, the nature of the forecast, and the typical horizon, making it complete for the tool's complexity.
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?
The schema only defines zip_code as a string with no description. The tool description adds essential meaning by specifying it is a US ZIP code and providing a concrete example ('20001'), fully compensating for the 0% schema coverage.
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 uses a specific verb ('Get') and resource ('air quality forecast') and identifies the ZIP code input, clearly distinguishing it from sibling tools like get_current_aqi, which covers current conditions. The forecast horizon ('upcoming days') further differentiates its purpose.
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 implies this tool is for forecasting rather than current conditions, saying it returns values for upcoming days. It does not explicitly name alternatives or exclusions, but the context is sufficient for a user to select it when they need a forecast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_aqiAInspect
Get the current Air Quality Index (AQI) for a location.
Provide either a zip_code OR latitude/longitude coordinates.
Returns AQI values, pollutant levels, and health category for
each measured pollutant at the nearest monitoring station.
Args:
zip_code: US ZIP code (e.g. '20001').
latitude: Latitude of the location (e.g. 38.9).
longitude: Longitude of the location (e.g. -77.0).
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | No | ||
| zip_code | No | ||
| longitude | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool uses the 'nearest monitoring station' and returns pollutant-specific data, which is useful context beyond the simple 'Get' verb. It could be more explicit about being read-only, but the name and verb make that obvious.
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?
The description is concise and front-loaded with the core purpose. The Args section is cleanly structured and every sentence adds value. No unnecessary words or repetition.
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?
The description covers the essential aspects for a simple lookup tool: input constraints, algorithm (nearest station), and what is returned. The output schema exists, so detailed return structure is handled elsewhere. Minor gaps like error cases or exact output schema references are not critical for using the 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?
The schema has no parameter descriptions (0% coverage), but the `Args` section thoroughly explains each parameter with format examples (e.g., '20001', 38.9) and clarifies the mutual exclusivity of zip_code versus latitude/longitude. This fully compensates for the schema's lack of detail.
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 verb and resource: 'Get the current Air Quality Index (AQI) for a location.' The word 'current' clearly distinguishes this from siblings like get_aqi_forecast and get_annual_air_quality. It also specifies what is returned (AQI values, pollutant levels, health category).
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?
Provides clear guidance on parameter usage by stating 'Provide either a zip_code OR latitude/longitude coordinates,' which is important for correct invocation. However, it does not explicitly compare with alternative tools (e.g., forecast or annual), though the 'current' context implies when to use this versus siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_superfund_sitesAInspect
Get active Superfund (National Priorities List) sites in a state.
Returns hazardous waste cleanup sites listed on the EPA's National
Priorities List, including site names, locations, and status information.
No API key required.
Args:
state: Two-letter US state abbreviation (e.g. 'NJ', 'CA').
limit: Maximum number of sites to return (default 50, max 500).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| state | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that 'No API key required' (auth requirement), returns active sites only, and provides a max limit of 500 beyond the schema. It does not mention rate limits or error behavior, but the added context about API key and constraints is meaningful.
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?
The description is concise and well-structured: a one-line purpose, a brief return explanation, a note on API key, and a clear Args list. Every sentence adds value, and the front-loaded purpose makes it immediately scannable.
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?
Despite having an output schema, the description still clarifies the return contents (site names, locations, status). It covers the essential operational detail (no API key, parameter constraints) and is complete for a simple list-style tool with two parameters.
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 description coverage is 0%, so the description must compensate. The Args section adds clear meaning: state is a two-letter abbreviation, and limit is the maximum number of sites with default 50 and max 500. This fully explains both parameters beyond the raw 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?
The description starts with a clear, specific verb+resource+scope: 'Get active Superfund (National Priorities List) sites in a state.' It further explains that it returns hazardous waste cleanup sites with names, locations, and status. This clearly distinguishes it from siblings like air quality or TRI tools.
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 provides clear context for when to use the tool (when Superfund/NPL site data for a state is needed) but does not explicitly mention alternatives or exclusions. It implies usage through the specific scope, but does not name sibling tools or state 'use this instead of X'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tri_facilitiesAInspect
Get Toxics Release Inventory (TRI) facilities in a state.
Returns facilities that report toxic chemical releases to the EPA,
including facility names, addresses, and industry information.
No API key required.
Args:
state: Two-letter US state abbreviation (e.g. 'CA', 'TX').
city: Optional city name to filter results.
limit: Maximum number of facilities to return (default 50, max 500).
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| limit | No | ||
| state | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that no API key is required, lists the returned data, and documents the limit constraint (default 50, max 500). It does not explicitly state read-only behavior, but 'Get' and 'Returns' strongly imply it, and there is no contradiction.
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?
The description is concise and well-structured. The purpose is front-loaded, followed by a brief behavior summary and a clear Args list. Every sentence provides useful information without redundancy.
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?
The tool is simple, and the description covers the query scope, output fields, and API key requirement. Since an output schema exists, the return values are further defined, and the description leaves no critical gaps for a getter tool of this complexity.
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 description coverage is 0%, and the description fully compensates: it explains state format ('two-letter US state abbreviation' with examples), clarifies city is optional, and specifies limit is the maximum number to return (default 50, max 500). This adds meaning beyond the schema's defaults.
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 clearly states the tool retrieves TRI facilities in a state, naming specific fields returned (facility names, addresses, industry info). This action is distinct from sibling tools (air quality, superfund sites), so purpose is unambiguous.
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 implies this tool is for querying TRI facilities by state, with optional city and limit filters. It does not explicitly name alternatives or exclusions, but the context and sibling tool names make it obvious that this is the TRI facility lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAccess EPA environmental data — facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems, environmental justice screening (EJScreen), and real-time air quality (AirNow) via MCP.1401Apache 2.0
- FlicenseNot gradedqualityNot gradedmaintenanceProvides natural language access to environmental data including air quality measurements, greenhouse gas emissions, and facility records. It enables users to perform geographic searches, trend analysis, and proximity-based queries using data from sources like OpenAQ and Climate TRACE.
- AlicenseNot gradedqualityCmaintenanceWraps the EPA Envirofacts REST API to provide access to emissions data without authentication.9MIT
- AlicenseNot gradedqualityCmaintenanceWraps EPA ECHO Web Services (free, no auth) to enable querying environmental data via natural language.10MIT