USGS Water

live Science

Real-time streamflow, gage height, and daily water data from USGS National Water Information System

3 tools
0ms auth
free tier 50 calls/day

Tools

get_current required: site_id

Get current instantaneous streamflow (discharge, cfs) and gage height (ft) for a USGS monitoring site.

Parameters
Name Type Description
site_id req string USGS site number (e.g., "01646500" for Potomac River at Little Falls, MD)
Try it
search_sites required: state

Find active USGS stream-gage sites in a US state that have real-time instantaneous data.

Parameters
Name Type Description
state req string Two-letter US state abbreviation (e.g., "VA", "CA", "TX")
Try it
get_daily required: site_id, start, end

Get daily mean streamflow values for a USGS site over a date range. Dates must be in YYYY-MM-DD format.

Parameters
Name Type Description
site_id req string USGS site number
start req string Start date in YYYY-MM-DD format
end req string End date in YYYY-MM-DD format
Try it

Test with curl

The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.

List available tools
bash
curl -X POST https://gateway.pipeworx.io/usgswater/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Call a tool
bash
curl -X POST https://gateway.pipeworx.io/usgswater/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_current","arguments":{"site_id": "01646500"}}}'

Use with the SDK

Install @pipeworx/sdk to call tools from any TypeScript/Node project.

TypeScript
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("get_current", {"site_id":"example"});
ask_pipeworx
// Or ask in plain English:
const answer = await px.ask("real-time streamflow, gage height, and daily water data from usgs national water information system");