SWATGenXSWATGenX
Watershed ExplorerExample modelsCloud calibrationDocsAccess

SWAT+ model generation · United States

Order a SWAT+ model. Get a package you can open and run.

Pick a USGS gage, a HUC12 outlet, or a whole HUC8. SWATGenX clips the national terrain, soils, land cover and climate, delineates the network from NHDPlus HR, builds the HRUs, and returns a complete SWAT+ project — QGIS database, text inputs, generated weather, and a verification run already done.

No desktop GIS, no QGIS install, no code required — and a REST API plus MCP server if you would rather not click at all.

A real watershed assembling layer by layer — terrain through to the MODFLOW 6 water table. From the SWATGenX platform film, shown at 2× speed.

Ordering one, in the actual interface

Not a diagram of the flow — the flow. Both of these are screenshots of the live site, and the dialog tells you what it is about to do before it does it: which model type, which grids, how routing falls back, and roughly how long the build takes.

SWATGenX Watershed Explorer with the Curlew Valley HUC8 basin selected, its subbasins delineated, and terrain resolution options in the side panel
A whole HUC8 selected — Curlew Valley, its subbasins already delineated. The bar names what you picked; the panel is where you set terrain resolution before ordering.

What is actually in the package

A complete SWAT+ project, not a folder of intermediate rasters and not just output tables. The tree below is a real completed build for USGS 01012515 — 291 files in TxtInOut, the QGIS project database, per-station generated weather series, NetCDF output from the verification run, and a manifest recording which inputs produced it.

SWATGenX_v1/
├── SWATGenX_v1.sqlite          QGIS project database
├── build_manifest.json         what was built, from which inputs
├── provenance.json             data lineage for every layer
├── Watershed/
│   ├── Rasters/                clipped DEM, land use, soils
│   ├── Shapes/                 subbasins, HRUs, rivers, aquifers
│   └── Text/
├── Scenarios/Default/
│   ├── TxtInOut/               291 SWAT+ input files
│   │   ├── file.cio  codes.bsn  time.sim
│   │   ├── hru.hru   channel.cha  aquifer.aqu
│   │   ├── soils.sol landuse.lum  field.fld
│   │   ├── r74_c1345.pcp/.tmp/.hmd/.slr/.wnd
│   │   └── channel_sd_day.nc   NetCDF output
│   └── Results/                shapefiles + output SQLite
└── streamflow_data/            observed USGS record

Contents of one real build; total size and file counts vary with watershed size (this one is ~71 MB unpacked, ~20 MB zipped).

Three ways to define the basin

Every order starts by defining a drainage basin, represented as a set of one or more WBD HUC12 polygons. NHDPlus HR catchments inside that basin build the landscape units (HRUs) and connect them to the routed stream network.

Entry pointWhat you chooseHow SWATGenX turns that into a basin
USGS station (gage)A USGS site numberThe station is looked up in the platform’s station table and its precomputed list of upstream HUC12s becomes the drainage basin for that gage’s outlet.
Catalog outlet (HUC12)An outlet HUC12 in Watershed ExplorerAn upstream walk from the selected outlet gathers every upstream HUC12 draining to it (with safety limits on very large watersheds).
Whole basin (HUC8)An entire HUC8 subbasinThe basin is derived as the HUC12s falling within that HUC8, and the package is assembled for the whole subbasin footprint.

Prepared and waiting across CONUS: 87,387 HUC12 catalog polygons, 2,246 HUC8 subbasins, 24,750,692 NHDPlus HR flowlines and 24,833,258 catchments across 233 VPUIDs.

Watch one get built

The film opens at the build sequence: a watershed resolved from raw terrain into hydrologic response units, streams and subbasins, then the aquifer and water table for a coupled run.

Nothing is fetched from YouTube until you press play.

Or order it from code

The same job the button triggers is a documented REST call — order, poll, download. There is also a public MCP server, so an AI agent can order and retrieve a model without a browser.

import os, requests

headers = {"Authorization": f"Bearer {os.environ['SWATGENX_API_KEY']}",
           "Content-Type": "application/json"}

# a 12-digit WBD outlet HUC12, exactly as picked in Watershed Explorer
r = requests.post(
    "https://www.swatgenx.com/api/model-settings/explorer-watershed",
    headers=headers,
    json={"outlet_huc12": "070500020602",
          "ls_resolution": 250,
          "dem_resolution": 30},
    timeout=120,
)
print(r.json())   # -> task id; poll /api/task_status/<task_id>

Developer API reference · MCP server for agents

Or let an AI assistant do it

SWATGenX runs a public MCP server, so an assistant that supports connectors can talk to the platform directly — search models, read calibration results, query the national groundwater and PFAS data, preview a build, and order one. You connect it once by pointing the client at https://www.swatgenx.com/mcp, then choose which tools it may use.

The SWATGenX connector configured in an AI assistant, listing its read-only tools and per-tool permissions

SWATGenX connected as an MCP connector. Each tool carries its own permission, so read-only access and model ordering are separate decisions — you are not handing over blanket access.

How to connect it, and what each tool does

What you are getting, stated plainly

Downloads are automated SWAT+ setups for your review and calibration—not “finished” calibrated models unless you complete that workflow separately.

Every build auto-runs a 10-year verification simulation and a SWAT+ Check screening report, so you can see how the model behaves before committing time to it. Calibration is a separate, optional step with its own queue and estimate — how calibration works.

Next steps

Watershed Explorer
Example SWAT+ models
How It Works