Skip to main content
Glama

Hydrata - ANUGA Flood Simulation

Server Details

Run ANUGA flood simulations, track progress, and retrieve results on Hydrata Cloud.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.8% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
Hydrata/hydrata-mcp-server
GitHub Stars
1
Server Listing
Hydrata MCP Server

TDQS

A4.2/5.0

Scored across 17 tools

Disambiguation5/5

Each tool maps to a distinct stage of the flood-simulation lifecycle: project, terrain upload, input layers, time series, scenario build, and run execution. get_run and get_run_status are explicitly differentiated for heavy detail vs lightweight polling, so there is no real ambiguity.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern: create_, get_, list_, build_, start_, cancel_, retry_, attach_. Even multi-step terrain tools are clearly ordered with presign_ and finalize_ prefixes, making the tool names predictable and predictable in intent.

Tool Count4/5

At 17 tools, this is slightly above the typical 3-15 range, but each tool corresponds to a distinct workflow step in a genuinely complex domain. The count is not padded; it reflects the separate stages of terrain import, scenario packaging, and run lifecycle management.

Completeness3/5

The core simulation path is well covered: project creation, terrain upload, input attachment, time series, scenario build, run start, polling, cancel, and retry. However, there are notable gaps for management operations, including no update/delete tools for projects or scenarios, no list tool for input layers, and no way to list or fetch time series directly through the tool surface.

Available Tools

19 tools
attach_input_layerAttach an uploaded layer as a project input
Idempotent
Inspect

Attach a GeoJSON you uploaded to GeoNode as the project's boundary, friction, inflow, rainfall, building or mesh_region layer.

The agent moves the bytes: first upload the GeoJSON yourself, with the same credential, to GeoNode's upload endpoint at the site origin:

curl -sS -u <user>:<password> -F "base_file=@/path/rainfall.geojson" https://<site>/api/v2/uploads/upload/

→ JSON with execution_id. Then call this tool with it. The tool polls GET /api/v2/resource-service/execution-status/ (bounded by timeout_seconds; statuses ready → running → finished | failed), reads the new dataset's pk, and PATCHes it onto the project's DEFAULT row of that kind ('Boundary 01' … 'MeshRegion 01' — the six rows the terrain import seeds ~30 s after get_terrain reports ready; if the list is still empty the tool says so: run finalize_terrain_upload / wait for get_terrain first).

outcome is exactly one of: attached (row_id, gn_layer, dataset_pk, dataset_alternate — the WFS typename — and every row id seen); timed_out (the import is still running: call again with the same arguments); upload_failed (the execution record, incl. its log, is returned verbatim — fix the file and upload again); no_default_row; no_dataset (finished but no resource was recorded). The PATCH is refused with a 400 if the dataset is not owned by you.

