Skip to main content
Glama

Get Observation

get_observation
Read-onlyIdempotent

Latest observation from a specific NWS weather station. Returns temperature, humidity, wind, visibility, pressure, and present-weather codes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
station_idYes4-character NWS / ICAO station ID (e.g., "KSFO", "KJFK", "KDEN")

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
timestampNoObservation time ISO 8601
conditionsNoCurrent weather conditions
dewpoint_cNoDewpoint in Celsius
station_idYes4-char station ID (ICAO)
pressure_paNoBarometric pressure in Pa
heat_index_cNoHeat index in Celsius
humidity_pctNoRelative humidity percentage
visibility_mNoVisibility in meters
wind_chill_cNoWind chill in Celsius
temperature_cNoTemperature in Celsius
temperature_fNoTemperature in Fahrenheit
wind_gust_mphNoWind gust in mph
wind_speed_mphNoWind speed in mph
wind_direction_degNoWind direction in degrees
sea_level_pressure_paNoSea level pressure in Pa

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "station_id": "KSFO"
      +  },
      +  {
      +    "station_id": "KJFK"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "conditions": {
      +      "description": "Current weather conditions",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "dewpoint_c": {
      +      "description": "Dewpoint in Celsius",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "heat_index_c": {
      +      "description": "Heat index in Celsius",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "humidity_pct": {
      +      "description": "Relative humidity percentage",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "pressure_pa": {
      +      "description": "Barometric pressure in Pa",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "sea_level_pressure_pa": {
      +      "description": "Sea level pressure in Pa",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "station_id": {
      +      "description": "4-char station ID (ICAO)",
      +      "type": "string"
      +    },
      +    "temperature_c": {
      +      "description": "Temperature in Celsius",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "temperature_f": {
      +      "description": "Temperature in Fahrenheit",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "timestamp": {
      +      "description": "Observation time ISO 8601",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "visibility_m": {
      +      "description": "Visibility in meters",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "wind_chill_c": {
      +      "description": "Wind chill in Celsius",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "wind_direction_deg": {
      +      "description": "Wind direction in degrees",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "wind_gust_mph": {
      +      "description": "Wind gust in mph",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "wind_speed_mph": {
      +      "description": "Wind speed in mph",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    }
      +  },
      +  "required": [
      +    "station_id"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds value by specifying that it returns the latest observation and listing the fields returned, providing context beyond the annotations.

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 a single concise sentence that provides all necessary information without extraneous words. It is front-loaded with the key action and resource.

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?

Given the presence of an output schema, the description adequately explains what the tool returns. It specifies that it returns the latest observation and lists key data fields. No further details are needed.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter is well-documented in the input schema. The description does not add new information about the parameter beyond what the schema provides, meeting the baseline expectation.

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 clearly states the tool returns the latest observation from a specific NWS weather station, listing specific data elements like temperature, humidity, wind, visibility, pressure, and present-weather codes. This distinguishes it from sibling forecast tools such as get_forecast and get_hourly_forecast.

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

Usage Guidelines3/5

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

The description implies usage for current weather conditions by mentioning 'latest observation' but does not explicitly state when to use this tool versus alternatives like get_forecast or get_alerts. No exclusions or when-not-to-use guidance is provided.

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.

TDQS

A3.7/5.0
Disambiguation2/5

Many tools have overlapping purposes, e.g., multiple Polymarket analysis tools, several query tools (ask_pipeworx, deep_research, compare_entities, entity_profile) with unclear boundaries. Agents may struggle to choose the correct tool.

Naming Consistency3/5

While most names use snake_case, there is no consistent prefix pattern across subdomains (e.g., 'ask_', 'get_', 'polymarket_', 'pipeworx_'). Some names like 'bet_research' and 'deep_research' follow different conventions within the same domain.

Tool Count2/5

34 tools is excessive for a server named 'Nws' that primarily suggests weather. The set covers many unrelated domains (prediction markets, npm scanning, memory), making the scope unfocused and overloaded.

Completeness3/5

The server has decent coverage for prediction markets and company financials, but weather tools are limited to basic forecasts/alerts, lacking radar, climate, or historical data. Other domains like npm scanning seem tacked on.