Open-Meteo MCP Server
Summary: This server is an MCP weather/climate toolkit that lets an LLM fetch accurate Open-Meteo data — forecasts, 1940-onward history, air quality, marine, flood, seasonal and CMIP6 climate — for any coordinates, with no API key.
Weather forecasts up to 16 days (or recent past via
past_days), with hourly, daily and 15-minute variables, unit and timezone options.Historical weather from 1940 to yesterday via ERA5 reanalysis.
Air quality: PM2.5, PM10, ozone, NO₂, pollen, European/US AQI, UV index.
Marine conditions: wave height, period, direction, swell, sea surface temperature, ocean currents.
Floods: river discharge from GloFAS, optionally all 50 ensemble members.
Seasonal outlooks from weeks to ~7 months ahead, including weekly/monthly anomalies.
Climate projections from CMIP6 models, 1950–2050.
Ensemble forecasts showing uncertainty across members (a model must be chosen).
Model-specific forecasts from DWD ICON, NOAA GFS, Météo-France, ECMWF, JMA, MET Norway and Environment Canada GEM — one model per call, parallel calls to compare.
Location helpers: geocoding of place names/postal codes to coordinates, and elevation lookups (batched).
Solar/radiation variables such as global tilted irradiance using panel tilt and azimuth.
Deployment flexibility: stdio for local clients or stateless HTTP at
/mcpwith API key auth, rate limiting, origin checks, response caching and redirectable endpoints for self-hosted Open-Meteo.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Open-Meteo MCP Serverwhat's the 7-day weather forecast for Paris?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Open-Meteo MCP Server
Give any LLM accurate weather data: forecasts, history back to 1940, air quality, marine conditions, floods and climate projections.
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-serverOther 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.
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 |
| Forecast up to 16 days, picking the best model for the location. Recent past via |
| Historical weather from 1940 to yesterday (ERA5 reanalysis) | |
| PM2.5, PM10, ozone, NO₂, pollen, European and US AQI, UV index | |
| Wave height, period and direction, swell, sea surface temperature | |
| Place name or postal code to coordinates | |
| Terrain height for coordinates | |
Models |
| DWD ICON (Germany, high resolution over Europe) |
| NOAA GFS (global, high resolution over North America) | |
| Météo-France AROME and ARPEGE | |
| ECMWF IFS and AIFS | |
| Japan Meteorological Agency | |
| MET Norway (Nordic countries) | |
| Environment Canada GEM | |
Advanced |
| Forecast uncertainty across ensemble members. |
| Outlook from a few weeks to about 7 months ahead | |
| CMIP6 climate projections, 1950 to 2050 | |
| 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
timezoneis set.timezone: "auto"uses the location's local time.nullin a series means the model has no value for that time, not zero.Responses over 25,000 characters have their
hourly/daily/minutely_15arrays shortened by the same ratio, keeping series aligned, and gaintruncated: truewith atruncation_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-serverClients 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.
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:latestTags 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 |
| stdio |
|
|
| HTTP port |
|
| Interface to bind. |
|
| Response cache size, in bytes of serialized JSON. |
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.
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 |
| unset (open) | Key required on every |
|
| Requests per minute per client IP. IPv6 clients are grouped by /56 |
|
| Requests per minute shared by all claude.ai traffic |
| unset | Comma-separated IPs or CIDRs whose |
| empty | Comma-separated browser origins allowed. Any request with an unlisted |
Custom Open-Meteo instance
Each endpoint can be redirected, for example to a self-hosted Open-Meteo:
Variable | Default |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
Everyday weather: forecasts, history, air quality, marine, elevation | |
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 buildCommand | Description |
| Run from source with auto-reload (stdio / HTTP) |
| Unit tests (network mocked) |
| Type checking and Biome linting |
| Calls all 17 tools against the live API through a real MCP client. Needs a prior build |
| 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 instructionsThe 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 toolsair_qualityAir QualityBRead-onlyIdempotent
Get air quality forecast data including PM2.5, PM10, ozone, nitrogen dioxide, pollen, European/US AQI indices, UV index and other pollutants.
| Name | Required | Description | Default |
|---|---|---|---|
| hourly | No | ||
| current | No | Variables to return for the current time. | |
| domains | No | "cams_europe": higher resolution, Europe only. "cams_global": worldwide, coarser. "auto" (default) uses Europe where available. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| timeformat | No | iso8601 | |
| forecast_days | No | Days to forecast, starting today. |
TDQS
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.
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.
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.
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.
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.
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 ProjectionCRead-onlyIdempotent
Get climate change projections from CMIP6 models for different warming scenarios.
| Name | Required | Description | Default |
|---|---|---|---|
| daily | No | ||
| models | No | Omit to use the default model. | |
| end_date | Yes | Date in YYYY-MM-DD format. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| start_date | Yes | Date in YYYY-MM-DD format. | |
| timeformat | No | iso8601 | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm | |
| disable_bias_correction | No | Return raw model output instead of bias-corrected values. |
TDQS
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.
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.
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.
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.
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.
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 ForecastARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | ||
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| end_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| start_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| timeformat | No | iso8601 | |
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| current_weather | No | Legacy current-conditions summary; prefer `current`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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 ForecastARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | ||
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| end_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| start_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| timeformat | No | iso8601 | |
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| current_weather | No | Legacy current-conditions summary; prefer `current`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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.
elevationElevationARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | ||
| longitude | Yes |
TDQS
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.
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.
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.
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.
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.
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 ForecastBRead-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").
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | Yes | Required: the ensemble API has no default model. Use e.g. "icon_seamless_eps" or "ncep_gefs_seamless". | |
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| elevation | No | Elevation in metres to adjust the values to; defaults to the terrain height at the point. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| timeformat | No | iso8601 | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm | |
| temporal_resolution | No | "native" keeps each model's own time step; "hourly", "hourly_3" and "hourly_6" resample to 1, 3 or 6 hours. |
TDQS
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.
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.
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.
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.
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.
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 ForecastCRead-onlyIdempotent
Get river discharge and flood forecasts from GloFAS (Global Flood Awareness System).
| Name | Required | Description | Default |
|---|---|---|---|
| daily | No | ||
| models | No | Omit to use the default model. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| ensemble | No | Return all 50 ensemble members instead of a single series. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| timeformat | No | iso8601 | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | nearest |
TDQS
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.
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.
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.
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.
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.
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 ForecastARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | ||
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| end_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| start_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| timeformat | No | iso8601 | |
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| current_weather | No | Legacy current-conditions summary; prefer `current`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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.
geocodingGeocodingARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Place name or postal code to search for. | |
| count | No | Maximum number of results. | |
| format | No | json | |
| language | No | Language of the returned place names (e.g. "fr"); default English. | |
| countryCode | No | Only return places in this country. |
TDQS
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.
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.
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.
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.
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.
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 ForecastARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | ||
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| end_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| start_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| timeformat | No | iso8601 | |
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| current_weather | No | Legacy current-conditions summary; prefer `current`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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 ForecastARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | ||
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| end_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| start_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| timeformat | No | iso8601 | |
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| current_weather | No | Legacy current-conditions summary; prefer `current`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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 WeatherCRead-onlyIdempotent
Get marine weather forecast including wave height, wave period, wave direction and sea surface temperature.
| Name | Required | Description | Default |
|---|---|---|---|
| daily | No | ||
| hourly | No | ||
| models | No | Omit to use the default model. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| timeformat | No | iso8601 | |
| length_unit | No | ||
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius |
TDQS
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.
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.
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.
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.
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.
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 ForecastARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | ||
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| end_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| start_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| timeformat | No | iso8601 | |
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| current_weather | No | Legacy current-conditions summary; prefer `current`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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 ForecastARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | ||
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| end_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| start_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| timeformat | No | iso8601 | |
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| current_weather | No | Legacy current-conditions summary; prefer `current`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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 ForecastBRead-onlyIdempotent
Get long-range seasonal forecasts for temperature and precipitation up to ~7 months ahead.
| Name | Required | Description | Default |
|---|---|---|---|
| daily | No | ||
| hourly | No | ||
| models | No | Omit to use the default model. | |
| weekly | No | Weekly means and anomalies against climatology. | |
| monthly | No | Monthly means and anomalies against climatology. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| timeformat | No | iso8601 | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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)BRead-onlyIdempotent
Get historical weather data from ERA5 reanalysis (1940-present) for specific coordinates and date range.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | Omit to use the default model. | |
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| end_date | Yes | Date in YYYY-MM-DD format. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| elevation | No | Elevation in metres to adjust the values to; defaults to the terrain height at the point. | |
| longitude | Yes | ||
| start_date | Yes | Date in YYYY-MM-DD format. | |
| timeformat | No | iso8601 | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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 ForecastARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| tilt | No | Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance. | |
| daily | No | ||
| hourly | No | ||
| models | No | ||
| azimuth | No | Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`. | |
| current | No | Variables to return for the current time. | |
| end_date | No | Date in YYYY-MM-DD format. | |
| end_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| latitude | Yes | ||
| timezone | No | IANA time zone (e.g. "Europe/Paris"), or "auto" for the location's own. Default GMT. | |
| longitude | Yes | ||
| past_days | No | Days before today to include, in addition to the forecast. | |
| past_hours | No | Hours before now to include; alternative to `past_days`. | |
| start_date | No | Date in YYYY-MM-DD format. | |
| start_hour | No | Timestamp YYYY-MM-DDTHH:MM; hourly-precision alternative to start_date/end_date. | |
| timeformat | No | iso8601 | |
| minutely_15 | No | Variables to return at 15-minute resolution. | |
| forecast_days | No | Days to forecast, starting today. | |
| cell_selection | No | Grid cell to use near a coastline: prefer "land", prefer "sea", or the "nearest" cell. | |
| forecast_hours | No | Hours to forecast; alternative to `forecast_days`. | |
| current_weather | No | Legacy current-conditions summary; prefer `current`. | |
| wind_speed_unit | No | kmh | |
| temperature_unit | No | celsius | |
| precipitation_unit | No | mm |
TDQS
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.
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.
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.
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.
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.
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 tool update
v2.5.2- Changed
ensemble_forecast3 fields changed- changed
Input schema / properties / models / anyOfPrevious 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" + } +] - added
Input schema / properties / models / descriptionAdded value: +"Required: the ensemble API has no default model. Use e.g. \"icon_seamless_eps\" or \"ncep_gefs_seamless\"." - changed
Input schema / requiredPrevious value: -[ - "latitude", - "longitude" -]New value: +[ + "latitude", + "longitude", + "models" +]
17 tool updates
v2.5.0- Changed
air_quality19 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / currentAdded 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" +} - added
Input schema / properties / domainsAdded 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" +} - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - changed
Input schema / properties / forecast_days / maximumPrevious value: -16New value: +7 - changed
Input schema / properties / forecast_days / minimumPrevious value: -1New value: +0 - removed
Input schema / properties / hourly / descriptionRemoved value: -"Air quality variables to retrieve" - changed
Input schema / properties / hourly / items / enumPrevious 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" +] - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - changed
Input schema / properties / past_days / maximumPrevious value: -7New value: +92 - changed
Input schema / properties / past_days / minimumPrevious value: -1New value: +0 - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
- Changed
climate_projection16 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - removed
Input schema / properties / daily / descriptionRemoved value: -"Climate projection variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - removed
Input schema / properties / disable_bias_correction / defaultRemoved value: -false - changed
Input schema / properties / disable_bias_correction / descriptionPrevious value: -"Disable statistical downscaling and bias correction"New value: +"Return raw model output instead of bias-corrected values." - changed
Input schema / properties / end_date / descriptionPrevious value: -"End date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format." - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - changed
Input schema / properties / models / descriptionPrevious value: -"Climate models to use"New value: +"Omit to use the default model." - changed
Input schema / properties / models / items / enumPrevious 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" +] - changed
Input schema / properties / start_date / descriptionPrevious value: -"Start date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format." - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - added
Input schema / properties / timezoneAdded value: +{ + "description": "IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT.", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "latitude", - "longitude", - "start_date", - "end_date", - "models", - "daily" -]New value: +[ + "latitude", + "longitude", + "start_date", + "end_date" +]
- Changed
dwd_icon_forecast34 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - changed
Input schema / properties / current_weather / descriptionPrevious value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`." - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / end_hourAdded 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" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded 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" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - removed
Input schema / properties / past_days / enumRemoved value: -[ - 1, - 2 -] - added
Input schema / properties / past_days / maximumAdded value: +92 - added
Input schema / properties / past_days / minimumAdded value: +1 - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / precipitation_unit / descriptionRemoved value: -"Precipitation unit" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / start_hourAdded 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" +} - removed
Input schema / properties / temperature_unit / descriptionRemoved value: -"Temperature unit" - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious 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." - removed
Input schema / properties / wind_speed_unit / descriptionRemoved value: -"Wind speed unit"
- Changed
ecmwf_forecast34 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - changed
Input schema / properties / current_weather / descriptionPrevious value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`." - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / end_hourAdded 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" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded 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" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - removed
Input schema / properties / past_days / enumRemoved value: -[ - 1, - 2 -] - added
Input schema / properties / past_days / maximumAdded value: +92 - added
Input schema / properties / past_days / minimumAdded value: +1 - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / precipitation_unit / descriptionRemoved value: -"Precipitation unit" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / start_hourAdded 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" +} - removed
Input schema / properties / temperature_unit / descriptionRemoved value: -"Temperature unit" - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious 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." - removed
Input schema / properties / wind_speed_unit / descriptionRemoved value: -"Wind speed unit"
- Changed
elevation12 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / latitude / anyOfAdded value: +[ + { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + { + "items": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "type": "array" + } +] - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / latitude / maximumRemoved value: -90 - removed
Input schema / properties / latitude / minimumRemoved value: --90 - removed
Input schema / properties / latitude / typeRemoved value: -"number" - added
Input schema / properties / longitude / anyOfAdded value: +[ + { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + { + "items": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "type": "array" + } +] - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / maximumRemoved value: -180 - removed
Input schema / properties / longitude / minimumRemoved value: --180 - removed
Input schema / properties / longitude / typeRemoved value: -"number"
- Changed
ensemble_forecast31 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / elevationAdded value: +{ + "description": "Elevation in metres to adjust the values to; defaults to the terrain height at the point.", + "type": "number" +} - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - changed
Input schema / properties / forecast_days / maximumPrevious value: -35New value: +36 - changed
Input schema / properties / forecast_days / minimumPrevious value: -1New value: +0 - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / models / anyOfAdded 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" + } +] - removed
Input schema / properties / models / descriptionRemoved value: -"Ensemble models to use" - removed
Input schema / properties / models / itemsRemoved value: -{ - "enum": [ - "meteofrance_arome_france_hd", - "meteofrance_arome_france", - "meteofrance_arpege_europe", - "icon_eu", - "icon_global", - "ecmwf_ifs025", - "gfs013" - ], - "type": "string" -} - removed
Input schema / properties / models / typeRemoved value: -"array" - added
Input schema / properties / past_daysAdded value: +{ + "description": "Days before today to include, in addition to the forecast.", + "maximum": 92, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / temporal_resolutionAdded 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" +} - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT." - changed
Input schema / requiredPrevious value: -[ - "latitude", - "longitude", - "models" -]New value: +[ + "latitude", + "longitude" +]
- Changed
flood_forecast19 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / cell_selectionAdded 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" +} - removed
Input schema / properties / daily / descriptionRemoved value: -"River discharge variables to retrieve" - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - changed
Input schema / properties / ensemble / descriptionPrevious value: -"If true, all forecast ensemble members will be returned"New value: +"Return all 50 ensemble members instead of a single series." - removed
Input schema / properties / forecast_days / defaultRemoved value: -92 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days (up to 210 days possible)"New value: +"Days to forecast, starting today." - changed
Input schema / properties / forecast_days / maximumPrevious value: -210New value: +366 - changed
Input schema / properties / forecast_days / minimumPrevious value: -1New value: +0 - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / modelsAdded value: +{ + "description": "Omit to use the default model.", + "enum": [ + "seamless_v4", + "forecast_v4", + "consolidated_v4", + "seamless_v3", + "forecast_v3", + "consolidated_v3" + ], + "type": "string" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - changed
Input schema / properties / past_days / maximumPrevious value: -7New value: +92 - changed
Input schema / properties / past_days / minimumPrevious value: -1New value: +0 - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT."
- Changed
gem_forecast34 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - changed
Input schema / properties / current_weather / descriptionPrevious value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`." - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / end_hourAdded 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" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded 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" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - removed
Input schema / properties / past_days / enumRemoved value: -[ - 1, - 2 -] - added
Input schema / properties / past_days / maximumAdded value: +92 - added
Input schema / properties / past_days / minimumAdded value: +1 - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / precipitation_unit / descriptionRemoved value: -"Precipitation unit" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / start_hourAdded 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" +} - removed
Input schema / properties / temperature_unit / descriptionRemoved value: -"Temperature unit" - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious 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." - removed
Input schema / properties / wind_speed_unit / descriptionRemoved value: -"Wind speed unit"
- Changed
geocoding8 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / properties / count / descriptionPrevious value: -"Number of search results to return (maximum 100)"New value: +"Maximum number of results." - changed
Input schema / properties / countryCode / descriptionPrevious 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." - removed
Input schema / properties / format / descriptionRemoved value: -"Return format for results" - changed
Input schema / properties / format / enumPrevious value: -[ - "json", - "protobuf" -]New value: +[ + "json" +] - changed
Input schema / properties / language / descriptionPrevious 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." - changed
Input schema / properties / name / descriptionPrevious 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."
- Changed
gfs_forecast34 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - changed
Input schema / properties / current_weather / descriptionPrevious value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`." - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / end_hourAdded 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" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded 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" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - removed
Input schema / properties / past_days / enumRemoved value: -[ - 1, - 2 -] - added
Input schema / properties / past_days / maximumAdded value: +92 - added
Input schema / properties / past_days / minimumAdded value: +1 - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / precipitation_unit / descriptionRemoved value: -"Precipitation unit" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / start_hourAdded 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" +} - removed
Input schema / properties / temperature_unit / descriptionRemoved value: -"Temperature unit" - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious 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." - removed
Input schema / properties / wind_speed_unit / descriptionRemoved value: -"Wind speed unit"
- Changed
jma_forecast34 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - changed
Input schema / properties / current_weather / descriptionPrevious value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`." - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / end_hourAdded 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" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded value: +{ + "enum": [ + "jma_seamless", + "jma_msm", + "jma_msm_upper_level", + "jma_gsm" + ], + "type": "string" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - removed
Input schema / properties / past_days / enumRemoved value: -[ - 1, - 2 -] - added
Input schema / properties / past_days / maximumAdded value: +92 - added
Input schema / properties / past_days / minimumAdded value: +1 - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / precipitation_unit / descriptionRemoved value: -"Precipitation unit" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / start_hourAdded 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" +} - removed
Input schema / properties / temperature_unit / descriptionRemoved value: -"Temperature unit" - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious 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." - removed
Input schema / properties / wind_speed_unit / descriptionRemoved value: -"Wind speed unit"
- Changed
marine_weather25 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily marine weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - changed
Input schema / properties / forecast_days / minimumPrevious value: -1New value: +0 - removed
Input schema / properties / hourly / descriptionRemoved value: -"Marine weather variables to retrieve" - changed
Input schema / properties / hourly / items / enumPrevious 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" +] - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - added
Input schema / properties / length_unitAdded value: +{ + "enum": [ + "metric", + "imperial" + ], + "type": "string" +} - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded 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" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - changed
Input schema / properties / past_days / maximumPrevious value: -7New value: +92 - changed
Input schema / properties / past_days / minimumPrevious value: -1New value: +0 - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / temperature_unitAdded value: +{ + "default": "celsius", + "enum": [ + "celsius", + "fahrenheit" + ], + "type": "string" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT." - added
Input schema / properties / wind_speed_unitAdded value: +{ + "default": "kmh", + "enum": [ + "kmh", + "ms", + "mph", + "kn" + ], + "type": "string" +}
- Changed
meteofrance_forecast34 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - changed
Input schema / properties / current_weather / descriptionPrevious value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`." - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / end_hourAdded 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" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded 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" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - removed
Input schema / properties / past_days / enumRemoved value: -[ - 1, - 2 -] - added
Input schema / properties / past_days / maximumAdded value: +92 - added
Input schema / properties / past_days / minimumAdded value: +1 - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / precipitation_unit / descriptionRemoved value: -"Precipitation unit" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / start_hourAdded 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" +} - removed
Input schema / properties / temperature_unit / descriptionRemoved value: -"Temperature unit" - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious 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." - removed
Input schema / properties / wind_speed_unit / descriptionRemoved value: -"Wind speed unit"
- Changed
metno_forecast34 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - changed
Input schema / properties / current_weather / descriptionPrevious value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`." - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / end_hourAdded 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" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded value: +{ + "enum": [ + "metno_seamless", + "metno_nordic" + ], + "type": "string" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - removed
Input schema / properties / past_days / enumRemoved value: -[ - 1, - 2 -] - added
Input schema / properties / past_days / maximumAdded value: +92 - added
Input schema / properties / past_days / minimumAdded value: +1 - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / precipitation_unit / descriptionRemoved value: -"Precipitation unit" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / start_hourAdded 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" +} - removed
Input schema / properties / temperature_unit / descriptionRemoved value: -"Temperature unit" - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious 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." - removed
Input schema / properties / wind_speed_unit / descriptionRemoved value: -"Wind speed unit"
- Changed
seasonal_forecast22 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - changed
Input schema / properties / end_date / descriptionPrevious value: -"End date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format." - removed
Input schema / properties / forecast_days / defaultRemoved value: -92 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days: 45 days, 3 months (default), 6 months, or 9 months"New value: +"Days to forecast, starting today." - removed
Input schema / properties / forecast_days / enumRemoved value: -[ - 45, - 92, - 183, - 274 -] - added
Input schema / properties / forecast_days / maximumAdded value: +217 - added
Input schema / properties / forecast_days / minimumAdded value: +0 - removed
Input schema / properties / hourly / descriptionRemoved value: -"6-hourly weather variables to retrieve" - changed
Input schema / properties / hourly / items / enumPrevious 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" +] - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / modelsAdded 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" +} - added
Input schema / properties / monthlyAdded 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" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - changed
Input schema / properties / start_date / descriptionPrevious value: -"Start date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format." - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT." - added
Input schema / properties / weeklyAdded 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" +}
- Changed
weather_archive19 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / elevationAdded value: +{ + "description": "Elevation in metres to adjust the values to; defaults to the terrain height at the point.", + "type": "number" +} - changed
Input schema / properties / end_date / descriptionPrevious value: -"End date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format." - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - changed
Input schema / properties / hourly / items / enumPrevious 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" +] - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / modelsAdded 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" +} - added
Input schema / properties / precipitation_unitAdded value: +{ + "default": "mm", + "enum": [ + "mm", + "inch" + ], + "type": "string" +} - changed
Input schema / properties / start_date / descriptionPrevious value: -"Start date in YYYY-MM-DD format"New value: +"Date in YYYY-MM-DD format." - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone for timestamps"New value: +"IANA time zone (e.g. \"Europe/Paris\"), or \"auto\" for the location's own. Default GMT." - added
Input schema / properties / wind_speed_unitAdded value: +{ + "default": "kmh", + "enum": [ + "kmh", + "ms", + "mph", + "kn" + ], + "type": "string" +}
- Changed
weather_forecast34 fields changed- added
Input schema / $schemaAdded value: +"http://json-schema.org/draft-07/schema#" - added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / azimuthAdded value: +{ + "description": "Solar panel azimuth in degrees (0 = south, -90 = east, 90 = west, ±180 = north); used with `tilt`.", + "maximum": 180, + "minimum": -180, + "type": "number" +} - added
Input schema / properties / cell_selectionAdded value: +{ + "description": "Grid cell to use near a coastline: prefer \"land\", prefer \"sea\", or the \"nearest\" cell.", + "enum": [ + "land", + "sea", + "nearest" + ], + "type": "string" +} - added
Input schema / properties / currentAdded 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" +} - changed
Input schema / properties / current_weather / descriptionPrevious value: -"Include current weather conditions"New value: +"Legacy current-conditions summary; prefer `current`." - removed
Input schema / properties / daily / descriptionRemoved value: -"Daily weather variables to retrieve" - changed
Input schema / properties / daily / items / enumPrevious 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" +] - added
Input schema / properties / end_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / end_hourAdded 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" +} - removed
Input schema / properties / forecast_days / defaultRemoved value: -7 - changed
Input schema / properties / forecast_days / descriptionPrevious value: -"Number of forecast days"New value: +"Days to forecast, starting today." - added
Input schema / properties / forecast_hoursAdded value: +{ + "description": "Hours to forecast; alternative to `forecast_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / hourly / descriptionRemoved value: -"Hourly weather variables to retrieve" - added
Input schema / properties / hourly / items / anyOfAdded 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" + } +] - removed
Input schema / properties / hourly / items / enumRemoved 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" -] - removed
Input schema / properties / hourly / items / typeRemoved value: -"string" - removed
Input schema / properties / latitude / descriptionRemoved value: -"Latitude in WGS84 coordinate system" - removed
Input schema / properties / longitude / descriptionRemoved value: -"Longitude in WGS84 coordinate system" - added
Input schema / properties / minutely_15Added 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" +} - added
Input schema / properties / modelsAdded 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" +} - changed
Input schema / properties / past_days / descriptionPrevious value: -"Include past days data"New value: +"Days before today to include, in addition to the forecast." - removed
Input schema / properties / past_days / enumRemoved value: -[ - 1, - 2 -] - added
Input schema / properties / past_days / maximumAdded value: +92 - added
Input schema / properties / past_days / minimumAdded value: +1 - added
Input schema / properties / past_hoursAdded value: +{ + "description": "Hours before now to include; alternative to `past_days`.", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - removed
Input schema / properties / precipitation_unit / descriptionRemoved value: -"Precipitation unit" - added
Input schema / properties / start_dateAdded value: +{ + "description": "Date in YYYY-MM-DD format.", + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / start_hourAdded 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" +} - removed
Input schema / properties / temperature_unit / descriptionRemoved value: -"Temperature unit" - added
Input schema / properties / tiltAdded value: +{ + "description": "Solar panel tilt in degrees (0 = flat, 90 = vertical); with `azimuth`, sets global_tilted_irradiance.", + "maximum": 90, + "minimum": 0, + "type": "number" +} - added
Input schema / properties / timeformatAdded value: +{ + "default": "iso8601", + "enum": [ + "iso8601", + "unixtime" + ], + "type": "string" +} - changed
Input schema / properties / timezone / descriptionPrevious 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." - removed
Input schema / properties / wind_speed_unit / descriptionRemoved value: -"Wind speed unit"
17 tool updates
v1.1.3- First observed
air_quality - First observed
climate_projection - First observed
dwd_icon_forecast - First observed
ecmwf_forecast - First observed
elevation - First observed
ensemble_forecast - First observed
flood_forecast - First observed
gem_forecast - First observed
geocoding - First observed
gfs_forecast - First observed
jma_forecast - First observed
marine_weather - First observed
meteofrance_forecast - First observed
metno_forecast - First observed
seasonal_forecast - First observed
weather_archive - First observed
weather_forecast
TDQS
Scored across 17 tools
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.
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.
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.
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
Related MCP Connectors
Global weather via Open-Meteo: forecast, historical, marine, air quality, geocoding, elevation.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
- geoOAuthco.thinair
Geocoding, routing, isochrones, traffic, weather, and place search for AI agents. 19 MCP tools.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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.-
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to retrieve current weather, forecasts, and summaries for any global location using the Open-Meteo API, with no API key required.11 npmCreative Commons Zero v1.0 Universal
- AlicenseAqualityDmaintenanceProvides 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.171,768 npm1MIT
- AlicenseAqualityFmaintenanceProvides comprehensive weather data (forecasts, historical, air quality, marine) from Open-Meteo through 12 tools, with support for single and batch location queries.121Apache 2.0