Skip to main content
Glama

Openmeteo Get Ensemble

openmeteo_get_ensemble
Read-onlyIdempotent

Probabilistic ensemble weather forecast — up to 64 ensemble members, up to 16 days ahead with optional past_days (0–92). Each member's values appear as separate columns named with a member suffix (e.g. temperature_2m_member01, temperature_2m_member02). Use the spread across members to compute exceedance probabilities, quantify forecast uncertainty, and build decision thresholds. Available models: ecmwf_ifs025_ensemble (51 members, global 0.25°), ecmwf_aifs025_ensemble (51, global 0.25°), ecmwf_ifs_europe_ensemble (51, Europe 9 km), ecmwf_aifs_europe_ensemble (51, Europe 31 km), google_weathernext2_ensemble (64, global 0.25°), ncep_gefs_seamless (31, global blend), ncep_gefs025 (31, global 0.25°), ncep_gefs05 (31, global 50 km, 35 days), ncep_aigefs025 (31, global 0.25°), icon_seamless_eps (20–40, global/Europe blend), icon_global_eps (40, global 26 km), icon_eu_eps (40, Europe 13 km), icon_d2_eps (20, Central Europe 2 km), gem_global_ensemble (21, global 0.25°), bom_access_global_ensemble (18, global 40 km), ukmo_global_ensemble_20km (18, global 20 km), ukmo_uk_ensemble_2km (3, UK 2 km), meteoswiss_icon_ch1_ensemble (11, Central Europe 1 km), meteoswiss_icon_ch2_ensemble (21, Central Europe 2 km). Omit models to use the API default blend. A regional model returns no data outside the area it covers; that comes back as an input error naming the coverage gap, not a transient failure, so pick a global model or move the coordinate inside the region rather than retrying. A model name this list does not carry is still sent upstream, so a newly added one keeps working. Large multi-member, multi-day pulls produce thousands of records and spill to DataCanvas when canvas is enabled, returning a bounded preview with truncated: true when it is not. At least one of hourly_variables or daily_variables is required.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
modelsNoEnsemble model to use, one name: ecmwf_ifs025_ensemble (51 members, global 0.25°), ecmwf_aifs025_ensemble (51, global 0.25°), ecmwf_ifs_europe_ensemble (51, Europe 9 km), ecmwf_aifs_europe_ensemble (51, Europe 31 km), google_weathernext2_ensemble (64, global 0.25°), ncep_gefs_seamless (31, global blend), ncep_gefs025 (31, global 0.25°), ncep_gefs05 (31, global 50 km, 35 days), ncep_aigefs025 (31, global 0.25°), icon_seamless_eps (20–40, global/Europe blend), icon_global_eps (40, global 26 km), icon_eu_eps (40, Europe 13 km), icon_d2_eps (20, Central Europe 2 km), gem_global_ensemble (21, global 0.25°), bom_access_global_ensemble (18, global 40 km), ukmo_global_ensemble_20km (18, global 20 km), ukmo_uk_ensemble_2km (3, UK 2 km), meteoswiss_icon_ch1_ensemble (11, Central Europe 1 km), meteoswiss_icon_ch2_ensemble (21, Central Europe 2 km). Member counts include the control run. Omit to use the API default blend. A name outside this list is sent upstream rather than rejected here, so a model Open-Meteo adds later still works.
latitudeYesLatitude in decimal degrees. Use openmeteo_search_locations to resolve a place name to coordinates.
timezoneNoIANA timezone (e.g., "America/Los_Angeles") or "auto" to use the location's local timezone. Default "auto".auto
canvas_idNoDataCanvas token for large multi-member queries. When a result is too large to return inline — driven by total payload size, so a wide member fan-out can spill at any row count — it spills to this canvas for SQL querying. Omit to create a fresh canvas.
longitudeYesLongitude in decimal degrees.
past_daysNoInclude this many days of past ensemble data before today (0–92). Default 0.
forecast_daysNoForecast horizon in days (1–16). Default 7.
daily_variablesNoDaily variables to fetch across all ensemble members (e.g., ["temperature_2m_max", "temperature_2m_min", "precipitation_sum"]). Each variable appears as temperature_2m_max_member01, … Daily names only — an hourly name such as precipitation or temperature_2m belongs in hourly_variables and is rejected here; for a daily summary use its published aggregate (precipitation_sum, temperature_2m_max). At least one of hourly_variables or daily_variables required.
wind_speed_unitNoWind speed unit. Default "kmh".kmh
hourly_variablesNoHourly variables to fetch across all ensemble members (e.g., ["temperature_2m", "precipitation", "wind_speed_10m"]). Each variable appears as temperature_2m_member01, temperature_2m_member02, … in the output. Hourly names only — a daily-only aggregate such as precipitation_sum or wind_speed_10m_max belongs in daily_variables and is rejected here; temperature_2m_max and temperature_2m_min are an exception, published here as 3-hourly aggregations as well as daily. At least one of hourly_variables or daily_variables required.
temperature_unitNoTemperature unit. Default "celsius".celsius
precipitation_unitNoPrecipitation unit. Default "mm".mm

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dailyNoPer-day records with "time" (YYYY-MM-DD) + per-member columns (e.g., temperature_2m_max_member01). Absent when only hourly_variables were requested. When truncated, contains a preview only — query canvas_id for the full dataset when one is present.
errorNoPresent when the call failed. Absent on success.
modelNoEnsemble model used (e.g. "ecmwf_ifs025_ensemble") — echoes the requested models parameter. Absent when models was omitted (API default blend; the API reports no provenance).
hourlyNoPer-hour records with "time" (ISO 8601) + per-member columns for each requested variable (e.g., temperature_2m_member01, temperature_2m_member02). Absent when only daily_variables were requested. When truncated, contains a preview only — query canvas_id for the full dataset when one is present.
noticeNoWarning that a requested variable came back with no data across every member — names each variable whose unit is "undefined", which is how the endpoint reports a name the selected model does not carry.
latitudeNoSnapped latitude (Open-Meteo snaps to nearest grid point)
timezoneNoResolved IANA timezone
canvas_idNoDataCanvas token for the staged full dataset. Present only when truncated is true AND DataCanvas is enabled (CANVAS_PROVIDER_TYPE=duckdb) — absent otherwise, in which case the preview is all this response carries. Query with SQL using this token.
elevationNoTerrain elevation at grid point (meters)
longitudeNoSnapped longitude
truncatedNoTrue when the response was too large to return inline, so hourly and daily carry a bounded preview rather than the full set. With DataCanvas enabled the complete data is staged at canvas_id — every hourly and daily row, including any column the preview omits. With it disabled there is no canvas_id, and the omitted rows are reached only by narrowing the request.
table_nameNoDuckDB table name for the staged data — pass to openmeteo_dataframe_query. Present only alongside canvas_id.
daily_unitsNoVariable → unit string for daily data. Absent when no daily_variables were requested.
hourly_unitsNoVariable → unit string for hourly data (e.g., {"temperature_2m_member01": "°C"}). Absent when no hourly_variables were requested.
member_countNoNumber of distinct perturbed ensemble members in the response, counted from the _memberNN column suffixes. The unsuffixed base column (the control run) is not included in this count.
record_countNoTotal number of records (hourly + daily rows) — the full upstream total when truncated is true, not the combined length of the hourly and daily previews.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable behavioral context: regional models return input errors for out-of-coverage areas (not transient failures), unknown model names are passed upstream, and large queries spill to DataCanvas with truncated: true when canvas is not enabled. This goes beyond the annotations and helps the agent anticipate failure modes and data volume issues.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The description is dense but well-organized, front-loading the core purpose and member naming, then covering models, failure modes, and data volume. It is long but every sentence carries information an agent needs. The model list is repeated in the schema, which is redundant, but the description's version adds member counts and coverage details that are useful for selection.

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

