EPA — U.S. Environmental Protection Agency · Capability
U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe Drinking Water Act — Safe Drinking Water
Safe Drinking Water. 6 operations. Lead operation: Safe Drinking Water Act (SDWA) Download Data Service. Self-contained Naftiko capability covering one EPA business surface.
What You Can Do
GET
Getsdwrestservicesgetdownload
— Safe Drinking Water Act (SDWA) Download Data Service
/v1/sdw_rest_services.get_download
POST
Postsdwrestservicesgetdownload
— Safe Drinking Water Act (SDWA) Download Data Service
/v1/sdw_rest_services.get_download
GET
Getsdwrestservicesgetqid
— Safe Drinking Water Act (SDWA) Paginated Results Service
/v1/sdw_rest_services.get_qid
POST
Postsdwrestservicesgetqid
— Safe Drinking Water Act (SDWA) Paginated Results Service
/v1/sdw_rest_services.get_qid
GET
Getsdwrestservicesgetsystems
— Safe Drinking Water Act (SDWA) Systems Search Service
/v1/sdw_rest_services.get_systems
POST
Postsdwrestservicesgetsystems
— Safe Drinking Water Act (SDWA) Systems Search Service
/v1/sdw_rest_services.get_systems
MCP Tools
safe-drinking-water-act-sdwa-download-data-service
Safe Drinking Water Act (SDWA) Download Data Service
read-only
idempotent
safe-drinking-water-act-sdwa-download-data-service-2
Safe Drinking Water Act (SDWA) Download Data Service
safe-drinking-water-act-sdwa-paginated-results-service
Safe Drinking Water Act (SDWA) Paginated Results Service
read-only
idempotent
safe-drinking-water-act-sdwa-paginated-results-service-2
Safe Drinking Water Act (SDWA) Paginated Results Service
safe-drinking-water-act-sdwa-systems-search-service
Safe Drinking Water Act (SDWA) Systems Search Service
read-only
idempotent
safe-drinking-water-act-sdwa-systems-search-service-2
Safe Drinking Water Act (SDWA) Systems Search Service
read-only
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe Drinking Water Act — Safe Drinking Water
description: 'Safe Drinking Water. 6 operations. Lead operation: Safe Drinking Water Act (SDWA) Download Data Service. Self-contained Naftiko capability covering one EPA business surface.'
tags:
- EPA
- Safe Drinking Water
created: '2026-05-29'
modified: '2026-05-29'
binds:
- namespace: env
keys: {}
capability:
consumes:
- type: http
namespace: echo-sdw-safe-drinking-water
baseUri: https://echodata.epa.gov/echo
description: U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe Drinking Water Act — Safe Drinking Water business capability. Self-contained, no shared references.
resources:
- name: sdw-rest-services-get-download
path: /sdw_rest_services.get_download
operations:
- name: getsdwrestservicesgetdownload
method: GET
description: Safe Drinking Water Act (SDWA) Download Data Service
inputParameters:
- name: output
in: query
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- CSV = Facility results formatted as comma delimited file download (default)."
- name: qid
in: query
type: string
required: true
description: Query ID Selector. Enter the QueryID number from a previously run query.
- name: qcolumns
in: query
type: string
required: false
description: Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object or download. Use the metadata service endpoint for a comple
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: sdw-rest-services-get-download
path: /sdw_rest_services.get_download
operations:
- name: postsdwrestservicesgetdownload
method: POST
description: Safe Drinking Water Act (SDWA) Download Data Service
inputParameters:
- name: output
in: formData
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- CSV = Facility results formatted as comma delimited file download (default)."
- name: qid
in: formData
type: string
required: true
description: Query ID Selector. Enter the QueryID number from a previously run query.
- name: qcolumns
in: formData
type: string
required: false
description: Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object or download. Use the metadata service endpoint for a comple
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: sdw-rest-services-get-qid
path: /sdw_rest_services.get_qid
operations:
- name: getsdwrestservicesgetqid
method: GET
description: Safe Drinking Water Act (SDWA) Paginated Results Service
inputParameters:
- name: output
in: query
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- JSON = Data model formatted as Javascript Object Notation (default).\n- JSONP = Data model formatted as Javascript Object Notation with Paddi"
- name: qid
in: query
type: string
required: true
description: Query ID Selector. Enter the QueryID number from a previously run query.
- name: pageno
in: query
type: number
required: false
description: Indicates the number of the page to display. It is used only when the results are paginated.
- name: callback
in: query
type: string
required: false
description: JSONP Callback. For use with JSONP and GEOJSONP output only. Enter a name of the function in which to wrap the JSON response.
- name: newsort
in: query
type: number
required: false
description: Output Sort Column. Enter the number of the column on which the data will be sorted. If unpopulated results will sort on the first column.
- name: descending
in: query
type: string
required: false
description: Output Sort Column Descending Flag. Enter Y to column identified in the newsort parameter descending. Enter N to use ascending sort order. Used only when newsort parameter is populated.
- name: qcolumns
in: query
type: string
required: false
description: Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object or download. Use the metadata service endpoint for a comple
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: sdw-rest-services-get-qid
path: /sdw_rest_services.get_qid
operations:
- name: postsdwrestservicesgetqid
method: POST
description: Safe Drinking Water Act (SDWA) Paginated Results Service
inputParameters:
- name: output
in: formData
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- JSON = Data model formatted as Javascript Object Notation (default).\n- JSONP = Data model formatted as Javascript Object Notation with Paddi"
- name: qid
in: formData
type: string
required: true
description: Query ID Selector. Enter the QueryID number from a previously run query.
- name: pageno
in: formData
type: number
required: false
description: Indicates the number of the page to display. It is used only when the results are paginated.
- name: callback
in: formData
type: string
required: false
description: JSONP Callback. For use with JSONP and GEOJSONP output only. Enter a name of the function in which to wrap the JSON response.
- name: newsort
in: formData
type: number
required: false
description: Output Sort Column. Enter the number of the column on which the data will be sorted. If unpopulated results will sort on the first column.
- name: descending
in: formData
type: string
required: false
description: Output Sort Column Descending Flag. Enter Y to column identified in the newsort parameter descending. Enter N to use ascending sort order. Used only when newsort parameter is populated.
- name: qcolumns
in: formData
type: string
required: false
description: Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object or download. Use the metadata service endpoint for a comple
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: sdw-rest-services-get-systems
path: /sdw_rest_services.get_systems
operations:
- name: getsdwrestservicesgetsystems
method: GET
description: Safe Drinking Water Act (SDWA) Systems Search Service
inputParameters:
- name: output
in: query
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- JSON = Data model formatted as Javascript Object Notation (default).\n- JSONP = Data model formatted as Javascript Object Notation with Paddi"
- name: p_fn
in: query
type: string
required: false
description: Facility Name Filter. Enter one or more case-insensitive facility names to filter results. Provide multiple values as a comma-delimited list. See p_fntype for additional modifiers.
- name: p_ct
in: query
type: string
required: false
description: Facility City Filter. Enter a single case-insensitive city name to filter results.
- name: p_co
in: query
type: string
required: false
description: Facility County Filter. Provide a single county name in combination with a state value provided via p_st.
- name: p_fips
in: query
type: string
required: false
description: FIPS Code Filter. Enter a single 5-character Federal Information Processing Standards (FIPS) state + county value to restrict results. E.g. to limit results to Kenosha County, Wisconsin, use 55059.
- name: p_st
in: query
type: string
required: false
description: Facility State and State-Equivalent Filter. Provide one or more USPS postal abbreviations for states and state-equivalents to filter results. Provide multiple values as a comma-delimited list.
- name: p_zip
in: query
type: string
required: false
description: 5-Digit ZIP Code Filter. Provide one or more 5-digit postal zip codes to filter results. May contain multiple comma-separated values.
- name: p_reg
in: query
type: string
required: false
description: EPA Region Filter. Provide a single value of 01 thru 10 to restrict results to a single EPA region.
- name: p_trb
in: query
type: string
required: false
description: Tribe name
- name: p_act
in: query
type: string
required: false
description: Active Permits/Facilities Flag. Provide Y or N to filter results to facilities with active permits.
- name: p_qiv
in: query
type: string
required: false
description: "Quarters in Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of noncompliance.\n- Z = Zero quarters in noncompliance.\n- GEXX = Replacing XX with a numeric v"
- name: p_ico
in: query
type: string
required: false
description: Indian Country Flag. Enter a "Y" or "N" to restrict searches to facilities inside or outside Indian Country.
- name: p_pid
in: query
type: string
required: false
description: Nine-digit permit IDs. May contain up to 2000 comma-separated values.
- name: p_owop
in: query
type: string
required: false
description: "Owner/Operator code filter. Enter one of the following codes to filter results:\n- F = Federal Government\n- S = State Government\n- L = Local Government\n- M = Public/Private\n- N = Native American\n- P ="
- name: p_systyp
in: query
type: string
required: false
description: "Type of public water system:\n- CWS=Community water system\n- NCWS=Non-community water system\n- NTCWS=Non-transient non-community water system\n- TNCWS=Transient non-community water system"
- name: p_swtyp
in: query
type: string
required: false
description: "Source Water Type:\n- SW = Surface water \n- GW= Ground water\n- GU = Ground water under direct influence of (UDI) surface water\n- SWP = Purchased Surface water\n- GWP = Purchased Ground water\n- GUP = Pur"
- name: p_popsv
in: query
type: string
required: false
description: "Estimated average daily population served by a system:\n- LE500 = 500 or less\n- IN501_3K = 501-3,300\n- IN3K_10K = 3,301-10,000\n- IN10K_100K = 10,001-100,000\n- IN100K_1M = 100,001-1,000,000\n- GT1M = Mor"
- name: p_cntysv
in: query
type: string
required: false
description: p_cntysv
- name: p_cs
in: query
type: string
required: false
description: "Current violations:\n- M = Monitoring and Reporting Violations\n- H = Health-based Violations\n- O = Other Violations\n- P = Public Notice Violations\n- S = Serious Violator\n- N = No Violations\nMay contain"
- name: p_mr
in: query
type: string
required: false
description: Monitoring and Reporting Violations (failure to conduct regular monitoring of drinking water quality or submit monitoring results in a timely fashion).
- name: p_health
in: query
type: string
required: false
description: Violations of health-based drinking water standards (maximum contaminant levels, maximum residual disinfectant levels, or treatment technique rules).
- name: p_other
in: query
type: string
required: false
description: Other violations, such as failing to issue annual consumer confidence reports or maintain required records.
- name: p_pn
in: query
type: string
required: false
description: Public Notice Violations (failure to immediately alert consumers of serious problem with drinking water).
- name: p_sv
in: query
type: string
required: false
description: Serious Violator (unresolved serious, multiple, and/or continuing violations). A value of Y will return only SDWIS systems that are Serious Violators, while a value of N will only return SDWIS Systems
- name: p_qs
in: query
type: string
required: false
description: Quick Search. Allows entry for city, state, and/or zip code.
- name: p_sfs
in: query
type: string
required: false
description: Single Facility Search Filter. Provide a facility name or program system identifier to limit results. For the all data search, the FRS registry identifier is also searched.
- name: p_pswpol
in: query
type: string
required: false
description: For CWA, pollutant names for surface water discharges. for Drinking Water, SDWIS Violation contaminant codes for unaddressed violations that have occurred in the last 3 years. May contain multiple com
- name: p_pswvio
in: query
type: string
required: false
description: Used in conjuction with parameters p_pswpol and p_pswparam, indicates whether search should only include pollutants with violations.
- name: p_pbale
in: query
type: string
required: false
description: Lead Action Level Exceedance. A "Y" value will select water systems with at least 1 Lead Action Level Exceedance.
- name: p_cuale
in: query
type: string
required: false
description: Copper Action Level Exceedance. A "Y" value will select water systems with at least 1 Copper Action Level Exceedance.
- name: p_rc350v
in: query
type: string
required: false
description: Rule code 350 violation. A "Y" value will select water systems with at least one rule code 350 violation.
- name: p_pbv
in: query
type: string
required: false
description: Lead Violations. A "Y" value will select water systems with at least 1 Lead Violation.
- name: p_cuv
in: query
type: string
required: false
description: Copper Violation. A "Y" value will select water systems with at least 1 Copper Violation.
- name: p_lcrv
in: query
type: string
required: false
description: Lead or Copper rule violations. A "Y" value will select water systems with at least 1 Lead or Copper Rule Violation.
- name: p_fea
in: query
type: string
required: false
description: "Formal Enforcement Actions [within / not within] specified date range indicator. The date range is determined by parameters p_fead1 and p_fead2 or by parameter p_feay.\n- W = within date range\n- N = no"
- name: p_feay
in: query
type: number
required: false
description: Years (1 to 5) Range. This value is used to create a date range for Formal Enforcement Actions (FEA). Used along with p_fea (which indicates whether to look within or outside of the date range) to fi
- name: p_feaa
in: query
type: string
required: false
description: "Agency associated with Formal Enforcement Actions:\n- E = EPA\n- S = State\n- A = All"
- name: p_iea
in: query
type: string
required: false
description: "Informal Enforcement Actions [within / not within] specified date range. The date range is determined by parameters p_iead1 and p_iead2 or by parameter p_ieay.\n- W = within date range\n- N = not withi"
- name: p_ieay
in: query
type: number
required: false
description: 'Years (1 to 5) Range. This value is used to create a date range for Informal Enforcement Actions (IEA). Used along with p_iea (which indicates whether to look within or outside of the date range) to '
- name: p_ieaa
in: query
type: string
required: false
description: "Agency associated with Informal Enforcement Actions. If left blank, both agencies are included.\n- E = EPA\n- S = State"
- name: p_qis
in: query
type: string
required: false
description: "Significant Quarters in Noncompliance Limiter. Enter one of the following codes to limit results to facilities having given quarters of noncompliance.\n- Z = Zero quarters in noncompliance.\n- GE1 = On"
- name: p_pfead1
in: query
type: string
required: false
description: Formal Enforcement Action Date Range Start. Enter a date in MM/DD/YYYY format to set the start of the range for filtering by recent Formal Enforcement Action (FEA) taken against the facility within t
- name: p_pfead2
in: query
type: string
required: false
description: 'Formal Enforcement Action Date Range End. Enter a date in MM/DD/YYYY format to set the end of the date range for filtering by recent Formal Enforcement Action (FEA) taken against the facility within '
- name: p_pfeat
in: query
type: string
required: false
description: 'Formal Enforcement Action (FEA) Code Filter. Enter one or more three-letter FEA codes to restrict results to facilities with these attributes. Use p_fead1 and p_fead2 parameters to further restrict '
- name: p_ss5yr
in: query
type: string
required: false
description: "Sanitary Surveys (in past 5 years) flag. Values of visit_reason_code are either \"SNSV\" or \"SNSP\" in the past 5 years indicate a Sanitary Survey. \n\nEnter \"Y\" to select facilities with Sanitary Survey"
- name: p_sdc
in: query
type: string
required: false
description: "Significant Deficiency Count (in past 5 years) flag. \n\nEnter \"Y\" to select facilities with Sanitary Surveys within the past 5 years. \n\nEnter \"N\" to select facilities without Sanitary Surveys in the "
- name: p_sdc_ils
in: query
type: string
required: false
description: p_sdc_ils
- name: p_ysl
in: query
type: string
required: false
description: "Last Facility Inspection [within / not within] Specified Date Range Indicator. The date range is determined by parameters p_idt1 and p_idt2 or by parameter p_ysly.\n- W = within date range\n- N = not wi"
- name: p_ysly
in: query
type: string
required: false
description: Number of years (1 to 5) since last facility inspection. A value of 1 means that it has been inspected within the year.
- name: p_ysla
in: query
type: string
required: false
description: "Facility Last Inspection Code Filter. If left blank, both agencies are included. Enter a value to limit results:\n- E = EPA\n- S = State"
- name: p_idt1
in: query
type: string
required: false
description: Beginning of date range of most recent facility inspection.
- name: p_idt2
in: query
type: string
required: false
description: End of date range of most recent facility inspection.
- name: p_cms_flag
in: query
type: string
required: false
description: p_cms_flag
- name: queryset
in: query
type: number
required: false
description: Query Limiter. Enter a value to limit the number of records returned for each query. Value cannot exceed 70,000.
- name: responseset
in: query
type: number
required: false
description: Response Set Limiter. Enter a value to limit the number of records per page. Value cannot exceed 1,000.
- name: callback
in: query
type: string
required: false
description: JSONP Callback. For use with JSONP and GEOJSONP output only. Enter a name of the function in which to wrap the JSON response.
- name: qcolumns
in: query
type: string
required: false
description: Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object or download. Use the metadata service endpoint for a comple
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: sdw-rest-services-get-systems
path: /sdw_rest_services.get_systems
operations:
- name: postsdwrestservicesgetsystems
method: POST
description: Safe Drinking Water Act (SDWA) Systems Search Service
inputParameters:
- name: output
in: formData
type: string
required: false
description: "Output Format Flag. Enter one of the following keywords:\n- JSON = Data model formatted as Javascript Object Notation (default).\n- JSONP = Data model formatted as Javascript Object Notation with Paddi"
- name: p_fn
in: formData
type: string
required: false
description: Facility Name Filter. Enter one or more case-insensitive facility names to filter results. Provide multiple values as a comma-delimited list. See p_fntype for additional modifiers.
- name: p_ct
in: formData
type: string
required: false
description: Facility City Filter. Enter a single case-insensitive city name to filter results.
- name: p_co
in: formData
type: string
required: false
description: Facility County Filter. Provide a single county name in combination with a state value provided via p_st.
- name: p_fips
in: formData
type: string
required: false
description: FIPS Code Filter. Enter a single 5-character Federal Information Processing Standards (FIPS) state + county value to restrict results. E.g. to limit results to Kenosha County, Wisconsin, use 55059.
- name: p_st
in: formData
type: string
required: false
description: Facility State and State-Equivalent Filter. Provide one or more USPS postal abbreviations for states and state-equivalents to filter results. Provide multiple values as a comma-delimited list.
- name: p_zip
in: formData
type: string
required: false
description: 5-Digit ZIP Code Filter. Provide one or more 5-digit postal zip codes to filter results. May contain multiple comma-separated values.
- name: p_reg
in: formData
type: string
required: false
description: EPA Region Filter. Provide a single value of 01 thru 10 to restrict results to a single EPA region.
- name: p_trb
in: formData
type: string
required: false
description: Tribe name
- name: p_act
in: formData
type: string
required: false
description: Active Permits/Facilities Flag. Provide Y or N to filter results to facilities with active permits.
- name: p_qiv
in: formData
type: string
required: false
description: "Quarters in Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of noncompliance.\n- Z = Zero quarters in noncompliance.\n- GEXX = Replacing XX with a numeric v"
- name: p_ico
in: formData
type: string
required: false
description: Indian Country Flag. Enter a "Y" or "N" to restrict searches to facilities inside or outside Indian Country.
- name: p_pid
in: formData
type: string
required: false
description: Nine-digit permit IDs. May contain up to 2000 comma-separated values.
- name: p_owop
in: formData
type: string
required: false
description: "Owner/Operator code filter. Enter one of the following codes to filter results:\n- F = Federal Government\n- S = State Government\n- L = Local Government\n- M = Public/Private\n- N = Native American\n- P ="
- name: p_systyp
in: formData
type: string
required: false
description: "Type of public water system:\n- CWS=Community water system\n- NCWS=Non-community water system\n- NTCWS=Non-transient non-community water system\n- TNCWS=Transient non-community water system"
- name: p_swtyp
in: formData
type: string
required: false
description: "Source Water Type:\n- SW = Surface water \n- GW= Ground water\n- GU = Ground water under direct influence of (UDI) surface water\n- SWP = Purchased Surface water\n- GWP = Purchased Ground water\n- GUP = Pur"
- name: p_popsv
in: formData
type: string
required: false
description: "Estimated average daily population served by a system:\n- LE500 = 500 or less\n- IN501_3K = 501-3,300\n- IN3K_10K = 3,301-10,000\n- IN10K_100K = 10,001-100,000\n- IN100K_1M = 100,001-1,000,000\n- GT1M = Mor"
- name: p_cntysv
in: formData
type: string
required: false
description: p_cntysv
- name: p_cs
in: formData
type: string
required: false
description: "Current violations:\n- M = Monitoring and Reporting Violations\n- H = Health-based Violations\n- O = Other Violations\n- P = Public Notice Violations\n- S = Serious Violator\n- N = No Violations\nMay contain"
- name: p_mr
in: formData
type: string
required: false
description: Monitoring and Reporting Violations (failure to conduct regular monitoring of drinking water quality or submit monitoring results in a timely fashion).
- name: p_health
in: formData
type: string
required: false
description: Violations of health-based drinking water standards (maximum contaminant levels, maximum residual disinfectant levels, or treatment technique rules).
- name: p_other
in: formData
# --- truncated at 32 KB (58 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/epa/refs/heads/main/capabilities/echo-sdw-safe-drinking-water.yaml