---
summary: "Site series discovery and timeout recovery"
breaking: true
security: false
---

# 0.4.0 — 2026-10-20

## Added

- **`water_get_site_data_catalog`** discovers a site's parameters, sensors, statistics, and full UTC record bounds through USGS OGC metadata, with filter-bound cursor pagination and a shared 45-second deadline. ([#30](https://github.com/cyanheads/usgs-water-mcp-server/issues/30))

## Changed

- **Breaking: `water_dataframe_query`** now rejects `current_setting`, `current_schema`, `current_schemas`, `in_search_path`, `query_table`, and dynamic `query()` expressions through the adopted framework SQL gate. Use staged tables with ordinary `SELECT` or a single SQL string literal passed to `query()`.
- **DataCanvas** defaults to `duckdb` for large site and historical-series results; set `CANVAS_PROVIDER_TYPE=none` for inline previews only. The portable desktop bundle sets `none` because it omits native DuckDB binaries.
- **Development tooling** synchronizes framework skills and antipattern checks with the adopted framework.

## Fixed

- **NWIS timeouts** declare `upstream_timeout` and retry guidance across tools and the site resource, preserving timeout codes and retry/operation metadata. Caller cancellation retains its existing behavior. ([#48](https://github.com/cyanheads/usgs-water-mcp-server/issues/48))
- **Startup configuration** defers full validation until setup so invalid timeout/drop settings produce the configuration banner; normalized blank and install-placeholder canvas settings receive the default. ([#50](https://github.com/cyanheads/usgs-water-mcp-server/issues/50))

## Dependencies

- **`@cyanheads/mcp-ts-core`** ^0.13.11 → ^0.13.15.
- **`pino-pretty`** ^13.1.3 → ^13.2.0.
- **`zod`** ^4.6.5 → ^4.6.7.
- **`@types/node`** ^26.6.3 → ^26.6.5.
- **`ignore`** ^7.0.11 → ^7.0.12.
- **`vitest`** ^5.0.3 → ^5.0.5.
- **Bun** 1.4.2 → 1.4.3 in package-manager metadata and Docker images.
