# gribstream_query_timeseries

AUTH REQUIRED / DATA QUERY. Executes an authenticated /api/v2/{dataset}/timeseries request and returns actual weather/forecast data values. Use this tool, not the NO AUTH request-building or metadata tools, when the user asks to fetch, retrieve, download, return, or analyze weather values, CSV/JSON/NDJSON/Parquet data, plots, heatmaps, or best-available values by valid time. Defaults to CSV for compatibility; prefer Parquet for dense grids and large tabular results. DENSE-GRID PLOTS: Send one request.grid and one live query with accept=application/vnd.apache.parquet; do not expand the grid into request.coordinates or spatially tile it first. Save the returned binary resource, sort the decoded rows, and plot that file directly. Spatially tile only after an actual coordinate-limit or response-size error. Return the plot rather than the raw dataset unless the user asks for the data. PARQUET HANDLING: Treat resource.blob as an opaque binary intermediate. Never stringify, print, log, quote, or copy its base64 into assistant-visible text or another tool result. Decode and save it once to suggested_filename in the same execution environment, then read that file with a Parquet-capable library. Do not repeat the same GribStream query merely to materialize or recover the returned file. If the client cannot consume embedded binary resources, use CSV and split the request below max_bytes. For dense grids or large tabular results, request application/vnd.apache.parquet before splitting; Parquet is typed and ZSTD-compressed, and MCP returns it as an embedded binary resource. If Parquet still exceeds the MCP limit, split by time range first, split variables second, and split coordinates/grid/space last; spatial tiling creates the most extra requests and should be the fallback. Do not include request.asOf unless the user explicitly wants backtesting, time travel, or a historical model-run cutoff. Response rows are unsorted; sort by location fields and forecasted_time before plotting, building time series, or checking for gaps. The request body must use request.coordinates and request.variables; do not use location, coord, coords, parameters, parameter, or variable as replacement field names.

Agent View of the PolicyLayer registry record for `gribstream_query_timeseries`. HTML page: https://policylayer.com/tools/com-gribstream-mcp/gribstream-query-timeseries

## Facts

- Tool: `gribstream_query_timeseries`
- Server: GribStream MCP (`https://gribstream.com/mcp`) — https://policylayer.com/tools/com-gribstream-mcp.md
- Homepage: https://github.com/GribStream/gribstream-mcp
- Risk category: Read (Low risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 4 (2 required)
- Recommended policy verdict: Allowed

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `accept` | string | no | Desired response format. Defaults to text/csv for compatibility. Prefer application/vnd.apache.parquet for dense grids and large tabular analysis before splitti |
| `dataset` | string | yes | Dataset code, for example gfs, ifsoper, nbm, hrrr, or urma. |
| `request` | object | yes | Timeseries request body. Use either timesList or fromTime+untilTime as UTC valid times. Omit asOf unless the user explicitly asks for backtesting, time travel, |
| `max_bytes` | integer | no | Maximum response bytes to return through MCP. Default and server-side maximum are 10000000 for live query tools. For dense grids or large tabular results, reque |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "gribstream_query_timeseries",
    "arguments": {
      "dataset": "<dataset>",
      "request": {}
    }
  }
}
```

## Why gribstream_query_timeseries is rated Low

Even though gribstream_query_timeseries only reads data, uncontrolled read access leaks sensitive information and racks up API costs: an agent caught in a retry loop can make thousands of calls a minute without anyone noticing.

Risk signals: Accepts freeform code/query input (request.expressions[].expression) · High parameter count (38 properties)

## Use case

AI agents call gribstream_query_timeseries to retrieve information from GribStream MCP without modifying anything. It is typically the context-gathering step in research, monitoring, and reporting workflows, before the agent takes action elsewhere.

## Recommended policy (PolicyLayer)

Verdict: **Allowed**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches GribStream MCP:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "gribstream_query_timeseries": {}
  }
}
```

## Other tools on GribStream MCP (11)

- `gribstream_build_runs_request` — Execute — https://policylayer.com/tools/com-gribstream-mcp/gribstream-build-runs-request.md
- `gribstream_build_timeseries_request` — Execute — https://policylayer.com/tools/com-gribstream-mcp/gribstream-build-timeseries-request.md
- `gribstream_get_dataset` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-get-dataset.md
- `gribstream_get_expression_reference` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-get-expression-reference.md
- `gribstream_get_parameter` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-get-parameter.md
- `gribstream_list_datasets` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-list-datasets.md
- `gribstream_list_parameters` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-list-parameters.md
- `gribstream_list_shared_parameters` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-list-shared-parameters.md
- `gribstream_query_runs` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-query-runs.md
- `gribstream_resolve_shared_parameter` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-resolve-shared-parameter.md
- `gribstream_validate_request` — Read — https://policylayer.com/tools/com-gribstream-mcp/gribstream-validate-request.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-gribstream-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-gribstream-mcp
