Skip to main content
Glama

meteoswissClimateData

Get homogeneous climate measurement series from Switzerland's National Basic Climatic Network (NBCN). Returns temperature, precipitation, sunshine, radiation, wind, pressure, and climate indicators (frost days, summer days, heat days) going back decades.

29 climate stations + 46 precipitation stations with daily, monthly, and yearly resolution.

Use cases: "What are typical January temperatures in Zurich?", "How has precipitation changed in Basel over 50 years?", "How many heat days did Lugano have last year?"

Accepts station names ("Zurich", "Basel"), abbreviations ("SMA", "BAS"), or WGS84 coordinates.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of data rows to return (default 30)
stationNoClimate station name or abbreviation (e.g., "Zurich", "BAS", "Davos"). Part of the National Basic Climatic Network (29 climate + 46 precipitation stations). Provide either this or `coordinates`; if both are given, `coordinates` takes precedence.
end_dateNoEnd date filter (YYYY-MM-DD). Only rows on or before this date are returned.
resolutionNoData resolution: daily (temp min/max/mean), monthly (full climate summary), yearly (annual summary)monthly
start_dateNoStart date filter (YYYY-MM-DD). Only rows on or after this date are returned.
coordinatesNoWGS84 coordinates (alternative to station name)

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYesMeasurement rows, filtered and limited as requested
noteNoPresent only when `data` is empty because the requested date range fell outside the fetched series (e.g. a daily request older than the ~2-year `_recent` window). Explains why and suggests a fallback resolution.
sourceYesData attribution
stationYes
resolutionYesResolution the returned rows are in

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / end_date / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • addedInput schema / properties / start_date / pattern
      Added value: +"^\\d{4}-\\d{2}-\\d{2}$"
    • changedInput schema / properties / station / description
      Previous value: -"Climate station name or abbreviation (e.g., \"Zurich\", \"BAS\", \"Davos\"). Part of the National Basic Climatic Network (29 climate + 46 precipitation stations)."New value: +"Climate station name or abbreviation (e.g., \"Zurich\", \"BAS\", \"Davos\"). Part of the National Basic Climatic Network (29 climate + 46 precipitation stations). Provide either this or `coordinates`; if both are given, `coordinates` takes precedence."
    • addedInput schema / properties / station / maxLength
      Added value: +200
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "data": {
      +      "description": "Measurement rows, filtered and limited as requested",
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "date": {
      +            "description": "Measurement date (YYYY-MM-DD; first day of period for monthly/yearly)",
      +            "type": "string"
      +          },
      +          "frost_days": {
      +            "description": "Days with minimum below 0 °C (monthly/yearly)",
      +            "type": "number"
      +          },
      +          "heat_days": {
      +            "description": "Days with maximum of 30 °C or above (monthly/yearly)",
      +            "type": "number"
      +          },
      +          "ice_days": {
      +            "description": "Days with maximum below 0 °C (monthly/yearly)",
      +            "type": "number"
      +          },
      +          "precipitation": {
      +            "description": "Precipitation total, mm",
      +            "type": "number"
      +          },
      +          "pressure_hpa": {
      +            "description": "Air pressure, hPa",
      +            "type": "number"
      +          },
      +          "radiation_w_m2": {
      +            "description": "Global radiation, W/m²",
      +            "type": "number"
      +          },
      +          "rain_days": {
      +            "description": "Days with measurable precipitation (monthly/yearly)",
      +            "type": "number"
      +          },
      +          "summer_days": {
      +            "description": "Days with maximum of 25 °C or above (monthly/yearly)",
      +            "type": "number"
      +          },
      +          "sunshine_duration_min": {
      +            "description": "Sunshine duration, minutes",
      +            "type": "number"
      +          },
      +          "temperature_max": {
      +            "description": "Maximum temperature, °C",
      +            "type": "number"
      +          },
      +          "temperature_mean": {
      +            "description": "Mean temperature, °C",
      +            "type": "number"
      +          },
      +          "temperature_min": {
      +            "description": "Minimum temperature, °C",
      +            "type": "number"
      +          },
      +          "tropical_nights": {
      +            "description": "Nights with minimum of 20 °C or above (monthly/yearly)",
      +            "type": "number"
      +          },
      +          "wind_speed_m_s": {
      +            "description": "Wind speed, m/s",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "date"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "note": {
      +      "description": "Present only when `data` is empty because the requested date range fell outside the fetched series (e.g. a daily request older than the ~2-year `_recent` window). Explains why and suggests a fallback resolution.",
      +      "type": "string"
      +    },
      +    "resolution": {
      +      "description": "Resolution the returned rows are in",
      +      "enum": [
      +        "daily",
      +        "monthly",
      +        "yearly"
      +      ],
      +      "type": "string"
      +    },
      +    "source": {
      +      "description": "Data attribution",
      +      "type": "string"
      +    },
      +    "station": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "abbreviation": {
      +          "description": "Official station abbreviation (e.g. \"SMA\")",
      +          "type": "string"
      +        },
      +        "canton": {
      +          "description": "Canton abbreviation (e.g. \"ZH\")",
      +          "type": "string"
      +        },
      +        "coordinates": {
      +          "additionalProperties": false,
      +          "description": "WGS84 coordinates of the station",
      +          "properties": {
      +            "lat": {
      +              "type": "number"
      +            },
      +            "lon": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "lat",
      +            "lon"
      +          ],
      +          "type": "object"
      +        },
      +        "distance_km": {
      +          "description": "Distance from the queried location to this station, km (when resolved by proximity)",
      +          "type": "number"
      +        },
      +        "elevation": {
      +          "description": "Elevation in metres above sea level",
      +          "type": "number"
      +        },
      +        "name": {
      +          "description": "Climate station name",
      +          "type": "string"
      +        },
      +        "network": {
      +          "description": "NBCN network kind: \"nbcn\" (full climate series) or \"nbcn-precip\" (precipitation-only)",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "abbreviation",
      +        "elevation",
      +        "coordinates",
      +        "network"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "required": [
      +    "station",
      +    "resolution",
      +    "data",
      +    "source"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the data source (NBCN), the resolutions available (daily, monthly, yearly), the number and type of stations, and the accepted input formats. It falls short of mentioning potential error behavior, date range limitations (beyond 'going back decades'), or any data adjustments (e.g., 'homogeneous' implies homogenization but isn't explained). Overall, it is transparent about what the tool returns and how to invoke it.

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?

The description is moderately long but well-organized: it opens with a direct statement of purpose, then details network and resolution, provides use cases, and ends with input formats. Every sentence earns its place, and the structure helps the agent quickly grasp the tool's scope. It is slightly verbose in the station count detail, but that is useful context for selecting the tool.

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 tool's complexity (6 parameters, nested coordinates object, output schema), the description covers the essential aspects: data content, geographic scope, resolution options, station types, and input alternatives. It does not explain the output structure, but an output schema exists to handle that. It also omits specific date range limits or station list details, but the sibling 'meteoswissStations' likely covers that. Overall, it is sufficiently complete for an agent to understand when and how to invoke it.

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?

The input schema already describes all parameters with 100% coverage, giving a baseline of 3. The description adds value beyond the schema by providing concrete examples of valid station abbreviations ('SMA', 'BAS'), clarifying the meaning of 'homogeneous' (though not fully), summarizing resolution differences (daily temp min/max/mean, monthly full summary, yearly annual summary), and illustrating the precedence of coordinates over station. This extra semantic context justifies a score above baseline.

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's function: 'Get homogeneous climate measurement series from Switzerland's National Basic Climatic Network (NBCN)' and enumerates the types of data returned (temperature, precipitation, sunshine, radiation, wind, pressure, climate indicators). It is specific about the verb (Get), resource (climate series), and scope (Switzerland, NBCN), and it effectively distinguishes itself from sibling tools by focusing on historical climate data rather than current weather or forecasts.

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?

The description provides clear usage context through example use cases ('What are typical January temperatures in Zurich?') and input options (station names, abbreviations, coordinates). It does not explicitly state when not to use the tool or name alternative tools, but the context strongly implies this for historical climate queries versus current conditions. A clear exclusion statement would make it a 5.

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.