Water Utility Risk Intelligence
About
Water utility risk intelligence for analysts, bond credit teams, and ESG investors who need structured, multi-dimensional assessments of municipal water systems. This MCP server orchestrates **9 government data sources** in parallel — OpenAQ, USGS, FEMA, NOAA, Data.
Details
- Author
- apifyforge
- Downloads
- 96
- Categories
- Other
Jump to
- Four independent scoring models for vulnerability, infrastructure, drought, and affordability
- Composite Water Risk Score (0–100) from a weighted average of four dimensions
- 18 tracked contaminant types including PFAS, lead, arsenic, and microplastics
- Parallel data fetching from nine government sources under 2 minutes
- 8 MCP tools for full assessments or focused queries
- Spending limit guard to prevent runaway charges
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Water Utility Risk IntelligenceCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the server URL to your MCP client configuration (e.g., Claude Desktop, Cursor, Windsurf). You must have an Apify account and API token. After configuring the client, ask your AI to assess a water system by name—e.g., “Assess the water utility risk for Flint, Michigan”—and results return in 60–120 seconds.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"water utility risk intelligence": {
"water-utility-risk-intelligence-mcp": {
"url": "https://ryanclinton--water-utility-risk-intelligence-mcp.apify.actor/mcp"
}
}
}
}
McpServers
{
"water-utility-risk-intelligence-mcp": {
"url": "https://ryanclinton--water-utility-risk-intelligence-mcp.apify.actor/mcp"
}
}
Water Utility Risk Intelligence MCP Server
> View on ApifyForge | Use on Apify Store
---
Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf):
{
"mcpServers": {
"water-utility-risk-intelligence-mcp": {
"url": "https://ryanclinton--water-utility-risk-intelligence-mcp.apify.actor/mcp"
}
}
}
---
Water utility risk intelligence for analysts, bond credit teams, and ESG investors who need structured, multi-dimensional assessments of municipal water systems. This MCP server orchestrates 9 government data sources in parallel — OpenAQ, USGS, FEMA, NOAA, Data.gov, Federal Register, CFPB, World Bank, and BLS — and applies 4 scoring models to produce a Composite Water Risk Score (0–100) across contamination exposure, infrastructure stress, drought and climate, and affordability dimensions.
Connect it to Claude, Cursor, Windsurf, or any MCP-compatible AI client and query water systems by name. Results include per-dimension scores, actionable signals, and specific remediation recommendations — no coding required after initial setup.
What data can you access?
| Data Point | Source | Example |
|---|---|---|
| 📡 Air quality readings as industrial contamination proxy | OpenAQ | PM2.5 = 78 µg/m³ near Sacramento River intake |
| 🌊 Seismic events and earthquake magnitude data | USGS Earthquake Search | M5.2 earthquake within 12 km of distribution main |
| 🚨 FEMA disaster declarations affecting water infrastructure | FEMA Disaster Search | DR-4699-CA — major flood, 2 water plants affected |
| 🌩️ Drought, flood, and extreme weather alerts | NOAA Weather Alerts | Extreme drought warning — Sacramento Valley |
| 📂 Federal water violation databases, SDWA enforcement records | Data.gov | 14 drinking water violation datasets found |
| 📋 EPA MCL changes, PFAS rulemaking, SDWA amendments | Federal Register | Final rule: PFAS MCL 4 ppt — effective 2026 |
| 💬 Water utility billing and service complaints | CFPB Consumer Complaints | 23 billing/shutoff complaints — Fresno area |
| 🌍 Global freshwater availability and water scarcity indices | World Bank Indicators | Renewable freshwater per capita: 1,847 m³/yr |
| 💼 Regional unemployment, income, and poverty indicators | BLS Economic Data | Unemployment 8.4% — Kern County |
| 🎯 Composite Water Risk Score (0–100) | Scoring model | Score: 67 — HIGH_RISK |
| ⚠️ Contaminant alerts count (PFAS, lead, arsenic, etc.) | Federal Register + Data.gov | 5 contaminant regulatory actions detected |
| 🏗️ Infrastructure risk level classification | USGS + FEMA + NOAA | DETERIORATING (score: 58) |
| 💧 Water stress level classification | NOAA + World Bank | SCARCE (drought score: 62) |
| 💰 Affordability stress level | CFPB + BLS | UNAFFORDABLE (score: 61) |
| 📌 Actionable risk signals | All sources combined | "3 emergency MCL rules — treatment upgrade required" |
| 📝 Specific remediation recommendations | Scoring engine | "Multiple contaminant regulations — upgrade treatment" |
Why use Water Utility Risk Intelligence MCP?
Researching water system risk manually means checking the EPA SDWIS database, pulling FEMA disaster declarations, finding NOAA drought monitors, digging through Federal Register rulemaking notices, and cross-referencing local economic data — all separately, all by hand. For a single utility assessment that might take 4–6 hours. For a portfolio of 20 systems, that is weeks of analyst time.
This MCP automates the entire process. Ask your AI client to assess a water system by name, and within 2 minutes you receive a structured report with a Composite Water Risk Score, four dimensional scores, specific risk signals extracted from each data source, and prioritized recommendations. The scoring models are transparent — every signal that drove the score is returned in the output.
- Scheduling — run recurring utility assessments on Apify Scheduler to track risk score changes over time
- API access — trigger assessments from Python, JavaScript, or any HTTP client via the Apify API
- Standby mode — the server stays warm between requests for low-latency MCP tool calls
- Monitoring — receive Slack or email alerts when risk scores exceed thresholds via Apify webhooks
- Integrations — connect to Zapier, Make, or push results directly to your CRM or data warehouse
Features
- 4 independent scoring models — Water Vulnerability (max 100), Infrastructure Risk (max 100), Drought/Climate (max 100), and Affordability Stress (max 100), each with transparent sub-components
- Composite Water Risk Score — weighted average: water vulnerability 30%, infrastructure 25%, drought/climate 25%, affordability 20%
- 18 tracked contaminant types — PFAS, PFOA, PFOS, lead, arsenic, nitrate, bacteria, E. coli, coliform, trihalomethanes, chlorine, fluoride, mercury, chromium, radium, uranium, perchlorate, microplastics
- Air quality as contamination proxy — industrial PM2.5 > 50 µg/m³ near water sources flags potential contamination co-exposure risk, scored up to 25 points
- MCL emergency rule detection — scans Federal Register for "maximum contaminant level" and "emergency" keywords, adds up to 10 points per emergency rule
- Seismic infrastructure scoring — M4.0+ earthquakes score 10 points each, M6.0+ trigger explicit pipe rupture signals, capped at 30
- FEMA flood and storm event weighting — flood/hurricane/storm events score 8 points each; other disasters 3 points, capped at 30
- NOAA drought + heat compounding — concurrent drought and heat events add 15 extra points for compounding water stress
- CFPB billing keyword detection — scans complaint text for 8 billing keywords (bill, shutoff, disconnection, overcharge, etc.) to isolate water utility payment distress
- BLS unemployment threshold scoring — unemployment above 6% adds 10 affordability points; CPI inflation above 4% adds 8 points
- World Bank poverty flag — poverty rate above 15% adds 10 points; Gini coefficient above 40 adds 5 points
- 5-tier risk classification per dimension — each model returns a named level: e.g. CRITICAL / FAILING / EMERGENCY / CRISIS for worst-case, LOW / MODERN / ABUNDANT / AFFORDABLE for best-case
- 8 MCP tools — targeted tools for focused queries plus a full watershed report tool querying all 9 sources simultaneously
- Parallel data fetching — all upstream actors run concurrently via Promise.all, keeping latency under 2 minutes for 9-source reports
- Spending limit guard — every tool checks eventChargeLimitReached before executing to prevent runaway charges
Use cases for water utility risk intelligence
Municipal bond credit analysis
Bond analysts and credit rating teams assessing water revenue bonds need to evaluate infrastructure condition, regulatory compliance exposure, and affordability risk in the service area. This MCP replaces a multi-day manual research process with a single tool call. Ask your AI to run water_system_risk_assessment for a utility and receive a structured risk profile alongside the FEMA disaster history, seismic exposure, and CFPB complaint volume that conventional credit analysis often misses.
ESG portfolio water risk screening
Asset managers with ESG mandates screening for water-related risk across municipal and corporate holdings can use this MCP to quantify exposure. The drought/climate score and contaminant exposure check align with TCFD physical risk frameworks. Run compare_water_systems across a portfolio of service territories and rank holdings by composite score to prioritize engagement.
PFAS and contaminant monitoring
Environmental compliance teams and legal departments monitoring PFAS, lead service line replacement, and emerging contaminant regulations can use contaminant_exposure_check to track Federal Register rulemaking activity against specific water systems. The tool returns the raw regulatory filings alongside the scored contaminant alert count, so analysts can read the underlying documents.
Water utility peer benchmarking
Utility operations managers and consultants benchmarking performance against peer systems can use compare_water_systems to generate standardized per-dimension scores for each utility. The four dimension scores — vulnerability, infrastructure, drought, affordability — provide a consistent comparison framework across systems of different size and geography.
Climate adaptation and infrastructure planning
Engineering firms and utility planners developing 20-year capital improvement plans can use infrastructure_age_analysis and drought_climate_forecast together to quantify compound risk from seismic exposure, FEMA disaster history, and active drought conditions. The signals returned identify which specific events are driving the score, providing evidence for capital prioritization decisions.
Affordability and equity analysis
Policy researchers and utility regulators examining water affordability can use affordability_stress_index to combine CFPB billing complaint data with BLS unemployment and World Bank poverty indicators for a service territory. High complaint volume in economically stressed regions produces specific signals — "Unemployment 9.1% — reduced ability to pay utility bills" — that quantify equity risk.
How to use water utility risk intelligence
1. Connect the MCP server — Add the server URL to your MCP client config (see the connection section below). You need an Apify account and API token from console.apify.com.
2. Choose your tool — For a full assessment, use water_system_risk_assessment. For a focused query (contaminant check, drought forecast, affordability index), use the targeted tools. For a region rather than a named utility, use watershed_risk_report.
3. Run the query — Ask your AI: "Assess the water utility risk for Flint, Michigan." The MCP calls the appropriate tool, queries up to 9 data sources in parallel, and returns results in 60–120 seconds.
4. Interpret the output — You receive a Composite Water Risk Score (0–100), a named verdict (LOW_RISK to CRITICAL), per-dimension scores, human-readable risk signals, and specific recommendations. Export or summarize as needed.
MCP tools
| Tool | Price | Data Sources | Parameters |
|------|-------|--------------|------------|
| water_system_risk_assessment | $0.045 | All 9 sources | system, state (optional) |
| contaminant_exposure_check | $0.045 | OpenAQ, Federal Register, Data.gov | location, contaminant (optional) |
| infrastructure_age_analysis | $0.045 | USGS, FEMA, NOAA | location |
| drought_climate_forecast | $0.045 | NOAA, World Bank | region |
| affordability_stress_index | $0.045 | CFPB, BLS, World Bank | system |
| regulatory_compliance_gap | $0.045 | Federal Register, Data.gov | system, regulation (optional) |
| compare_water_systems | $0.045 | OpenAQ, USGS, NOAA, Federal Register, CFPB | system |
| watershed_risk_report | $0.045 | All 9 sources | region, state (optional) |
Tool parameter reference
| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| system | string | varies | Water utility name, municipality, or service area (e.g. "Phoenix Water Services") |
| state | string | no | State name for regulatory context (e.g. "Arizona") |
| location | string | varies | City, county, or water system for contaminant/infrastructure tools |
| contaminant | string | no | Specific contaminant to focus on: "PFAS", "lead", "arsenic" |
| region | string | varies | Watershed, county, or region for climate/watershed tools |
| regulation | string | no | Specific regulation to query: "PFAS", "LCRI", "SDWA" |
Output example
A water_system_risk_assessment call for "Denver" returns:
{
"system": "Denver",
"compositeScore": 44,
"verdict": "ELEVATED",
"waterVulnerability": {
"score": 38,
"contaminantAlerts": 4,
"airQualityImpact": 12,
"environmentalRisk": 10,
"riskLevel": "MODERATE",
"signals": [
"4 contaminant-related regulatory actions",
"2 extreme air quality events — industrial contamination risk to water sources"
]
},
"infrastructure": {
"score": 51,
"seismicRisk": 10,
"disasterExposure": 24,
"climateStress": 17,
"riskLevel": "AGING",
"signals": [
"M4.3 earthquake — critical infrastructure damage risk",
"4 flood/storm disasters — water treatment plant vulnerability",
"2 drought alerts — water supply stress"
]
},
"droughtClimate": {
"score": 46,
"droughtAlerts": 2,
"heatEvents": 4,
"waterStressLevel": "STRESSED",
"signals": [
"2 active drought conditions — water supply crisis risk",
"4 heat events — increased water demand + evaporation",
"Concurrent drought + heat — compounding water stress"
]
},
"affordability": {
"score": 39,
"complaints": 11,
"economicStress": 18,
"affordabilityLevel": "STRESSED",
"signals": [
"8 billing complaints — rate affordability concern",
"Unemployment 6.8% — reduced ability to pay utility bills"
]
},
"allSignals": [
"4 contaminant-related regulatory actions",
"2 extreme air quality events — industrial contamination risk to water sources",
"M4.3 earthquake — critical infrastructure damage risk",
"4 flood/storm disasters — water treatment plant vulnerability",
"2 drought alerts — water supply stress",
"2 active drought conditions — water supply crisis risk",
"4 heat events — increased water demand + evaporation",
"Concurrent drought + heat — compounding water stress",
"8 billing complaints — rate affordability concern",
"Unemployment 6.8% — reduced ability to pay utility bills"
],
"recommendations": [
"Multiple contaminant regulations — upgrade treatment capabilities",
"Seismic zone — ensure pipe materials and joints are earthquake-rated"
]
}
Output fields
| Field | Type | Description |
|-------|------|-------------|
| system | string | Water system name as provided |
| compositeScore | number | Weighted composite risk score 0–100 |
| verdict | string | LOW_RISK / MANAGEABLE / ELEVATED / HIGH_RISK / CRITICAL |
| waterVulnerability.score | number | Contamination vulnerability score 0–100 |
| waterVulnerability.contaminantAlerts | number | Count of contaminant regulatory actions detected |
| waterVulnerability.airQualityImpact | number | Air quality contamination proxy sub-score (0–25) |
| waterVulnerability.environmentalRisk | number | Composite environmental risk sub-score (0–20) |
| waterVulnerability.riskLevel | string | LOW / MODERATE / ELEVATED / HIGH / CRITICAL |
| waterVulnerability.signals | string[] | Human-readable signals that drove the score |
| infrastructure.score | number | Infrastructure stress score 0–100 |
| infrastructure.seismicRisk | number | Seismic sub-score from USGS data (0–30) |
| infrastructure.disasterExposure | number | FEMA disaster exposure sub-score (0–30) |
| infrastructure.climateStress | number | NOAA climate stress sub-score (0–25) |
| infrastructure.riskLevel | string | MODERN / ADEQUATE / AGING / DETERIORATING / FAILING |
| infrastructure.signals | string[] | Signals from seismic, disaster, and weather data |
| droughtClimate.score | number | Drought and climate water stress score 0–100 |
| droughtClimate.droughtAlerts | number | Count of active NOAA drought alerts |
| droughtClimate.heatEvents | number | Count of NOAA heat events |
| droughtClimate.waterStressLevel | string | ABUNDANT / ADEQUATE / STRESSED / SCARCE / EMERGENCY |
| droughtClimate.signals | string[] | Drought, heat, and precipitation signals |
| affordability.score | number | Affordability stress score 0–100 |
| affordability.complaints | number | Total billing + debt complaints from CFPB |
| affordability.economicStress | number | BLS economic stress sub-score (0–30) |
| affordability.affordabilityLevel | string | AFFORDABLE / MANAGEABLE / STRESSED / UNAFFORDABLE / CRISIS |
| affordability.signals | string[] | Complaint, unemployment, and poverty signals |
| allSignals | string[] | Merged signals from all four dimensions |
| recommendations | string[] | Specific remediation actions triggered by score thresholds |
How much does it cost to assess water utility risk?
This MCP uses pay-per-event pricing — you pay $0.045 per tool call. Apify platform compute costs are included.
| Scenario | Tool calls | Cost per call | Total cost |
|----------|-----------|---------------|------------|
| Quick test — single utility | 1 | $0.045 | $0.045 |
| Focused checks (contaminant + drought + affordability) | 3 | $0.045 | $0.135 |
| Full utility assessment + comparison | 5 | $0.045 | $0.225 |
| Weekly monitoring — 10 utilities | 10 | $0.045 | $0.45 |
| Monthly portfolio screen — 50 utilities | 50 | $0.045 | $2.25 |
You can set a maximum spending limit per run to control costs. The server stops charging when your budget is reached.
The Apify free plan includes $5 of monthly platform credits — enough for over 100 water system risk assessments per month.
Compare this to commercial water risk data platforms that charge $500–2,000/month for pre-built risk scores. With this MCP, most users spend $2–10/month with no subscription commitment and full transparency into how each score was derived.
How to connect this MCP server
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"water-utility-risk-intelligence": {
"url": "https://water-utility-risk-intelligence-mcp.apify.actor/mcp",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}
Cursor / Windsurf / Cline
Add the following MCP server URL in your IDE's MCP configuration:
https://water-utility-risk-intelligence-mcp.apify.actor/mcp
Include your Apify token as a Bearer token in the Authorization header. The exact configuration location varies by client — check your IDE's MCP documentation.
Programmatic HTTP (cURL)
```bash
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



