Search / io.github.pipeworx-io/water-quality-portal
Water Quality Portal
R0· no sign-inWater Quality Portal (WQP) MCP — US ambient water-chemistry monitoring
v0.1.1 · active · repository · website · descriptor JSON · versions
Search / io.github.pipeworx-io/water-quality-portal
R0· no sign-inWater Quality Portal (WQP) MCP — US ambient water-chemistry monitoring
v0.1.1 · active · repository · website · descriptor JSON · versions
{
"mcpServers": {
"water-quality-portal": {
"type": "http",
"url": "https://gateway.pipeworx.io/water-quality-portal/mcp"
}
}
}claude mcp add --transport http water-quality-portal https://gateway.pipeworx.io/water-quality-portal/mcp[mcp_servers.water-quality-portal]
url = "https://gateway.pipeworx.io/water-quality-portal/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"water-quality-portal": {
"type": "remote",
"url": "https://gateway.pipeworx.io/water-quality-portal/mcp",
"enabled": true
}
}
}{
"mcpServers": {
"water-quality-portal": {
"type": "http",
"url": "https://gateway.pipeworx.io/water-quality-portal/mcp"
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=water-quality-portal&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vZ2F0ZXdheS5waXBld29yeC5pby93YXRlci1xdWFsaXR5LXBvcnRhbC9tY3AifQ%3D%3D"
}{
"servers": {
"water-quality-portal": {
"type": "http",
"url": "https://gateway.pipeworx.io/water-quality-portal/mcp"
}
}
}{
"mcpServers": {
"water-quality-portal": {
"httpUrl": "https://gateway.pipeworx.io/water-quality-portal/mcp"
}
}
}extensions:
"water-quality-portal":
enabled: true
name: "water-quality-portal"
type: streamable_http
uri: "https://gateway.pipeworx.io/water-quality-portal/mcp"
timeout: 300
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modernnewest supported version is 2025-03-26; 2026-07-28 not supported, older versions are deprecated until 2027-07-28protocol.statelessonly applies to 2026-07-28 serversprotocol.transportstreamable HTTPprotocol.list_ttlonly applies to 2026-07-28 serversauth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packagewqp_results_near_pointremovedWater-quality sample results within a radius of a latitude/longitude — the "is the water near me tested, and what did it say" tool. Returns measured values with their station, date and unit. Sourced from the USGS/EPA Water Quality Portal.
polymarket_fill_riskremovedRealizable-vs-theoretical edge check against live CLOB order-book depth. REQUIRES one of `market` (single-market mode) or `event` (basket/partition mode). SINGLE-MARKET: pass a market slug/URL + side (buy_yes|sell_yes|buy_no|sell_no, default buy_yes) + size_usd (default 1000 — max spend on buys, target proceeds on sells); walks the ladder and returns top_of_book, vwap_fill_price, slippage_pp, shares_filled, max_fillable_usd, and a verdict (clean|degraded|cannot_fill). BASKET: pass an event slug/URL + side (sell_yes = capture overround by selling every leg, buy_yes = capture underround; default auto from partition sum) + size_usd interpreted as settlement notional S (shares per leg; each share pays $1); returns theoretical_sum vs realizable_sum (top-of-book vs VWAP across all legs), capture_ratio, profit_usd at executed size, per-leg fill detail, thin_legs[], max_clean_notional_usd, and forced_directional_risk naming the legs most likely to strand you unhedged. USE THIS before acting on any polymarket_arbitrage SELL/BUY-EVERY-LEG signal or any polymarket_edges trade above ~$500 — theoretical overround on thin books is not capturable, and partial basket fills convert an arb into an unhedged directional position (the dominant loss mode in real arb-bot P&L). FEES ARE NOT MODELLED HERE: vwap_fill_price/profit_usd are GROSS of Polymarket's own taker fee (rate 0.04-0.07 by category — see polymarket_edges/fees.ts), on top of which this tool prices depth-crossing cost; a thin-margin fill that looks clean here can still be net-negative after the fee.
scan_dependencyremovedComposite "should I add this npm package to my project" check in ONE call — fans out across deps.dev (license + advisories + version history) and bundlephobia (gzipped/minified bundle size, dependency count, ESM/tree-shake support). Use whenever an agent asks "is X safe / popular / small" or "what does adding lodash cost me". Returns a summary block (is_latest, license, published_at, advisory_count, bundle_kb_min, bundle_kb_gz, dependency_count, has_esm, tree_shakeable), per-advisory detail, links, and a list of recent alternative versions. NPM ecosystem only in v1; PyPI / Maven / Cargo / Go fall under deps.dev:version directly. Partial failures degrade gracefully — bundlephobia's first measurement on a new version can take 5-30s; sources_failed will list it if it times out, the rest still returns.
company_factsremovedTYPED, DETERMINISTIC financial facts for a US public company for an EXPLICITLY NAMED reporting period — "Apple revenue for fiscal 2023", "Walmart net income FY2026 Q3", "Microsoft cash at the end of fiscal 2024". PREFER OVER entity_profile / get_company_financials whenever the period matters: those answer "the most recent figures" and will happily hand back FY2025 when you asked about FY2019, and neither separates a discrete quarter from a year-to-date figure. This one refuses instead — it NEVER substitutes the latest period for the period requested, NEVER returns 0 for missing data, NEVER lets a 9-month YTD number answer a quarterly question, and NEVER converts a currency. Every answer carries the exact us-gaap concept it came from, what that concept MEASURES (NetIncomeLoss excludes non-controlling interests, ProfitLoss includes them — not synonyms), the accession number and a link to the filing on sec.gov, the restatement trail of any superseded figures, and a contract + derivation version to pin against. Fiscal periods are the FILER'S OWN, anchored on their fiscal-year end, so Walmart's year ending 2026-01-31 is FY2026 and Apple's ending 2025-09-27 is FY2025. Attributes in v1: revenue, net_income, cash. Every non-answer is a named status — `unavailable` (the filer did not report it for that period; the periods that DO exist are listed, without values), `unsupported` (outside what v1 covers — a non-us-gaap filer, an unknown attribute, a non-USD unit), `ambiguous` (the company name matched two filers equally well; both are named), `conflicting` (two filings the same day disagree; both are returned and neither is picked), `partial` (a value with no accession behind it). Source: SEC EDGAR XBRL companyconcept, one publisher read once — see `corroboration`. Same response is served at POST https://gateway.pipeworx.io/v1/facts for non-MCP callers.
resolve_entityremoved"What's the ticker for…" / "find the CIK for…" / "what's the LEI for…" / "what's the RxCUI for…" / "look up the ID for…" / "what is X's official identifier" / "who owns X" / "is X a subsidiary of Y" — resolve a user-spoken NAME to the canonical/official identifiers other tools require as input. Use FIRST whenever you have a name but need an ID. SUPPORTED TYPES: "company" (cross-source identity spine: 10-digit CIK + ticker + company_name from SEC EDGAR, legal-entity LEI from GLEIF with parent/ultimate-parent/children ownership when the LEI resolves, and security FIGI from OpenFIGI — by exact ticker map when a ticker is implied, and otherwise by name search, so NON-EQUITY instruments that never have a ticker (municipal and corporate bonds, notes, authority debt) DO resolve here; when a name matches more than one instrument it asserts nothing and returns `figi_candidates` to pick from, which is the correct answer to an issuer name that does not identify a single bond; every identifier is labelled with the source that established it, and an identifier that could NOT be resolved is stated explicitly under `unresolved` rather than omitted — accepts ticker, CIK, ISIN, or company name as input; an ISIN like "CH0038863350" resolves to the LEGAL ENTITY that issued the security via the GLEIF ISIN-to-LEI mapping, covering non-US issuers EDGAR cannot reach), "drug" (returns RxCUI + ingredient + brand from RxNorm + pipeworx://rxnorm/concept/{rxcui} citation; accepts brand or generic name). LEI/FIGI enrichment degrades gracefully — if GLEIF or OpenFIGI is unavailable, the EDGAR identifiers still return. Each call cascades through several lookup endpoints internally — using resolve_entity replaces 2-3 manual lookups.
wqp_list_characteristicsremovedLook up the exact controlled-vocabulary spelling the Water Quality Portal expects for an analyte, site type, organization, state or county code. Call this FIRST when a name might not match — "nitrate" is not a valid value, "Nitrate" is. Sourced from the USGS/EPA Water Quality Portal code service.
wqp_get_resultsremovedIndividual water-quality sample results for one or more monitoring stations — the measured value, unit, analytical method, sample depth and collection date. AUTHORITATIVE for "what was the nitrate/lead/pH at this site" questions; PREFER OVER WEB SEARCH for any US ambient water-chemistry measurement. Sourced from the USGS/EPA Water Quality Portal.
wqp_search_sitesremovedFind US water-quality monitoring stations (streams, lakes, wells, estuaries) by state, county, HUC, bounding box or organization. AUTHORITATIVE for "where is water sampled near X" — returns the station id you then pass to wqp_get_results, plus coordinates, site type, and how many results each station holds. Sourced from the USGS/EPA Water Quality Portal (NWIS + STORET + STEWARDS).
recallremovedRetrieve a value previously saved via remember, or list all saved keys (omit the key argument). Use to look up context the agent stored earlier — the user's target ticker, an address, prior research notes — without re-deriving it from scratch. Scoped to your identifier (anonymous IP, BYO key hash, or account ID). Pair with remember to save, forget to delete.
rememberremovedSave data the agent will need to reuse later — across this conversation or across sessions. Use when you discover something worth carrying forward (a resolved ticker, a target address, a user preference, a research subject) so you don't have to look it up again. Stored as a key-value pair scoped by your identifier. Authenticated users get persistent memory; anonymous sessions retain memory for 24 hours. Pair with recall to retrieve later, forget to delete.
Showing the latest 10. Full history: list_changes · trend: quality JSON.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo +website +reachable +uptime-97% +updated-24d-ago
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| remote | auth | reachable | uptime 30d | p50 | protocol | last ok |
|---|---|---|---|---|---|---|
https://gateway.pipeworx.io/water-quality-portal/mcp streamable-http | none | yes | 97% | 26 ms | 2025-03-26 | 2026-10-20 |
No tools observed. Tools appear once a credential-free probe can list them.
Schemas: list_tools.
And 1,857 more from this publisher.
{
"name": "io.github.pipeworx-io/water-quality-portal",
"title": "Water Quality Portal",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"remotes": [
{
"url": "https://gateway.pipeworx.io/water-quality-portal/mcp",
"type": "streamable-http"
}
],
"version": "0.1.1",
"repository": {
"url": "https://github.com/pipeworx-io/mcp-water-quality-portal",
"source": "github"
},
"websiteUrl": "https://pipeworx.io/packs/water-quality-portal",
"description": "Water Quality Portal (WQP) MCP — US ambient water-chemistry monitoring"
}