Skip to main content
Glama

Render

render
Read-onlyIdempotent

Render a weather map or chart image for visual analysis: kind: map draws select layers (radar, satellite, outlooks, alerts and storm features overlaid) at location or bbox, and kind: sounding draws the nearest radiosonde as a skew-T and hodograph chart. With no select the map draws precipitation_hybrid (observed radar precipitation in the place's domain); at picks the closest frame, filter narrows feature overlays, area draws an outline, and search_data finds products. Example: {"kind": "map", "location": "Tulsa, OK", "select": ["nexrad_l3:TLX:N0S", "weather_alert"], "filter": ["event == Tornado Warning"], "zoom": 8}.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "kind": "<kind>"
    },
    "name": "render"
  }
}

Input Schema

NameRequiredDescriptionDefault
atNoMap: RFC 3339 instant with an offset; each layer draws its closest frame (default: latest). A forecast layer honors a future time.
areaNoMap: an outline over the layers, by reference or inline; with no location or bbox, the extent.
bboxNoMap extent [west, south, east, north] in degrees, instead of location and zoom.
kindYesmap: weather layers over a basemap; sounding: the nearest radiosonde as a skew-T and hodograph chart.
zoomNoMap zoom with location, 2-14: 5 regional, 8 metro, 10 city (default 7).
unitsNoSounding axis and indices: imperial (default, °F) or metric (°C); keys end in their unit.imperial
widthNoMap image width in pixels, 300-2000 (default 720).
filterNoMap: narrows feature overlays declaring the property, e.g. "event == Tornado Warning": `<property> <op> <value>`, op == != > >= < <= in (a comma list).
heightNoMap image height in pixels, 200-2000 (default 440).
selectNoMap layers, bottom to top (at most 6): a product id with a map, a standard_name (the finest-step layer reaching at), a catalog pick <family>:<pick>[:<pick>] over a layer's axes (satellite:13, satellite:water_vapor, satellite:2:goes_west, composite:reflectivity), a feature product (alerts, storm cells, reports) over the rasters, or one radar site as nexrad_l3:{SITE}:{KEY}, KEY N0B reflectivity, N0S storm-relative velocity (rotation), N0G base velocity, N0C correlation coefficient, N0X differential reflectivity. Default precipitation_hybrid.
locationNoMap center or sounding place: place text, ZIP or `lat,lon`; not with bbox.

Output Schema

NameRequiredDescriptionDefault
viewNo
unitsNo
layersNoMap: each layer drawn, with its valid time or why it was skipped.
indicesNoSounding: derived indices (CAPE, CIN, lifted index, PWAT, shear, LCL).
overlaysNoMap: each feature overlay, with the features it drew when read here (0: none matched in view).
productsNoMap: the weather products drawn.
resolvedNoMap: per standard_name in select, the layer drawn (finest step that reaches the time), its step (ISO duration) and how far its frames reach, an instant: ahead_to for a forecast (its last frame), back_to for an observed layer (its first frame; its newest is the latest observed), the finer layers passed over (passed: their ahead_to is before the time) and the other layers drawing the name here (others).
image_urlNo
station_idNo
level_countNo
observed_atNo
open_map_urlNoMap: the interactive map at this view.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / select / description
      Previous value: -"Map layers, bottom to top (at most 6): a product id with a map, a standard_name drawn in the place's domain, a catalog pick <family>:<pick>[:<pick>] over a map layer's axes (satellite:13, satellite:water_vapor, satellite:2:goes_west, composite:reflectivity), a feature product (alerts, storm cells, reports) drawn over the rasters, or one radar site as nexrad_l3:{SITE}:{KEY}, KEY N0B reflectivity, N0S storm-relative velocity (rotation), N0G base velocity, N0C correlation coefficient, N0X differential reflectivity. Default precipitation_hybrid."New value: +"Map layers, bottom to top (at most 6): a product id with a map, a standard_name (the finest-step layer reaching at), a catalog pick <family>:<pick>[:<pick>] over a layer's axes (satellite:13, satellite:water_vapor, satellite:2:goes_west, composite:reflectivity), a feature product (alerts, storm cells, reports) over the rasters, or one radar site as nexrad_l3:{SITE}:{KEY}, KEY N0B reflectivity, N0S storm-relative velocity (rotation), N0G base velocity, N0C correlation coefficient, N0X differential reflectivity. Default precipitation_hybrid."
    • addedOutput schema / properties / resolved
      Added value: +{
      +  "description": "Map: per standard_name in select, the layer drawn (finest step that reaches the time), its step (ISO duration) and how far its frames reach, an instant: ahead_to for a forecast (its last frame), back_to for an observed layer (its first frame; its newest is the latest observed), the finer layers passed over (passed: their ahead_to is before the time) and the other layers drawing the name here (others).",
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "ahead_to": {
      +        "type": "string"
      +      },
      +      "back_to": {
      +        "type": "string"
      +      },
      +      "others": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "ahead_to": {
      +              "type": "string"
      +            },
      +            "back_to": {
      +              "type": "string"
      +            },
      +            "product": {
      +              "type": "string"
      +            },
      +            "step": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "product"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "passed": {
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "ahead_to": {
      +              "type": "string"
      +            },
      +            "back_to": {
      +              "type": "string"
      +            },
      +            "product": {
      +              "type": "string"
      +            },
      +            "step": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "product"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "product": {
      +        "type": "string"
      +      },
      +      "select": {
      +        "type": "string"
      +      },
      +      "step": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "select",
      +      "product",
      +      "passed",
      +      "others"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  2. Added

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), so the description's job is added behavior, and it delivers: layer stacking order 'bottom to top (at most 6)', the `precipitation_hybrid` default, per-layer frame resolution for `at`, and the fallback where `area` becomes the map extent when no location/bbox is given. It doesn't discuss image size limits or failure modes for unknown product ids, keeping it from a 5.

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 distinction between map and sounding, then defaults, then a compact example. It is dense and long in the first sentence, but nearly every clause carries operational information (defaults, limits, alternative tool) rather than restating the name.

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

Completeness4/5

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

For an 11-parameter tool with nested `area` objects and an output schema, the description covers the mode split, defaults, layer limits, and a usage example, which is enough to call it correctly. Remaining gaps are marginal, since the output schema handles return values and the input schema handles per-parameter detail.

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 baseline is 3, but the description adds real meaning on top: a worked example object showing `select` + `filter` + `zoom` together, the clarification that `at` picks each layer's closest frame, and that `filter` narrows only overlays declaring the property. These connect parameters that the schema documents individually.

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 verb and resource ('Render a weather map or chart image for visual analysis') and immediately splits the two output modes, `kind: map` versus `kind: sounding`, describing what each draws. An agent can tell exactly what this produces without opening the schema.

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 rules: use `kind: map` for layers over a basemap, `kind: sounding` for the nearest radiosonde skew-T/hodograph, and it names `search_data` as the way to find product ids. It states the default when `select` is omitted. It does not explicitly say when to prefer a sibling like get_data for raw values instead of an image, so it stops short of full when-not guidance.

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.