# dynamical.org > Free, open, cloud-optimized weather and climate datasets — NOAA GFS, GEFS, HRRR, and MRMS; ECMWF IFS and AIFS; DWD ICON-EU; ECCC HRDPS; NASA IMERG — as Icechunk/Zarr archives on AWS Open Data, described by a STAC catalog. Nothing here needs authentication. The STAC catalog at https://stac.dynamical.org/catalog.json is the source of truth. Each dataset is one STAC Collection with its title and description, license and attribution, spatial and temporal extent, `cube:dimensions`, `cube:variables` (every variable with units, long name, dimensions, and chunk shape), runnable `examples`, and `assets` — the Icechunk repository to open, as `icechunk` (s3://, anonymous) and `icechunk-https`. When this file and STAC disagree, STAC is right. **Open a dataset.** Two equally supported ways. Both open an Icechunk 2 repository, so the direct route needs `icechunk>=2` (Python 3.12+); Icechunk also has JavaScript and Rust clients that open the same `icechunk-https` asset. - The `dynamical-catalog` package (latest release): `import dynamical_catalog; ds = dynamical_catalog.open("noaa-gfs-forecast", chunks=None)` - STAC and Icechunk directly, with any HTTP client for the STAC part: ```python import icechunk import pystac import xarray as xr catalog = pystac.Catalog.from_file("https://stac.dynamical.org/catalog.json") asset = catalog.get_child("noaa-gfs-forecast").assets["icechunk-https"] repo = icechunk.Repository.open(icechunk.http_storage(asset.href)) ds = xr.open_zarr(repo.readonly_session("main").store, chunks=None) ``` Resolve the asset href from STAC every time you open a dataset. Do not hard-code buckets, hrefs, or version numbers: they change when a dataset is reprocessed. For a time series at one point without any data libraries, use the JSON API (beta, docs at https://dynamical.org/api/): `POST https://api.dynamical.org/v1/forecasts` with `{"queries": [{"dataProductId": "noaa-gfs-forecast", "location": {"latitude": 41.88, "longitude": -87.63}, "variables": ["temperature_2m"]}]}` returns the latest run; `POST /v1/analyses` takes `startTime` and `endTime` instead. Dataset ids double as `dataProductId`; `GET /v1/data-products` lists what the API serves. `data.dynamical.org/**/latest.zarr` is retired after 2026-09-30. Never generate new code with those URLs; migration guide at https://dynamical.org/migration-2026/. **Conventions.** - Forecast datasets have dimensions `init_time` (start of the model run, UTC), `lead_time` (a timedelta from `init_time`; valid time = `init_time` + `lead_time`), and the grid; ensemble datasets add `ensemble_member`. The latest run is the last `init_time`; check that the variables and lead times you need are present there (gaps are NaN) before presenting it as complete. - Global and European datasets are on `latitude`/`longitude` grids. HRRR and HRDPS keep their native projected grids with `x` and `y` dimensions; the collection's description and example notebook show how to select geographic points and areas from the embedded spatial reference. - Analysis datasets have one `time` dimension. The model analyses (GFS, GEFS, HRRR) concatenate the earliest lead times of successive runs: the model's own best estimate of what happened, not independent observations. MRMS (radar and multi-sensor) and IMERG (satellite) are observation-derived precipitation analyses. - Variable names are the dataset's own (`temperature_2m`, `wind_u_10m`); units, long names, and dimensions are in each collection's `cube:variables`. The `-virtual` datasets keep vertical-level variables in the `model_level` and `pressure_level` Zarr groups (named `model_level/...` in `cube:variables`), which open with `group=...`. - Chunking is stated per collection (`dynamical-org:chunking`). Time-optimized datasets are chunked for a point or small area across many times; `-virtual` datasets are chunked for the whole grid at one time and carry the model's full variable set. Select the variables, the region, and the time window before loading anything — the archives run to terabytes — and pass `chunks=None` unless you need Dask. - License (`license`, CC-BY-4.0 today) and the attribution string (`attribution`) are in each collection. Archives update as new runs arrive; freshness is at https://dynamical.org/status/pipeline/ or via the MCP `list_recent_runs` tool. **MCP server.** https://mcp.dynamical.org/mcp — streamable HTTP, no authentication, server name `dynamical-catalog`. Tools: `search_catalog`, `get_dataset_info`, `get_access_pattern`, `list_recent_runs`. They read the live STAC catalog. ## Datasets One line per collection, generated from STAC. The id in parentheses is the argument to `dynamical_catalog.open()` and the API's `dataProductId`; the link is the STAC Collection, and the human page is at https://dynamical.org/catalog//. - [NOAA GFS analysis](https://stac.dynamical.org/noaa-gfs-analysis/collection.json) (`noaa-gfs-analysis`): Global · 25 variables · 0.25° · 2021-05-01 UTC to Present · 1h - [NOAA GFS forecast](https://stac.dynamical.org/noaa-gfs-forecast/collection.json) (`noaa-gfs-forecast`): Global · 25 variables · 0.25° · 0-384h (0-16 days) · every 6h - [NOAA GEFS forecast, 35 day](https://stac.dynamical.org/noaa-gefs-forecast-35-day/collection.json) (`noaa-gefs-forecast-35-day`): Global · 27 variables · 0-240h: 0.25°, 246-840h: 0.5° · 0-840h (0-35 days) · every 24h - [NOAA GEFS analysis](https://stac.dynamical.org/noaa-gefs-analysis/collection.json) (`noaa-gefs-analysis`): Global · 27 variables · 0.25° · 2000-01-01 UTC to Present · 3h - [NOAA HRRR forecast, 18 hour, virtual](https://stac.dynamical.org/noaa-hrrr-forecast-18-hour-virtual/collection.json) (`noaa-hrrr-forecast-18-hour-virtual`): CONUS · all variables · 3 km · 0-18h · every 1h - [NOAA HRRR forecast, 48 hour](https://stac.dynamical.org/noaa-hrrr-forecast-48-hour/collection.json) (`noaa-hrrr-forecast-48-hour`): CONUS · 27 variables · 3 km · 0-48h · every 6h - [NOAA HRRR forecast, 48 hour, virtual](https://stac.dynamical.org/noaa-hrrr-forecast-48-hour-virtual/collection.json) (`noaa-hrrr-forecast-48-hour-virtual`): CONUS · all variables · 3 km · 0-48h · every 6h - [NOAA HRRR analysis](https://stac.dynamical.org/noaa-hrrr-analysis/collection.json) (`noaa-hrrr-analysis`): CONUS · 27 variables · 3 km · 2014-10-01 UTC to Present · 1h - [NOAA HRRR analysis, virtual](https://stac.dynamical.org/noaa-hrrr-analysis-virtual/collection.json) (`noaa-hrrr-analysis-virtual`): CONUS · all variables · 3 km · 2014-10-01 UTC to Present · 1h - [NOAA MRMS CONUS analysis, hourly](https://stac.dynamical.org/noaa-mrms-conus-analysis-hourly/collection.json) (`noaa-mrms-conus-analysis-hourly`): CONUS · 6 variables · 0.01° · 2014-11-01 UTC to Present · 1h - [ECMWF AIFS Single forecast](https://stac.dynamical.org/ecmwf-aifs-single-forecast/collection.json) (`ecmwf-aifs-single-forecast`): Global · 17 variables · 0.25° · 0-360h (0-15 days) · every 6h - [ECMWF AIFS ENS forecast](https://stac.dynamical.org/ecmwf-aifs-ens-forecast/collection.json) (`ecmwf-aifs-ens-forecast`): Global · 17 variables · 0.25° · 0-360h (0-15 days) · every 6h - [ECMWF IFS ENS forecast, 15 day, 0.25 degree](https://stac.dynamical.org/ecmwf-ifs-ens-forecast-15-day-0-25-degree/collection.json) (`ecmwf-ifs-ens-forecast-15-day-0-25-degree`): Global · 19 variables · 0.25° · 0-360h (0-15 days) · every 24h - [DWD ICON-EU forecast, 5 day](https://stac.dynamical.org/dwd-icon-eu-forecast-5-day/collection.json) (`dwd-icon-eu-forecast-5-day`): Europe · 19 variables · 0.0625° · 0-120h (0-5 days) · every 6h - [NASA IMERG analysis, early](https://stac.dynamical.org/nasa-imerg-analysis-early/collection.json) (`nasa-imerg-analysis-early`): Global · 2 variables · 0.1° · 1998-01-01 UTC to Present · 30m - [NASA IMERG analysis, late](https://stac.dynamical.org/nasa-imerg-analysis-late/collection.json) (`nasa-imerg-analysis-late`): Global · 2 variables · 0.1° · 1998-01-01 UTC to Present · 30m - [ECCC HRDPS forecast](https://stac.dynamical.org/eccc-hrdps-forecast/collection.json) (`eccc-hrdps-forecast`): Canada · 17 variables · 2.5 km · 0-48h · every 6h ## Reference - [Agent setup](https://dynamical.org/agent-setup/prompt.md): fetch-and-execute instructions for a coding agent — read the catalog, install the Python path, verify it with one read, hand off. - [API](https://dynamical.org/api/): the JSON point API, with live request and response examples. - [Migration guide](https://dynamical.org/migration-2026/): replacing retired `data.dynamical.org` URLs. - [Catalog](https://dynamical.org/catalog/): the human-readable catalog, with runnable examples and notebooks on each dataset page. - [Questions and problems](https://github.com/dynamical-org): the repositories, or email feedback@dynamical.org. ## Optional - [Prompts for AI agents](https://dynamical.org/agents/): what a person pastes into an assistant to point it here. - [Pipeline status](https://dynamical.org/status/pipeline/): per-run timing and upstream arrival history; [status](https://dynamical.org/status/) for uptime. - [Weather station scorecard](https://dynamical.org/scorecard/): forecast accuracy against US weather stations; per-dataset validation reports are the `about` links in each collection.