io.github.squidcode/tapwatermap
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Query US tap-water quality from the EPA's SDWIS records — by city, system, or contaminant.
| Author | io.github.squidcode |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 115 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"tapwatermap": {
"url": "https://mcp.tapwatermap.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (10)
searchread-onlySearch TapWaterMap for US cities by name. Returns matching cities with an id you can pass to `fetch`. (ChatGPT/Deep-Research compatible.)
Parameters:
query(required) — string — City name or partial name, e.g. 'Burlington'.
Hints: read-only yes · destructive no · idempotent yes · open-world no
fetchread-onlyFetch the full plain-English EPA tap-water record for a city id (e.g. 'vt/burlington') returned by `search`. (ChatGPT/Deep-Research compatible.)
Parameters:
id(required) — string — City id like 'vt/burlington' (state/slug).
Hints: read-only yes · destructive no · idempotent yes · open-world no
search_citiesread-onlyFind covered US cities by name, optionally within a state. Returns counts + the page URL for each.
Parameters:
query(required) — stringlimit— integerstate— string — Optional 2-letter state code, e.g. 'TX'.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_city_waterread-onlyThe core tool: what the EPA has on record for a city's tap water — the active community water systems serving it, populations, sources, and violations (contaminant, health-based or not, dates, status, level vs limit when recorded). Plain-English, sourced, never a safety verdict.
Parameters:
city(required) — stringstate(required) — string — 2-letter state code, e.g. 'VT'.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_water_systemread-onlyEPA record for a single water system by its PWSID (e.g. 'VT0005053'): name, population served, source, and violations.
Parameters:
pwsid(required) — string
Hints: read-only yes · destructive no · idempotent yes · open-world no
list_state_citiesread-onlyList all covered cities in a state (with violation counts).
Parameters:
state(required) — string — 2-letter state code.
Hints: read-only yes · destructive no · idempotent yes · open-world no
find_citiesread-onlyFilter/rank cities across the dataset — e.g. cities in TX with open health-based violations, or cities with a specific contaminant. Returns ranked matches.
Parameters:
limit— integerstate— string — Optional 2-letter state code.contaminant— string — Optional EPA contaminant code or name (use explain_contaminant to find a code).minPopulation— integerhealthBasedOnly— booleanopenViolationsOnly— boolean — Only cities with violations not returned to compliance.
Hints: read-only yes · destructive no · idempotent yes · open-world no
compare_citiesread-onlyCompare the EPA records of several cities side by side. Pass cities as 'City, ST' strings.
Parameters:
cities(required) — array — e.g. ['Burlington, VT', 'Houston, TX']
Hints: read-only yes · destructive no · idempotent yes · open-world no
explain_contaminantread-onlyPlain-English explanation of an EPA contaminant by name or code: the EPA name, whether the EPA classifies it as health-based, and how often it appears in our records. Not medical advice.
Parameters:
contaminant(required) — string — Contaminant name or EPA code, e.g. 'TTHM' or '2950'.
Hints: read-only yes · destructive no · idempotent yes · open-world no
coverage_statsread-onlyWhat TapWaterMap covers: states, cities, total EPA violation records, and the data quarter/date.
Hints: read-only yes · destructive no · idempotent yes · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.