Completeness5/5

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

Given the tool's complexity (12 parameters, 19 model options, ensemble output), the description is remarkably complete. It covers model selection, coverage limitations, output naming, data volume spill behavior, and the variable requirement. The output schema exists, so return values are documented elsewhere. An agent has everything needed to call this tool correctly and interpret results.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds value by explaining the member-suffix naming convention for output columns, clarifying the distinction between hourly and daily variable names (including the temperature_2m_max/min exception), and emphasizing the requirement for at least one variable array. It also explains the canvas_id spill behavior in more detail than the schema.

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

Purpose5/5

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

The description clearly states the tool provides probabilistic ensemble weather forecasts with up to 64 members and up to 16 days ahead, and explains the member-suffix column naming. It distinguishes this from sibling tools like openmeteo_get_forecast (deterministic) by emphasizing the ensemble nature and uncertainty quantification use cases.

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

Usage Guidelines5/5

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

The description explicitly explains when to use this tool (for probabilistic forecasts, exceedance probabilities, uncertainty quantification) and provides critical guidance on model selection, including regional model coverage limitations and the instruction to pick a global model or move coordinates rather than retrying. It also notes the requirement for at least one of hourly_variables or daily_variables, and explains the DataCanvas spill behavior for large queries.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.5/5.0
Disambiguation4/5

Each weather data tool (forecast, historical, marine, air_quality, ensemble, flood, climate) targets a distinct domain and data source, so they are largely unambiguous. However, openmeteo_get_forecast with past_days and openmeteo_get_historical overlap for recent dates, though the descriptions explicitly clarify which to use when, slightly muddying the boundary.

Naming Consistency5/5

Tool names follow a consistent openmeteo_<verb>_<object> pattern with clear actions (get, search, describe, query) and objects (forecast, historical, marine, air_quality, ensemble, flood, climate, elevation, locations, dataframe). This is highly predictable and uniform across all 11 tools.

Tool Count5/5

With 11 tools, the server covers a comprehensive set of weather data categories (forecast, historical, marine, air quality, ensemble, flood, climate, elevation) plus location search and dataframe utilities. This is well-scoped for a data-heavy weather API without being bloated, and each tool serves a distinct purpose.

Completeness5/5

The tool surface covers all major weather data needs: forecasts, historical reanalysis, marine conditions, air quality, ensemble forecasts, flood discharge, climate projections, and elevation. Location search is a proper prerequisite for coordinate-based queries, and dataframe query/describe handle large result sets, filling any gaps for data analysis workflows.