Skip to main content
Glama

Query dataset

query_dataset
Read-onlyIdempotent

Raw time series of one dataset's variables at a point, with unit labels: any gridded product (NBM, HRRR, RRFS, GFS, RTMA, MRMS, air quality, ...). Time modes: hours (default 24), time_start+time_end (ISO 8601), or latest=true (newest value). Up to 168 frames: when truncated, send next_cursor as cursor with the same arguments. reference_time pins a model run; each series reports its run (reference_time, or reference_times when runs mix); runs older than about 48 h may be gone. For blended forecasts use get_forecast. Examples: {"location": "Denver, CO", "dataset_id": "rrfs_surface", "variables": ["temperature_2m"], "hours": 18} or {"lat": 41.4, "lon": -92.9, "dataset_id": "rtma_conus", "variables": ["temperature_2m"], "latest": true}.

Input Schema

NameRequiredDescriptionDefault
latNoLatitude in decimal degrees (-90 to 90). Most tools also accept a `location` place-name string instead of lat/lon.
lonNoLongitude in decimal degrees (-180 to 180). For continental US use negative values (west of the prime meridian).
hoursNoHours from now (1-264): ahead, or back on analyses (default: newest 166 frames); from the run start with reference_time.
unitsNoimperial
cursorNonext_cursor of the previous page.
latestNoOnly the newest value (analyses like RTMA/MRMS).
locationNoFree-text place: "City, ST" (e.g. "Portland, OR"), US ZIP, venue/address where enabled, or "lat,lon". Use this OR lat+lon, not both.
time_endNoISO 8601 window end (with time_start).
variablesYesStandard names (e.g. temperature_2m, precipitation); see describe_dataset.
dataset_idNoDefault: the NBM dataset for the location (nbm_conus/nbm_alaska/nbm_hawaii). Discover with list_datasets.
time_startNoISO 8601 window start (with time_end).
reference_timeNoPin a specific model run (ISO 8601). Default: latest run.

Output Schema

