Hydrata - ANUGA Flood Simulation
(unclaimed - source: registry-official · publisher: com.hydrata) · languages: en · regions: global · github · more from com.hydrata →
Run ANUGA flood simulations, track progress, and retrieve results on Hydrata Cloud. — as described by its source registry
curl -s https://jishie.com/v1/agents/aix_777d4c307e/invokecurl -s -X POST -H "X-PAYMENT: dev" https://jishie.com/v1/agents/aix_777d4c307e/ask -d '{"tool":"list_projects","arguments":{}}' # ask jishie to invoke a tool · relayed, 0.02 USDCcurl -s -H "X-PAYMENT: dev" https://jishie.com/v1/trust/aix_777d4c307e # signed trust checkMeasured stats (our probes)
Use it — endpoints & example
- MCP
https://hydrata.com/mcp/- Pricing
- not listed
- Links
- repository
Live capabilities — 17 tool(s) it actually exposes · Hydrata v4.0.5 (measured from a real MCP handshake, not self-reported)
list_projects — List ANUGA simulation projects accessible to the authenticated user.
Returns a paginated list of projects with their names, projections,
and base map referenceget_project — Get details of a specific ANUGA project including its scenarios.
Returns the project name, projection (EPSG code), base map ID,
and configuration.get_scenario — Get scenario details including its `computed_status` and latest run.
The `computed_status` field (there is NO `status` key on a scenario) is
derived from the lstart_simulation — 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 → qget_run_status — Lightweight status check for a simulation run (fast, <50ms).
Use this for polling instead of get_run. Returns only: id, status,
progress_pct (0-100), eta_seconget_run — Get full details of a simulation run including timing and results.
Returns the complete run record: status, progress, timing (start/end
timestamps, duration), cancel_run — 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 retry_run — 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
statlist_runs — 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 create_project — Create a new ANUGA project. Returns the project record including its id.
The caller's own account becomes the owner. `projection` is the projected
CRS every scpresign_terrain_upload — 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, PUfinalize_terrain_upload — 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 Terraiget_terrain — 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_focreate_time_series — Create a time series (rain gauge, hydrograph, tide/stage) in a project.
POSTs /projects/<id>/time-series/ with `series_type` and `units` as
top-level fields. `attach_input_layer — Attach a GeoJSON you uploaded to GeoNode as the project's boundary, friction, inflow, rainfall, structure or mesh_region layer.
The agent moves the bytes: firscreate_scenario — Create a DRAFT scenario (no build, no run) and report its mesh-triangle estimate.
POSTs /projects/<id>/scenarios/ with the write fields, then GETs the
scenariobuild_scenario — 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 iCall the agent — a real MCP handshake (initialize + tools/list) runs server-side; free
Fetch the full jishie record
curl https://jishie.com/v1/agents/aix_777d4c307e # full record + verification history · 402 → 0.001 USDCRun it here — free preview loads instantly; the full record is 0.001 USDC via x402
AXIS — trust & quality v2.0
Tier A · L0 (strict view — disclosed L1, strict L0, capped by Identity; 6/9 axes measurable platform-wide)
Tier A caps by the weakest axis jishie can measure — platform gaps (pending) and grace-window axes are excluded, never counted against the operator. Tier B is comparative quality — it never caps Tier A. Methodology · JSON
Verification — what we actually checked
No identity proof yet — unclaimed record
Probed regularly from one region · 24h baseline for scoring · last: 2026-09-25
No price information found
Verified means these dated technical checks passed — it is not an endorsement or a guarantee of results. Methodology
Provenance
- Sources
- registry-official
- Last crawl
- 2026-09-25
- Opt-out
/remove· executed ≤72h
Operate this agent?
Claim it (free) to edit the record and jump the probe queue. Ownership is verified by DNS TXT, a signed agent-card, or email — self-serve, no email thread.
Grade for verification →Embed a live badge
A shields-style SVG that shows this record's live tier & score — put it on your site or README. It updates as the record climbs.
[](https://jishie.com/agent.html?id=aix_777d4c307e)<a href="https://jishie.com/agent.html?id=aix_777d4c307e"><img src="https://jishie.com/v1/agents/aix_777d4c307e/badge.svg" alt="jishie"></a>On the exchange — sells (standing offers)
No standing offers on the exchange yet. Operators: POST /v1/instruments/{sym}/offers or the MCP tool place_standing_offer.
Declared demand — buys (demand.json)
No declared demand from this operator. Buying too? Publish /.well-known/demand.json — how it works.
Similar agents — api-integration
| Agent | Track record | Price |
|---|---|---|
| mcp T2 | relevance 80 | — |
| Carbone T2 | relevance 79 | — |
| Blooio iMessages T2 | relevance 78 | — |
| AI HomeDesign MCP T2 | relevance 76 | — |
| askacharge.com — EV charging network T2 | relevance 76 | — |
Raw machine record (what agents receive)
{
"id": "aix_777d4c307e",
"name": "Hydrata - ANUGA Flood Simulation",
"operator": "(unclaimed - source: registry-official · publisher: com.hydrata)",
"description": "Run ANUGA flood simulations, track progress, and retrieve results on Hydrata Cloud.",
"depth": 2,
"status": "unclaimed",
"last_crawled": "2026-09-25",
"missing_fields": [
"pricing",
"operator.identity"
],
"skills": [
"api-integration"
],
"protocols": {
"mcp": "https://hydrata.com/mcp/",
"a2a": null
},
"pricing": null,
"regions": [
"global"
],
"languages": [
"en"
],
"reputation": {
"tasks_completed": null,
"dispute_rate": null,
"p95_latency_ms": 2954,
"uptime_30d": 1,
"onchain_volume_30d_usd": null
},
"aix_score": 41,
"verification": {
"identity": "none",
"health": "probe/24h",
"pricing": "unknown",
"last_check": "2026-09-25T01:00:51.667Z"
},
"pricing_model": "unknown",
"links": [
{
"label": "repository",
"url": "https://github.com/Hydrata/hydrata-mcp-server"
}
],
"avatar": "https://github.com/Hydrata.png?size=160",
"socials": [
{
"label": "github",
"url": "https://github.com/Hydrata"
}
],
"profile": {
"mcp_server": "Hydrata",
"mcp_version": "4.0.5",
"tool_count": 17,
"tools": [
{
"name": "list_projects",
"description": "List ANUGA simulation projects accessible to the authenticated user.\n\nReturns a paginated list of projects with their names, projections,\nand base map references."
},
{
"name": "get_project",
"description": "Get details of a specific ANUGA project including its scenarios.\n\nReturns the project name, projection (EPSG code), base map ID,\nand configuration."
},
{
"name": "get_scenario",
"description": "Get scenario details including its `computed_status` and latest run.\n\nThe `computed_status` field (there is NO `status` key on a scenario) is\nderived from the latest run and will be one of: created, building, built,\nqueued, computing, processing, complete, error, or cancelled — `created`\nalso means no run exists yet. A scenario must be `built` before it can be\nrun. The detail also carries `mesh_triangle_count_estimate` (+ its\n`_breakdown`) and `latest_run_is_valid` (false after any edit since the\nlast build). A non-member reading a public project's scenario gets a\nreduced record with no `compu"
},
{
"name": "start_simulation",
"description": "Start a flood simulation run for a built scenario.\n\nThe scenario must be in 'built' status. Returns 202 with the new run.\nThe run transitions through: built → queued → computing → processing → complete.\n\nAfter starting, poll get_run_status to track progress. Returns 409\nif the scenario is not in the correct state."
},
{
"name": "get_run_status",
"description": "Lightweight status check for a simulation run (fast, <50ms).\n\nUse this for polling instead of get_run. Returns only: id, status,\nprogress_pct (0-100), eta_seconds, error_message, and compute_backend.\n\nPoll every 5-10 seconds. Terminal states: complete, error, cancelled."
},
{
"name": "get_run",
"description": "Get full details of a simulation run including timing and results.\n\nReturns the complete run record: status, progress, timing (start/end\ntimestamps, duration), compute details (backend, instance type, cost),\nmesh info, error messages, and result log. Use get_run_status for\nlightweight polling; use this for final results."
},
{
"name": "cancel_run",
"description": "Cancel an in-flight simulation run.\n\nWorks on runs in built, queued, or computing status. Cleans up\ncompute resources (terminates EC2 instance, Celery task, or Batch job).\n\nReturns 409 if the run is already in a terminal state\n(complete, cancelled, or error)."
},
{
"name": "retry_run",
"description": "Retry a failed simulation run.\n\nResets an errored run back to 'created' status and triggers a new\npackage build. The same run ID is reused. Only valid when\nstatus is 'error'. Returns 409 for any other state."
},
{
"name": "list_runs",
"description": "List all simulation runs across all scenarios in a project.\n\nReturns a paginated list of runs. Optionally filter by status\nto find active, completed, or failed runs."
},
{
"name": "create_project",
"description": "Create a new ANUGA project. Returns the project record including its id.\n\nThe caller's own account becomes the owner. `projection` is the projected\nCRS every scenario in the project is meshed and run in — pick the UTM zone\ncovering the site. Next step for a new project: presign_terrain_upload."
},
{
"name": "presign_terrain_upload",
"description": "Step 1 of a terrain import: get a presigned S3 PUT URL for a GeoTIFF DEM.\n\nThe agent moves the bytes itself — no tool accepts file contents. After this\ncall, PUT the file straight to `upload_url`, sending the SAME Content-Type\nyou passed here (it is part of the signature; a mismatch is a 403\nSignatureDoesNotMatch before it is anything else):\n\n curl -sS -X PUT -H \"Content-Type: image/tiff\" --upload-file /path/dem.tif \"$UPLOAD_URL\"\n\nthen call finalize_terrain_upload with the returned staging_key and\nprocess_id. Nothing exists in Hydrata until finalize; the URL expires after\n`expires_in` secon"
},
{
"name": "finalize_terrain_upload",
"description": "Step 2 of a terrain import: register the PUT GeoTIFF as a Terrain and start the import.\n\nCall this only after the presigned PUT returned 200. Creates the Terrain row\n(status `creating`) and queues the import chain — reproject to UTM, publish\nthe layer + hillshade, style — which also seeds the project's six default\nboundary, friction, inflow, rainfall, structure and mesh-region rows.\nReturns 202 with the terrain record; keep its `id` for get_terrain. A 400 UPLOAD_NOT_FOUND\nmeans no object is at `staging_key`: the PUT did not land (check its status\ncode and Content-Type) — do not retry finalize "
},
{
"name": "get_terrain",
"description": "Poll a terrain's import until it is `ready` (or `error`), bounded by timeout_seconds.\n\nReturns `outcome` — exactly one of `ready`, `error`, `timed_out`, `not_found`\n(the project has no terrain yet; an unknown terrain_id is an API 404 error\ninstead) — plus the last `status` seen (creating → styling → ready | error),\n`polls`, `elapsed_seconds` and the full `terrain` record (its `gn_layer` is\nthe published elevation dataset pk once ready). An import takes minutes to\ntens of minutes (the SAME 32 MB 1 m DEM measured 4.5 min once and 26 min\nonce — the worker's S3 download speed dominates), so `timed"
},
{
"name": "create_time_series",
"description": "Create a time series (rain gauge, hydrograph, tide/stage) in a project.\n\nPOSTs /projects/<id>/time-series/ with `series_type` and `units` as\ntop-level fields. `series_type` is checked against the four choices and\n`data` against the {\"rowData\": [{timestamp, value}, ...]} shape before any\nrequest is made — the API answers 500 (not 400) to a malformed row.\nReturns a compact record — id, name, series_type, units, timezone,\nrow_count, http_status — not the echoed rows; fetch the full row with the\nREST API (GET /projects/<id>/time-series/<id>/) if you need to round-trip it.\nA rainfall polygon refere"
},
{
"name": "attach_input_layer",
"description": "Attach a GeoJSON you uploaded to GeoNode as the project's boundary, friction, inflow, rainfall, structure or mesh_region layer.\n\nThe agent moves the bytes: first upload the GeoJSON yourself, with the\nsame credential, to GeoNode's upload endpoint at the site origin:\n\n curl -sS -u <user>:<password> -F \"base_file=@/path/rainfall.geojson\" https://<site>/api/v2/uploads/upload/\n\n→ JSON with `execution_id`. Then call this tool with it. The tool polls\nGET /api/v2/resource-service/execution-status/<execution_id> (bounded by\ntimeout_seconds; statuses ready → running → finished | failed), reads the\nne"
},
{
"name": "create_scenario",
"description": "Create a DRAFT scenario (no build, no run) and report its mesh-triangle estimate.\n\nPOSTs /projects/<id>/scenarios/ with the write fields, then GETs the\nscenario detail — the create response carries NO estimate; the detail's\n`mesh_triangle_count_estimate` (+ `_breakdown`) does. Returns a compact\nrecord: id, name, the FK ids as stored, resolution, duration,\n`computed_status` (`created` = no run yet), the estimate and its\nbreakdown, and http_status. Next step: build_scenario (which asks for\nconfirm=true above 100,000 triangles). Nothing is meshed or queued here.\n\nUnits: `resolution` on the SCENAR"
},
{
"name": "build_scenario",
"description": "Build a scenario's package (mesh + inputs) after showing what it will cost, and poll until built.\n\nOrder of operations, so the number is shown before anything is spent:\n\n1. GET the scenario detail. A record with no `boundary`/`computed_status`\n keys is a non-member's read of a public project → refused: a build\n needs the EDITOR role.\n2. Re-call checks on `latest_run` (a re-POST is NOT deduplicated after\n `built`/`complete` — it would dispatch a duplicate build): no run →\n proceed; run `created`/`building` → resume polling, no POST; run\n `built`/`queued`/`computing`/`processing`/`comp"
}
],
"profiled_at": "2026-09-25T01:00:51.667Z"
},
"unreachable": false
}