Skip to main content
Glama
cmer81

Open-Meteo MCP Server

by cmer81

Open-Meteo MCP Server

Give any LLM accurate weather data: forecasts, history back to 1940, air quality, marine conditions, floods and climate projections.

npm version CI Docker image Node.js License

Features • Getting started • Tools • Remote deployment • Configuration • Development

A Model Context Protocol server for the free Open-Meteo APIs. Plug it into Claude Desktop, Claude Code or any MCP client, then ask in plain language:

What were the temperatures in London during January 2023?
Compare the ICON and GFS ensemble forecasts for Berlin over the next 5 days.
Give me the current European AQI, UV index and pollen levels in Paris.

No API key is needed: Open-Meteo is free for non-commercial use.

Features

  • 17 tools covering forecasts, ERA5 history, air quality, marine, flood, seasonal, ensemble and CMIP6 climate data, plus geocoding and elevation

  • Model-specific forecasts from DWD ICON, NOAA GFS, Météo-France, ECMWF, JMA, MET Norway and Environment Canada GEM

  • Built for LLMs: strict input schemas, server instructions that tell the model which tool answers which question, compact JSON responses capped at 25,000 characters

  • Two transports: stdio for local clients, stateless Streamable HTTP for remote deployments, with API key auth, rate limiting and origin checks

  • In-memory response cache with per-endpoint TTLs, so repeated questions don't hit Open-Meteo again

  • Self-hosting friendly: every Open-Meteo endpoint can point at your own instance

Related MCP server: Weather MCP Server

Getting started

You need Node.js 22 or later. Nothing to install beforehand: npx fetches the server on first run.

Claude Desktop

Add the server to your claude_desktop_config.json:

{
  "mcpServers": {
    "open-meteo": {
      "command": "npx",
      "args": ["-y", "-p", "open-meteo-mcp-server", "open-meteo-mcp-server"]
    }
  }
}

Claude Code

claude mcp add open-meteo -- npx -y -p open-meteo-mcp-server open-meteo-mcp-server

Other MCP clients

Any client that launches stdio servers works with the same command: npx -y -p open-meteo-mcp-server open-meteo-mcp-server. You can also install it globally with npm install -g open-meteo-mcp-server and run open-meteo-mcp-server.

TIP

Every data tool takes coordinates. Ask with a place name and the model will callgeocoding first to resolve it.

Tools

Category

Tool

What it answers

Core

weather_forecast

Forecast up to 16 days, picking the best model for the location. Recent past via past_days (up to 92)

weather_archive

Historical weather from 1940 to yesterday (ERA5 reanalysis)

air_quality

PM2.5, PM10, ozone, NO₂, pollen, European and US AQI, UV index

marine_weather

Wave height, period and direction, swell, sea surface temperature

geocoding

Place name or postal code to coordinates

elevation

Terrain height for coordinates

Models

dwd_icon_forecast

DWD ICON (Germany, high resolution over Europe)

gfs_forecast

NOAA GFS (global, high resolution over North America)

meteofrance_forecast

Météo-France AROME and ARPEGE

ecmwf_forecast

ECMWF IFS and AIFS

jma_forecast

Japan Meteorological Agency

metno_forecast

MET Norway (Nordic countries)

gem_forecast

Environment Canada GEM

Advanced

ensemble_forecast

Forecast uncertainty across ensemble members. models is required

seasonal_forecast

Outlook from a few weeks to about 7 months ahead

climate_projection

CMIP6 climate projections, 1950 to 2050

flood_forecast

River discharge from GloFAS

weather_forecast is the default choice. The model-specific tools are for when a particular model is asked for, or to compare models with one call each.

Responses

  • Times are GMT unless timezone is set. timezone: "auto" uses the location's local time.

  • null in a series means the model has no value for that time, not zero.

  • Responses over 25,000 characters have their hourly / daily / minutely_15 arrays shortened by the same ratio, keeping series aligned, and gain truncated: true with a truncation_message. Narrow the date range or the variables to get everything.

The full list of variables and parameters is in each tool's input schema and in the Open-Meteo documentation.

Remote deployment

Set TRANSPORT=http to serve MCP over Streamable HTTP at /mcp instead of stdio:

TRANSPORT=http HOST=0.0.0.0 PORT=3000 API_KEY=your-secret-key npx open-meteo-mcp-server

Clients then send the key with every request, as Authorization: Bearer <key> or X-API-Key: <key>. GET /health answers {"status":"ok"} without a key, for container probes.

The transport is stateless: each POST /mcp is handled on its own, no session ID is issued, and GET / DELETE /mcp answer 405. No tool keeps state between calls, so clients lose nothing.

IMPORTANT

The server binds to127.0.0.1 by default, so it is reachable only from the local machine. Set HOST=0.0.0.0 to accept remote connections, and set API_KEY whenever you do: without it, the server runs in open mode.

Docker

A prebuilt image is published to the GitHub Container Registry. It already binds to 0.0.0.0:

docker run -d --name open-meteo-mcp -p 3000:3000 \
  -e API_KEY=your-secret-key \
  ghcr.io/cmer81/open-meteo-mcp:latest

Tags follow the npm version without the v prefix: latest, 2.5.1, 2.5, 2.

The repository also has docker-compose.yml (prebuilt image) and docker-compose.dev.yml (builds from source). Copy .env.example to .env to configure them.

claude.ai traffic

Every claude.ai user reaches a remote server from Anthropic's outbound range 160.79.104.0/21. That range gets its own rate-limit pool (RATE_LIMIT_ANTHROPIC_RPM) so they don't all share one per-IP budget. Behind a reverse proxy, list the proxy in TRUSTED_PROXIES so the real client IP is seen.

Configuration

All variables are optional.

Server

Variable

Default

Description

TRANSPORT

stdio

http for Streamable HTTP

PORT

3000

HTTP port

HOST

127.0.0.1

Interface to bind. 0.0.0.0 accepts remote connections

OPEN_METEO_CACHE_MAX_BYTES

20000000

Response cache size, in bytes of serialized JSON. 0 disables it

The cache keeps forecasts and ensembles for 15 minutes, air quality and marine for 30 minutes, flood for 1 hour, seasonal for 6 hours, archive and climate for 24 hours, geocoding for 7 days and elevation for 30 days. Archive ranges ending within the last 5 days are kept for 1 hour only, since Open-Meteo is still backfilling them. Failed requests are never cached.

NOTE

The cache counts serialized JSON, but the parsed objects in memory take about 1.2 to 2.6 times as much. A full cache at the default size costs about 50 MB of heap.

HTTP security

Variable

Default

Description

API_KEY

unset (open)

Key required on every /mcp request

RATE_LIMIT_RPM

60

Requests per minute per client IP. IPv6 clients are grouped by /56

RATE_LIMIT_ANTHROPIC_RPM

600

Requests per minute shared by all claude.ai traffic

TRUSTED_PROXIES

unset

Comma-separated IPs or CIDRs whose X-Forwarded-For is trusted

ALLOWED_ORIGINS

empty

Comma-separated browser origins allowed. Any request with an unlisted Origin header gets 403 (DNS rebinding protection). Requests without one are unaffected

Custom Open-Meteo instance

Each endpoint can be redirected, for example to a self-hosted Open-Meteo:

Variable

Default

OPEN_METEO_API_URL

https://api.open-meteo.com

OPEN_METEO_ARCHIVE_API_URL

https://archive-api.open-meteo.com

OPEN_METEO_AIR_QUALITY_API_URL

https://air-quality-api.open-meteo.com

OPEN_METEO_MARINE_API_URL

https://marine-api.open-meteo.com

OPEN_METEO_SEASONAL_API_URL

https://seasonal-api.open-meteo.com

OPEN_METEO_ENSEMBLE_API_URL

https://ensemble-api.open-meteo.com

OPEN_METEO_GEOCODING_API_URL

https://geocoding-api.open-meteo.com

OPEN_METEO_FLOOD_API_URL

https://flood-api.open-meteo.com

OPEN_METEO_CLIMATE_API_URL

https://climate-api.open-meteo.com

In Claude Desktop, pass them through the env key of the server entry.

Skills

The skills/ directory holds two SKILL.md guides that help an assistant pick the right tool and parameters:

Skill

Best for

open-meteo

Everyday weather: forecasts, history, air quality, marine, elevation

open-meteo-advanced

Specific models, ensemble uncertainty, seasonal outlooks, climate projections

For Claude Code, copy them to ~/.claude/skills/:

cp -r skills/open-meteo skills/open-meteo-advanced ~/.claude/skills/

For Claude Desktop, upload the relevant SKILL.md into the conversation.

Development

git clone https://github.com/cmer81/open-meteo-mcp.git
cd open-meteo-mcp
npm install
npm run build

Command

Description

npm run dev / npm run dev:http

Run from source with auto-reload (stdio / HTTP)

npm test

Unit tests (network mocked)

npm run typecheck / npm run lint

Type checking and Biome linting

npm run smoke

Calls all 17 tools against the live API through a real MCP client. Needs a prior build

npm run eval

LLM-usability benchmark, see below

To point Claude Desktop at your local build, use "command": "node" with "args": ["/path/to/open-meteo-mcp/dist/index.js"].

Evaluations

evals/evaluation.xml checks whether an LLM given only this server's tools can answer realistic questions. Its 14 questions rely on stable data (ERA5 archive, CMIP6 projections, geocoding, elevation), so the expected answers don't drift.

pip install -r evals/scripts/requirements.txt
export ANTHROPIC_API_KEY=...        # or put it in .env

npm run build && npm run eval
npm run eval -- --no-server-instructions   # baseline without the server instructions
WARNING

The evaluation calls the real Anthropic API for every question and consumes credits. It is a manual check, not part of CI.

Contributions are welcome: see CONTRIBUTING.md.

Available Tools

17 tools
air_qualityAir QualityB
Read-onlyIdempotent

Get air quality forecast data including PM2.5, PM10, ozone, nitrogen dioxide, pollen, European/US AQI indices, UV index and other pollutants.

ParametersJSON Schema
NameRequiredDescriptionDefault
hourlyNo
currentNoVariables to return for the current time.
domainsNo"cams_europe": higher resolution, Europe only. "cams_global": worldwide, coarser. "auto" (default) uses Europe where available.
end_dateNoDate in YYYY-MM-DD format.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
start_dateNoDate in YYYY-MM-DD format.
timeformatNoiso8601
forecast_daysNoDays to forecast, starting today.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds the pollutant variable inventory, which is useful, but says nothing about forecast horizon limits, spatial coverage of the domains, or default behavior.

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?

A single front-loaded sentence that opens with the core verb and resource before the pollutant list. No filler, though the exhaustive enumeration is slightly longer than needed to convey the purpose.

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

Completeness3/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 64% schema coverage and no output schema, the description covers the 'what data' dimension acceptably but leaves temporal controls (hourly vs current, forecast_days, past_days, start/end_date) and domain trade-offs unexplained beyond the schema text.

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 64%, so the schema documents domains, dates, timezone, past_days and forecast_days itself. The description's pollutant list largely duplicates the hourly/current enums and adds no meaning about key distinctions such as hourly vs current, timeformat, or domain selection.

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

Purpose4/5

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

States a specific verb ('Get') and resource ('air quality forecast data') and enumerates the returned pollutant categories (PM2.5, PM10, ozone, NO2, pollen, AQI, UV). This clearly separates it from the weather-forecast siblings, though it never names an alternative to contrast against.

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

Usage Guidelines2/5

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

No guidance on when to choose this tool over weather_forecast or seasonal_forecast, no prerequisites, and no exclusions. The agent must infer scope entirely from the resource name.

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

climate_projectionClimate ProjectionC
Read-onlyIdempotent

Get climate change projections from CMIP6 models for different warming scenarios.

ParametersJSON Schema
NameRequiredDescriptionDefault
dailyNo
modelsNoOmit to use the default model.
end_dateYesDate in YYYY-MM-DD format.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
start_dateYesDate in YYYY-MM-DD format.
timeformatNoiso8601
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm
disable_bias_correctionNoReturn raw model output instead of bias-corrected values.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description adds only that outputs come from CMIP6 models, and it omits notable behaviors such as the default bias correction (and how disable_bias_correction changes results), the historical-vs-projection date range limits, and any cost or rate considerations.

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?

A single front-loaded sentence with no filler, so it is efficiently structured. It is under-specified rather than padded, which is a completeness problem rather than a conciseness one.

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

Completeness2/5

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

For a 13-parameter tool with no output schema and 46% schema coverage, the description is far too thin: it does not explain valid projection time horizons, what the returned data looks like, or how scenario framing maps to the provided parameters. An agent would need to guess at much of the invocation behavior.

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

Parameters2/5

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

With 13 parameters and only 46% schema description coverage, the description should carry real weight, but it only loosely gestures at the models parameter ('CMIP6 models') and introduces an unbacked 'warming scenarios' concept. The daily variable list, unit options, timezone, cell_selection, and bias-correction flag receive no clarification beyond the schema.

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

Purpose4/5

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

The description names a specific verb ('Get'), resource ('climate change projections'), and source ('CMIP6 models'), which clearly separates it from the near-term weather-forecast siblings like gfs_forecast or weather_forecast. It falls short of a 5 because it does not explicitly name any sibling it complements or excludes.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this over seasonal_forecast or the various forecast tools, nor any prerequisites for date ranges. The mention of 'different warming scenarios' is unhelpful because no scenario parameter exists in the schema, so the agent receives no actionable selection criteria.

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

dwd_icon_forecastDWD ICON ForecastA
Read-onlyIdempotent

Get weather forecast from German DWD ICON model. IMPORTANT: Specify exactly one DWD model in the models parameter (e.g., "dwd_icon_global") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNo
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
end_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
start_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
timeformatNoiso8601
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
current_weatherNoLegacy current-conditions summary; prefer `current`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds a non-obvious behavioral constraint: only one model per request is accepted, and multi-model comparison requires parallel calls. This is real value 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?

Three short sentences, all front-loaded and purposeful. The critical constraint is emphasized with 'IMPORTANT:' and nothing is wasted or repeated from the schema.

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

Completeness3/5

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

For a 24-parameter forecast tool with no output schema, annotations cover the safety profile and the description covers the key invocation constraint. However, it gives no orientation around the tool's geographic/resolution scope relative to siblings, nor the relationship between daily/hourly/minutely_15 variables, leaving the agent to infer the bulk of usage from the schema.

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 63%, above the baseline threshold, and the schema itself documents most parameters. The description clarifies the critical `models` parameter (exactly one value, with an example), but does not explain the many other forecast parameters, leaving that entirely to the schema.

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

Purpose4/5

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

States a specific verb ('Get'), resource ('weather forecast'), and provider ('German DWD ICON model'), which clearly distinguishes this tool from the many sibling provider tools like gfs_forecast and ecmwf_forecast. It is clear what the tool does, though it doesn't explicitly rank DWD against its siblings.

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?

Provides concrete usage guidance: exactly one model per request, and for multi-model comparison make one parallel call per model using the provider-specific tool. It stops short of saying when the DWD model is the appropriate choice over siblings, but the invocation guidance is unusually explicit.

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

ecmwf_forecastECMWF ForecastA
Read-onlyIdempotent

Get weather forecast from ECMWF models via the dedicated /v1/ecmwf endpoint. IMPORTANT: Specify exactly one model in the models parameter — only one model per request is supported. Valid model IDs: "ecmwf_ifs" (IFS HRES 9 km), "ecmwf_ifs04" (IFS open-data 0.4°), "ecmwf_ifs025" (IFS open-data 0.25°, the default), "ecmwf_aifs025" and "ecmwf_aifs025_single" (AIFS machine-learning model, ensemble mean and single run), "ecmwf_ifs_europe_ensemble_mean" and "ecmwf_aifs_europe_ensemble_mean" (Europe-only ensemble means), "best_match". Model IDs with an underscore before the resolution digits (e.g. "ecmwf_ifs_025") are not valid. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNo
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
end_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
start_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
timeformatNoiso8601
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
current_weatherNoLegacy current-conditions summary; prefer `current`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds real behavioral constraints beyond that: the single-model-per-request limit, the default model (ecmwf_ifs025), and the invalid-ID format warning — all non-obvious operational rules.

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-loads the endpoint and the critical single-model constraint in the first two sentences, then supplies the model catalog. The model enumeration is verbose but each entry carries distinct information, so little is wasted.

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 a 24-parameter tool with no output schema, the description covers the highest-risk delimiter (the models parameter) thoroughly and gives the request-shape rule. The remaining gaps in date/hour/unit parameters are largely handled by schema descriptions (63% coverage), so the definition is adequate to call correctly.

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 63%, and the description materially compensates for the models parameter by glossing each valid model ID (IFS HRES 9 km, open-data resolutions, AIFS ML variants, Europe-only ensemble means), which the bare enum does not. It also flags the invalid underscore-before-digits pattern, but adds nothing for the many time/unit/date parameters.

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?

Names a specific verb+resource (get weather forecast) and pins the provider source (ECMWF models via the /v1/ecmwf endpoint), which cleanly distinguishes it from the sibling provider tools gfs_forecast, dwd_icon_forecast, meteofrance_forecast, etc.

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 usage rules: exactly one model per request, and for multi-model comparison 'make one parallel tool call per model using the appropriate provider-specific tool'. This routes the agent without needing to inspect siblings, though it never states when to prefer the generic weather_forecast or ensemble_forecast instead.

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

elevationElevationA
Read-onlyIdempotent

Get elevation data for given coordinates using digital elevation models. Supports batch lookups: pass arrays of the same length for latitude and longitude to query multiple points in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the safety profile. The description usefully adds the batch-query behavior and the equal-length array constraint, but omits units (meters?), coordinate datum, data source resolution, and accuracy expectations.

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?

Two tight sentences, front-loaded with purpose before the batch detail. No filler or redundancy; every clause carries information.

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

Completeness3/5

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

For a simple two-parameter read tool with annotations covering safety, this is mostly sufficient. It is missing the return shape (scalar vs. array of elevations) and units, which for an elevation lookup is a meaningful gap against no output schema.

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 0%, so the description carries the burden. It does explain the array form and the equal-length requirement for latitude/longitude, which justifies the anyOf schema. However, it adds nothing about units, decimal-degree format, or coordinate ordering, so it only partially compensates.

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

Purpose4/5

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

The description states a specific verb (Get) and resource (elevation data for given coordinates) and notes the underlying method (digital elevation models), so the tool's function is unambiguous. It does not explicitly distinguish itself from the many weather siblings, though 'elevation' is self-evidently distinct from forecast tools.

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 explains how to use the parameters for batch lookups, which is genuine usage guidance, but it never states when to prefer this tool over alternatives or any prerequisites/exclusions. Usage is implied rather than framed as when/when-not.

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

ensemble_forecastEnsemble ForecastB
Read-onlyIdempotent

Get ensemble forecasts showing forecast uncertainty with multiple model runs. models is required: the ensemble API has no default model (e.g. "icon_seamless_eps", "ncep_gefs_seamless", "ecmwf_ifs025_ensemble").

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsYesRequired: the ensemble API has no default model. Use e.g. "icon_seamless_eps" or "ncep_gefs_seamless".
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
end_dateNoDate in YYYY-MM-DD format.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
elevationNoElevation in metres to adjust the values to; defaults to the terrain height at the point.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
timeformatNoiso8601
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm
temporal_resolutionNo"native" keeps each model's own time step; "hourly", "hourly_3" and "hourly_6" resample to 1, 3 or 6 hours.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds one genuine behavioral fact — the no-default-model requirement — but says nothing about how uncertainty is represented in the response (members, percentiles, mean) or any rate/quota limits.

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?