NameRequiredDescriptionDefault
unitsYes
seriesYes
locationYes
truncatedYes
attributionNoAttribution the dataset licence requires. Cite it when quoting these values.
data_statusNoPresent only when the data service did not answer and a cached copy was served.
next_cursorYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  2. Changed5 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / data_status / properties
      Added value: +{}
    • addedOutput schema / properties / series / items / properties / data / properties
      Added value: +{}
    • changedOutput schema / properties / series / items / properties / data_age_seconds / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / series / items / properties / unit_labels / properties
      Added value: +{}
  3. Changed17 schema fields changed
    • addedInput schema / properties / cursor
      Added value: +{
      +  "description": "next_cursor of the previous page.",
      +  "type": "string"
      +}
    • changedInput schema / properties / dataset_id / description
      Previous value: -"Dataset to query. Default: the NBM dataset for the location domain (nbm_conus/nbm_alaska/nbm_hawaii). Discover options with list_datasets."New value: +"Default: the NBM dataset for the location (nbm_conus/nbm_alaska/nbm_hawaii). Discover with list_datasets."
    • changedInput schema / properties / hours / description
      Previous value: -"Forecast/lookahead hours from now (1-264). Default 24 when no other time mode set."New value: +"Hours from now (1-264): ahead, or back on analyses (default: newest 166 frames); from the run start with reference_time."
    • changedInput schema / properties / latest / description
      Previous value: -"Return only the most recent value (analysis datasets like RTMA/MRMS)."New value: +"Only the newest value (analyses like RTMA/MRMS)."
    • addedInput schema / properties / units
      Added value: +{
      +  "default": "imperial",
      +  "enum": [
      +    "imperial",
      +    "metric"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / variables / description
      Previous value: -"Standard variable names (e.g. temperature_2m, precipitation). Discover with describe_dataset."New value: +"Standard names (e.g. temperature_2m, precipitation); see describe_dataset."
    • addedOutput schema / properties / data_status
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present only when the data service did not answer and a cached copy was served.",
      +  "type": "object"
      +}
    • addedOutput schema / properties / next_cursor
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / series / items / properties / data_age_seconds
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "integer"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / series / items / properties / freshness_status
      Added value: +{
      +  "anyOf": [
      +    {
      +      "enum": [
      +        "fresh",
      +        "stale",
      +        "missing"
      +      ],
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ]
      +}
    • addedOutput schema / properties / series / items / properties / related
      Added value: +{
      +  "description": "With out_of_domain: a dataset that covers the point.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / series / items / properties / status
      Added value: +{
      +  "description": "ok, unavailable, out_of_domain (see related) or not_public.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / series / items / properties / unit_labels
      Added value: +{
      +  "additionalProperties": {
      +    "type": [
      +      "string",
      +      "null"
      +    ]
      +  },
      +  "description": "Unit of each variable in data.",
      +  "type": "object"
      +}
    • changedOutput schema / properties / series / items / required
      Previous value: -[
      -  "dataset_id",
      -  "valid_times",
      -  "data"
      -]New value: +[
      +  "dataset_id",
      +  "valid_times",
      +  "data",
      +  "unit_labels",
      +  "status",
      +  "data_age_seconds",
      +  "freshness_status"
      +]
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / units
      Added value: +{
      +  "enum": [
      +    "imperial",
      +    "metric"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "location",
      -  "series"
      -]New value: +[
      +  "location",
      +  "units",
      +  "series",
      +  "truncated",
      +  "next_cursor"
      +]
  4. Changed1 schema field changed
    • changedInput schema / properties / location / description
      Previous value: -"Free-text place: city (\"Denver\"), city+state (\"Portland, OR\"), US ZIP, venue/address where enabled, or \"lat,lon\". Use this OR lat+lon, not both."New value: +"Free-text place: \"City, ST\" (e.g. \"Portland, OR\"), US ZIP, venue/address where enabled, or \"lat,lon\". Use this OR lat+lon, not both."
  5. Changed2 schema fields changed
    • changedInput schema / properties / location / description
      Previous value: -"Free-text place: city (\"Denver\"), city+state (\"Portland, OR\"), US ZIP (\"50219\"), or \"lat,lon\" (\"39.74,-104.99\"). Provide either this OR explicit lat+lon, not both."New value: +"Free-text place: city (\"Denver\"), city+state (\"Portland, OR\"), US ZIP, venue/address where enabled, or \"lat,lon\". Use this OR lat+lon, not both."
    • addedOutput schema / properties / location / properties / matched_via
      Added value: +{
      +  "enum": [
      +    "autosuggest",
      +    "fuzzy"
      +  ],
      +  "type": "string"
      +}
  6. Changed1 schema field changed
    • addedOutput schema / properties / attribution
      Added value: +{
      +  "description": "Attribution the dataset licence requires. Cite it when quoting these values.",
      +  "type": "string"
      +}
  7. Changed2 schema fields changed
    • addedOutput schema / properties / series / items / properties / reference_time
      Added value: +{
      +  "description": "Model run behind every value in this series.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / series / items / properties / reference_times
      Added value: +{
      +  "description": "Distinct runs, when this series mixes more than one.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
  8. First observed

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds real operational behavior beyond them: a 168-frame truncation limit with cursor reuse under the same arguments, run pinning via reference_time, and a retention caveat that runs older than ~48 h may be gone. It also discloses that each series carries reference_time (or reference_times when runs mix), which an agent must know to interpret mixed output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core capability, then time modes, then pagination and retention, then two worked examples. Dense but every line carries operational information; the two full JSON examples are the only slightly expensive element, and they earn their space by showing location-vs-lat/lon usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter read tool with an output schema (so return shape need not be explained) and full annotation coverage, the description supplies exactly what is missing: time-mode selection, pagination recovery, run pinning and retention. Nothing needed to invoke it correctly is absent, aside from the minor hours-default ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 92%, so the baseline is 3; the description still adds cross-parameter meaning the schema lacks, notably that cursor must be re-sent with the identical arguments and how reference_time shifts the meaning of hours to run-relative. Minor friction: it states 'hours (default 24)' and 'up to 168 frames' while the schema says hours defaults to 'newest 166 frames' with a max of 264, and the units parameter is never mentioned in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific noun phrase: raw time-series of one dataset's variables at a point, with unit labels, and enumerates the product families covered (NBM, HRRR, RTMA, MRMS, etc.). It explicitly contrasts itself with get_forecast for blended forecasts, so an agent can separate it from that sibling without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete selection conditions: three time modes (hours, time_start+time_end, latest) and the rule to use get_forecast for blended output. It does not distinguish itself from other near siblings such as get_hourly_forecast or get_current_conditions, so the routing guidance is strong but incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.