Cdec Ca
liveEnvironmentClimateUSCalifornia reservoir levels, snowpack, river flow and precipitation from the state's Data Exchange Center.
Tools
station_infoStation metadata.
No parameters required.
Try it
daily_dataDaily data for (station, sensor). CDEC's -9999 missing marker is returned as value: null with missing: true, and the response counts the gaps.
No parameters required.
Try it
hourly_dataHourly data for (station, sensor). CDEC's -9999 missing marker is returned as value: null with missing: true, and the response counts the gaps.
No parameters required.
Try it
event_dataEvent-based irregular readings for (station, sensor). CDEC's -9999 missing marker is returned as value: null with missing: true.
No parameters required.
Try it
latestMost recent REAL reading for (station, sensor), looking back three days. CDEC writes -9999 into slots it has no reading for and the current day's trailing hours are routinely unwritten, so this skips
No parameters required.
Try it
reservoirsReservoir storage snapshots.
No parameters required.
Try it
Test with curl
The gateway speaks JSON-RPC 2.0 over HTTP POST. You can test any pack directly from the terminal.
curl -X POST https://gateway.pipeworx.io/cdec-ca/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'curl -X POST https://gateway.pipeworx.io/cdec-ca/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"station_info","arguments":{}}}'Use with the SDK
Install @pipeworx/sdk to call tools from any TypeScript/Node project.
import { Pipeworx } from '@pipeworx/sdk';
const px = new Pipeworx();
const result = await px.call("station_info", {});// Or ask in plain English:
const answer = await px.ask("california reservoir levels, snowpack, river flow and precipitation from the state's data exchange center");