Pool Log — CDC-range water test log (no AI)
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Deterministic pool and spa water test log. Checks readings against US CDC ranges. No AI.
| Author | app.rowb.pool-log |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2070 ms |
| Last measured | 2026-10-26 |
Measured statistics
| Tools measured | 6 |
|---|---|
| Latency, 30-day median (L1) | 2070 ms |
| Latency, latest (L1) | 2070 ms |
| Safe-call success | 1/1 (100%) |
| 30-day success rate (L2) | 100% |
| Last checked | 2026-10-26 |
| Total checks | 4 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Pool Log — CDC-range water test log (no AI)": {
"url": "https://pool-log.rowb.app/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
check_readingsCheck a list of pool or spa water readings for things that cannot be true, and compare pH, free chlorine and bromine against the ranges published on the US CDC pages. Deterministic arithmetic only - no AI. It does not decide whether a pool is legally compliant, and it does not know your local code.
Parameters:
readings(required) — array — Readings to check. Each: {at:"YYYY-MM-DDTHH:MM", kind:"pool|hot_tub|splash_pad|wading_pool|other", ph?:number, free_chlorine_ppm?:number, total_chlorine_ppm?:number, bromine_ppm?:number, cyanuric_acid_ppm?:number, water_temp_f?:number, disinfectant?:"chlorine|bromine|none", method?:"dpd|test_strip|meter|other", by?:"who tested"}.as_of— string — Treat this date as "today" (YYYY-MM-DD) when rejecting future timestamps. Defaults to the server date.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_rulesThe exact rule table this service checks against, the quoted source of every range, and what it explicitly does not claim. Quote it if you need to explain a result.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_siteOpen a water-test log for one pool, hot tub or splash pad (returns a site id). Requires a bearer key.
Parameters:
label— string — What to call this water, e.g. "Apartment pool - north".address— stringwater_type— string — pool | hot_tub | splash_pad | wading_pool | otherdisinfectant— string — chlorine | bromine | nonevolume_gallons— number
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
add_readingsAppend water readings to an existing log. Requires a bearer key.
Parameters:
site_id(required) — stringreadings(required) — array
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_log_summaryEvery reading, the flagged issues, the CDC-range counts, the longest gap between tests, and the A4 log sheet URL, for one log. Requires a bearer key.
Parameters:
site_id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
request_operator_signoffCreate a one-time URL the pool operator can open to confirm the log. Requires a bearer key. The token is single use.
Parameters:
site_id(required) — stringprovider_name— stringprovider_email— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.