API access
Your AI client reaches EPA Drinking Water (SDWIS) through one ParcelOps MCP endpoint, so there is no separate key to hold for it and no per-source client to write. Reaching it takes no credentials of your own.
Where it came from
Freshness and coverage
What this source cannot tell you
- ⚠ Anything outside All fifty states, the District of Columbia, United States territories, and tribal lands, keyed by EPA public water system id (PWSID), Service areas at county grain in every state, plus city grain and ZIP grain only in the states that report them, and No geometry of any kind: no coordinates, no service area polygons, no boundaries. A request past that edge comes back empty rather than approximated.
- ⚠ EPA describes SDWIS as showing the last ten years of violations, but the table returns older rows too, and how completely a state reported in any given year is not published. Treat the absence of an old violation as weak evidence.
- ⚠ Anything EPA Safe Drinking Water Information System (SDWIS) via Envirofacts does not publish. ParcelOps returns this source as it stands and never fills a blank field from a different one.
- ⚠ SDWIS ties a water system to the counties, cities, and ZIPs it reports serving, which is a coarse service area and not a boundary. The system that actually serves a specific parcel or address has to be confirmed with the utility or the state primacy agency before it is relied on.
- ⚠ Violations are system level and historical, not tap-level water quality. A clean record means the system met its monitoring and limit obligations at its compliance points. It says nothing about the pipe entering one building, about lead service lines on private property, or about a private well.
- ⚠ SDWIS publishes no geometry. There is no latitude, longitude, polygon, or boundary on any table this connector reads, so no method here can answer a point, radius, or point in polygon question.
- ⚠ This connector overlaps the envirofacts connector only in the host it calls. envirofacts covers EPA TRI toxic release facilities, PCS/NPDES discharge permits, and the FRS facility registry, and cannot reach any SDWIS table. epa-echo carries a single rolled-up SDWA compliance flag per regulated facility, keyed by FRS registry id, with no itemized violations and no way to go from a place to a water system. This is the only ParcelOps source for drinking water system identification and violation history.
- ⚠ Geography is matched only against the areas a system reports serving. The operator mailing address on the system record is never used as a location filter: for Austin, Texas that filter returns 819 active systems of which only 83 report serving the county, and it misses 58 that do.
- ⚠ City and ZIP anchoring is decided state by state. Texas reports service areas at county grain only, with zero city rows and zero ZIP rows, so a Texas city or ZIP search returns an honest empty result and a county search is the query that works.
- ⚠ Most drinking water violations are monitoring and reporting failures rather than contamination findings. Read isHealthBased before treating a count as a health signal.
- ⚠ A state filter matches the primacy agency, which carries the two-letter state code for state-primacy systems and an EPA region number for tribally regulated ones, so a system on tribal land inside a state can be missed by that state filter.
- ⚠ A PWSID is not a CCN. The tx-puct connector answers who is obligated to serve a point in Texas from real certificated service area polygons, and its certificate numbers do not join to these identifiers. Never match the two by name.
- ⚠ Lead and Copper Rule sample results, treatment inventories, and lead service line inventories are not read by this connector. Their absence here is not evidence about lead.
Methods (5)
A method is one call your agent can make against this source.
findWaterSystems
readPublic water systems reporting service to a county, city, or ZIP.
Records returnedpublic_water_systemHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "county": { "type": "string", "minLength": 2, "maxLength": 60, "description": "County name without the word County, such as Travis. The reliable anchor: every state reports service areas at county grain." }, "city": { "type": "string", "minLength": 2, "maxLength": 60, "description": "Served city name. Recorded by some states only, and by Texas not at all." }, "zipCode": { "type": "string", "pattern": "^\\d{5}$", "description": "Served five-digit ZIP. Recorded on a small minority of rows nationwide and by Texas not at all." }, "state": { "type": "string", "pattern": "^[A-Za-z]{2}$", "description": "Two-letter state or territory code such as TX. Narrows a county name that several states share. Matched against the primacy agency, which is an EPA region number on tribal systems, so leave it off when tribal systems matter." }, "systemType": { "type": "string", "enum": [ "CWS", "NTNCWS", "TNCWS" ], "description": "CWS is a community system serving year-round residents, NTNCWS a non-transient non-community system such as a school or factory, TNCWS a transient one such as a campground. Use CWS for residential due diligence." }, "includeInactive": { "type": "boolean", "description": "Include systems EPA marks inactive or merged. Defaults to false." }, "limit": { "type": "integer", "minimum": 1, "maximum": 200, "description": "Rows to return. Defaults to 25." }, "offset": { "type": "integer", "minimum": 0, "maximum": 10000, "description": "Rows to skip. Defaults to 0." } }, "required": [], "additionalProperties": false }- ⚠ A county routinely holds a municipal retail system, wholesale systems, and small non-community systems on their own wells, all reporting the same county. This is a candidate list, not a determination.
- ⚠ An empty city or ZIP result usually means that state reports service areas at county grain only, not that the area has no water service. Retry by county.
Pass county, city, or ZIP. County is the anchor that works in every state.
getSystemDetail
readOne water system: size, water source, ownership, contact, and every area it reports serving.
What you must providepwsidRecords returnedpublic_water_system, service_areaHow to get more resultsnoneUnitspopulationServed: people · serviceConnections: connectionsFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "pwsid": { "type": "string", "pattern": "^[A-Za-z0-9]{7,12}$", "description": "EPA public water system id, usually nine characters such as TX0010001. Some tribal and federal systems are all digits, such as 061620001. Find one with findWaterSystems." } }, "required": [ "pwsid" ], "additionalProperties": false }- ⚠ administrativeContact is the mailing address EPA holds for the system operator, not the area the system serves.
- ⚠ serviceAreas describes the character of the area served, for example residential or wholesale. It is a classification with no extent and no geometry.
The published phone and address are how a caller confirms who serves a parcel.
getSystemViolations
readDrinking water violation history for one system, health-based findings kept apart from paperwork.
What you must providepwsidRecords returneddrinking_water_violationHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "pwsid": { "type": "string", "pattern": "^[A-Za-z0-9]{7,12}$", "description": "EPA public water system id, usually nine characters such as TX0010001. Some tribal and federal systems are all digits, such as 061620001. Find one with findWaterSystems." }, "healthBasedOnly": { "type": "boolean", "description": "Return only violations EPA flags as health based, such as an exceeded limit or a failed treatment technique. Defaults to false." }, "unresolvedOnly": { "type": "boolean", "description": "Return only violations not marked returned to compliance. Applied after EPA answers, so it disables the total and paging. Defaults to false." }, "sinceDate": { "type": "string", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "description": "Only violations whose compliance period began after this full ISO date, such as 2020-01-01. EPA rejects a bare year on this column." }, "limit": { "type": "integer", "minimum": 1, "maximum": 200, "description": "Rows to return. Defaults to 25." }, "offset": { "type": "integer", "minimum": 0, "maximum": 10000, "description": "Rows to skip. Defaults to 0." } }, "required": [ "pwsid" ], "additionalProperties": false }- ⚠ A monitoring and reporting violation is a failure to sample or report on schedule, not a finding that the water was contaminated. On one probed system all 34 violations were monitoring and reporting and none were health based.
- ⚠ rollup covers only the returned page unless it says otherwise. Check rollup.scope before quoting it as a system total.
Read isHealthBased before quoting a count. Most violations are paperwork.
getEnforcementActions
readFormal actions a state or EPA took against one drinking water system.
What you must providepwsidRecords returneddrinking_water_enforcement_actionHow to get more resultsoffset (offsetField: offset, limitField: limit)FreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": { "pwsid": { "type": "string", "pattern": "^[A-Za-z0-9]{7,12}$", "description": "EPA public water system id, usually nine characters such as TX0010001. Some tribal and federal systems are all digits, such as 061620001. Find one with findWaterSystems." }, "limit": { "type": "integer", "minimum": 1, "maximum": 200, "description": "Rows to return. Defaults to 25." }, "offset": { "type": "integer", "minimum": 0, "maximum": 10000, "description": "Rows to skip. Defaults to 0." } }, "required": [ "pwsid" ], "additionalProperties": false }- ⚠ An enforcement action is a step a primacy agency took against the system, and most are administrative. It is not a finding about any parcel or address.
- ⚠ A system can have violations with no enforcement action against it, so a zero here is not a clean compliance record.
SDWIS carries no penalty amount, so a missing dollar figure is not a zero.
getServiceInfo
readTables read, coverage measured on the probe date, and what SDWIS cannot answer.
Records returneddata_sourceHow to get more resultsnoneFreshnessScheduled (source-level)Input schema
{ "type": "object", "properties": {}, "required": [], "additionalProperties": false }States the missing geometry and the Texas county-only reality explicitly.
Where this source is used
- Land research
Parcel records, ground conditions, and what reaches the property line, for raw and rural land.
- Data center siting
Power, water, transport, airspace, and hazard screening for a site before anyone signs anything.
- Commercial real estate
Parcel and assessment records, building programs, and the entity on the other side of the deal.
- Residential real estate
The parcel record, the housing programs that touch an address, and the conditions a buyer asks about.
- Real estate law
Federal rule text, rulemaking dockets, party records, and the property facts a filing has to state.
- Realtors and brokerages
The facts behind a listing, the programs a buyer may qualify for, and your own files in the same place.
- What water system serves this address, and has it been in violation?