Three tight sentences, front-loaded with purpose before the required-parameter caveat. No padding, though the inline model examples are somewhat redundant with the schema enum.

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

Completeness3/5

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

For a 21-parameter tool with no output schema and only 62% parameter description coverage, the description covers just the headline requirement. It does not explain that ensemble output differs in shape from deterministic forecasts, which is the main thing an agent needs to anticipate when invoking it.

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 62%, and the description's only parameter content is the `models` requirement, which is also stated in the schema's own models description. It adds example model IDs, but largely duplicates structured data and leaves other 20-parameter semantics to the schema.

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?

Specific verb+resource ('Get ensemble forecasts') with a distinguishing scope clause: 'showing forecast uncertainty with multiple model runs.' This clearly separates it from the deterministic siblings like ecmwf_forecast, gfs_forecast and dwd_icon_forecast.

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

Usage Guidelines2/5

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

The description notes that `models` is required because the API has no default, which is a useful usage constraint, but it never says when to prefer this tool over the 16 sibling forecast tools or when ensemble output is warranted versus a deterministic run.

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

flood_forecastFlood ForecastC
Read-onlyIdempotent

Get river discharge and flood forecasts from GloFAS (Global Flood Awareness System).

ParametersJSON Schema
NameRequiredDescriptionDefault
dailyNo
modelsNoOmit to use the default model.
end_dateNoDate in YYYY-MM-DD format.
ensembleNoReturn all 50 ensemble members instead of a single series.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
start_dateNoDate in YYYY-MM-DD format.
timeformatNoiso8601
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.nearest

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds essentially nothing beyond that: it does not disclose the ensemble-vs-single-series behavior, model variants, global coverage limits, or forecast horizon, all of which are behaviorally relevant.

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?

A single front-loaded sentence with no filler or repetition. It is efficient, though the brevity is also what leaves the other dimensions thin.

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

Completeness2/5

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

For a 12-parameter tool with no output schema, the description is far too thin. An agent has no signal about defaults, ensemble output shape, temporal ranges, or how this differs from the other forecast tools, so it is under-specified relative to the tool's complexity.

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

Parameters2/5

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

Twelve parameters with only 67% schema description coverage, and the description explains none of them. Key semantics like what ensemble=true returns (50 members) or which models are available are left entirely to the schema, so the description does nothing to close the remaining coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Get river discharge and flood forecasts') and names the source system GloFAS, which cleanly distinguishes it from the weather/air-quality/elevation siblings. It doesn't explicitly call out the sibling contrast, but the resource is unique enough in this tool set.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as weather_forecast or the model-specific forecast siblings. The agent is left to infer that this is the flood/river-discharge option on its own.

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

gem_forecastGEM ForecastA
Read-onlyIdempotent

Get weather forecast from Canadian Meteorological Centre (GEM) models. IMPORTANT: Specify exactly one GEM model in the models parameter (e.g., "gem_global" or "gem_regional") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNo
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
end_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
start_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
timeformatNoiso8601
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
current_weatherNoLegacy current-conditions summary; prefer `current`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds a genuine behavioral constraint beyond annotations: only one model may be requested at a time, with a prescribed workaround, which prevents a common failure mode.

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?

Two tight sentences; the core purpose is front-loaded and the critical constraint is flagged inline without preamble. Every clause carries an actionable instruction, with no repetition of schema or annotation content.

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 a 24-parameter tool with no output schema, the description covers the highest-risk pitfall (model selection) and correctly does not need to explain return values. It is adequate, though it offers no orientation on the time-window parameters or variable-group arrays, which is the remaining gap.

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 63%, so the schema carries most of the parameter burden. The description adds meaningful semantics for `models` (single-value constraint plus examples) but says nothing about the other 23 parameters, notably the time-range parameters (start_date/end_date vs start_hour/end_hour vs forecast_days/forecast_hours) where a short orientation would add the most value.

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?

States a specific verb and resource ('Get weather forecast') and qualifies it with the provider ('Canadian Meteorological Centre (GEM) models'), which cleanly disambiguates it from siblings like gfs_forecast, ecmwf_forecast, and jma_forecast. An agent can identify the tool 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 an explicit operational rule for the `models` parameter (exactly one model per request) and names the alternative workflow for multi-model comparison (parallel calls to provider-specific tools). It does not say when GEM is preferable over GFS/ECMWF/etc., so the provider-selection decision is still left to inference.

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

geocodingGeocodingA
Read-onlyIdempotent

Search for locations worldwide by place name or postal code. Returns geographic coordinates (latitude and longitude) and detailed location information. Use this tool when you need to convert a location name (e.g., "Paris", "New York") into precise coordinates (latitude/longitude) that are required by other tools. This is essential when you have a location name but need coordinates for data fetching tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPlace name or postal code to search for.
countNoMaximum number of results.
formatNojson
languageNoLanguage of the returned place names (e.g. "fr"); default English.
countryCodeNoOnly return places in this country.

TDQS

A4.1/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, openWorld, non-destructive), and the description adds genuinely new information: worldwide scope, postal-code support, and the shape of the return value. It omits rate limits, auth requirements, and result-volume behavior, but goes well beyond restating 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.

Conciseness4/5

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

Three short sentences, front-loaded with the verb and the returned data. The final sentence largely repeats the preceding one ('when you have a location name but need coordinates'), which is mild redundancy but not damaging.

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?

Without an output schema the description carries the return-value burden and does so at a summary level (lat/long plus detailed location info). For a 5-parameter, mostly-documented read tool whose annotations cover safety, that is nearly complete; only return details and pagination/count behavior are left implicit.

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 80%, so the schema already explains name, count, language and countryCode; the description only restates the name/postal-code input. It adds no syntax or formatting guidance for the undocumented 'format' enum, so baseline 3 is appropriate.

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?

States a specific verb and resource (search for locations by place name or postal code) and names the output (coordinates plus detailed location info). This makes it immediately distinguishable from all weather/forecast siblings without opening any 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?

Explicitly says when to use it: 'when you need to convert a location name ... into precise coordinates ... required by other tools,' and ties it to the data-fetching workflow. It gives no explicit exclusions or alternatives, but the upstream role is unmistakable.

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

gfs_forecastGFS ForecastA
Read-onlyIdempotent

Get weather forecast from US NOAA GFS model. IMPORTANT: Specify exactly one GFS model in the models parameter (e.g., "ncep_gfs_global") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNo
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
end_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
start_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
timeformatNoiso8601
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
current_weatherNoLegacy current-conditions summary; prefer `current`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint false, openWorldHint true), so the description need not restate them. It adds the one-model-per-request limitation, but says nothing about rate limits, data coverage/resolution, or availability caveats for GFS specifically. Adequate but not rich.

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?

Two sentences, zero filler, with the most failure-prone constraint (one model per request) flagged up front. Nothing to trim.

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

Completeness3/5

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

For a 24-parameter tool with no output schema, the description covers only the model-selection pitfall and omits temporal parameters, units, and the 15-minute/hourly/daily distinctions. The schema descriptions carry most of that load, so it is minimally adequate rather than complete.

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?

With 24 parameters and only 63% schema description coverage, the description must compensate, yet it only addresses the `models` parameter. That guidance is valuable (the enum mixes several non-GFS NCEP models), but the other undocumented parameters receive no added meaning. Baseline 3 for partial compensation.

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

Purpose4/5

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

The description states a specific verb and resource (get weather forecast) plus the exact data source (US NOAA GFS model), which clearly separates it from provider siblings like ecmwf_forecast or jma_forecast. It stops short of explicitly naming which sibling to use for other providers, so it is clear but not maximally differentiating.

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?

It gives concrete usage guidance: pick exactly one model, and for multi-model comparison issue one parallel call per model via the provider-specific tool. That is actionable routing advice. It does not say when GFS is preferable to the other forecast tools, which is the remaining gap.

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

jma_forecastJMA ForecastA
Read-onlyIdempotent

Get weather forecast from Japan Meteorological Agency (JMA) models. IMPORTANT: Specify exactly one JMA model in the models parameter (e.g., "jma_msm" or "jma_gsm") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNo
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
end_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
start_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
timeformatNoiso8601
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
current_weatherNoLegacy current-conditions summary; prefer `current`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, open-world, and non-destructive. The description adds a key operational constraint beyond annotations: only one model per request is supported, and multi-model requires parallel calls. It doesn't discuss rate limits or data latency, but the core behavioral limit is disclosed.

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?

Three sentences, front-loaded with purpose and the critical constraint. No redundant or vague wording; every sentence earns its place.

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

Completeness3/5

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

For a 24-parameter forecast tool with no output schema, the description covers the unique single-model constraint but omits crucial context: which JMA model variant to choose for a given use case, the regional coverage of JMA models, and default behaviors (e.g., timezone). The schema covers many parameters, but the description leaves important selection guidance to inference.

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 description coverage is 63% (mid-range), and the description adds critical meaning for the `models` parameter: it must be a single JMA model (e.g., jma_msm, jma_gsm), which the schema's string type alone does not convey. It provides no additional semantics for the other 23 parameters, but the most important constraint is captured.

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?

States a specific verb 'Get weather forecast' and resource 'JMA models', clearly identifying the provider. Distinguishes from sibling provider-specific forecasts by naming JMA and the models parameter, and routes multi-model comparison to provider-specific tools.

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?

Explicitly instructs to specify exactly one model per request and how to handle multi-model comparison (one parallel call per model using the appropriate provider-specific tool). It doesn't state when to prefer JMA over other providers (e.g., geographic coverage), but the provider-specific context makes the intended use clear.

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

marine_weatherMarine WeatherC
Read-onlyIdempotent

Get marine weather forecast including wave height, wave period, wave direction and sea surface temperature.

ParametersJSON Schema
NameRequiredDescriptionDefault
dailyNo
hourlyNo
modelsNoOmit to use the default model.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
start_dateNoDate in YYYY-MM-DD format.
timeformatNoiso8601
length_unitNo
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
wind_speed_unitNokmh
temperature_unitNocelsius

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only the variable list, not model selection behavior, forecast horizon limits, or upstream data source semantics that would matter for a multi-model tool.

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?

A single tight sentence with the output content front-loaded and no filler. It is efficient, though arguably too sparse for a tool with 17 parameters.

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

Completeness2/5

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

For a 17-parameter tool with 6 enums, no output schema, and only 53% schema coverage, the description is far too thin. It never mentions the model choice, date-window controls, timezone/units, or resolution options that an agent must decide on before calling.

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

Parameters2/5

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

Schema description coverage is 53%, so half the 17 parameters are undocumented anywhere. The description names a few variables that map to the daily/hourly enums, but says nothing about models, date ranges, cell_selection near coastlines, units, or minutely_15, all of which materially affect results.

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

Purpose4/5

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

States a specific verb (Get) and resource (marine weather forecast) and enumerates the core outputs (wave height, period, direction, sea surface temperature). It does not distinguish itself from generic siblings like weather_forecast or gfs_forecast, so it falls short of a 5.

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

Usage Guidelines2/5

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

No guidance on when to pick this over weather_forecast, gfs_forecast, or the other model-specific forecast tools that also cover ocean/marine variables. The marine framing implies usage but nothing is stated explicitly.

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

meteofrance_forecastMétéo-France ForecastA
Read-onlyIdempotent

Get weather forecast from French Météo-France models. IMPORTANT: Specify exactly one Météo-France model in the models parameter (e.g., "meteofrance_arome_france" or "meteofrance_arpege_europe") — only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNo
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
end_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
start_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
timeformatNoiso8601
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
current_weatherNoLegacy current-conditions summary; prefer `current`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds important behavioral context beyond annotations: only one model can be specified per request, and multi-model comparison requires separate parallel calls. No contradictions.

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?

Three tightly written sentences, front-loaded with the core purpose and immediately followed by the critical constraint flagged with 'IMPORTANT'. Every sentence earns its place with no redundancy.

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 24 parameters, no output schema, and a complex provider-specific forecast API, the description covers purpose, the key model constraint, and multi-model strategy. It omits explicit mention of required latitude/longitude and time-range options, but those are well-documented in the schema, so the description is adequate for correct invocation.

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 63% with many parameters described in-schema, so the schema carries substantial documentation. The description adds critical semantic meaning for the `models` parameter (exactly one model allowed, with examples), which is not conveyed by the enum alone. Other parameters rely on schema descriptions, which is reasonable given their breadth.

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?

States a specific verb ('Get weather forecast') and resource ('from French Météo-France models'), naming the provider explicitly. This distinguishes it from sibling provider-specific tools like gfs_forecast and ecmwf_forecast without needing to open 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?

Provides an explicit rule: specify exactly one Météo-France model per request, and for multi-model comparison make parallel calls using provider-specific tools. It does not explicitly say when to prefer this over the generic weather_forecast tool, but the provider naming and model constraint make the context clear.

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

metno_forecastMET Norway ForecastA
Read-onlyIdempotent

Get weather forecast from Norwegian Meteorological Institute models. The models parameter is optional for this tool — omit it to use the default Met.no model. If specified, use canonical names such as "metno_nordic" or "metno_seamless". Only one model per request is supported. For multi-model comparison, make one parallel tool call per model using the appropriate provider-specific tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNo
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
end_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
start_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
timeformatNoiso8601
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
current_weatherNoLegacy current-conditions summary; prefer `current`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: the default model when the parameter is omitted and the hard constraint of one model per request.

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 purpose, then immediately the model-selection guidance; every sentence carries information. Slightly more verbose than strictly necessary around the parallel-call instruction, but no filler.

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

Completeness3/5

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

For a 24-parameter, no-output-schema tool, the description covers model selection but says nothing about how the time-series variable groups (hourly/daily/current/minutely_15) must be requested or how the default-model choice affects available variables and geographic coverage (Nordic vs seamless). Adequate but leaves meaningful gaps.

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 coverage is 63% across 24 parameters, and the description only elaborates on `models` (optional, canonical names, single value). That is the most ambiguous parameter and it is handled well, but the remaining sparsely documented parameters receive no compensating explanation.

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?

States a concrete verb and resource (get weather forecast) and pins the data source (Norwegian Meteorological Institute models), which cleanly separates it from the many sibling provider tools like gfs_forecast and ecmwf_forecast.

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?

Explicitly says the `models` parameter may be omitted, names valid canonical values, and prescribes the multi-model workaround (one parallel call per model via the provider-specific tool). It does not say when to prefer this provider over another beyond the implicit provider match, so it stops short of a full when/when-not rubric.

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

seasonal_forecastSeasonal ForecastB
Read-onlyIdempotent

Get long-range seasonal forecasts for temperature and precipitation up to ~7 months ahead.

ParametersJSON Schema
NameRequiredDescriptionDefault
dailyNo
hourlyNo
modelsNoOmit to use the default model.
weeklyNoWeekly means and anomalies against climatology.
monthlyNoMonthly means and anomalies against climatology.
end_dateNoDate in YYYY-MM-DD format.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
start_dateNoDate in YYYY-MM-DD format.
timeformatNoiso8601
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds the useful time-horizon constraint (~7 months), which is not in the annotations. However, it omits return format, pagination, and the fact that multiple temporal resolutions (daily, hourly, weekly, monthly) are available.

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?

A single front-loaded sentence with no filler. Every word earns its place, and the key temporal scope is stated immediately.

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

Completeness2/5

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

For a 17-parameter tool supporting four different forecasting resolutions and multiple models, a one-sentence description is insufficient. It fails to mention the availability of daily/hourly/weekly/monthly outputs or the model selection parameter, leaving the agent with significant uncertainty about how to invoke it correctly. No output schema exists to fill the gap.

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

Parameters2/5

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

Schema description coverage is only 53%, and the description adds no parameter-level meaning. Complex parameters like daily, hourly, weekly, and monthly arrays have no description in either the schema or the description, leaving their purpose and valid combinations unclear. The description does not compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb ('Get'), resource ('long-range seasonal forecasts'), and temporal scope ('up to ~7 months ahead'). The term 'seasonal' differentiates it from shorter-range siblings like gfs_forecast or weather_forecast without naming them explicitly. No direct sibling comparison, so not a 5.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as ecmwf_forecast, climate_projection, or ensemble_forecast. There are no exclusions or prerequisites mentioned. It merely states what the tool returns.

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

weather_archiveWeather Archive (Historical)B
Read-onlyIdempotent

Get historical weather data from ERA5 reanalysis (1940-present) for specific coordinates and date range.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNoOmit to use the default model.
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
end_dateYesDate in YYYY-MM-DD format.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
elevationNoElevation in metres to adjust the values to; defaults to the terrain height at the point.
longitudeYes
start_dateYesDate in YYYY-MM-DD format.
timeformatNoiso8601
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds the ERA5 source and temporal coverage, but says nothing about data volume, rate limits, or response size for what is a potentially huge historical pull.

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?

A single efficient sentence that front-loads the verb, source, and scope. Nothing is wasted.

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

Completeness3/5

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

For a 16-parameter historical API with no output schema, the description is thin: it omits any hint about the daily/hourly variable selection, unit controls, or the large payloads such queries return. It is adequate to identify the tool but insufficient to call it well without reading the schema.

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

Parameters2/5

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

With 16 parameters and only 50% schema description coverage, several params (latitude, longitude, timeformat, temperature_unit) have no textual explanation anywhere. The description provides zero parameter guidance, so it fails to compensate for the coverage gap it should have filled.

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

Purpose4/5

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

States a specific verb (Get), resource (historical weather data), data source (ERA5 reanalysis), range (1940-present), and required inputs (coordinates and date range). This clearly separates it from forecast siblings, but it never names an alternative, so differentiation is left to inference rather than explicit.

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 '1940-present' and 'historical' framing implies this is the past-data tool versus the many *_forecast siblings, but there is no explicit when-to-use, when-not-to-use, or named alternative. Usage is implied rather than guided.

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

weather_forecastWeather ForecastA
Read-onlyIdempotent

Get weather forecast data for coordinates using Open-Meteo API. Supports hourly and daily data with various weather variables. When no models parameter is provided, the API automatically selects the best model for the given location (recommended). Only one model per request is supported — for multi-model comparison, use provider-specific tools with parallel calls.

ParametersJSON Schema
NameRequiredDescriptionDefault
tiltNoSolar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.
dailyNo
hourlyNo
modelsNo
azimuthNoSolar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.
currentNoVariables to return for the current time.
end_dateNoDate in YYYY-MM-DD format.
end_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
latitudeYes
timezoneNoIANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT.
longitudeYes
past_daysNoDays before today to include, in addition to the forecast.
past_hoursNoHours before now to include; alternative to `past_days`.
start_dateNoDate in YYYY-MM-DD format.
start_hourNoTimestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.
timeformatNoiso8601
minutely_15NoVariables to return at 15-minute resolution.
forecast_daysNoDays to forecast, starting today.
cell_selectionNoGrid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell.
forecast_hoursNoHours to forecast; alternative to `forecast_days`.
current_weatherNoLegacy current-conditions summary; prefer `current`.
wind_speed_unitNokmh
temperature_unitNocelsius
precipitation_unitNomm

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: automatic best-model selection when `models` is omitted and the constraint that only one model per request is supported. It does not discuss rate limits or return format, but the annotations carry most of the burden.

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 three tight sentences. It front-loads the core purpose and then moves to the key model-selection guidance, with zero filler or repetition. Every sentence earns its place.

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

Completeness3/5

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

