Muriel AI bronze
murielai.io
“US drinking water compliance data for agents: published sample results from public water systems across 33 states (many updated daily, some back to the 1970s), notable events, trends, compliance statistics, and the federal drinking water standards and rules. Read-only. Each skill is one tool; send a data part {"skill": <id>, "arguments": {...}}. Results are published monitoring data, not compliance determinations.
https://murielai.io/.well-known/agent-card.json its cardwe checked this the operator says this
Verified by agenttru.st
Everything here is a check agenttru.st performed itself. Assurance, protocol, hosting and freshness are in the card above and are not repeated.
- Certificate
-
Issued by Let's Encrypt
domain-validated
Valid until 23 Dec 2026 as of our check on 13 Nov 2026. A wildcard certificate: its other hosts are invisible here, because CT logs the wildcard, not them.Control of the hostname was checked; nothing about who operates it.Key ECDSA P-256, signed ECDSA-SHA384, issued via YE1 under ISRG Root X2 — classical, as every publicly trusted certificate is today.
Names on this certificate (2)
*.murielai.io,murielai.io. - Connection
- TLS 1.3 · X25519MLKEM768 — post-quantum hybrid key exchange, agreed with our checker on 13 Nov 2026. What this means
- DANE / TLSA
- Not verified (TLSA query returned RCodeNameError)
- Discovery
- Well-known document
- AI use policy
-
What this site's
robots.txtsays about how AI may use its content. Recorded as the operator wrote it, not enforced — these are preferences about use, not access, and agenttru.st only reads the agent's own discovery documents. - AI-facing documents
-
Publishes
/llms.txt— “Muriel” a curated map of the site's content for language modelsFetched from this host during verification. Neither document is how this agent was discovered. - First seen
- 13 Nov 2026
View verification details
- Assurance
- bronze Bronze — agent card fetched over HTTPS with a valid certificate
- Protocols
- A2A verified by handshake or card fetch, not merely advertised
- Hosted in
-
? Unknown
·
Cloudflare, Inc.
(AS13335)
The address did not geolocate — usually anycast hosting, where one address answers from many places at once.
- Last checked
- 1d ago
What this agent says it can do
Declared in the agent's own card. agenttru.st has not tested whether it completes any of these tasks — the operator of murielai.io controls every word below.
Data coverage
What sample-result data actually EXISTS -- overall, for a state, or for one water system: row counts, systems, distinct analytes, date range, and the share of rows with a usable numeric value. CALL THIS FIRST whenever a question depends on real results, and again before concluding that something was not detected. Coverage is very uneven: some states have no usable values at all and date windows range from decades to a few weeks.
- {"skill": "data_coverage", "arguments": {"state": "CA"}}
Find water system
Find water systems by name or PWSID, with how many results each has and over what date range. Use this to turn a system name the user mentions into a PWSID before querying results.
- {"skill": "find_water_system", "arguments": {"query": "Chicago", "state": "IL"}}
Get sample results
Individual sample results, filtered by system, contaminant, state and date range. Returns the raw rows including the reported value, unit, non-detect flag and normalized mg/L value. The contaminant name is resolved through the analyte crosswalk; the resolution is returned so you can see whether it matched a federal standard.
- {"skill": "get_sample_results", "arguments": {"pwsid": "IL0316000", "contaminant": "lead", "limit": 20}}
Summarize sample results
Per-analyte summary for a system or state: number of results, how many have a usable value, non-detect count, date range, and min/max/mean in mg/L. Use this to see what a system has been sampling before drilling into one contaminant.
- {"skill": "summarize_sample_results", "arguments": {"pwsid": "IL0316000"}}
Rank systems by size
THE tool for a question with no system in it -- 'tell me about arsenic exceedances in California', 'what's going on with water quality in Texas'. Returns one row per system and contaminant, ordered so the systems worth naming first come back first: acute contaminants ahead of everything, then the largest systems by service connections. Each row carries service_connections, population_served and size_band alongside the system's highest result, its sample count, its date range, and whether that highest value is above the federal limit. It RANKS, it does not filter -- small systems are in the result, lower down. Lead with the large systems, then account for the rest ('and 43 smaller systems, serving 61,000 people between them, also had arsenic above the MCL'); never drop them. Set only_exceeding with a named contaminant to get just the systems whose highest result is over that contaminant's federal limit. max_mgl is a single highest sample, so a flagged row means one result was over, NOT that the system is in vi
- {"skill": "rank_systems_by_size", "arguments": {"state": "CA", "contaminant": "nitrate", "only_exceeding": true}}
Get notable events
Curated observations from comparing successive updates of a state's published results: notable value movements between a result and its prior (with delta and percent change), extreme values, and sample-point changes. Pre-summarized in plain language and small in volume, with severity info/watch/high -- high is rare, so 'show me anything high' returns a readable list. Use for 'what changed recently?' or 'anything worth looking at?'. These are automated observations, NOT regulatory findings. Defaults to the LAST 7 DAYS: differences found in that window, for samples collected in it. Report what it returns as this week's changes; pass since only when the user asks about a longer period.
- {"skill": "get_notable_events", "arguments": {"state": "CA", "min_severity": "high"}}
Get record changes
Row-level differences between consecutive updates: results that APPEARED, DISAPPEARED, or were AMENDED, each with its previous values alongside the new ones. Use to answer 'was this result revised or withdrawn?'. Amendments are rare and important -- a revised value can change a running annual average that was already reported. Disappearances are usually churn in the state's published dataset rather than a utility retracting anything. Defaults to the LAST 7 DAYS, for samples collected in that window; set include_older_samples only when the user asks whether older results were revised.
- {"skill": "get_record_changes", "arguments": {"state": "GA", "kind": "amended"}}
Analyte trend
How a contaminant has changed over time at a system's sampling locations, or across a state. Answers 'is arsenic going up', 'has lead improved', 'what is the trend'. Reads a precomputed table of one change per system, facility, sample location, sample point and analyte, built from the full historical record -- some entries run decades. A wider scope counts how many locations rose against how many fell rather than averaging them. The reporting window is chosen from what each location actually holds: the whole record always, plus the most recent years when the record is long enough for the two to differ. For SEASONAL analytes -- TTHM, HAA5, their components, TOC -- it compares the same quarter across years (Q3 2026 against Q3 2025) and reports the locational running annual average, because these form faster in warm water and a quarter-to-quarter change measures the season rather than the system.
- {"skill": "analyte_trend", "arguments": {"contaminant": "nitrate", "pwsid": "CA1910067"}}
Check compliance from data
Compute the CORRECT compliance statistic for a contaminant at one system from its real results -- running annual average, locational running annual average, 90th percentile, or single-sample for acute contaminants -- and compare it to the federal standard. Refuses, with a reason, when the analyte has no federal standard mapped to it. Use this instead of eyeballing individual results.
- {"skill": "check_compliance_from_data", "arguments": {"pwsid": "IL0316000", "contaminant": "TTHM"}}
Check monitoring gaps
Candidate gaps between the monitoring obligations the source asserts for a system (analyte, sample point, required frequency) and the results this dataset holds. REQUIRES a pwsid or state. Every finding is tested against what this dataset could actually have shown for that system: a 3-year obligation cannot be assessed from a six-week collection window, and a system with no usable values cannot be assessed at all. Only 'assessable' findings are returned by default. A gap is a CANDIDATE to check against the primacy agency -- never a monitoring violation, and never proof the utility failed to sample.
- {"skill": "check_monitoring_gaps", "arguments": {"pwsid": "IL0316000"}}
Historical depth
How far back the deep archive goes for a state or system, and how many results it holds, WITHOUT fetching any of them. Cheap. Use it to find out whether a long-range question can be answered before committing to deep_history_search, and to tell a user what record actually exists for their system.
- {"skill": "historical_depth", "arguments": {"pwsid": "CA1910067"}}
Deep history search
Search the DEEP HISTORICAL ARCHIVE as well as the current window. Every other results tool reads only what the daily pipeline publishes, which for most states is a rolling six-week window. This one also reads the reconstruction archive -- most of the corpus -- reaching back as far as 1976 in California and 1980 in Illinois and Montana. USE IT WHEN the question reaches further back than the last few weeks: a multi-year trend, 'has this ever been detected here', 'what did this system look like in 2015', or a long baseline. To put the archive in a FILE, use export_csv (source sample_results), which covers the archive by default and is not capped at this tool's 1,000 sample rows. Also use it when an ordinary results tool returns nothing for a period before the current window -- that is the tool being asked the wrong question, not an absence of sampling. DO NOT use it for 'what happened last month' or 'the latest result'; the ordinary tools are faster and the current window is what they cover. Rows come back marke
- {"skill": "deep_history_search", "arguments": {"pwsid": "CA1910067", "analyte": "ARSENIC", "since": "1990-01-01"}}
Lookup standard
Look up the exact federal standard for a contaminant: MCL or treatment technique or action level, MCLG, units, the averaging basis used for compliance, whether it is acute, and the CFR citation. Use whenever a specific numeric standard is involved. Accepts common aliases (TTHM, GenX, PCE, Pb, nitrate).
- {"skill": "lookup_standard", "arguments": {"contaminant": "arsenic"}}
Evaluate result
Compare a reported laboratory result against the federal standard, with unit conversion (mg/L, ug/L, ppb, ng/L, ppt, pCi/L). Returns the verdict, percent of the standard, the correct averaging basis, and whether the contaminant is acute. Use this whenever the user gives you a measured number.
- {"skill": "evaluate_result", "arguments": {"contaminant": "nitrate", "value": 12, "unit": "mg/L"}}
Resolve analyte
Explain how a raw analyte name from the data maps to federal regulation: a standard, a component of an aggregate standard (chloroform -> TTHM), a secondary standard, a treatment-technique indicator, a known-unregulated contaminant with the reason, a parser artifact, or unmapped. Use when a name in the results looks unfamiliar.
- {"skill": "resolve_analyte", "arguments": {"analyte_name": "CHLOROFORM"}}
Search regulations
Search the drinking water compliance knowledge base: a curated federal reference (SDWA overview, full NPDWR standards, monitoring and reporting, Lead & Copper / LCRR / LCRI, disinfection byproducts, microbial rules, PFAS, violations and public notification) plus any documents the user has added to the documents/ folder (state regulations, sanitary surveys, lab reports, SOPs). Use this before answering any substantive regulatory question. Prefer several focused searches over one broad one.
- {"skill": "search_regulations", "arguments": {"query": "lead action level 90th percentile"}}
Technical agent card
Copied from the agent's card. The operator controls these values; agenttru.st has not verified them.
- Provider
- Muriel AI, Inc. — what this agent says about itself; other agents claiming the same provider are not thereby related
- Protocol
- a2a
- Version
- 1.0.0
- Auth schemes
- muriel_oauth
- Card completeness
- complete all eight fields required by a2a.proto v1.0
View all card details
- Capabilities
- extendedAgentCard pushNotifications streaming
- Agent card
- https://murielai.io/.well-known/agent-card.json
Operate this agent and would rather not be listed? Request removal.