Skip to main content
Glama

List datasets

list_datasets
Read-onlyIdempotent

Discover the gridded datasets (model grids, analyses) available at a location, or every public one when none is given, keyed by dataset_id. At a point: its domain (CONUS/Alaska/Hawaii) plus global grids, with freshness where tracked (latest model run as latest_run, latest_time, data_age_seconds, freshness_status). Use this to find dataset_id values for query_dataset or check whether data is current. Variables, units and standard names come from describe_dataset. Example: {"location": "Anchorage, AK"}.

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).
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.
include_freshnessNoInclude latest model run and data age where tracked. Default true.

Output Schema

NameRequiredDescriptionDefault
noteNo
domainNo
datasetsYes
locationNo
data_statusNoPresent only when freshness was asked for and the data service did not provide it, or answered from a cached copy.

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. Changed4 schema fields changed
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / data_status / properties
      Added value: +{}
    • changedOutput schema / properties / datasets / additionalProperties / properties / data_age_seconds / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedOutput schema / properties / datasets / properties
      Added value: +{}
  3. Changed2 schema fields changed
    • addedOutput schema / properties / data_status
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present only when freshness was asked for and the data service did not provide it, or answered from a cached copy.",
      +  "type": "object"
      +}
    • removedOutput schema / properties / freshness
      Removed value: -{
      -  "additionalProperties": {
      -    "additionalProperties": false,
      -    "properties": {
      -      "age": {
      -        "type": "string"
      -      },
      -      "latest_time": {
      -        "type": "string"
      -      },
      -      "max_age": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "enum": [
      -          "fresh",
      -          "stale",
      -          "missing"
      -        ],
      -        "type": "string"
      -      }
      -    },
      -    "type": "object"
      -  },
      -  "type": "object"
      -}
  4. Changed3 schema fields changed
    • removedInput schema / properties / location / minLength
      Removed value: -1
    • addedOutput schema / properties / note
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "location",
      -  "datasets"
      -]New value: +[
      +  "datasets"
      +]
  5. 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."
  6. 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"
      +}
  7. Changed8 schema fields changed
    • changedInput schema / properties / include_freshness / description
      Previous value: -"Include per-dataset data age and run times. Default true."New value: +"Include latest model run and data age where tracked. Default true."
    • addedOutput schema / properties / datasets / additionalProperties / additionalProperties
      Added value: +false
    • addedOutput schema / properties / datasets / additionalProperties / properties
      Added value: +{
      +  "data_age_seconds": {
      +    "anyOf": [
      +      {
      +        "type": "integer"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "domain": {
      +    "type": "string"
      +  },
      +  "freshness_status": {
      +    "enum": [
      +      "fresh",
      +      "stale",
      +      "missing"
      +    ],
      +    "type": "string"
      +  },
      +  "latest_run": {
      +    "type": "string"
      +  },
      +  "latest_time": {
      +    "type": "string"
      +  },
      +  "title": {
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / datasets / additionalProperties / type
      Added value: +"object"
    • addedOutput schema / properties / domain
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / freshness / additionalProperties / additionalProperties
      Added value: +false
    • addedOutput schema / properties / freshness / additionalProperties / properties
      Added value: +{
      +  "age": {
      +    "type": "string"
      +  },
      +  "latest_time": {
      +    "type": "string"
      +  },
      +  "max_age": {
      +    "type": "string"
      +  },
      +  "status": {
      +    "enum": [
      +      "fresh",
      +      "stale",
      +      "missing"
      +    ],
      +    "type": "string"
      +  }
      +}
    • addedOutput schema / properties / freshness / additionalProperties / type
      Added value: +"object"
  8. First observed

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already establish that this is read-only, idempotent, non-destructive, and open-world. The description adds meaningful behavioral context beyond those hints: behavior with versus without a location, inclusion of domain-specific and global grids, and freshness fields such as latest_run and data_age_seconds. It does not discuss auth or rate limits, but its behavioral disclosure is still strong.

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

Conciseness5/5

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

The description is front-loaded with the core purpose and scope, then adds freshness behavior, routing guidance, and a compact example. The density is appropriate for the amount of routing and freshness information an agent needs, with no filler sentences.

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?

Although this is a relatively complex discovery tool with freshness tracking, an output schema is present and annotations cover the safety profile. The description supplies the remaining decision-critical context: how location affects results, what freshness information appears, and which sibling tools consume the output.

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 100%, so the schema already documents the four parameters. The description nevertheless adds semantic meaning about what the absence of a location means (every public dataset) and how a point query scopes results to a domain plus global grids, which goes beyond the parameter descriptions alone.

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?

The description uses a specific verb ('Discover') with a precise resource ('gridded datasets'), and it defines the tool's scope as location-scoped or all-public when no location is supplied. It also names the sibling tools it feeds into (query_dataset) and where variable metadata lives (describe_dataset), so an agent can distinguish it from siblings without opening schemas.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool: to find dataset_id values for query_dataset or to check whether data is current. It also routes variable/unit discovery to describe_dataset, giving a clear alternative and avoiding misuse.

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.