For a complex tool with 24 parameters, 2 required, and no output schema, the description leaves notable gaps. It does not describe the return format or how to interpret the output, and it provides little guidance on the many parameters like `tilt`, `azimuth`, date ranges, or units beyond what the schema already states. It handles model selection well but is not fully complete for an agent to invoke it confidently across all use cases.

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 63%, which is moderate. The description only elaborates on the `models` parameter behavior (auto-selection and single-model constraint). For other parameters, it adds no semantics beyond what the schema already provides or omits. Given the moderate coverage gap, the description does not fully compensate, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb and resource: 'Get weather forecast data for coordinates using Open-Meteo API.' It mentions supports hourly and daily data with various variables, which is specific. However, it does not explicitly differentiate from the numerous provider-specific forecast siblings (e.g., gfs_forecast, ecmwf_forecast); the hint about 'provider-specific tools' implies this is a general wrapper, but that distinction is left implicit.

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?

It gives explicit guidance on model selection: 'When no `models` parameter is provided, the API automatically selects the best model... (recommended)' and states 'Only one model per request is supported — for multi-model comparison, use provider-specific tools with parallel calls.' This covers when to use a specific model vs. auto-selection and names an alternative approach. It does not, however, clarify when to choose this tool over siblings like weather_archive or air_quality.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev2.5.2
    • Changedensemble_forecast3 fields changed
      • changedInput schema / properties / models / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "icon_seamless_eps",
        -      "icon_global_eps",
        -      "icon_eu_eps",
        -      "icon_d2_eps",
        -      "dwd_icon_seamless_eps",
        -      "dwd_icon_global_eps",
        -      "dwd_icon_eu_eps",
        -      "dwd_icon_d2_eps",
        -      "gfs_seamless",
        -      "ncep_gefs_seamless",
        -      "ncep_gefs025",
        -      "ncep_gefs05",
        -      "ncep_aigefs025",
        -      "ecmwf_ifs025_ensemble",
        -      "ecmwf_aifs025_ensemble",
        -      "ecmwf_ifs_europe_ensemble",
        -      "ecmwf_aifs_europe_ensemble",
        -      "gem_global",
        -      "gem_global_ensemble",
        -      "cmc_gem_geps",
        -      "bom_access_global",
        -      "bom_access_global_ensemble",
        -      "google_weathernext2_ensemble",
        -      "ukmo_global_ensemble_20km",
        -      "ukmo_uk_ensemble_2km",
        -      "meteoswiss_icon_ch1",
        -      "meteoswiss_icon_ch2",
        -      "meteoswiss_icon_ch1_ensemble",
        -      "meteoswiss_icon_ch2_ensemble",
        -      "dwd_icon_eps_ensemble_mean_seamless",
        -      "dwd_icon_eps_ensemble_mean",
        -      "dwd_icon_eu_eps_ensemble_mean",
        -      "dwd_icon_d2_eps_ensemble_mean",
        -      "ncep_gefs_ensemble_mean_seamless",
        -      "ncep_gefs025_ensemble_mean",
        -      "ncep_gefs05_ensemble_mean",
        -      "ncep_aigefs025_ensemble_mean",
        -      "ecmwf_ifs025_ensemble_mean",
        -      "ecmwf_aifs025_ensemble_mean",
        -      "cmc_gem_geps_ensemble_mean",
        -      "bom_access_global_ensemble_mean",
        -      "google_weathernext2_ensemble_mean",
        -      "ukmo_global_ensemble_mean_20km",
        -      "ukmo_uk_ensemble_mean_2km",
        -      "meteoswiss_icon_ch1_ensemble_mean",
        -      "meteoswiss_icon_ch2_ensemble_mean"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "items": {
        -      "enum": [
        -        "icon_seamless_eps",
        -        "icon_global_eps",
        -        "icon_eu_eps",
        -        "icon_d2_eps",
        -        "dwd_icon_seamless_eps",
        -        "dwd_icon_global_eps",
        -        "dwd_icon_eu_eps",
        -        "dwd_icon_d2_eps",
        -        "gfs_seamless",
        -        "ncep_gefs_seamless",
        -        "ncep_gefs025",
        -        "ncep_gefs05",
        -        "ncep_aigefs025",
        -        "ecmwf_ifs025_ensemble",
        -        "ecmwf_aifs025_ensemble",
        -        "ecmwf_ifs_europe_ensemble",
        -        "ecmwf_aifs_europe_ensemble",
        -        "gem_global",
        -        "gem_global_ensemble",
        -        "cmc_gem_geps",
        -        "bom_access_global",
        -        "bom_access_global_ensemble",
        -        "google_weathernext2_ensemble",
        -        "ukmo_global_ensemble_20km",
        -        "ukmo_uk_ensemble_2km",
        -        "meteoswiss_icon_ch1",
        -        "meteoswiss_icon_ch2",
        -        "meteoswiss_icon_ch1_ensemble",
        -        "meteoswiss_icon_ch2_ensemble",
        -        "dwd_icon_eps_ensemble_mean_seamless",
        -        "dwd_icon_eps_ensemble_mean",
        -        "dwd_icon_eu_eps_ensemble_mean",
        -        "dwd_icon_d2_eps_ensemble_mean",
        -        "ncep_gefs_ensemble_mean_seamless",
        -        "ncep_gefs025_ensemble_mean",
        -        "ncep_gefs05_ensemble_mean",
        -        "ncep_aigefs025_ensemble_mean",
        -        "ecmwf_ifs025_ensemble_mean",
        -        "ecmwf_aifs025_ensemble_mean",
        -        "cmc_gem_geps_ensemble_mean",
        -        "bom_access_global_ensemble_mean",
        -        "google_weathernext2_ensemble_mean",
        -        "ukmo_global_ensemble_mean_20km",
        -        "ukmo_uk_ensemble_mean_2km",
        -        "meteoswiss_icon_ch1_ensemble_mean",
        -        "meteoswiss_icon_ch2_ensemble_mean"
        -      ],
        -      "type": "string"
        -    },
        -    "type": "array"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "icon_seamless_eps",
        +      "icon_global_eps",
        +      "icon_eu_eps",
        +      "icon_d2_eps",
        +      "dwd_icon_seamless_eps",
        +      "dwd_icon_global_eps",
        +      "dwd_icon_eu_eps",
        +      "dwd_icon_d2_eps",
        +      "gfs_seamless",
        +      "ncep_gefs_seamless",
        +      "ncep_gefs025",
        +      "ncep_gefs05",
        +      "ncep_aigefs025",
        +      "ecmwf_ifs025_ensemble",
        +      "ecmwf_aifs025_ensemble",
        +      "ecmwf_ifs_europe_ensemble",
        +      "ecmwf_aifs_europe_ensemble",
        +      "gem_global",
        +      "gem_global_ensemble",
        +      "cmc_gem_geps",
        +      "bom_access_global",
        +      "bom_access_global_ensemble",
        +      "google_weathernext2_ensemble",
        +      "ukmo_global_ensemble_20km",
        +      "ukmo_uk_ensemble_2km",
        +      "meteoswiss_icon_ch1",
        +      "meteoswiss_icon_ch2",
        +      "meteoswiss_icon_ch1_ensemble",
        +      "meteoswiss_icon_ch2_ensemble",
        +      "dwd_icon_eps_ensemble_mean_seamless",
        +      "dwd_icon_eps_ensemble_mean",
        +      "dwd_icon_eu_eps_ensemble_mean",
        +      "dwd_icon_d2_eps_ensemble_mean",
        +      "ncep_gefs_ensemble_mean_seamless",
        +      "ncep_gefs025_ensemble_mean",
        +      "ncep_gefs05_ensemble_mean",
        +      "ncep_aigefs025_ensemble_mean",
        +      "ecmwf_ifs025_ensemble_mean",
        +      "ecmwf_aifs025_ensemble_mean",
        +      "cmc_gem_geps_ensemble_mean",
        +      "bom_access_global_ensemble_mean",
        +      "google_weathernext2_ensemble_mean",
        +      "ukmo_global_ensemble_mean_20km",
        +      "ukmo_uk_ensemble_mean_2km",
        +      "meteoswiss_icon_ch1_ensemble_mean",
        +      "meteoswiss_icon_ch2_ensemble_mean"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "enum": [
        +        "icon_seamless_eps",
        +        "icon_global_eps",
        +        "icon_eu_eps",
        +        "icon_d2_eps",
        +        "dwd_icon_seamless_eps",
        +        "dwd_icon_global_eps",
        +        "dwd_icon_eu_eps",
        +        "dwd_icon_d2_eps",
        +        "gfs_seamless",
        +        "ncep_gefs_seamless",
        +        "ncep_gefs025",
        +        "ncep_gefs05",
        +        "ncep_aigefs025",
        +        "ecmwf_ifs025_ensemble",
        +        "ecmwf_aifs025_ensemble",
        +        "ecmwf_ifs_europe_ensemble",
        +        "ecmwf_aifs_europe_ensemble",
        +        "gem_global",
        +        "gem_global_ensemble",
        +        "cmc_gem_geps",
        +        "bom_access_global",
        +        "bom_access_global_ensemble",
        +        "google_weathernext2_ensemble",
        +        "ukmo_global_ensemble_20km",
        +        "ukmo_uk_ensemble_2km",
        +        "meteoswiss_icon_ch1",
        +        "meteoswiss_icon_ch2",
        +        "meteoswiss_icon_ch1_ensemble",
        +        "meteoswiss_icon_ch2_ensemble",
        +        "dwd_icon_eps_ensemble_mean_seamless",
        +        "dwd_icon_eps_ensemble_mean",
        +        "dwd_icon_eu_eps_ensemble_mean",
        +        "dwd_icon_d2_eps_ensemble_mean",
        +        "ncep_gefs_ensemble_mean_seamless",
        +        "ncep_gefs025_ensemble_mean",
        +        "ncep_gefs05_ensemble_mean",
        +        "ncep_aigefs025_ensemble_mean",
        +        "ecmwf_ifs025_ensemble_mean",
        +        "ecmwf_aifs025_ensemble_mean",
        +        "cmc_gem_geps_ensemble_mean",
        +        "bom_access_global_ensemble_mean",
        +        "google_weathernext2_ensemble_mean",
        +        "ukmo_global_ensemble_mean_20km",
        +        "ukmo_uk_ensemble_mean_2km",
        +        "meteoswiss_icon_ch1_ensemble_mean",
        +        "meteoswiss_icon_ch2_ensemble_mean"
        +      ],
        +      "type": "string"
        +    },
        +    "minItems": 1,
        +    "type": "array"
        +  }
        +]
      • addedInput schema / properties / models / description
        Added value: +"Required: the ensemble API has no default model. Use e.g. \"icon_seamless_eps\" or \"ncep_gefs_seamless\"."
      • changedInput schema / required
        Previous value: -[
        -  "latitude",
        -  "longitude"
        -]New value: +[
        +  "latitude",
        +  "longitude",
        +  "models"
        +]
  2. 17 tool updatesv2.5.0
    • Changedair_quality19 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "enum": [
        +      "european_aqi",
        +      "us_aqi",
        +      "pm10",
        +      "pm2_5",
        +      "carbon_monoxide",
        +      "nitrogen_dioxide",
        +      "sulphur_dioxide",
        +      "ozone",
        +      "aerosol_optical_depth",
        +      "dust",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "ammonia",
        +      "alder_pollen",
        +      "birch_pollen",
        +      "grass_pollen",
        +      "mugwort_pollen",
        +      "olive_pollen",
        +      "ragweed_pollen"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / domains
        Added value: +{
        +  "description": "\"cams_europe\": higher resolution, Europe only. \"cams_global\": worldwide, coarser. \"auto\" (default) uses Europe where available.",
        +  "enum": [
        +    "auto",
        +    "cams_europe",
        +    "cams_global"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • changedInput schema / properties / forecast_days / maximum
        Previous value: -16New value: +7
      • changedInput schema / properties / forecast_days / minimum
        Previous value: -1New value: +0
      • removedInput schema / properties / hourly / description
        Removed value: -"Air quality variables to retrieve"
      • changedInput schema / properties / hourly / items / enum
        Previous value: -[
        -  "pm10",
        -  "pm2_5",
        -  "carbon_monoxide",
        -  "nitrogen_dioxide",
        -  "ozone",
        -  "sulphur_dioxide",
        -  "ammonia",
        -  "dust",
        -  "aerosol_optical_depth"
        -]New value: +[
        +  "pm10",
        +  "pm2_5",
        +  "carbon_monoxide",
        +  "nitrogen_dioxide",
        +  "ozone",
        +  "sulphur_dioxide",
        +  "ammonia",
        +  "dust",
        +  "aerosol_optical_depth",
        +  "carbon_dioxide",
        +  "methane",
        +  "alder_pollen",
        +  "birch_pollen",
        +  "grass_pollen",
        +  "mugwort_pollen",
        +  "olive_pollen",
        +  "ragweed_pollen",
        +  "european_aqi",
        +  "european_aqi_pm2_5",
        +  "european_aqi_pm10",
        +  "european_aqi_nitrogen_dioxide",
        +  "european_aqi_ozone",
        +  "european_aqi_sulphur_dioxide",
        +  "us_aqi",
        +  "us_aqi_pm2_5",
        +  "us_aqi_pm10",
        +  "us_aqi_nitrogen_dioxide",
        +  "us_aqi_ozone",
        +  "us_aqi_sulphur_dioxide",
        +  "us_aqi_carbon_monoxide",
        +  "uv_index",
        +  "uv_index_clear_sky",
        +  "formaldehyde",
        +  "glyoxal",
        +  "non_methane_volatile_organic_compounds",
        +  "pm10_wildfires",
        +  "peroxyacyl_nitrates",
        +  "secondary_inorganic_aerosol",
        +  "residential_elementary_carbon",
        +  "total_elementary_carbon",
        +  "pm2_5_total_organic_matter",
        +  "sea_salt_aerosol",
        +  "nitrogen_monoxide",
        +  "is_day"
        +]
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • changedInput schema / properties / past_days / maximum
        Previous value: -7New value: +92
      • changedInput schema / properties / past_days / minimum
        Previous value: -1New value: +0
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
    • Changedclimate_projection16 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / daily / description
        Removed value: -"Climate projection variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "temperature_2m_mean",
        -  "cloud_cover_mean",
        -  "relative_humidity_2m_max",
        -  "relative_humidity_2m_min",
        -  "relative_humidity_2m_mean",
        -  "soil_moisture_0_to_10cm_mean",
        -  "precipitation_sum",
        -  "rain_sum",
        -  "snowfall_sum",
        -  "wind_speed_10m_mean",
        -  "wind_speed_10m_max",
        -  "pressure_msl_mean",
        -  "shortwave_radiation_sum"
        -]New value: +[
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "temperature_2m_mean",
        +  "cloud_cover_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "relative_humidity_2m_mean",
        +  "precipitation_sum",
        +  "rain_sum",
        +  "snowfall_sum",
        +  "snowfall_water_equivalent_sum",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_max",
        +  "pressure_msl_mean",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration_sum",
        +  "vapour_pressure_deficit_max",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "daylight_duration",
        +  "soil_moisture_0_to_7cm_mean",
        +  "soil_moisture_7_to_28cm_mean",
        +  "soil_moisture_28_to_100cm_mean",
        +  "soil_moisture_0_to_100cm_mean",
        +  "soil_moisture_index_0_to_7cm_mean",
        +  "soil_moisture_index_7_to_28cm_mean",
        +  "soil_moisture_index_28_to_100cm_mean",
        +  "soil_temperature_0_to_7cm_mean",
        +  "soil_temperature_7_to_28cm_mean",
        +  "soil_temperature_28_to_100cm_mean",
        +  "soil_temperature_0_to_100cm_mean"
        +]
      • removedInput schema / properties / disable_bias_correction / default
        Removed value: -false
      • changedInput schema / properties / disable_bias_correction / description
        Previous value: -"Disable statistical downscaling and bias correction"New value: +"Return raw model output instead of bias-corrected values."
      • changedInput schema / properties / end_date / description
        Previous value: -"End date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format."
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • changedInput schema / properties / models / description
        Previous value: -"Climate models to use"New value: +"Omit to use the default model."
      • changedInput schema / properties / models / items / enum
        Previous value: -[
        -  "meteofrance_arome_france_hd",
        -  "meteofrance_arome_france",
        -  "meteofrance_arpege_europe",
        -  "icon_eu",
        -  "icon_global",
        -  "ecmwf_ifs025",
        -  "gfs013"
        -]New value: +[
        +  "CMCC_CM2_VHR4",
        +  "FGOALS_f3_H",
        +  "HiRAM_SIT_HR",
        +  "MRI_AGCM3_2_S",
        +  "EC_Earth3P_HR",
        +  "MPI_ESM1_2_XR",
        +  "NICAM16_8S"
        +]
      • changedInput schema / properties / start_date / description
        Previous value: -"Start date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format."
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / timezone
        Added value: +{
        +  "description": "IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT.",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "latitude",
        -  "longitude",
        -  "start_date",
        -  "end_date",
        -  "models",
        -  "daily"
        -]New value: +[
        +  "latitude",
        +  "longitude",
        +  "start_date",
        +  "end_date"
        +]
    • Changeddwd_icon_forecast34 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "temperature_2m",
        +          "relative_humidity_2m",
        +          "dewpoint_2m",
        +          "dew_point_2m",
        +          "apparent_temperature",
        +          "precipitation_probability",
        +          "precipitation",
        +          "rain",
        +          "showers",
        +          "snowfall",
        +          "snow_depth",
        +          "weather_code",
        +          "pressure_msl",
        +          "surface_pressure",
        +          "cloud_cover",
        +          "cloud_cover_low",
        +          "cloud_cover_mid",
        +          "cloud_cover_high",
        +          "visibility",
        +          "evapotranspiration",
        +          "et0_fao_evapotranspiration",
        +          "vapour_pressure_deficit",
        +          "wind_speed_10m",
        +          "wind_speed_80m",
        +          "wind_speed_120m",
        +          "wind_speed_180m",
        +          "wind_direction_10m",
        +          "wind_direction_80m",
        +          "wind_direction_120m",
        +          "wind_direction_180m",
        +          "wind_gusts_10m",
        +          "temperature_80m",
        +          "temperature_120m",
        +          "temperature_180m",
        +          "soil_temperature_0cm",
        +          "soil_temperature_6cm",
        +          "soil_temperature_18cm",
        +          "soil_temperature_54cm",
        +          "soil_moisture_0_to_1cm",
        +          "soil_moisture_1_to_3cm",
        +          "soil_moisture_3_to_9cm",
        +          "soil_moisture_9_to_27cm",
        +          "soil_moisture_27_to_81cm",
        +          "uv_index",
        +          "uv_index_clear_sky",
        +          "is_day",
        +          "sunshine_duration",
        +          "wet_bulb_temperature_2m",
        +          "total_column_integrated_water_vapour",
        +          "cape",
        +          "lifted_index",
        +          "convective_inhibition",
        +          "freezing_level_height",
        +          "boundary_layer_height_pbl",
        +          "shortwave_radiation",
        +          "direct_radiation",
        +          "diffuse_radiation",
        +          "direct_normal_irradiance",
        +          "global_tilted_irradiance",
        +          "terrestrial_radiation",
        +          "shortwave_radiation_instant",
        +          "direct_radiation_instant",
        +          "diffuse_radiation_instant",
        +          "direct_normal_irradiance_instant",
        +          "global_tilted_irradiance_instant",
        +          "terrestrial_radiation_instant",
        +          "wind_speed_200m",
        +          "wind_direction_200m",
        +          "snow_height",
        +          "updraft",
        +          "lightning_potential"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +        "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / current_weather / description
        Previous value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`."
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "apparent_temperature_max",
        -  "apparent_temperature_min",
        -  "precipitation_sum",
        -  "weather_code",
        -  "sunrise",
        -  "sunset",
        -  "wind_speed_10m_max",
        -  "wind_gusts_10m_max",
        -  "wind_direction_10m_dominant",
        -  "shortwave_radiation_sum",
        -  "uv_index_max"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "uv_index_max",
        +  "uv_index_clear_sky_max",
        +  "rain_sum",
        +  "showers_sum",
        +  "snowfall_sum",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "precipitation_probability_max",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "temperature_2m_mean",
        +  "apparent_temperature_mean",
        +  "cape_mean",
        +  "cape_max",
        +  "cape_min",
        +  "cloud_cover_mean",
        +  "cloud_cover_max",
        +  "cloud_cover_min",
        +  "dewpoint_2m_mean",
        +  "dewpoint_2m_max",
        +  "dewpoint_2m_min",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "et0_fao_evapotranspiration_sum",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "leaf_wetness_probability_max",
        +  "leaf_wetness_probability_min",
        +  "precipitation_probability_mean",
        +  "precipitation_probability_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "snowfall_water_equivalent_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_max",
        +  "pressure_msl_min",
        +  "surface_pressure_mean",
        +  "surface_pressure_max",
        +  "surface_pressure_min",
        +  "updraft_max",
        +  "visibility_mean",
        +  "visibility_max",
        +  "visibility_min",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wet_bulb_temperature_2m_mean",
        +  "wet_bulb_temperature_2m_max",
        +  "wet_bulb_temperature_2m_min",
        +  "vapour_pressure_deficit_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / end_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dewpoint_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation_probability",
        +      "precipitation",
        +      "rain",
        +      "showers",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "cloud_cover_low",
        +      "cloud_cover_mid",
        +      "cloud_cover_high",
        +      "visibility",
        +      "evapotranspiration",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_120m",
        +      "wind_speed_180m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_120m",
        +      "wind_direction_180m",
        +      "wind_gusts_10m",
        +      "temperature_80m",
        +      "temperature_120m",
        +      "temperature_180m",
        +      "soil_temperature_0cm",
        +      "soil_temperature_6cm",
        +      "soil_temperature_18cm",
        +      "soil_temperature_54cm",
        +      "soil_moisture_0_to_1cm",
        +      "soil_moisture_1_to_3cm",
        +      "soil_moisture_3_to_9cm",
        +      "soil_moisture_9_to_27cm",
        +      "soil_moisture_27_to_81cm",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "is_day",
        +      "sunshine_duration",
        +      "wet_bulb_temperature_2m",
        +      "total_column_integrated_water_vapour",
        +      "cape",
        +      "lifted_index",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "boundary_layer_height_pbl",
        +      "shortwave_radiation",
        +      "direct_radiation",
        +      "diffuse_radiation",
        +      "direct_normal_irradiance",
        +      "global_tilted_irradiance",
        +      "terrestrial_radiation",
        +      "shortwave_radiation_instant",
        +      "direct_radiation_instant",
        +      "diffuse_radiation_instant",
        +      "direct_normal_irradiance_instant",
        +      "global_tilted_irradiance_instant",
        +      "terrestrial_radiation_instant",
        +      "wind_speed_200m",
        +      "wind_direction_200m",
        +      "snow_height",
        +      "updraft",
        +      "lightning_potential"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dewpoint_2m",
        -  "apparent_temperature",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "shortwave_radiation",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "precipitation_probability",
        -  "weather_code",
        -  "visibility",
        -  "uv_index"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snowfall_height",
        +      "freezing_level_height",
        +      "sunshine_duration",
        +      "weather_code",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_100m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_100m",
        +      "wind_gusts_10m",
        +      "visibility",
        +      "cape",
        +      "lightning_potential",
        +      "is_day"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "enum": [
        +    "dwd_icon_seamless",
        +    "dwd_icon_global",
        +    "dwd_icon_eu",
        +    "dwd_icon_d2",
        +    "dwd_icon_d2_15min",
        +    "icon_seamless",
        +    "icon_global",
        +    "icon_eu",
        +    "icon_d2"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • removedInput schema / properties / past_days / enum
        Removed value: -[
        -  1,
        -  2
        -]
      • addedInput schema / properties / past_days / maximum
        Added value: +92
      • addedInput schema / properties / past_days / minimum
        Added value: +1
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / precipitation_unit / description
        Removed value: -"Precipitation unit"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / start_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / temperature_unit / description
        Removed value: -"Temperature unit"
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps (e.g., Europe/Paris, America/New_York)"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • removedInput schema / properties / wind_speed_unit / description
        Removed value: -"Wind speed unit"
    • Changedecmwf_forecast34 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "temperature_2m",
        +          "relative_humidity_2m",
        +          "dewpoint_2m",
        +          "dew_point_2m",
        +          "apparent_temperature",
        +          "precipitation_probability",
        +          "precipitation",
        +          "rain",
        +          "showers",
        +          "snowfall",
        +          "snow_depth",
        +          "weather_code",
        +          "pressure_msl",
        +          "surface_pressure",
        +          "cloud_cover",
        +          "cloud_cover_low",
        +          "cloud_cover_mid",
        +          "cloud_cover_high",
        +          "visibility",
        +          "evapotranspiration",
        +          "et0_fao_evapotranspiration",
        +          "vapour_pressure_deficit",
        +          "wind_speed_10m",
        +          "wind_speed_80m",
        +          "wind_speed_120m",
        +          "wind_speed_180m",
        +          "wind_direction_10m",
        +          "wind_direction_80m",
        +          "wind_direction_120m",
        +          "wind_direction_180m",
        +          "wind_gusts_10m",
        +          "temperature_80m",
        +          "temperature_120m",
        +          "temperature_180m",
        +          "soil_temperature_0cm",
        +          "soil_temperature_6cm",
        +          "soil_temperature_18cm",
        +          "soil_temperature_54cm",
        +          "soil_moisture_0_to_1cm",
        +          "soil_moisture_1_to_3cm",
        +          "soil_moisture_3_to_9cm",
        +          "soil_moisture_9_to_27cm",
        +          "soil_moisture_27_to_81cm",
        +          "uv_index",
        +          "uv_index_clear_sky",
        +          "is_day",
        +          "sunshine_duration",
        +          "wet_bulb_temperature_2m",
        +          "total_column_integrated_water_vapour",
        +          "cape",
        +          "lifted_index",
        +          "convective_inhibition",
        +          "freezing_level_height",
        +          "boundary_layer_height_pbl",
        +          "shortwave_radiation",
        +          "direct_radiation",
        +          "diffuse_radiation",
        +          "direct_normal_irradiance",
        +          "global_tilted_irradiance",
        +          "terrestrial_radiation",
        +          "shortwave_radiation_instant",
        +          "direct_radiation_instant",
        +          "diffuse_radiation_instant",
        +          "direct_normal_irradiance_instant",
        +          "global_tilted_irradiance_instant",
        +          "terrestrial_radiation_instant",
        +          "wind_speed_200m",
        +          "wind_direction_200m",
        +          "snow_height",
        +          "updraft",
        +          "lightning_potential"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +        "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / current_weather / description
        Previous value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`."
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "apparent_temperature_max",
        -  "apparent_temperature_min",
        -  "precipitation_sum",
        -  "weather_code",
        -  "sunrise",
        -  "sunset",
        -  "wind_speed_10m_max",
        -  "wind_gusts_10m_max",
        -  "wind_direction_10m_dominant",
        -  "shortwave_radiation_sum",
        -  "uv_index_max"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "uv_index_max",
        +  "uv_index_clear_sky_max",
        +  "rain_sum",
        +  "showers_sum",
        +  "snowfall_sum",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "precipitation_probability_max",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "temperature_2m_mean",
        +  "apparent_temperature_mean",
        +  "cape_mean",
        +  "cape_max",
        +  "cape_min",
        +  "cloud_cover_mean",
        +  "cloud_cover_max",
        +  "cloud_cover_min",
        +  "dewpoint_2m_mean",
        +  "dewpoint_2m_max",
        +  "dewpoint_2m_min",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "et0_fao_evapotranspiration_sum",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "leaf_wetness_probability_max",
        +  "leaf_wetness_probability_min",
        +  "precipitation_probability_mean",
        +  "precipitation_probability_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "snowfall_water_equivalent_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_max",
        +  "pressure_msl_min",
        +  "surface_pressure_mean",
        +  "surface_pressure_max",
        +  "surface_pressure_min",
        +  "updraft_max",
        +  "visibility_mean",
        +  "visibility_max",
        +  "visibility_min",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wet_bulb_temperature_2m_mean",
        +  "wet_bulb_temperature_2m_max",
        +  "wet_bulb_temperature_2m_min",
        +  "vapour_pressure_deficit_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / end_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dewpoint_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation_probability",
        +      "precipitation",
        +      "rain",
        +      "showers",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "cloud_cover_low",
        +      "cloud_cover_mid",
        +      "cloud_cover_high",
        +      "visibility",
        +      "evapotranspiration",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_120m",
        +      "wind_speed_180m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_120m",
        +      "wind_direction_180m",
        +      "wind_gusts_10m",
        +      "temperature_80m",
        +      "temperature_120m",
        +      "temperature_180m",
        +      "soil_temperature_0cm",
        +      "soil_temperature_6cm",
        +      "soil_temperature_18cm",
        +      "soil_temperature_54cm",
        +      "soil_moisture_0_to_1cm",
        +      "soil_moisture_1_to_3cm",
        +      "soil_moisture_3_to_9cm",
        +      "soil_moisture_9_to_27cm",
        +      "soil_moisture_27_to_81cm",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "is_day",
        +      "sunshine_duration",
        +      "wet_bulb_temperature_2m",
        +      "total_column_integrated_water_vapour",
        +      "cape",
        +      "lifted_index",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "boundary_layer_height_pbl",
        +      "shortwave_radiation",
        +      "direct_radiation",
        +      "diffuse_radiation",
        +      "direct_normal_irradiance",
        +      "global_tilted_irradiance",
        +      "terrestrial_radiation",
        +      "shortwave_radiation_instant",
        +      "direct_radiation_instant",
        +      "diffuse_radiation_instant",
        +      "direct_normal_irradiance_instant",
        +      "global_tilted_irradiance_instant",
        +      "terrestrial_radiation_instant",
        +      "wind_speed_200m",
        +      "wind_direction_200m",
        +      "snow_height",
        +      "updraft",
        +      "lightning_potential"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dewpoint_2m",
        -  "apparent_temperature",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "shortwave_radiation",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "precipitation_probability",
        -  "weather_code",
        -  "visibility",
        -  "uv_index"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snowfall_height",
        +      "freezing_level_height",
        +      "sunshine_duration",
        +      "weather_code",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_100m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_100m",
        +      "wind_gusts_10m",
        +      "visibility",
        +      "cape",
        +      "lightning_potential",
        +      "is_day"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "enum": [
        +    "best_match",
        +    "ecmwf_ifs",
        +    "ecmwf_ifs04",
        +    "ecmwf_ifs025",
        +    "ecmwf_aifs025",
        +    "ecmwf_aifs025_single",
        +    "ecmwf_ifs_europe_ensemble_mean",
        +    "ecmwf_aifs_europe_ensemble_mean"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • removedInput schema / properties / past_days / enum
        Removed value: -[
        -  1,
        -  2
        -]
      • addedInput schema / properties / past_days / maximum
        Added value: +92
      • addedInput schema / properties / past_days / minimum
        Added value: +1
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / precipitation_unit / description
        Removed value: -"Precipitation unit"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / start_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / temperature_unit / description
        Removed value: -"Temperature unit"
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps (e.g., Europe/Paris, America/New_York)"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • removedInput schema / properties / wind_speed_unit / description
        Removed value: -"Wind speed unit"
    • Changedelevation12 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / latitude / anyOf
        Added value: +[
        +  {
        +    "maximum": 90,
        +    "minimum": -90,
        +    "type": "number"
        +  },
        +  {
        +    "items": {
        +      "maximum": 90,
        +      "minimum": -90,
        +      "type": "number"
        +    },
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / latitude / maximum
        Removed value: -90
      • removedInput schema / properties / latitude / minimum
        Removed value: --90
      • removedInput schema / properties / latitude / type
        Removed value: -"number"
      • addedInput schema / properties / longitude / anyOf
        Added value: +[
        +  {
        +    "maximum": 180,
        +    "minimum": -180,
        +    "type": "number"
        +  },
        +  {
        +    "items": {
        +      "maximum": 180,
        +      "minimum": -180,
        +      "type": "number"
        +    },
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / maximum
        Removed value: -180
      • removedInput schema / properties / longitude / minimum
        Removed value: --180
      • removedInput schema / properties / longitude / type
        Removed value: -"number"
    • Changedensemble_forecast31 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_mean",
        -  "temperature_2m_min",
        -  "temperature_2m_max",
        -  "apparent_temperature_mean",
        -  "apparent_temperature_min",
        -  "apparent_temperature_max",
        -  "wind_speed_10m_mean",
        -  "wind_speed_10m_min",
        -  "wind_speed_10m_max",
        -  "wind_direction_10m_dominant",
        -  "wind_gusts_10m_mean",
        -  "wind_gusts_10m_min",
        -  "wind_gusts_10m_max",
        -  "precipitation_sum",
        -  "precipitation_hours",
        -  "rain_sum",
        -  "snowfall_sum",
        -  "pressure_msl_mean",
        -  "pressure_msl_min",
        -  "pressure_msl_max",
        -  "cloud_cover_mean",
        -  "cloud_cover_min",
        -  "cloud_cover_max",
        -  "relative_humidity_2m_mean",
        -  "relative_humidity_2m_min",
        -  "relative_humidity_2m_max",
        -  "cape_mean",
        -  "cape_min",
        -  "cape_max",
        -  "shortwave_radiation_sum"
        -]New value: +[
        +  "temperature_2m_mean",
        +  "temperature_2m_min",
        +  "temperature_2m_max",
        +  "apparent_temperature_mean",
        +  "apparent_temperature_min",
        +  "apparent_temperature_max",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wind_speed_10m_max",
        +  "wind_direction_10m_dominant",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_gusts_10m_max",
        +  "wind_speed_100m_mean",
        +  "wind_speed_100m_min",
        +  "wind_speed_100m_max",
        +  "wind_direction_100m_dominant",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "rain_sum",
        +  "snowfall_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_min",
        +  "pressure_msl_max",
        +  "surface_pressure_mean",
        +  "surface_pressure_min",
        +  "surface_pressure_max",
        +  "cloud_cover_mean",
        +  "cloud_cover_min",
        +  "cloud_cover_max",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_min",
        +  "relative_humidity_2m_max",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_min",
        +  "dew_point_2m_max",
        +  "cape_mean",
        +  "cape_min",
        +  "cape_max",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration"
        +]
      • addedInput schema / properties / elevation
        Added value: +{
        +  "description": "Elevation in metres to adjust the values to; defaults to the terrain height at the point.",
        +  "type": "number"
        +}
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • changedInput schema / properties / forecast_days / maximum
        Previous value: -35New value: +36
      • changedInput schema / properties / forecast_days / minimum
        Previous value: -1New value: +0
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "visibility",
        +      "wind_speed_10m",
        +      "wind_direction_10m",
        +      "wind_gusts_10m",
        +      "wind_speed_80m",
        +      "wind_direction_80m",
        +      "wind_speed_100m",
        +      "wind_direction_100m",
        +      "surface_temperature",
        +      "soil_temperature_0_to_10cm",
        +      "cape",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "shortwave_radiation",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "temperature_2m_min",
        +      "temperature_2m_max",
        +      "wet_bulb_temperature_2m",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "snowfall_height",
        +      "sunshine_duration",
        +      "snowfall_water_equivalent",
        +      "snow_depth_water_equivalent"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dew_point_2m",
        -  "apparent_temperature",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "snow_depth",
        -  "weather_code",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "visibility",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "wind_speed_80m",
        -  "wind_direction_80m",
        -  "wind_speed_100m",
        -  "wind_direction_100m",
        -  "surface_temperature",
        -  "soil_temperature_0_to_10cm",
        -  "cape",
        -  "et0_fao_evapotranspiration",
        -  "vapour_pressure_deficit",
        -  "shortwave_radiation"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / models / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "icon_seamless_eps",
        +      "icon_global_eps",
        +      "icon_eu_eps",
        +      "icon_d2_eps",
        +      "dwd_icon_seamless_eps",
        +      "dwd_icon_global_eps",
        +      "dwd_icon_eu_eps",
        +      "dwd_icon_d2_eps",
        +      "gfs_seamless",
        +      "ncep_gefs_seamless",
        +      "ncep_gefs025",
        +      "ncep_gefs05",
        +      "ncep_aigefs025",
        +      "ecmwf_ifs025_ensemble",
        +      "ecmwf_aifs025_ensemble",
        +      "ecmwf_ifs_europe_ensemble",
        +      "ecmwf_aifs_europe_ensemble",
        +      "gem_global",
        +      "gem_global_ensemble",
        +      "cmc_gem_geps",
        +      "bom_access_global",
        +      "bom_access_global_ensemble",
        +      "google_weathernext2_ensemble",
        +      "ukmo_global_ensemble_20km",
        +      "ukmo_uk_ensemble_2km",
        +      "meteoswiss_icon_ch1",
        +      "meteoswiss_icon_ch2",
        +      "meteoswiss_icon_ch1_ensemble",
        +      "meteoswiss_icon_ch2_ensemble",
        +      "dwd_icon_eps_ensemble_mean_seamless",
        +      "dwd_icon_eps_ensemble_mean",
        +      "dwd_icon_eu_eps_ensemble_mean",
        +      "dwd_icon_d2_eps_ensemble_mean",
        +      "ncep_gefs_ensemble_mean_seamless",
        +      "ncep_gefs025_ensemble_mean",
        +      "ncep_gefs05_ensemble_mean",
        +      "ncep_aigefs025_ensemble_mean",
        +      "ecmwf_ifs025_ensemble_mean",
        +      "ecmwf_aifs025_ensemble_mean",
        +      "cmc_gem_geps_ensemble_mean",
        +      "bom_access_global_ensemble_mean",
        +      "google_weathernext2_ensemble_mean",
        +      "ukmo_global_ensemble_mean_20km",
        +      "ukmo_uk_ensemble_mean_2km",
        +      "meteoswiss_icon_ch1_ensemble_mean",
        +      "meteoswiss_icon_ch2_ensemble_mean"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "items": {
        +      "enum": [
        +        "icon_seamless_eps",
        +        "icon_global_eps",
        +        "icon_eu_eps",
        +        "icon_d2_eps",
        +        "dwd_icon_seamless_eps",
        +        "dwd_icon_global_eps",
        +        "dwd_icon_eu_eps",
        +        "dwd_icon_d2_eps",
        +        "gfs_seamless",
        +        "ncep_gefs_seamless",
        +        "ncep_gefs025",
        +        "ncep_gefs05",
        +        "ncep_aigefs025",
        +        "ecmwf_ifs025_ensemble",
        +        "ecmwf_aifs025_ensemble",
        +        "ecmwf_ifs_europe_ensemble",
        +        "ecmwf_aifs_europe_ensemble",
        +        "gem_global",
        +        "gem_global_ensemble",
        +        "cmc_gem_geps",
        +        "bom_access_global",
        +        "bom_access_global_ensemble",
        +        "google_weathernext2_ensemble",
        +        "ukmo_global_ensemble_20km",
        +        "ukmo_uk_ensemble_2km",
        +        "meteoswiss_icon_ch1",
        +        "meteoswiss_icon_ch2",
        +        "meteoswiss_icon_ch1_ensemble",
        +        "meteoswiss_icon_ch2_ensemble",
        +        "dwd_icon_eps_ensemble_mean_seamless",
        +        "dwd_icon_eps_ensemble_mean",
        +        "dwd_icon_eu_eps_ensemble_mean",
        +        "dwd_icon_d2_eps_ensemble_mean",
        +        "ncep_gefs_ensemble_mean_seamless",
        +        "ncep_gefs025_ensemble_mean",
        +        "ncep_gefs05_ensemble_mean",
        +        "ncep_aigefs025_ensemble_mean",
        +        "ecmwf_ifs025_ensemble_mean",
        +        "ecmwf_aifs025_ensemble_mean",
        +        "cmc_gem_geps_ensemble_mean",
        +        "bom_access_global_ensemble_mean",
        +        "google_weathernext2_ensemble_mean",
        +        "ukmo_global_ensemble_mean_20km",
        +        "ukmo_uk_ensemble_mean_2km",
        +        "meteoswiss_icon_ch1_ensemble_mean",
        +        "meteoswiss_icon_ch2_ensemble_mean"
        +      ],
        +      "type": "string"
        +    },
        +    "type": "array"
        +  }
        +]
      • removedInput schema / properties / models / description
        Removed value: -"Ensemble models to use"
      • removedInput schema / properties / models / items
        Removed value: -{
        -  "enum": [
        -    "meteofrance_arome_france_hd",
        -    "meteofrance_arome_france",
        -    "meteofrance_arpege_europe",
        -    "icon_eu",
        -    "icon_global",
        -    "ecmwf_ifs025",
        -    "gfs013"
        -  ],
        -  "type": "string"
        -}
      • removedInput schema / properties / models / type
        Removed value: -"array"
      • addedInput schema / properties / past_days
        Added value: +{
        +  "description": "Days before today to include, in addition to the forecast.",
        +  "maximum": 92,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / temporal_resolution
        Added value: +{
        +  "description": "\"native\" keeps each model's own time step; \"hourly\", \"hourly_3\" and \"hourly_6\" resample to 1, 3 or 6 hours.",
        +  "enum": [
        +    "native",
        +    "hourly",
        +    "hourly_3",
        +    "hourly_6"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • changedInput schema / required
        Previous value: -[
        -  "latitude",
        -  "longitude",
        -  "models"
        -]New value: +[
        +  "latitude",
        +  "longitude"
        +]
    • Changedflood_forecast19 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "default": "nearest",
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / daily / description
        Removed value: -"River discharge variables to retrieve"
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • changedInput schema / properties / ensemble / description
        Previous value: -"If true, all forecast ensemble members will be returned"New value: +"Return all 50 ensemble members instead of a single series."
      • removedInput schema / properties / forecast_days / default
        Removed value: -92
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days (up to 210 days possible)"New value: +"Days to forecast, starting today."
      • changedInput schema / properties / forecast_days / maximum
        Previous value: -210New value: +366
      • changedInput schema / properties / forecast_days / minimum
        Previous value: -1New value: +0
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / models
        Added value: +{
        +  "description": "Omit to use the default model.",
        +  "enum": [
        +    "seamless_v4",
        +    "forecast_v4",
        +    "consolidated_v4",
        +    "seamless_v3",
        +    "forecast_v3",
        +    "consolidated_v3"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • changedInput schema / properties / past_days / maximum
        Previous value: -7New value: +92
      • changedInput schema / properties / past_days / minimum
        Previous value: -1New value: +0
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
    • Changedgem_forecast34 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "temperature_2m",
        +          "relative_humidity_2m",
        +          "dewpoint_2m",
        +          "dew_point_2m",
        +          "apparent_temperature",
        +          "precipitation_probability",
        +          "precipitation",
        +          "rain",
        +          "showers",
        +          "snowfall",
        +          "snow_depth",
        +          "weather_code",
        +          "pressure_msl",
        +          "surface_pressure",
        +          "cloud_cover",
        +          "cloud_cover_low",
        +          "cloud_cover_mid",
        +          "cloud_cover_high",
        +          "visibility",
        +          "evapotranspiration",
        +          "et0_fao_evapotranspiration",
        +          "vapour_pressure_deficit",
        +          "wind_speed_10m",
        +          "wind_speed_80m",
        +          "wind_speed_120m",
        +          "wind_speed_180m",
        +          "wind_direction_10m",
        +          "wind_direction_80m",
        +          "wind_direction_120m",
        +          "wind_direction_180m",
        +          "wind_gusts_10m",
        +          "temperature_80m",
        +          "temperature_120m",
        +          "temperature_180m",
        +          "soil_temperature_0cm",
        +          "soil_temperature_6cm",
        +          "soil_temperature_18cm",
        +          "soil_temperature_54cm",
        +          "soil_moisture_0_to_1cm",
        +          "soil_moisture_1_to_3cm",
        +          "soil_moisture_3_to_9cm",
        +          "soil_moisture_9_to_27cm",
        +          "soil_moisture_27_to_81cm",
        +          "uv_index",
        +          "uv_index_clear_sky",
        +          "is_day",
        +          "sunshine_duration",
        +          "wet_bulb_temperature_2m",
        +          "total_column_integrated_water_vapour",
        +          "cape",
        +          "lifted_index",
        +          "convective_inhibition",
        +          "freezing_level_height",
        +          "boundary_layer_height_pbl",
        +          "shortwave_radiation",
        +          "direct_radiation",
        +          "diffuse_radiation",
        +          "direct_normal_irradiance",
        +          "global_tilted_irradiance",
        +          "terrestrial_radiation",
        +          "shortwave_radiation_instant",
        +          "direct_radiation_instant",
        +          "diffuse_radiation_instant",
        +          "direct_normal_irradiance_instant",
        +          "global_tilted_irradiance_instant",
        +          "terrestrial_radiation_instant",
        +          "wind_speed_200m",
        +          "wind_direction_200m",
        +          "snow_height",
        +          "updraft",
        +          "lightning_potential"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +        "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / current_weather / description
        Previous value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`."
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "apparent_temperature_max",
        -  "apparent_temperature_min",
        -  "precipitation_sum",
        -  "weather_code",
        -  "sunrise",
        -  "sunset",
        -  "wind_speed_10m_max",
        -  "wind_gusts_10m_max",
        -  "wind_direction_10m_dominant",
        -  "shortwave_radiation_sum",
        -  "uv_index_max"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "uv_index_max",
        +  "uv_index_clear_sky_max",
        +  "rain_sum",
        +  "showers_sum",
        +  "snowfall_sum",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "precipitation_probability_max",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "temperature_2m_mean",
        +  "apparent_temperature_mean",
        +  "cape_mean",
        +  "cape_max",
        +  "cape_min",
        +  "cloud_cover_mean",
        +  "cloud_cover_max",
        +  "cloud_cover_min",
        +  "dewpoint_2m_mean",
        +  "dewpoint_2m_max",
        +  "dewpoint_2m_min",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "et0_fao_evapotranspiration_sum",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "leaf_wetness_probability_max",
        +  "leaf_wetness_probability_min",
        +  "precipitation_probability_mean",
        +  "precipitation_probability_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "snowfall_water_equivalent_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_max",
        +  "pressure_msl_min",
        +  "surface_pressure_mean",
        +  "surface_pressure_max",
        +  "surface_pressure_min",
        +  "updraft_max",
        +  "visibility_mean",
        +  "visibility_max",
        +  "visibility_min",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wet_bulb_temperature_2m_mean",
        +  "wet_bulb_temperature_2m_max",
        +  "wet_bulb_temperature_2m_min",
        +  "vapour_pressure_deficit_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / end_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dewpoint_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation_probability",
        +      "precipitation",
        +      "rain",
        +      "showers",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "cloud_cover_low",
        +      "cloud_cover_mid",
        +      "cloud_cover_high",
        +      "visibility",
        +      "evapotranspiration",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_120m",
        +      "wind_speed_180m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_120m",
        +      "wind_direction_180m",
        +      "wind_gusts_10m",
        +      "temperature_80m",
        +      "temperature_120m",
        +      "temperature_180m",
        +      "soil_temperature_0cm",
        +      "soil_temperature_6cm",
        +      "soil_temperature_18cm",
        +      "soil_temperature_54cm",
        +      "soil_moisture_0_to_1cm",
        +      "soil_moisture_1_to_3cm",
        +      "soil_moisture_3_to_9cm",
        +      "soil_moisture_9_to_27cm",
        +      "soil_moisture_27_to_81cm",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "is_day",
        +      "sunshine_duration",
        +      "wet_bulb_temperature_2m",
        +      "total_column_integrated_water_vapour",
        +      "cape",
        +      "lifted_index",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "boundary_layer_height_pbl",
        +      "shortwave_radiation",
        +      "direct_radiation",
        +      "diffuse_radiation",
        +      "direct_normal_irradiance",
        +      "global_tilted_irradiance",
        +      "terrestrial_radiation",
        +      "shortwave_radiation_instant",
        +      "direct_radiation_instant",
        +      "diffuse_radiation_instant",
        +      "direct_normal_irradiance_instant",
        +      "global_tilted_irradiance_instant",
        +      "terrestrial_radiation_instant",
        +      "wind_speed_200m",
        +      "wind_direction_200m",
        +      "snow_height",
        +      "updraft",
        +      "lightning_potential"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dewpoint_2m",
        -  "apparent_temperature",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "shortwave_radiation",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "precipitation_probability",
        -  "weather_code",
        -  "visibility",
        -  "uv_index"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snowfall_height",
        +      "freezing_level_height",
        +      "sunshine_duration",
        +      "weather_code",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_100m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_100m",
        +      "wind_gusts_10m",
        +      "visibility",
        +      "cape",
        +      "lightning_potential",
        +      "is_day"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "enum": [
        +    "gem_seamless",
        +    "gem_global",
        +    "gem_regional",
        +    "gem_hrdps_continental",
        +    "gem_hrdps_west",
        +    "cmc_gem_seamless",
        +    "cmc_gem_gdps",
        +    "cmc_gem_rdps",
        +    "cmc_gem_hrdps",
        +    "cmc_gem_hrdps_west"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • removedInput schema / properties / past_days / enum
        Removed value: -[
        -  1,
        -  2
        -]
      • addedInput schema / properties / past_days / maximum
        Added value: +92
      • addedInput schema / properties / past_days / minimum
        Added value: +1
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / precipitation_unit / description
        Removed value: -"Precipitation unit"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / start_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / temperature_unit / description
        Removed value: -"Temperature unit"
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps (e.g., Europe/Paris, America/New_York)"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • removedInput schema / properties / wind_speed_unit / description
        Removed value: -"Wind speed unit"
    • Changedgeocoding8 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / count / description
        Previous value: -"Number of search results to return (maximum 100)"New value: +"Maximum number of results."
      • changedInput schema / properties / countryCode / description
        Previous value: -"ISO-3166-1 alpha2 country code to filter results (e.g., \"FR\", \"DE\", \"US\"). Limits search to a specific country."New value: +"Only return places in this country."
      • removedInput schema / properties / format / description
        Removed value: -"Return format for results"
      • changedInput schema / properties / format / enum
        Previous value: -[
        -  "json",
        -  "protobuf"
        -]New value: +[
        +  "json"
        +]
      • changedInput schema / properties / language / description
        Previous value: -"Language code for translated results (e.g., \"fr\", \"en\", \"de\"). Returns translated results if available, otherwise in English or native language."New value: +"Language of the returned place names (e.g. \"fr\"); default English."
      • changedInput schema / properties / name / description
        Previous value: -"Place name or postal code to search for. Minimum 2 characters required. Examples: \"Paris\", \"Berlin\", \"75001\", \"10967\""New value: +"Place name or postal code to search for."
    • Changedgfs_forecast34 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "temperature_2m",
        +          "relative_humidity_2m",
        +          "dewpoint_2m",
        +          "dew_point_2m",
        +          "apparent_temperature",
        +          "precipitation_probability",
        +          "precipitation",
        +          "rain",
        +          "showers",
        +          "snowfall",
        +          "snow_depth",
        +          "weather_code",
        +          "pressure_msl",
        +          "surface_pressure",
        +          "cloud_cover",
        +          "cloud_cover_low",
        +          "cloud_cover_mid",
        +          "cloud_cover_high",
        +          "visibility",
        +          "evapotranspiration",
        +          "et0_fao_evapotranspiration",
        +          "vapour_pressure_deficit",
        +          "wind_speed_10m",
        +          "wind_speed_80m",
        +          "wind_speed_120m",
        +          "wind_speed_180m",
        +          "wind_direction_10m",
        +          "wind_direction_80m",
        +          "wind_direction_120m",
        +          "wind_direction_180m",
        +          "wind_gusts_10m",
        +          "temperature_80m",
        +          "temperature_120m",
        +          "temperature_180m",
        +          "soil_temperature_0cm",
        +          "soil_temperature_6cm",
        +          "soil_temperature_18cm",
        +          "soil_temperature_54cm",
        +          "soil_moisture_0_to_1cm",
        +          "soil_moisture_1_to_3cm",
        +          "soil_moisture_3_to_9cm",
        +          "soil_moisture_9_to_27cm",
        +          "soil_moisture_27_to_81cm",
        +          "uv_index",
        +          "uv_index_clear_sky",
        +          "is_day",
        +          "sunshine_duration",
        +          "wet_bulb_temperature_2m",
        +          "total_column_integrated_water_vapour",
        +          "cape",
        +          "lifted_index",
        +          "convective_inhibition",
        +          "freezing_level_height",
        +          "boundary_layer_height_pbl",
        +          "shortwave_radiation",
        +          "direct_radiation",
        +          "diffuse_radiation",
        +          "direct_normal_irradiance",
        +          "global_tilted_irradiance",
        +          "terrestrial_radiation",
        +          "shortwave_radiation_instant",
        +          "direct_radiation_instant",
        +          "diffuse_radiation_instant",
        +          "direct_normal_irradiance_instant",
        +          "global_tilted_irradiance_instant",
        +          "terrestrial_radiation_instant",
        +          "wind_speed_200m",
        +          "wind_direction_200m",
        +          "snow_height",
        +          "updraft",
        +          "lightning_potential"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +        "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / current_weather / description
        Previous value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`."
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "apparent_temperature_max",
        -  "apparent_temperature_min",
        -  "precipitation_sum",
        -  "weather_code",
        -  "sunrise",
        -  "sunset",
        -  "wind_speed_10m_max",
        -  "wind_gusts_10m_max",
        -  "wind_direction_10m_dominant",
        -  "shortwave_radiation_sum",
        -  "uv_index_max"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "uv_index_max",
        +  "uv_index_clear_sky_max",
        +  "rain_sum",
        +  "showers_sum",
        +  "snowfall_sum",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "precipitation_probability_max",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "temperature_2m_mean",
        +  "apparent_temperature_mean",
        +  "cape_mean",
        +  "cape_max",
        +  "cape_min",
        +  "cloud_cover_mean",
        +  "cloud_cover_max",
        +  "cloud_cover_min",
        +  "dewpoint_2m_mean",
        +  "dewpoint_2m_max",
        +  "dewpoint_2m_min",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "et0_fao_evapotranspiration_sum",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "leaf_wetness_probability_max",
        +  "leaf_wetness_probability_min",
        +  "precipitation_probability_mean",
        +  "precipitation_probability_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "snowfall_water_equivalent_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_max",
        +  "pressure_msl_min",
        +  "surface_pressure_mean",
        +  "surface_pressure_max",
        +  "surface_pressure_min",
        +  "updraft_max",
        +  "visibility_mean",
        +  "visibility_max",
        +  "visibility_min",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wet_bulb_temperature_2m_mean",
        +  "wet_bulb_temperature_2m_max",
        +  "wet_bulb_temperature_2m_min",
        +  "vapour_pressure_deficit_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / end_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dewpoint_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation_probability",
        +      "precipitation",
        +      "rain",
        +      "showers",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "cloud_cover_low",
        +      "cloud_cover_mid",
        +      "cloud_cover_high",
        +      "visibility",
        +      "evapotranspiration",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_120m",
        +      "wind_speed_180m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_120m",
        +      "wind_direction_180m",
        +      "wind_gusts_10m",
        +      "temperature_80m",
        +      "temperature_120m",
        +      "temperature_180m",
        +      "soil_temperature_0cm",
        +      "soil_temperature_6cm",
        +      "soil_temperature_18cm",
        +      "soil_temperature_54cm",
        +      "soil_moisture_0_to_1cm",
        +      "soil_moisture_1_to_3cm",
        +      "soil_moisture_3_to_9cm",
        +      "soil_moisture_9_to_27cm",
        +      "soil_moisture_27_to_81cm",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "is_day",
        +      "sunshine_duration",
        +      "wet_bulb_temperature_2m",
        +      "total_column_integrated_water_vapour",
        +      "cape",
        +      "lifted_index",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "boundary_layer_height_pbl",
        +      "shortwave_radiation",
        +      "direct_radiation",
        +      "diffuse_radiation",
        +      "direct_normal_irradiance",
        +      "global_tilted_irradiance",
        +      "terrestrial_radiation",
        +      "shortwave_radiation_instant",
        +      "direct_radiation_instant",
        +      "diffuse_radiation_instant",
        +      "direct_normal_irradiance_instant",
        +      "global_tilted_irradiance_instant",
        +      "terrestrial_radiation_instant",
        +      "wind_speed_200m",
        +      "wind_direction_200m",
        +      "snow_height",
        +      "updraft",
        +      "lightning_potential"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dewpoint_2m",
        -  "apparent_temperature",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "shortwave_radiation",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "precipitation_probability",
        -  "weather_code",
        -  "visibility",
        -  "uv_index"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snowfall_height",
        +      "freezing_level_height",
        +      "sunshine_duration",
        +      "weather_code",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_100m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_100m",
        +      "wind_gusts_10m",
        +      "visibility",
        +      "cape",
        +      "lightning_potential",
        +      "is_day"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "enum": [
        +    "gfs_seamless",
        +    "ncep_gfs_seamless",
        +    "ncep_gfs_global",
        +    "ncep_hrrr_conus",
        +    "ncep_hrrr_conus_15min",
        +    "ncep_nbm_conus",
        +    "ncep_nam_conus",
        +    "ncep_gfs_graphcast025",
        +    "ncep_aigfs025",
        +    "ncep_hgefs025_ensemble_mean",
        +    "ncep_aigefs025_ensemble_mean"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • removedInput schema / properties / past_days / enum
        Removed value: -[
        -  1,
        -  2
        -]
      • addedInput schema / properties / past_days / maximum
        Added value: +92
      • addedInput schema / properties / past_days / minimum
        Added value: +1
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / precipitation_unit / description
        Removed value: -"Precipitation unit"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / start_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / temperature_unit / description
        Removed value: -"Temperature unit"
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps (e.g., Europe/Paris, America/New_York)"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • removedInput schema / properties / wind_speed_unit / description
        Removed value: -"Wind speed unit"
    • Changedjma_forecast34 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "temperature_2m",
        +          "relative_humidity_2m",
        +          "dewpoint_2m",
        +          "dew_point_2m",
        +          "apparent_temperature",
        +          "precipitation_probability",
        +          "precipitation",
        +          "rain",
        +          "showers",
        +          "snowfall",
        +          "snow_depth",
        +          "weather_code",
        +          "pressure_msl",
        +          "surface_pressure",
        +          "cloud_cover",
        +          "cloud_cover_low",
        +          "cloud_cover_mid",
        +          "cloud_cover_high",
        +          "visibility",
        +          "evapotranspiration",
        +          "et0_fao_evapotranspiration",
        +          "vapour_pressure_deficit",
        +          "wind_speed_10m",
        +          "wind_speed_80m",
        +          "wind_speed_120m",
        +          "wind_speed_180m",
        +          "wind_direction_10m",
        +          "wind_direction_80m",
        +          "wind_direction_120m",
        +          "wind_direction_180m",
        +          "wind_gusts_10m",
        +          "temperature_80m",
        +          "temperature_120m",
        +          "temperature_180m",
        +          "soil_temperature_0cm",
        +          "soil_temperature_6cm",
        +          "soil_temperature_18cm",
        +          "soil_temperature_54cm",
        +          "soil_moisture_0_to_1cm",
        +          "soil_moisture_1_to_3cm",
        +          "soil_moisture_3_to_9cm",
        +          "soil_moisture_9_to_27cm",
        +          "soil_moisture_27_to_81cm",
        +          "uv_index",
        +          "uv_index_clear_sky",
        +          "is_day",
        +          "sunshine_duration",
        +          "wet_bulb_temperature_2m",
        +          "total_column_integrated_water_vapour",
        +          "cape",
        +          "lifted_index",
        +          "convective_inhibition",
        +          "freezing_level_height",
        +          "boundary_layer_height_pbl",
        +          "shortwave_radiation",
        +          "direct_radiation",
        +          "diffuse_radiation",
        +          "direct_normal_irradiance",
        +          "global_tilted_irradiance",
        +          "terrestrial_radiation",
        +          "shortwave_radiation_instant",
        +          "direct_radiation_instant",
        +          "diffuse_radiation_instant",
        +          "direct_normal_irradiance_instant",
        +          "global_tilted_irradiance_instant",
        +          "terrestrial_radiation_instant",
        +          "wind_speed_200m",
        +          "wind_direction_200m",
        +          "snow_height",
        +          "updraft",
        +          "lightning_potential"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +        "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / current_weather / description
        Previous value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`."
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "apparent_temperature_max",
        -  "apparent_temperature_min",
        -  "precipitation_sum",
        -  "weather_code",
        -  "sunrise",
        -  "sunset",
        -  "wind_speed_10m_max",
        -  "wind_gusts_10m_max",
        -  "wind_direction_10m_dominant",
        -  "shortwave_radiation_sum",
        -  "uv_index_max"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "uv_index_max",
        +  "uv_index_clear_sky_max",
        +  "rain_sum",
        +  "showers_sum",
        +  "snowfall_sum",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "precipitation_probability_max",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "temperature_2m_mean",
        +  "apparent_temperature_mean",
        +  "cape_mean",
        +  "cape_max",
        +  "cape_min",
        +  "cloud_cover_mean",
        +  "cloud_cover_max",
        +  "cloud_cover_min",
        +  "dewpoint_2m_mean",
        +  "dewpoint_2m_max",
        +  "dewpoint_2m_min",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "et0_fao_evapotranspiration_sum",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "leaf_wetness_probability_max",
        +  "leaf_wetness_probability_min",
        +  "precipitation_probability_mean",
        +  "precipitation_probability_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "snowfall_water_equivalent_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_max",
        +  "pressure_msl_min",
        +  "surface_pressure_mean",
        +  "surface_pressure_max",
        +  "surface_pressure_min",
        +  "updraft_max",
        +  "visibility_mean",
        +  "visibility_max",
        +  "visibility_min",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wet_bulb_temperature_2m_mean",
        +  "wet_bulb_temperature_2m_max",
        +  "wet_bulb_temperature_2m_min",
        +  "vapour_pressure_deficit_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / end_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dewpoint_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation_probability",
        +      "precipitation",
        +      "rain",
        +      "showers",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "cloud_cover_low",
        +      "cloud_cover_mid",
        +      "cloud_cover_high",
        +      "visibility",
        +      "evapotranspiration",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_120m",
        +      "wind_speed_180m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_120m",
        +      "wind_direction_180m",
        +      "wind_gusts_10m",
        +      "temperature_80m",
        +      "temperature_120m",
        +      "temperature_180m",
        +      "soil_temperature_0cm",
        +      "soil_temperature_6cm",
        +      "soil_temperature_18cm",
        +      "soil_temperature_54cm",
        +      "soil_moisture_0_to_1cm",
        +      "soil_moisture_1_to_3cm",
        +      "soil_moisture_3_to_9cm",
        +      "soil_moisture_9_to_27cm",
        +      "soil_moisture_27_to_81cm",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "is_day",
        +      "sunshine_duration",
        +      "wet_bulb_temperature_2m",
        +      "total_column_integrated_water_vapour",
        +      "cape",
        +      "lifted_index",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "boundary_layer_height_pbl",
        +      "shortwave_radiation",
        +      "direct_radiation",
        +      "diffuse_radiation",
        +      "direct_normal_irradiance",
        +      "global_tilted_irradiance",
        +      "terrestrial_radiation",
        +      "shortwave_radiation_instant",
        +      "direct_radiation_instant",
        +      "diffuse_radiation_instant",
        +      "direct_normal_irradiance_instant",
        +      "global_tilted_irradiance_instant",
        +      "terrestrial_radiation_instant",
        +      "wind_speed_200m",
        +      "wind_direction_200m",
        +      "snow_height",
        +      "updraft",
        +      "lightning_potential"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dewpoint_2m",
        -  "apparent_temperature",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "shortwave_radiation",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "precipitation_probability",
        -  "weather_code",
        -  "visibility",
        -  "uv_index"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snowfall_height",
        +      "freezing_level_height",
        +      "sunshine_duration",
        +      "weather_code",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_100m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_100m",
        +      "wind_gusts_10m",
        +      "visibility",
        +      "cape",
        +      "lightning_potential",
        +      "is_day"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "enum": [
        +    "jma_seamless",
        +    "jma_msm",
        +    "jma_msm_upper_level",
        +    "jma_gsm"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • removedInput schema / properties / past_days / enum
        Removed value: -[
        -  1,
        -  2
        -]
      • addedInput schema / properties / past_days / maximum
        Added value: +92
      • addedInput schema / properties / past_days / minimum
        Added value: +1
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / precipitation_unit / description
        Removed value: -"Precipitation unit"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / start_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / temperature_unit / description
        Removed value: -"Temperature unit"
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps (e.g., Europe/Paris, America/New_York)"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • removedInput schema / properties / wind_speed_unit / description
        Removed value: -"Wind speed unit"
    • Changedmarine_weather25 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "enum": [
        +      "wave_height",
        +      "wave_direction",
        +      "wave_period",
        +      "wave_peak_period",
        +      "wind_wave_height",
        +      "wind_wave_direction",
        +      "wind_wave_period",
        +      "wind_wave_peak_period",
        +      "swell_wave_height",
        +      "swell_wave_direction",
        +      "swell_wave_period",
        +      "swell_wave_peak_period",
        +      "secondary_swell_wave_height",
        +      "secondary_swell_wave_period",
        +      "secondary_swell_wave_direction",
        +      "tertiary_swell_wave_height",
        +      "tertiary_swell_wave_period",
        +      "tertiary_swell_wave_direction",
        +      "sea_level_height_msl",
        +      "sea_surface_temperature",
        +      "ocean_current_velocity",
        +      "ocean_current_direction",
        +      "invert_barometer_height"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / daily / description
        Removed value: -"Daily marine weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "wave_height_max",
        -  "wind_wave_height_max",
        -  "swell_wave_height_max"
        -]New value: +[
        +  "wave_height_max",
        +  "wave_direction_dominant",
        +  "wave_period_max",
        +  "wind_wave_height_max",
        +  "wind_wave_direction_dominant",
        +  "wind_wave_period_max",
        +  "wind_wave_peak_period_max",
        +  "swell_wave_height_max",
        +  "swell_wave_direction_dominant",
        +  "swell_wave_period_max",
        +  "swell_wave_peak_period_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • changedInput schema / properties / forecast_days / minimum
        Previous value: -1New value: +0
      • removedInput schema / properties / hourly / description
        Removed value: -"Marine weather variables to retrieve"
      • changedInput schema / properties / hourly / items / enum
        Previous value: -[
        -  "wave_height",
        -  "wave_direction",
        -  "wave_period",
        -  "wind_wave_height",
        -  "wind_wave_direction",
        -  "wind_wave_period",
        -  "swell_wave_height",
        -  "swell_wave_direction",
        -  "swell_wave_period",
        -  "sea_surface_temperature"
        -]New value: +[
        +  "wave_height",
        +  "wave_direction",
        +  "wave_period",
        +  "wave_peak_period",
        +  "wind_wave_height",
        +  "wind_wave_direction",
        +  "wind_wave_period",
        +  "wind_wave_peak_period",
        +  "swell_wave_height",
        +  "swell_wave_direction",
        +  "swell_wave_period",
        +  "swell_wave_peak_period",
        +  "secondary_swell_wave_height",
        +  "secondary_swell_wave_period",
        +  "secondary_swell_wave_direction",
        +  "tertiary_swell_wave_height",
        +  "tertiary_swell_wave_period",
        +  "tertiary_swell_wave_direction",
        +  "sea_level_height_msl",
        +  "sea_surface_temperature",
        +  "ocean_current_velocity",
        +  "ocean_current_direction",
        +  "invert_barometer_height"
        +]
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • addedInput schema / properties / length_unit
        Added value: +{
        +  "enum": [
        +    "metric",
        +    "imperial"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "ocean_current_velocity",
        +      "ocean_current_direction",
        +      "sea_level_height_msl"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "description": "Omit to use the default model.",
        +  "enum": [
        +    "best_match",
        +    "meteofrance_wave",
        +    "meteofrance_currents",
        +    "dwd_ewam",
        +    "dwd_gwam",
        +    "ewam",
        +    "gwam",
        +    "ecmwf_wam",
        +    "ecmwf_wam025",
        +    "ecmwf_wam025_ensemble",
        +    "ecmwf_wam025_ensemble_mean",
        +    "ncep_gfswave025",
        +    "ncep_gefswave025",
        +    "ncep_gefswave025_ensemble_mean",
        +    "era5_ocean"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • changedInput schema / properties / past_days / maximum
        Previous value: -7New value: +92
      • changedInput schema / properties / past_days / minimum
        Previous value: -1New value: +0
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / temperature_unit
        Added value: +{
        +  "default": "celsius",
        +  "enum": [
        +    "celsius",
        +    "fahrenheit"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • addedInput schema / properties / wind_speed_unit
        Added value: +{
        +  "default": "kmh",
        +  "enum": [
        +    "kmh",
        +    "ms",
        +    "mph",
        +    "kn"
        +  ],
        +  "type": "string"
        +}
    • Changedmeteofrance_forecast34 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "temperature_2m",
        +          "relative_humidity_2m",
        +          "dewpoint_2m",
        +          "dew_point_2m",
        +          "apparent_temperature",
        +          "precipitation_probability",
        +          "precipitation",
        +          "rain",
        +          "showers",
        +          "snowfall",
        +          "snow_depth",
        +          "weather_code",
        +          "pressure_msl",
        +          "surface_pressure",
        +          "cloud_cover",
        +          "cloud_cover_low",
        +          "cloud_cover_mid",
        +          "cloud_cover_high",
        +          "visibility",
        +          "evapotranspiration",
        +          "et0_fao_evapotranspiration",
        +          "vapour_pressure_deficit",
        +          "wind_speed_10m",
        +          "wind_speed_80m",
        +          "wind_speed_120m",
        +          "wind_speed_180m",
        +          "wind_direction_10m",
        +          "wind_direction_80m",
        +          "wind_direction_120m",
        +          "wind_direction_180m",
        +          "wind_gusts_10m",
        +          "temperature_80m",
        +          "temperature_120m",
        +          "temperature_180m",
        +          "soil_temperature_0cm",
        +          "soil_temperature_6cm",
        +          "soil_temperature_18cm",
        +          "soil_temperature_54cm",
        +          "soil_moisture_0_to_1cm",
        +          "soil_moisture_1_to_3cm",
        +          "soil_moisture_3_to_9cm",
        +          "soil_moisture_9_to_27cm",
        +          "soil_moisture_27_to_81cm",
        +          "uv_index",
        +          "uv_index_clear_sky",
        +          "is_day",
        +          "sunshine_duration",
        +          "wet_bulb_temperature_2m",
        +          "total_column_integrated_water_vapour",
        +          "cape",
        +          "lifted_index",
        +          "convective_inhibition",
        +          "freezing_level_height",
        +          "boundary_layer_height_pbl",
        +          "shortwave_radiation",
        +          "direct_radiation",
        +          "diffuse_radiation",
        +          "direct_normal_irradiance",
        +          "global_tilted_irradiance",
        +          "terrestrial_radiation",
        +          "shortwave_radiation_instant",
        +          "direct_radiation_instant",
        +          "diffuse_radiation_instant",
        +          "direct_normal_irradiance_instant",
        +          "global_tilted_irradiance_instant",
        +          "terrestrial_radiation_instant",
        +          "wind_speed_200m",
        +          "wind_direction_200m",
        +          "snow_height",
        +          "updraft",
        +          "lightning_potential"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +        "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / current_weather / description
        Previous value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`."
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "apparent_temperature_max",
        -  "apparent_temperature_min",
        -  "precipitation_sum",
        -  "weather_code",
        -  "sunrise",
        -  "sunset",
        -  "wind_speed_10m_max",
        -  "wind_gusts_10m_max",
        -  "wind_direction_10m_dominant",
        -  "shortwave_radiation_sum",
        -  "uv_index_max"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "uv_index_max",
        +  "uv_index_clear_sky_max",
        +  "rain_sum",
        +  "showers_sum",
        +  "snowfall_sum",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "precipitation_probability_max",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "temperature_2m_mean",
        +  "apparent_temperature_mean",
        +  "cape_mean",
        +  "cape_max",
        +  "cape_min",
        +  "cloud_cover_mean",
        +  "cloud_cover_max",
        +  "cloud_cover_min",
        +  "dewpoint_2m_mean",
        +  "dewpoint_2m_max",
        +  "dewpoint_2m_min",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "et0_fao_evapotranspiration_sum",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "leaf_wetness_probability_max",
        +  "leaf_wetness_probability_min",
        +  "precipitation_probability_mean",
        +  "precipitation_probability_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "snowfall_water_equivalent_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_max",
        +  "pressure_msl_min",
        +  "surface_pressure_mean",
        +  "surface_pressure_max",
        +  "surface_pressure_min",
        +  "updraft_max",
        +  "visibility_mean",
        +  "visibility_max",
        +  "visibility_min",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wet_bulb_temperature_2m_mean",
        +  "wet_bulb_temperature_2m_max",
        +  "wet_bulb_temperature_2m_min",
        +  "vapour_pressure_deficit_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / end_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dewpoint_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation_probability",
        +      "precipitation",
        +      "rain",
        +      "showers",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "cloud_cover_low",
        +      "cloud_cover_mid",
        +      "cloud_cover_high",
        +      "visibility",
        +      "evapotranspiration",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_120m",
        +      "wind_speed_180m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_120m",
        +      "wind_direction_180m",
        +      "wind_gusts_10m",
        +      "temperature_80m",
        +      "temperature_120m",
        +      "temperature_180m",
        +      "soil_temperature_0cm",
        +      "soil_temperature_6cm",
        +      "soil_temperature_18cm",
        +      "soil_temperature_54cm",
        +      "soil_moisture_0_to_1cm",
        +      "soil_moisture_1_to_3cm",
        +      "soil_moisture_3_to_9cm",
        +      "soil_moisture_9_to_27cm",
        +      "soil_moisture_27_to_81cm",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "is_day",
        +      "sunshine_duration",
        +      "wet_bulb_temperature_2m",
        +      "total_column_integrated_water_vapour",
        +      "cape",
        +      "lifted_index",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "boundary_layer_height_pbl",
        +      "shortwave_radiation",
        +      "direct_radiation",
        +      "diffuse_radiation",
        +      "direct_normal_irradiance",
        +      "global_tilted_irradiance",
        +      "terrestrial_radiation",
        +      "shortwave_radiation_instant",
        +      "direct_radiation_instant",
        +      "diffuse_radiation_instant",
        +      "direct_normal_irradiance_instant",
        +      "global_tilted_irradiance_instant",
        +      "terrestrial_radiation_instant",
        +      "wind_speed_200m",
        +      "wind_direction_200m",
        +      "snow_height",
        +      "updraft",
        +      "lightning_potential"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dewpoint_2m",
        -  "apparent_temperature",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "shortwave_radiation",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "precipitation_probability",
        -  "weather_code",
        -  "visibility",
        -  "uv_index"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snowfall_height",
        +      "freezing_level_height",
        +      "sunshine_duration",
        +      "weather_code",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_100m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_100m",
        +      "wind_gusts_10m",
        +      "visibility",
        +      "cape",
        +      "lightning_potential",
        +      "is_day"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "enum": [
        +    "meteofrance_seamless",
        +    "meteofrance_arpege_world",
        +    "meteofrance_arpege_europe",
        +    "meteofrance_arome_france",
        +    "meteofrance_arome_france0025",
        +    "meteofrance_arome_france_hd",
        +    "meteofrance_arome_france_15min",
        +    "meteofrance_arome_france_hd_15min",
        +    "meteofrance_arpege_world025"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • removedInput schema / properties / past_days / enum
        Removed value: -[
        -  1,
        -  2
        -]
      • addedInput schema / properties / past_days / maximum
        Added value: +92
      • addedInput schema / properties / past_days / minimum
        Added value: +1
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / precipitation_unit / description
        Removed value: -"Precipitation unit"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / start_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / temperature_unit / description
        Removed value: -"Temperature unit"
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps (e.g., Europe/Paris, America/New_York)"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • removedInput schema / properties / wind_speed_unit / description
        Removed value: -"Wind speed unit"
    • Changedmetno_forecast34 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "temperature_2m",
        +          "relative_humidity_2m",
        +          "dewpoint_2m",
        +          "dew_point_2m",
        +          "apparent_temperature",
        +          "precipitation_probability",
        +          "precipitation",
        +          "rain",
        +          "showers",
        +          "snowfall",
        +          "snow_depth",
        +          "weather_code",
        +          "pressure_msl",
        +          "surface_pressure",
        +          "cloud_cover",
        +          "cloud_cover_low",
        +          "cloud_cover_mid",
        +          "cloud_cover_high",
        +          "visibility",
        +          "evapotranspiration",
        +          "et0_fao_evapotranspiration",
        +          "vapour_pressure_deficit",
        +          "wind_speed_10m",
        +          "wind_speed_80m",
        +          "wind_speed_120m",
        +          "wind_speed_180m",
        +          "wind_direction_10m",
        +          "wind_direction_80m",
        +          "wind_direction_120m",
        +          "wind_direction_180m",
        +          "wind_gusts_10m",
        +          "temperature_80m",
        +          "temperature_120m",
        +          "temperature_180m",
        +          "soil_temperature_0cm",
        +          "soil_temperature_6cm",
        +          "soil_temperature_18cm",
        +          "soil_temperature_54cm",
        +          "soil_moisture_0_to_1cm",
        +          "soil_moisture_1_to_3cm",
        +          "soil_moisture_3_to_9cm",
        +          "soil_moisture_9_to_27cm",
        +          "soil_moisture_27_to_81cm",
        +          "uv_index",
        +          "uv_index_clear_sky",
        +          "is_day",
        +          "sunshine_duration",
        +          "wet_bulb_temperature_2m",
        +          "total_column_integrated_water_vapour",
        +          "cape",
        +          "lifted_index",
        +          "convective_inhibition",
        +          "freezing_level_height",
        +          "boundary_layer_height_pbl",
        +          "shortwave_radiation",
        +          "direct_radiation",
        +          "diffuse_radiation",
        +          "direct_normal_irradiance",
        +          "global_tilted_irradiance",
        +          "terrestrial_radiation",
        +          "shortwave_radiation_instant",
        +          "direct_radiation_instant",
        +          "diffuse_radiation_instant",
        +          "direct_normal_irradiance_instant",
        +          "global_tilted_irradiance_instant",
        +          "terrestrial_radiation_instant",
        +          "wind_speed_200m",
        +          "wind_direction_200m",
        +          "snow_height",
        +          "updraft",
        +          "lightning_potential"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +        "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / current_weather / description
        Previous value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`."
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "apparent_temperature_max",
        -  "apparent_temperature_min",
        -  "precipitation_sum",
        -  "weather_code",
        -  "sunrise",
        -  "sunset",
        -  "wind_speed_10m_max",
        -  "wind_gusts_10m_max",
        -  "wind_direction_10m_dominant",
        -  "shortwave_radiation_sum",
        -  "uv_index_max"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "uv_index_max",
        +  "uv_index_clear_sky_max",
        +  "rain_sum",
        +  "showers_sum",
        +  "snowfall_sum",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "precipitation_probability_max",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "temperature_2m_mean",
        +  "apparent_temperature_mean",
        +  "cape_mean",
        +  "cape_max",
        +  "cape_min",
        +  "cloud_cover_mean",
        +  "cloud_cover_max",
        +  "cloud_cover_min",
        +  "dewpoint_2m_mean",
        +  "dewpoint_2m_max",
        +  "dewpoint_2m_min",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "et0_fao_evapotranspiration_sum",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "leaf_wetness_probability_max",
        +  "leaf_wetness_probability_min",
        +  "precipitation_probability_mean",
        +  "precipitation_probability_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "snowfall_water_equivalent_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_max",
        +  "pressure_msl_min",
        +  "surface_pressure_mean",
        +  "surface_pressure_max",
        +  "surface_pressure_min",
        +  "updraft_max",
        +  "visibility_mean",
        +  "visibility_max",
        +  "visibility_min",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wet_bulb_temperature_2m_mean",
        +  "wet_bulb_temperature_2m_max",
        +  "wet_bulb_temperature_2m_min",
        +  "vapour_pressure_deficit_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / end_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dewpoint_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation_probability",
        +      "precipitation",
        +      "rain",
        +      "showers",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "cloud_cover_low",
        +      "cloud_cover_mid",
        +      "cloud_cover_high",
        +      "visibility",
        +      "evapotranspiration",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_120m",
        +      "wind_speed_180m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_120m",
        +      "wind_direction_180m",
        +      "wind_gusts_10m",
        +      "temperature_80m",
        +      "temperature_120m",
        +      "temperature_180m",
        +      "soil_temperature_0cm",
        +      "soil_temperature_6cm",
        +      "soil_temperature_18cm",
        +      "soil_temperature_54cm",
        +      "soil_moisture_0_to_1cm",
        +      "soil_moisture_1_to_3cm",
        +      "soil_moisture_3_to_9cm",
        +      "soil_moisture_9_to_27cm",
        +      "soil_moisture_27_to_81cm",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "is_day",
        +      "sunshine_duration",
        +      "wet_bulb_temperature_2m",
        +      "total_column_integrated_water_vapour",
        +      "cape",
        +      "lifted_index",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "boundary_layer_height_pbl",
        +      "shortwave_radiation",
        +      "direct_radiation",
        +      "diffuse_radiation",
        +      "direct_normal_irradiance",
        +      "global_tilted_irradiance",
        +      "terrestrial_radiation",
        +      "shortwave_radiation_instant",
        +      "direct_radiation_instant",
        +      "diffuse_radiation_instant",
        +      "direct_normal_irradiance_instant",
        +      "global_tilted_irradiance_instant",
        +      "terrestrial_radiation_instant",
        +      "wind_speed_200m",
        +      "wind_direction_200m",
        +      "snow_height",
        +      "updraft",
        +      "lightning_potential"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dewpoint_2m",
        -  "apparent_temperature",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "shortwave_radiation",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "precipitation_probability",
        -  "weather_code",
        -  "visibility",
        -  "uv_index"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snowfall_height",
        +      "freezing_level_height",
        +      "sunshine_duration",
        +      "weather_code",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_100m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_100m",
        +      "wind_gusts_10m",
        +      "visibility",
        +      "cape",
        +      "lightning_potential",
        +      "is_day"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "enum": [
        +    "metno_seamless",
        +    "metno_nordic"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • removedInput schema / properties / past_days / enum
        Removed value: -[
        -  1,
        -  2
        -]
      • addedInput schema / properties / past_days / maximum
        Added value: +92
      • addedInput schema / properties / past_days / minimum
        Added value: +1
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / precipitation_unit / description
        Removed value: -"Precipitation unit"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / start_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / temperature_unit / description
        Removed value: -"Temperature unit"
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps (e.g., Europe/Paris, America/New_York)"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • removedInput schema / properties / wind_speed_unit / description
        Removed value: -"Wind speed unit"
    • Changedseasonal_forecast22 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "shortwave_radiation_sum",
        -  "precipitation_sum",
        -  "rain_sum",
        -  "precipitation_hours",
        -  "wind_speed_10m_max",
        -  "wind_direction_10m_dominant"
        -]New value: +[
        +  "sunrise",
        +  "sunset",
        +  "weather_code",
        +  "et0_fao_evapotranspiration",
        +  "vapour_pressure_deficit_max",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "temperature_2m_mean",
        +  "sunshine_duration",
        +  "dew_point_2m_mean",
        +  "pressure_msl_mean",
        +  "sea_surface_temperature_mean",
        +  "cloud_cover_mean",
        +  "wind_speed_10m_mean",
        +  "wind_speed_100m_mean",
        +  "snow_depth_mean",
        +  "soil_temperature_0_to_7cm_mean",
        +  "shortwave_radiation_sum",
        +  "precipitation_sum",
        +  "rain_sum",
        +  "precipitation_hours",
        +  "wind_speed_10m_max",
        +  "wind_direction_10m_dominant"
        +]
      • changedInput schema / properties / end_date / description
        Previous value: -"End date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format."
      • removedInput schema / properties / forecast_days / default
        Removed value: -92
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days: 45 days, 3 months (default), 6 months, or 9 months"New value: +"Days to forecast, starting today."
      • removedInput schema / properties / forecast_days / enum
        Removed value: -[
        -  45,
        -  92,
        -  183,
        -  274
        -]
      • addedInput schema / properties / forecast_days / maximum
        Added value: +217
      • addedInput schema / properties / forecast_days / minimum
        Added value: +0
      • removedInput schema / properties / hourly / description
        Removed value: -"6-hourly weather variables to retrieve"
      • changedInput schema / properties / hourly / items / enum
        Previous value: -[
        -  "pressure_msl",
        -  "temperature_2m",
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "shortwave_radiation",
        -  "cloud_cover",
        -  "precipitation",
        -  "showers",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "relative_humidity_2m",
        -  "soil_temperature_0_to_10cm",
        -  "soil_moisture_0_to_10cm",
        -  "soil_moisture_10_to_40cm",
        -  "soil_moisture_40_to_100cm",
        -  "soil_moisture_100_to_200cm"
        -]New value: +[
        +  "temperature_2m",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "dew_point_2m",
        +  "pressure_msl",
        +  "sea_surface_temperature",
        +  "snowfall_water_equivalent",
        +  "precipitation",
        +  "rain",
        +  "showers",
        +  "snowfall",
        +  "cloud_cover",
        +  "wind_speed_10m",
        +  "wind_direction_10m",
        +  "wind_speed_100m",
        +  "wind_direction_100m",
        +  "wind_speed_200m",
        +  "wind_direction_200m",
        +  "relative_humidity_2m",
        +  "apparent_temperature",
        +  "et0_fao_evapotranspiration",
        +  "vapour_pressure_deficit",
        +  "weather_code",
        +  "sunshine_duration",
        +  "wave_height",
        +  "wave_direction",
        +  "wave_period",
        +  "wave_peak_period",
        +  "soil_temperature_0_to_7cm",
        +  "soil_temperature_7_to_28cm",
        +  "soil_temperature_28_to_100cm",
        +  "soil_temperature_100_to_255cm",
        +  "soil_moisture_0_to_7cm",
        +  "soil_moisture_7_to_28cm",
        +  "soil_moisture_28_to_100cm",
        +  "soil_moisture_100_to_255cm",
        +  "shortwave_radiation",
        +  "direct_radiation",
        +  "diffuse_radiation",
        +  "direct_normal_irradiance",
        +  "global_tilted_irradiance",
        +  "terrestrial_radiation",
        +  "shortwave_radiation_instant",
        +  "direct_radiation_instant",
        +  "diffuse_radiation_instant",
        +  "direct_normal_irradiance_instant",
        +  "global_tilted_irradiance_instant",
        +  "terrestrial_radiation_instant"
        +]
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / models
        Added value: +{
        +  "description": "Omit to use the default model.",
        +  "enum": [
        +    "best_match",
        +    "ecmwf_seasonal_seamless",
        +    "ecmwf_seas5",
        +    "ecmwf_ec46",
        +    "ecmwf_seasonal_ensemble_mean_seamless",
        +    "ecmwf_seas5_ensemble_mean",
        +    "ecmwf_ec46_ensemble_mean"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / monthly
        Added value: +{
        +  "description": "Monthly means and anomalies against climatology.",
        +  "items": {
        +    "enum": [
        +      "wind_gusts_10m_anomaly",
        +      "wind_speed_10m_mean",
        +      "wind_speed_10m_anomaly",
        +      "albedo_mean",
        +      "albedo_anomaly",
        +      "cloud_cover_low_mean",
        +      "cloud_cover_low_anomaly",
        +      "showers_mean",
        +      "showers_anomaly",
        +      "runoff_mean",
        +      "runoff_anomaly",
        +      "snow_density_mean",
        +      "snow_density_anomaly",
        +      "snow_depth_water_equivalent_mean",
        +      "snow_depth_water_equivalent_anomaly",
        +      "total_column_integrated_water_vapour_mean",
        +      "total_column_integrated_water_vapour_anomaly",
        +      "temperature_2m_mean",
        +      "temperature_2m_anomaly",
        +      "dew_point_2m_mean",
        +      "dew_point_2m_anomaly",
        +      "pressure_msl_mean",
        +      "pressure_msl_anomaly",
        +      "sea_surface_temperature_mean",
        +      "sea_surface_temperature_anomaly",
        +      "wind_u_component_10m_mean",
        +      "wind_u_component_10m_anomaly",
        +      "wind_v_component_10m_mean",
        +      "wind_v_component_10m_anomaly",
        +      "snowfall_water_equivalent_mean",
        +      "snowfall_water_equivalent_anomaly",
        +      "precipitation_mean",
        +      "precipitation_anomaly",
        +      "shortwave_radiation_mean",
        +      "shortwave_radiation_anomaly",
        +      "longwave_radiation_mean",
        +      "longwave_radiation_anomaly",
        +      "cloud_cover_mean",
        +      "cloud_cover_anomaly",
        +      "sunshine_duration_mean",
        +      "sunshine_duration_anomaly",
        +      "soil_temperature_0_to_7cm_mean",
        +      "soil_temperature_0_to_7cm_anomaly",
        +      "soil_temperature_7_to_28cm_mean",
        +      "soil_temperature_7_to_28cm_anomaly",
        +      "soil_temperature_28_to_100cm_mean",
        +      "soil_temperature_28_to_100cm_anomaly",
        +      "soil_temperature_100_to_255cm_mean",
        +      "soil_temperature_100_to_255cm_anomaly",
        +      "soil_moisture_0_to_7cm_mean",
        +      "soil_moisture_0_to_7cm_anomaly",
        +      "soil_moisture_7_to_28cm_mean",
        +      "soil_moisture_7_to_28cm_anomaly",
        +      "soil_moisture_28_to_100cm_mean",
        +      "soil_moisture_28_to_100cm_anomaly",
        +      "soil_moisture_100_to_255cm_mean",
        +      "soil_moisture_100_to_255cm_anomaly",
        +      "temperature_max24h_2m_mean",
        +      "temperature_max24h_2m_anomaly",
        +      "temperature_min24h_2m_mean",
        +      "temperature_min24h_2m_anomaly",
        +      "sea_ice_cover_mean",
        +      "sea_ice_cover_anomaly",
        +      "latent_heat_flux_mean",
        +      "latent_heat_flux_anomaly",
        +      "sensible_heat_flux_mean",
        +      "sensible_heat_flux_anomaly",
        +      "evapotranspiration_mean",
        +      "evapotranspiration_anomaly",
        +      "snowfall_mean",
        +      "snowfall_anomaly",
        +      "snow_depth_mean",
        +      "snow_depth_anomaly"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • changedInput schema / properties / start_date / description
        Previous value: -"Start date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format."
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • addedInput schema / properties / weekly
        Added value: +{
        +  "description": "Weekly means and anomalies against climatology.",
        +  "items": {
        +    "enum": [
        +      "wind_speed_10m_mean",
        +      "wind_speed_10m_anomaly",
        +      "wind_speed_100m_mean",
        +      "wind_speed_100m_anomaly",
        +      "wind_direction_10m_mean",
        +      "wind_direction_10m_anomaly",
        +      "wind_direction_100m_mean",
        +      "wind_direction_100m_anomaly",
        +      "snow_depth_mean",
        +      "snow_depth_anomaly",
        +      "snowfall_mean",
        +      "snowfall_anomaly",
        +      "temperature_2m_anomaly_gt0",
        +      "temperature_2m_anomaly_gt1",
        +      "temperature_2m_anomaly_gt2",
        +      "temperature_2m_anomaly_ltm1",
        +      "temperature_2m_anomaly_ltm2",
        +      "pressure_msl_anomaly_gt0",
        +      "surface_temperature_anomaly_gt0",
        +      "precipitation_anomaly_gt0",
        +      "precipitation_anomaly_gt10",
        +      "precipitation_anomaly_gt20",
        +      "temperature_2m_sot10",
        +      "temperature_2m_sot90",
        +      "temperature_2m_efi",
        +      "precipitation_efi",
        +      "precipitation_sot90",
        +      "showers_mean",
        +      "snow_density_mean",
        +      "snow_density_anomaly",
        +      "snow_depth_water_equivalent_mean",
        +      "snow_depth_water_equivalent_anomaly",
        +      "total_column_integrated_water_vapour_mean",
        +      "total_column_integrated_water_vapour_anomaly",
        +      "temperature_2m_mean",
        +      "temperature_2m_anomaly",
        +      "dew_point_2m_mean",
        +      "dew_point_2m_anomaly",
        +      "pressure_msl_mean",
        +      "pressure_msl_anomaly",
        +      "sea_surface_temperature_mean",
        +      "sea_surface_temperature_anomaly",
        +      "wind_u_component_10m_mean",
        +      "wind_u_component_10m_anomaly",
        +      "wind_v_component_10m_mean",
        +      "wind_v_component_10m_anomaly",
        +      "wind_u_component_100m_mean",
        +      "wind_u_component_100m_anomaly",
        +      "wind_v_component_100m_mean",
        +      "wind_v_component_100m_anomaly",
        +      "snowfall_water_equivalent_mean",
        +      "snowfall_water_equivalent_anomaly",
        +      "precipitation_mean",
        +      "precipitation_anomaly",
        +      "cloud_cover_mean",
        +      "cloud_cover_anomaly",
        +      "sunshine_duration_mean",
        +      "sunshine_duration_anomaly",
        +      "soil_temperature_0_to_7cm_mean",
        +      "soil_temperature_0_to_7cm_anomaly",
        +      "temperature_max6h_2m_mean",
        +      "temperature_max6h_2m_anomaly",
        +      "temperature_min6h_2m_mean",
        +      "temperature_min6h_2m_anomaly"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedweather_archive19 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "precipitation_sum",
        -  "wind_speed_10m_max",
        -  "shortwave_radiation_sum"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "temperature_2m_mean",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "apparent_temperature_mean",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "precipitation_sum",
        +  "rain_sum",
        +  "snowfall_sum",
        +  "precipitation_hours",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "cloud_cover_mean",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "pressure_msl_mean",
        +  "wind_speed_10m_mean",
        +  "wet_bulb_temperature_2m_mean",
        +  "vapour_pressure_deficit_max",
        +  "soil_moisture_0_to_7cm_mean",
        +  "soil_moisture_7_to_28cm_mean",
        +  "soil_moisture_28_to_100cm_mean",
        +  "soil_moisture_0_to_100cm_mean",
        +  "soil_temperature_0_to_7cm_mean",
        +  "soil_temperature_7_to_28cm_mean",
        +  "soil_temperature_28_to_100cm_mean"
        +]
      • addedInput schema / properties / elevation
        Added value: +{
        +  "description": "Elevation in metres to adjust the values to; defaults to the terrain height at the point.",
        +  "type": "number"
        +}
      • changedInput schema / properties / end_date / description
        Previous value: -"End date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format."
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • changedInput schema / properties / hourly / items / enum
        Previous value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "precipitation",
        -  "pressure_msl",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "shortwave_radiation"
        -]New value: +[
        +  "temperature_2m",
        +  "relative_humidity_2m",
        +  "dew_point_2m",
        +  "apparent_temperature",
        +  "precipitation",
        +  "rain",
        +  "snowfall",
        +  "snow_depth",
        +  "weather_code",
        +  "pressure_msl",
        +  "surface_pressure",
        +  "cloud_cover",
        +  "cloud_cover_low",
        +  "cloud_cover_mid",
        +  "cloud_cover_high",
        +  "et0_fao_evapotranspiration",
        +  "vapour_pressure_deficit",
        +  "wind_speed_10m",
        +  "wind_speed_100m",
        +  "wind_direction_10m",
        +  "wind_direction_100m",
        +  "wind_gusts_10m",
        +  "soil_temperature_0_to_7cm",
        +  "soil_temperature_7_to_28cm",
        +  "soil_temperature_28_to_100cm",
        +  "soil_temperature_100_to_255cm",
        +  "soil_moisture_0_to_7cm",
        +  "soil_moisture_7_to_28cm",
        +  "soil_moisture_28_to_100cm",
        +  "soil_moisture_100_to_255cm",
        +  "shortwave_radiation",
        +  "direct_radiation",
        +  "diffuse_radiation",
        +  "direct_normal_irradiance",
        +  "terrestrial_radiation",
        +  "shortwave_radiation_instant",
        +  "direct_radiation_instant",
        +  "diffuse_radiation_instant",
        +  "direct_normal_irradiance_instant",
        +  "terrestrial_radiation_instant",
        +  "sunshine_duration",
        +  "is_day",
        +  "boundary_layer_height",
        +  "wet_bulb_temperature_2m",
        +  "total_column_integrated_water_vapour",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability",
        +  "soil_moisture_0_to_100cm",
        +  "soil_temperature_0_to_100cm",
        +  "soil_moisture_index_0_to_7cm",
        +  "soil_moisture_index_7_to_28cm",
        +  "soil_moisture_index_28_to_100cm",
        +  "soil_moisture_index_0_to_100cm",
        +  "global_tilted_irradiance",
        +  "global_tilted_irradiance_instant"
        +]
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / models
        Added value: +{
        +  "description": "Omit to use the default model.",
        +  "enum": [
        +    "best_match",
        +    "era5_seamless",
        +    "era5",
        +    "era5_land",
        +    "ecmwf_ifs",
        +    "cerra",
        +    "era5_ensemble",
        +    "ecmwf_ifs_analysis_long_window"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / precipitation_unit
        Added value: +{
        +  "default": "mm",
        +  "enum": [
        +    "mm",
        +    "inch"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / start_date / description
        Previous value: -"Start date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format."
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • addedInput schema / properties / wind_speed_unit
        Added value: +{
        +  "default": "kmh",
        +  "enum": [
        +    "kmh",
        +    "ms",
        +    "mph",
        +    "kn"
        +  ],
        +  "type": "string"
        +}
    • Changedweather_forecast34 fields changed
      • addedInput schema / $schema
        Added value: +"http://json-schema.org/draft-07/schema#"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / azimuth
        Added value: +{
        +  "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.",
        +  "maximum": 180,
        +  "minimum": -180,
        +  "type": "number"
        +}
      • addedInput schema / properties / cell_selection
        Added value: +{
        +  "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.",
        +  "enum": [
        +    "land",
        +    "sea",
        +    "nearest"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / current
        Added value: +{
        +  "description": "Variables to return for the current time.",
        +  "items": {
        +    "anyOf": [
        +      {
        +        "enum": [
        +          "temperature_2m",
        +          "relative_humidity_2m",
        +          "dewpoint_2m",
        +          "dew_point_2m",
        +          "apparent_temperature",
        +          "precipitation_probability",
        +          "precipitation",
        +          "rain",
        +          "showers",
        +          "snowfall",
        +          "snow_depth",
        +          "weather_code",
        +          "pressure_msl",
        +          "surface_pressure",
        +          "cloud_cover",
        +          "cloud_cover_low",
        +          "cloud_cover_mid",
        +          "cloud_cover_high",
        +          "visibility",
        +          "evapotranspiration",
        +          "et0_fao_evapotranspiration",
        +          "vapour_pressure_deficit",
        +          "wind_speed_10m",
        +          "wind_speed_80m",
        +          "wind_speed_120m",
        +          "wind_speed_180m",
        +          "wind_direction_10m",
        +          "wind_direction_80m",
        +          "wind_direction_120m",
        +          "wind_direction_180m",
        +          "wind_gusts_10m",
        +          "temperature_80m",
        +          "temperature_120m",
        +          "temperature_180m",
        +          "soil_temperature_0cm",
        +          "soil_temperature_6cm",
        +          "soil_temperature_18cm",
        +          "soil_temperature_54cm",
        +          "soil_moisture_0_to_1cm",
        +          "soil_moisture_1_to_3cm",
        +          "soil_moisture_3_to_9cm",
        +          "soil_moisture_9_to_27cm",
        +          "soil_moisture_27_to_81cm",
        +          "uv_index",
        +          "uv_index_clear_sky",
        +          "is_day",
        +          "sunshine_duration",
        +          "wet_bulb_temperature_2m",
        +          "total_column_integrated_water_vapour",
        +          "cape",
        +          "lifted_index",
        +          "convective_inhibition",
        +          "freezing_level_height",
        +          "boundary_layer_height_pbl",
        +          "shortwave_radiation",
        +          "direct_radiation",
        +          "diffuse_radiation",
        +          "direct_normal_irradiance",
        +          "global_tilted_irradiance",
        +          "terrestrial_radiation",
        +          "shortwave_radiation_instant",
        +          "direct_radiation_instant",
        +          "diffuse_radiation_instant",
        +          "direct_normal_irradiance_instant",
        +          "global_tilted_irradiance_instant",
        +          "terrestrial_radiation_instant",
        +          "wind_speed_200m",
        +          "wind_direction_200m",
        +          "snow_height",
        +          "updraft",
        +          "lightning_potential"
        +        ],
        +        "type": "string"
        +      },
        +      {
        +        "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +        "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / current_weather / description
        Previous value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`."
      • removedInput schema / properties / daily / description
        Removed value: -"Daily weather variables to retrieve"
      • changedInput schema / properties / daily / items / enum
        Previous value: -[
        -  "temperature_2m_max",
        -  "temperature_2m_min",
        -  "apparent_temperature_max",
        -  "apparent_temperature_min",
        -  "precipitation_sum",
        -  "weather_code",
        -  "sunrise",
        -  "sunset",
        -  "wind_speed_10m_max",
        -  "wind_gusts_10m_max",
        -  "wind_direction_10m_dominant",
        -  "shortwave_radiation_sum",
        -  "uv_index_max"
        -]New value: +[
        +  "weather_code",
        +  "temperature_2m_max",
        +  "temperature_2m_min",
        +  "apparent_temperature_max",
        +  "apparent_temperature_min",
        +  "sunrise",
        +  "sunset",
        +  "daylight_duration",
        +  "sunshine_duration",
        +  "uv_index_max",
        +  "uv_index_clear_sky_max",
        +  "rain_sum",
        +  "showers_sum",
        +  "snowfall_sum",
        +  "precipitation_sum",
        +  "precipitation_hours",
        +  "precipitation_probability_max",
        +  "wind_speed_10m_max",
        +  "wind_gusts_10m_max",
        +  "wind_direction_10m_dominant",
        +  "shortwave_radiation_sum",
        +  "et0_fao_evapotranspiration",
        +  "temperature_2m_mean",
        +  "apparent_temperature_mean",
        +  "cape_mean",
        +  "cape_max",
        +  "cape_min",
        +  "cloud_cover_mean",
        +  "cloud_cover_max",
        +  "cloud_cover_min",
        +  "dewpoint_2m_mean",
        +  "dewpoint_2m_max",
        +  "dewpoint_2m_min",
        +  "dew_point_2m_mean",
        +  "dew_point_2m_max",
        +  "dew_point_2m_min",
        +  "et0_fao_evapotranspiration_sum",
        +  "growing_degree_days_base_0_limit_50",
        +  "leaf_wetness_probability_mean",
        +  "leaf_wetness_probability_max",
        +  "leaf_wetness_probability_min",
        +  "precipitation_probability_mean",
        +  "precipitation_probability_min",
        +  "relative_humidity_2m_mean",
        +  "relative_humidity_2m_max",
        +  "relative_humidity_2m_min",
        +  "snowfall_water_equivalent_sum",
        +  "pressure_msl_mean",
        +  "pressure_msl_max",
        +  "pressure_msl_min",
        +  "surface_pressure_mean",
        +  "surface_pressure_max",
        +  "surface_pressure_min",
        +  "updraft_max",
        +  "visibility_mean",
        +  "visibility_max",
        +  "visibility_min",
        +  "wind_gusts_10m_mean",
        +  "wind_gusts_10m_min",
        +  "wind_speed_10m_mean",
        +  "wind_speed_10m_min",
        +  "wet_bulb_temperature_2m_mean",
        +  "wet_bulb_temperature_2m_max",
        +  "wet_bulb_temperature_2m_min",
        +  "vapour_pressure_deficit_max"
        +]
      • addedInput schema / properties / end_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / end_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / forecast_days / default
        Removed value: -7
      • changedInput schema / properties / forecast_days / description
        Previous value: -"Number of forecast days"New value: +"Days to forecast, starting today."
      • addedInput schema / properties / forecast_hours
        Added value: +{
        +  "description": "Hours to forecast; alternative to `forecast_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / hourly / description
        Removed value: -"Hourly weather variables to retrieve"
      • addedInput schema / properties / hourly / items / anyOf
        Added value: +[
        +  {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dewpoint_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation_probability",
        +      "precipitation",
        +      "rain",
        +      "showers",
        +      "snowfall",
        +      "snow_depth",
        +      "weather_code",
        +      "pressure_msl",
        +      "surface_pressure",
        +      "cloud_cover",
        +      "cloud_cover_low",
        +      "cloud_cover_mid",
        +      "cloud_cover_high",
        +      "visibility",
        +      "evapotranspiration",
        +      "et0_fao_evapotranspiration",
        +      "vapour_pressure_deficit",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_120m",
        +      "wind_speed_180m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_120m",
        +      "wind_direction_180m",
        +      "wind_gusts_10m",
        +      "temperature_80m",
        +      "temperature_120m",
        +      "temperature_180m",
        +      "soil_temperature_0cm",
        +      "soil_temperature_6cm",
        +      "soil_temperature_18cm",
        +      "soil_temperature_54cm",
        +      "soil_moisture_0_to_1cm",
        +      "soil_moisture_1_to_3cm",
        +      "soil_moisture_3_to_9cm",
        +      "soil_moisture_9_to_27cm",
        +      "soil_moisture_27_to_81cm",
        +      "uv_index",
        +      "uv_index_clear_sky",
        +      "is_day",
        +      "sunshine_duration",
        +      "wet_bulb_temperature_2m",
        +      "total_column_integrated_water_vapour",
        +      "cape",
        +      "lifted_index",
        +      "convective_inhibition",
        +      "freezing_level_height",
        +      "boundary_layer_height_pbl",
        +      "shortwave_radiation",
        +      "direct_radiation",
        +      "diffuse_radiation",
        +      "direct_normal_irradiance",
        +      "global_tilted_irradiance",
        +      "terrestrial_radiation",
        +      "shortwave_radiation_instant",
        +      "direct_radiation_instant",
        +      "diffuse_radiation_instant",
        +      "direct_normal_irradiance_instant",
        +      "global_tilted_irradiance_instant",
        +      "terrestrial_radiation_instant",
        +      "wind_speed_200m",
        +      "wind_direction_200m",
        +      "snow_height",
        +      "updraft",
        +      "lightning_potential"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "description": "Pressure-level variable <variable>_<level>hPa, e.g. \"temperature_850hPa\".",
        +    "pattern": "^(temperature|relative_humidity|cloud_cover|wind_speed|wind_direction|geopotential_height|vertical_velocity)_(30|50|70|100|150|200|250|300|400|500|600|700|800|850|900|925|950|975|1000)hPa$",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / hourly / items / enum
        Removed value: -[
        -  "temperature_2m",
        -  "relative_humidity_2m",
        -  "dewpoint_2m",
        -  "apparent_temperature",
        -  "pressure_msl",
        -  "surface_pressure",
        -  "cloud_cover",
        -  "wind_speed_10m",
        -  "wind_direction_10m",
        -  "wind_gusts_10m",
        -  "shortwave_radiation",
        -  "precipitation",
        -  "rain",
        -  "snowfall",
        -  "precipitation_probability",
        -  "weather_code",
        -  "visibility",
        -  "uv_index"
        -]
      • removedInput schema / properties / hourly / items / type
        Removed value: -"string"
      • removedInput schema / properties / latitude / description
        Removed value: -"Latitude in WGS84 coordinate system"
      • removedInput schema / properties / longitude / description
        Removed value: -"Longitude in WGS84 coordinate system"
      • addedInput schema / properties / minutely_15
        Added value: +{
        +  "description": "Variables to return at 15-minute resolution.",
        +  "items": {
        +    "enum": [
        +      "temperature_2m",
        +      "relative_humidity_2m",
        +      "dew_point_2m",
        +      "apparent_temperature",
        +      "precipitation",
        +      "rain",
        +      "snowfall",
        +      "snowfall_height",
        +      "freezing_level_height",
        +      "sunshine_duration",
        +      "weather_code",
        +      "wind_speed_10m",
        +      "wind_speed_80m",
        +      "wind_speed_100m",
        +      "wind_direction_10m",
        +      "wind_direction_80m",
        +      "wind_direction_100m",
        +      "wind_gusts_10m",
        +      "visibility",
        +      "cape",
        +      "lightning_potential",
        +      "is_day"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / models
        Added value: +{
        +  "enum": [
        +    "best_match",
        +    "ecmwf_ifs04",
        +    "ecmwf_ifs",
        +    "ecmwf_ifs025",
        +    "ecmwf_aifs025",
        +    "ecmwf_aifs025_single",
        +    "ecmwf_ifs_europe_ensemble_mean",
        +    "ecmwf_aifs_europe_ensemble_mean",
        +    "cma_grapes_global",
        +    "bom_access_global",
        +    "gfs_seamless",
        +    "ncep_gfs_seamless",
        +    "ncep_gfs_global",
        +    "ncep_hrrr_conus",
        +    "ncep_hrrr_conus_15min",
        +    "ncep_nbm_conus",
        +    "ncep_nam_conus",
        +    "ncep_gfs_graphcast025",
        +    "ncep_aigfs025",
        +    "ncep_hgefs025_ensemble_mean",
        +    "ncep_aigefs025_ensemble_mean",
        +    "jma_seamless",
        +    "jma_msm",
        +    "jma_msm_upper_level",
        +    "jma_gsm",
        +    "kma_seamless",
        +    "kma_ldps",
        +    "kma_gdps",
        +    "dwd_icon_seamless",
        +    "dwd_icon_global",
        +    "dwd_icon_eu",
        +    "dwd_icon_d2",
        +    "dwd_icon_d2_15min",
        +    "icon_seamless",
        +    "icon_global",
        +    "icon_eu",
        +    "icon_d2",
        +    "gem_seamless",
        +    "gem_global",
        +    "gem_regional",
        +    "gem_hrdps_continental",
        +    "gem_hrdps_west",
        +    "cmc_gem_seamless",
        +    "cmc_gem_gdps",
        +    "cmc_gem_rdps",
        +    "cmc_gem_hrdps",
        +    "cmc_gem_hrdps_west",
        +    "meteofrance_seamless",
        +    "meteofrance_arpege_world",
        +    "meteofrance_arpege_europe",
        +    "meteofrance_arome_france",
        +    "meteofrance_arome_france0025",
        +    "meteofrance_arome_france_hd",
        +    "meteofrance_arome_france_15min",
        +    "meteofrance_arome_france_hd_15min",
        +    "meteofrance_arpege_world025",
        +    "italia_meteo_arpae_icon_2i",
        +    "metno_seamless",
        +    "metno_nordic",
        +    "knmi_seamless",
        +    "knmi_harmonie_arome_europe",
        +    "knmi_harmonie_arome_netherlands",
        +    "dmi_seamless",
        +    "dmi_harmonie_arome_europe",
        +    "ukmo_seamless",
        +    "ukmo_global_deterministic_10km",
        +    "ukmo_uk_deterministic_2km",
        +    "meteoswiss_icon_seamless",
        +    "meteoswiss_icon_ch1",
        +    "meteoswiss_icon_ch2",
        +    "geosphere_seamless",
        +    "geosphere_arome_austria",
        +    "chmi_aladin_seamless",
        +    "chmi_aladin_cz_1km",
        +    "chmi_aladin_central_europe_2km"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / past_days / description
        Previous value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast."
      • removedInput schema / properties / past_days / enum
        Removed value: -[
        -  1,
        -  2
        -]
      • addedInput schema / properties / past_days / maximum
        Added value: +92
      • addedInput schema / properties / past_days / minimum
        Added value: +1
      • addedInput schema / properties / past_hours
        Added value: +{
        +  "description": "Hours before now to include; alternative to `past_days`.",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • removedInput schema / properties / precipitation_unit / description
        Removed value: -"Precipitation unit"
      • addedInput schema / properties / start_date
        Added value: +{
        +  "description": "Date in YYYY-MM-DD format.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
        +  "type": "string"
        +}
      • addedInput schema / properties / start_hour
        Added value: +{
        +  "description": "Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date.",
        +  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
        +  "type": "string"
        +}
      • removedInput schema / properties / temperature_unit / description
        Removed value: -"Temperature unit"
      • addedInput schema / properties / tilt
        Added value: +{
        +  "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.",
        +  "maximum": 90,
        +  "minimum": 0,
        +  "type": "number"
        +}
      • addedInput schema / properties / timeformat
        Added value: +{
        +  "default": "iso8601",
        +  "enum": [
        +    "iso8601",
        +    "unixtime"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / timezone / description
        Previous value: -"Timezone for timestamps (e.g., Europe/Paris, America/New_York)"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
      • removedInput schema / properties / wind_speed_unit / description
        Removed value: -"Wind speed unit"
  3. 17 tool updatesv1.1.3
    • First observedair_quality
    • First observedclimate_projection
    • First observeddwd_icon_forecast
    • First observedecmwf_forecast
    • First observedelevation
    • First observedensemble_forecast
    • First observedflood_forecast
    • First observedgem_forecast
    • First observedgeocoding
    • First observedgfs_forecast
    • First observedjma_forecast
    • First observedmarine_weather
    • First observedmeteofrance_forecast
    • First observedmetno_forecast
    • First observedseasonal_forecast
    • First observedweather_archive
    • First observedweather_forecast

TDQS

B3.3/5.0

Scored across 17 tools

Disambiguation3/5

The provider-specific forecast tools (gfs_forecast, ecmwf_forecast, jma_forecast, dwd_icon_forecast, gem_forecast, metno_forecast, meteofrance_forecast) overlap heavily with the generic weather_forecast, which also returns model data. Descriptions clarify that provider tools are for multi-model comparison, but the boundary between picking weather_forecast and a specific provider tool is not always obvious. Other tools (air_quality, marine_weather, elevation, flood_forecast, geocoding) are clearly distinct.

Naming Consistency4/5

Names are consistently lowercase snake_case, which is good, but the pattern is mixed: some use {provider}_forecast (gfs_forecast), others use bare domain nouns (air_quality, elevation, geocoding), and weather_forecast/weather_archive use a weather_ prefix. Still readable and mostly predictable.

Tool Count3/5

17 tools is on the heavy side, and seven of them are near-duplicate provider-specific forecast endpoints that largely could have been a single parameterized forecast tool. The remaining domain tools (air quality, marine, flood, elevation, geocoding, archive, seasonal, climate) each earn their place.

Completeness4/5

Coverage is broad and complete for a weather API: current/forecast, ensemble, seasonal, climate projections, historical archive, air quality, marine, flood, and elevation. Minor gaps like no explicit 'current conditions' or station/observation tool, but core lifecycle is well covered.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to access real-time and historical weather data through multiple weather APIs including OpenMeteo, Tomorrow.io, and OpenWeatherMap. Provides comprehensive meteorological information including current conditions, forecasts, historical data, and weather alerts.
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables AI assistants to retrieve current weather, forecasts, and summaries for any global location using the Open-Meteo API, with no API key required.
    11 npm
    Creative Commons Zero v1.0 Universal
  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive access to Open-Meteo weather APIs, including forecasts, historical data, air quality, marine weather, and geocoding, enabling LLMs to retrieve weather information and location data.
    17
    1,768 npm
    1
    MIT
  • A
    license
    A
    quality
    F
    maintenance
    Provides comprehensive weather data (forecasts, historical, air quality, marine) from Open-Meteo through 12 tools, with support for single and batch location queries.
    12
    1
    Apache 2.0