Refused, with no request made: kind breakline and kind culvert — no REST create path exists for either at HEAD (TASK-3040 AC6), and culvert flow is not conveyed by run_anuga, so attaching one would only pretend. Also refused without a request: an execution_id that is not the UUID the upload returned. One GeoJSON per kind: all of a kind's features travel in that one file. A rainfall polygon names its gauge in its data property — create that gauge with create_time_series under the exact same name.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYesWhich input the uploaded layer is: boundary, friction, inflow, rainfall, building or mesh_region ('structure' is a deprecated alias of building). breakline and culvert are refused (see below).
project_idYesThe project ID
execution_idYes`execution_id` returned by your multipart POST to <origin>/api/v2/uploads/upload/
timeout_secondsNoHow long this call keeps polling the upload before it returns `timed_out` (default 240, ceiling 280 — the prod /mcp/ proxy cuts a call at 300 s). 0 = one status read, no waiting.
poll_interval_secondsNoSeconds between polls (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

build_scenarioBuild a scenario's mesh and packageInspect

Build a scenario's package (mesh + inputs) after showing what it will cost, and poll until built.

Order of operations, so the number is shown before anything is spent:

  1. GET the scenario detail. A record with no boundary/computed_status keys is a non-member's read of a public project → refused: a build needs the EDITOR role.

  2. Re-call checks on latest_run (a re-POST is NOT deduplicated after built/complete — it would dispatch a duplicate build): no run → proceed; run created/building → resume polling, no POST; run built/queued/computing/processing/complete with latest_run_is_valid not false → return that state, no POST unless rebuild=true; run error/cancelled, or latest_run_is_valid false (the scenario was edited since the build) → proceed.

  3. Spend gates, each a refusal with outcome: "refused" and no POST: the scenario has no boundary or its boundary row has no features (the server would admit the build and fail it in make_package); the estimate is None (resolution is 0/unset); the estimate is above 100,000 triangles and confirm is not true — the refusal states the number; re-call with confirm=true to proceed. An estimate of 0 over a boundary WITH features is buildable and is reported, not refused.

  4. POST /projects//scenarios//build/. Every 4xx comes back verbatim as a normal result with http_status: 422 MESH_TOO_LARGE (error_code, estimate, ceiling, detail — the server's hard ceiling; coarsen resolution or shrink the boundary; no run was created), 409 COMPUTE_TARGET_UNAVAILABLE, 400/403/404. A 409 WITHOUT an error_code is the dedup body ({status, run_id, detail}: a build is already in flight) — the tool resumes polling that run.

  5. On 202 poll the detail's computed_status (created → building → built | error), bounded by timeout_seconds.

Returns a COMPACT state, never the whole detail: outcome (built, error, cancelled, complete/queued/computing/processing for a run past the build, timed_out, or refused), computed_status, mesh_triangle_count_estimate, posted, the POST's build body + http_status when one was made, and the latest run's run_id, run_status, error_message, user_message, mesh_triangle_count. timed_out is normal (make_package re-downloads the terrain from S3 every build; minutes): call again with the same arguments — step 2 resumes polling the same run, it never POSTs twice — or cancel_run(run_id) if the run is stuck in created with no worker. error is terminal: error_message says why (fix the inputs, then call again — an errored latest run is rebuilt).

Units: resolution — on the SCENARIO and on every MeshRegion FEATURE — is a LENGTH in metres; ANUGA maximum_triangle_area = resolution²/2 (FloatField default 100, not nullable; 0 makes the estimate None), and the estimate prices both the same way (TASK-3186). The smallest value becomes the raster cell size. A MeshRegion feature must carry resolution_units = m (features drawn in the map are marked automatically); an unmarked one makes the build answer 422 MESH_REGION_UNITS_UNMARKED, naming the conversion an operator runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoRequired (true) when the estimate is above 100,000 triangles — the tool refuses first and tells you the number. Default false.
rebuildNotrue to dispatch a NEW build of a scenario whose latest run is already built/complete and still valid (default false: the tool returns that state instead of duplicating the build).
project_idYesThe project ID
scenario_idYesThe scenario ID from create_scenario
timeout_secondsNoHow long this call keeps polling before it returns `timed_out` (default 240, ceiling 280 — the prod /mcp/ proxy cuts a call at 300 s). 0 = one status read, no waiting.
poll_interval_secondsNoSeconds between polls (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

cancel_runCancel a run
DestructiveIdempotent
Inspect

Cancel an in-flight simulation run.

Works on runs in built, queued, or computing status. Cleans up compute resources (terminates EC2 instance, Celery task, or Batch job).

Returns 409 if the run is already in a terminal state (complete, cancelled, or error).

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run ID to cancel

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

create_projectCreate a projectInspect

Create a new ANUGA project. Returns the project record including its id, base_map and ui_url.

The caller's own account becomes the owner. projection is the projected CRS every scenario in the project is meshed and run in — pick the UTM zone covering the site. The project's map is created alongside it; ui_url opens it — give it to the user. Next step for a new project: presign_terrain_upload.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name
projectionYesWorking CRS as an EPSG string, normally the UTM zone of the site, e.g. 'EPSG:32756' (WGS 84 / UTM 56S)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

create_scenarioCreate a draft scenarioInspect

Create a DRAFT scenario (no build, no run) and report its mesh-triangle estimate.

POSTs /projects//scenarios/ with the write fields, then GETs the scenario detail — the create response carries NO estimate; the detail's mesh_triangle_count_estimate (+ _breakdown) does. Returns a compact record (the same fields get_scenario answers with): id, name, the FK ids as stored, resolution, duration, computed_status (created = no run yet), the estimate and its breakdown, the price (compute_cost_estimate in USD, vcpu_hours_estimate), inflow_anchor_mismatch, and http_status. Next step: build_scenario (which asks for confirm=true above 100,000 triangles). Nothing is meshed or queued here.

Units: resolution — on the SCENARIO and on every MeshRegion FEATURE — is a LENGTH in metres; ANUGA maximum_triangle_area = resolution²/2 (FloatField default 100, not nullable; 0 makes the estimate None), and the estimate prices both the same way (TASK-3186). The smallest value becomes the raster cell size. A MeshRegion feature must carry resolution_units = m (features drawn in the map are marked automatically); an unmarked one makes the build answer 422 MESH_REGION_UNITS_UNMARKED, naming the conversion an operator runs.

The server does NOT validate that the FK ids belong to project_id — pass the row ids attach_input_layer / get_terrain returned for THIS project. Every FK is nullable at create time, and the build fails later on a scenario with no terrain, or with neither an inflow nor a rainfall. A boundary whose row has no features (the default 'Boundary 01' before attach_input_layer) is accepted here and refused by build_scenario. The estimate is None when resolution is 0; an estimate of 0 with a real boundary is a very coarse mesh, not an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesScenario name
inflowNoInflow row id (optional; the build needs an inflow OR a rainfall)
terrainNoTerrain id (get_terrain → terrain.id); the build fails without one
boundaryNoBoundary row id (attach_input_layer kind=boundary → row_id)
buildingNoBuilding row id (optional)
durationYesSimulation duration in seconds (e.g. 43200 = 12 h)
frictionNoFriction row id (optional)
rainfallNoRainfall row id (optional; the build needs an inflow OR a rainfall)
structureNoDeprecated alias of `building` (TASK-3586); ignored when `building` is given.
project_idYesThe project ID
resolutionYesMesh resolution as a LENGTH in metres (ANUGA maximum_triangle_area = resolution²/2). Coarser (larger) = fewer triangles: on a ~13 km² boundary 36-40 m gives ~16-20k triangles, 10 m ~255k, 1 m ~25M (refused by the API).
descriptionNoFree-text description (optional)
mesh_regionNoMeshRegion row id (optional): finer meshing inside its polygons, each feature's `resolution` a LENGTH in metres (see the units note).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

create_time_seriesCreate a time seriesInspect

Create a time series (rain gauge, hydrograph, tide/stage) in a project.

POSTs /projects//time-series/ with series_type and units as top-level fields. series_type is checked against the four choices and data against the {"rowData": [{timestamp, value}, ...]} shape before any request is made — the API answers 500 (not 400) to a malformed row. Returns a compact record — id, name, series_type, units, timezone, row_count, http_status — not the echoed rows; fetch the full row with the REST API (GET /projects//time-series//) if you need to round-trip it. A rainfall polygon references its gauge by the series NAME, so create the gauges with the exact names the rainfall GeoJSON's features carry.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesThe rows: {"rowData": [{"timestamp": "1998-08-17T00:00:00", "value": 1.5}, ...]}. Timestamps ISO 8601 (a trailing Z is tolerated), values numeric. Validated here before anything is sent.
nameYesSeries name, kept VERBATIM — a rainfall polygon binds to its gauge by this exact name (its `data` property), so use the name the GeoJSON features carry
unitsNoDisplay label for the values, e.g. 'mm/hr', 'm^3/s', 'm' (optional)
sourceNoWhere the data came from, e.g. a gauge id or agency (optional)
timezoneNoIANA timezone of the timestamps (default 'UTC'), e.g. 'Australia/Sydney'UTC
project_idYesThe project ID
descriptionNoFree-text description (optional)
series_typeNoOne of hyetograph (rainfall depth/intensity — the default), hydrograph (flow, read by the Hydrographs panel and inflow boundaries), stage (water level, e.g. a tide) or generic. Sent as a top-level field.hyetograph
location_nameNoHuman-readable location of the gauge (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

finalize_terrain_uploadRegister an uploaded terrainInspect

Step 2 of a terrain import: register the PUT GeoTIFF as a Terrain and start the import.

Call this only after the presigned PUT returned 200. Creates the Terrain row (status creating) and queues the import chain — reproject to UTM, publish the layer + hillshade, style — which also seeds the project's six default boundary, friction, inflow, rainfall, building and mesh-region rows. Returns 202 with the terrain record; keep its id for get_terrain. A 400 UPLOAD_NOT_FOUND means no object is at staging_key: the PUT did not land (check its status code and Content-Type) — do not retry finalize until it has.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTerrain title (default: the filename without .tif)
process_idNo`process_id` returned by presign_terrain_upload (pass it so the upload's progress record is reused; the API tolerates its absence)
project_idYesThe project ID
staging_keyYes`staging_key` returned by presign_terrain_upload

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_projectGet a project and its map link
Read-onlyIdempotent
Inspect

Get one ANUGA project: id, name, projection, visibility, your role, its base map — and the link to it.

Returns the project record (id, name, projection (EPSG code), simple_view_config, visibility, owner_username, my_role, base_map) plus ui_url: the link that opens the project's map, for the user (<site>/catalogue/#/map/<base_map>; null while a new project's map is still being created). Scenarios are NOT listed here — use get_scenario with a scenario id.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_runGet a run's full record
Read-onlyIdempotent
Inspect

Get full details of a simulation run including timing and results.

Returns the complete run record: status, progress, timing (start/end timestamps, duration), compute details (backend, instance type, cost), mesh info, error messages, and result log. Use get_run_status for lightweight polling; use this for final results.

The presigned s3_*_url download links are ELIDED — each is a 6-hour capability and no tool relays one. The results stay viewable through the gn_layer_* entries (published WMS layers on the project's map).

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_run_statusPoll a run's status
Read-onlyIdempotent
Inspect

Lightweight status check for a simulation run (fast, <50ms).

Use this for polling instead of get_run. Returns only: id, status, phase, progress_pct (0-100), eta_seconds, error_message, and compute_backend.

phase is never empty: it is status, except preparing_inputs while a computing run has no progress yet (it is downloading its input package and building the domain — minutes on a big model; this is NOT a stall). Poll every 5-10 seconds. Terminal states: complete, error, cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_scenarioGet a scenario's state, inputs and price
Read-onlyIdempotent
Inspect

Get a scenario's COMPACT state: its computed_status, inputs, estimate and price.

Returns a compact record, never the raw ~50 KB detail: scenario_id, computed_status, mesh_triangle_count_estimate and its _breakdown, latest_run_is_valid, the latest run's run_id, run_status, error_message, user_message, status_detail and mesh_triangle_count — plus what the scenario IS and what it will cost: name, description, project, resolution, duration, the input row ids (terrain, boundary, friction, inflow, rainfall, building, mesh_region), compute_cost_estimate (USD), vcpu_hours_estimate, and inflow_anchor_mismatch (null unless an inflow series starts after the model does, whose first value is then held backwards).

The computed_status field (there is NO status key on a scenario) is derived from the latest run and will be one of: created, building, built, queued, computing, processing, complete, error, or cancelled — created also means no run exists yet. A scenario must be built before it can be run. latest_run_is_valid is false after any edit since the last build. A non-member reading a public project's scenario gets a reduced record: the fields the server withholds (the input ids, the price, inflow_anchor_mismatch) are ABSENT here rather than reported as null — "withheld" is not "no terrain, no cost" — while the run-state keys, computed_status among them, read null.

No presigned S3 URL is returned by any read tool (each is a 6-hour capability): results stay viewable through a run's gn_layer_* WMS entries — use get_run for the full run record.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
scenario_idYesThe scenario ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

get_terrainWait for a terrain import
Read-onlyIdempotent
Inspect

Poll a terrain's import until it is ready (or error), bounded by timeout_seconds.

Returns outcome — exactly one of ready, error, timed_out, not_found (the project has no terrain yet; an unknown terrain_id is an API 404 error instead) — plus the last status seen (creating → styling → ready | error) and phase (that status, or not_found; never empty), polls, elapsed_seconds and the full terrain record (its gn_layer is the published elevation dataset pk once ready). An import takes minutes to tens of minutes (the SAME 32 MB 1 m DEM measured 4.5 min once and 26 min once — the worker's S3 download speed dominates), so timed_out is normal and NOT a failure: keep calling with the same arguments while status is still creating/styling; several calls in a row is expected. error is terminal — the import failed and no default input rows were seeded; upload a corrected GeoTIFF as a new terrain.

ready is written by the import task; the project's default input rows (Boundary 01, Friction 01, Inflow 01, Rainfall 01, Building 01, MeshRegion 01, one GeoNode layer each) are seeded by the NEXT task in the chain and appear over the following ~30 s. Poll the input-layer list until it is non-empty before attaching your own layer to a default row.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID
terrain_idNoThe terrain ID from finalize_terrain_upload. Omit to follow the project's newest terrain.
timeout_secondsNoHow long this call keeps polling before it returns `timed_out` (default 240, ceiling 280 — the prod /mcp/ proxy cuts a call at 300 s). 0 = one status read, no waiting.
poll_interval_secondsNoSeconds between polls (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

list_inputsList a project's input layers
Read-onlyIdempotent
Inspect

List every input layer row of a project, per kind, with whether it has features.

For each of boundary, friction, inflow, rainfall, building and mesh_region: the rows (row_id, title, gn_layer — the dataset pk — and dataset_alternate, the workspace:name WFS typename) and has_features. has_features comes from the API for boundary, rainfall and mesh_region; for friction, inflow and building (whose records do not carry it) it is a WFS feature count, at most 24 lookups per call — past that, or when a lookup fails, it is null (unknown, not false). A row with no gn_layer has no layer yet (has_features false). Use the row ids with create_scenario; this is the listing primitive — no need to probe files.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

list_projectsList projects
Read-onlyIdempotent
Inspect

List ANUGA simulation projects accessible to the authenticated user.

Returns a paginated list of projects with their names, projections, and base map references.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
page_sizeNoResults per page, max 100 (default 100)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

list_runsList a project's runs
Read-onlyIdempotent
Inspect

List all simulation runs across all scenarios in a project.

Returns a paginated list of runs. Optionally filter by status to find active, completed, or failed runs. Each row's presigned s3_*_url download links are elided (6-hour capabilities).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (default 1)
page_sizeNoResults per page, max 100 (default 100)
project_idYesThe project ID
status_filterNoFilter by status: created, building, built, queued, computing, processing, complete, error, cancelled. Omit for all.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

list_time_seriesList a project's time series
Read-onlyIdempotent
Inspect

List a project's time series (rain gauges, hydrographs, tides) — never their rows.

Each series: id, name (a rainfall polygon binds to its gauge by this exact name), series_type, units, timezone, row_count, first_timestamp and last_timestamp. The data rows themselves are dropped (a project's list is megabytes); fetch one series with the REST API (GET /projects//time-series//) if you need its values.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe project ID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

presign_terrain_uploadGet a terrain upload URLInspect

Step 1 of a terrain import: get a presigned S3 PUT URL for a GeoTIFF DEM.

The agent moves the bytes itself — no tool accepts file contents. After this call, PUT the file straight to upload_url, sending the SAME Content-Type you passed here (it is part of the signature; a mismatch is a 403 SignatureDoesNotMatch before it is anything else):

curl -sS -X PUT -H "Content-Type: image/tiff" --upload-file /path/dem.tif "$UPLOAD_URL"

then call finalize_terrain_upload with the returned staging_key and process_id. Nothing exists in Hydrata until finalize; the URL expires after expires_in seconds (3600).

Platform guidance: keep the terrain extent within 5° across and 40,000 km² (200 × 200 km). The API enforces that cap on its bbox-fetch path; an uploaded GeoTIFF is only rejected above 5 GiB, but a larger DEM will not mesh or run well. The GeoTIFF must carry a CRS; the import reprojects it to the site's UTM zone and builds a hillshade. Fallback when a presigned PUT is impossible: multipart-POST the file with the same credential to /api/v2/anuga/projects//terrain/upload/ (form field file, optional title), which creates the terrain in one step — then get_terrain.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoFile size in bytes (`stat -c %s <file>`). The API rejects > 5 GiB up front. Omit if unknown.
filenameYesBase name of the GeoTIFF, e.g. 'dem.tif' (a name only — never contents)
project_idYesThe project ID
content_typeNoMIME type the PUT will send (default 'image/tiff'). It is SIGNED into the URL, so the PUT must send exactly this Content-Type header.image/tiff

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

retry_runRetry a failed runInspect

Retry a failed simulation run.

Resets an errored run back to 'created' status and triggers a new package build. The same run ID is reused. Only valid when status is 'error'. Returns 409 for any other state.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_idYesThe run ID to retry

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

start_simulationStart a simulation run (spends compute)Inspect

Start a flood simulation run for a built scenario.

The scenario must be in 'built' status. Returns 202 with the new run. The run transitions through: built → queued → computing → processing → complete.

After starting, poll get_run_status to track progress. Returns 409 if the scenario is not in the correct state. The returned run record has its presigned s3_*_url links elided (6-hour capabilities).

ParametersJSON Schema
NameRequiredDescriptionDefault
scenario_idYesThe scenario ID to run
compute_backendNoCompute backend: 'local' (Celery), 'ec2' (dedicated instance), or 'batch' (AWS Batch spot, cheapest). Default: 'local'local

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Tool Schema Changelog

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

  1. 2 tool updates
    • Changedattach_input_layer1 field changed
      • changedInput schema / properties / kind / description
        Previous value: -"Which input the uploaded layer is: boundary, friction, inflow, rainfall, structure or mesh_region. breakline and culvert are refused (see below)."New value: +"Which input the uploaded layer is: boundary, friction, inflow, rainfall, building or mesh_region ('structure' is a deprecated alias of building). breakline and culvert are refused (see below)."
    • Changedcreate_scenario2 fields changed
      • addedInput schema / properties / building
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Building row id (optional)"
        +}
      • changedInput schema / properties / structure / description
        Previous value: -"Structure row id (optional)"New value: +"Deprecated alias of `building` (TASK-3586); ignored when `building` is given."
  2. 19 tool updates
    • Changedattach_input_layer3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedbuild_scenario3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedcancel_run3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedcreate_project3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedcreate_scenario4 fields changed
      • changedInput schema / properties / mesh_region / description
        Previous value: -"MeshRegion row id (optional). Leave UNSET unless you want the regions' finer meshing — see the units note: they mesh ~15x more than estimated."New value: +"MeshRegion row id (optional): finer meshing inside its polygons, each feature's `resolution` a LENGTH in metres (see the units note)."
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedcreate_time_series3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedfinalize_terrain_upload3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_project3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_run3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_run_status3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_scenario3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedget_terrain3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Addedlist_inputs
    • Changedlist_projects3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedlist_runs3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Addedlist_time_series
    • Changedpresign_terrain_upload3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedretry_run3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
    • Changedstart_simulation3 fields changed
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "type": "string"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • removedOutput schema / x-fastmcp-wrap-result
        Removed value: -true
  3. 8 tool updates
    • Addedattach_input_layer
    • Addedbuild_scenario
    • Addedcreate_project
    • Addedcreate_scenario
    • Addedcreate_time_series
    • Addedfinalize_terrain_upload
    • Addedget_terrain
    • Addedpresign_terrain_upload
  4. 9 tool updates
    • First observedcancel_run
    • First observedget_project
    • First observedget_run
    • First observedget_run_status
    • First observedget_scenario
    • First observedlist_projects
    • First observedlist_runs
    • First observedretry_run
    • First observedstart_simulation

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables search and retrieval of calibrated SWAT+ watershed models, national groundwater lithology and PFAS inventories, plus API-key-secured ordering and downloading of custom watershed models.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI assistants to run engineering simulations on cloudHPC, including inspecting cases, getting resource advice, uploading, launching, monitoring, diagnosing errors, and downloading results.
    19
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude to drive HEC-RAS headless — inspecting projects, validating and executing 1D steady, 1D unsteady and 2D plans, and reading hydraulic results from HDF5 files. It also supports limited model modification, such as setting steady discharges, all without the Windows desktop application or a programmatic API.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables headless control of DHI MIKE Zero, including launching and batch-running simulations, monitoring job progress and logs, and reading/plotting simulation results from DFS and RES1D files.
    15
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.