Skip to main content
Glama

configure_water_zone

DestructiveIdempotent

Set an AWaterZone actor's planar extent and water-info render-target resolution, then re-read bounds and texel density from the actor to verify the applied values.

Instructions

Set an AWaterZone's planar extent and/or water-info render-target resolution, then RE-READ both from the actor (extent, world bounds, texel density) instead of echoing the request back.

Returns: { water_zone_label: string, zone_extent: [x,y] (RE-READ, kept for compatibility), zone_extent_actual: [x,y] (RE-READ, COMPLETE extent), world_bounds_extent: [x,y,z] (HALF-extent of the real actor bounds), world_bounds_origin: [x,y,z], world_bounds_min: [x,y,z], world_bounds_max: [x,y,z], actor_scale: [x,y,z], render_target_resolution_actual: [x,y] (omitted if unreadable), render_target_resolution_verified: bool, water_info_texel_size_uu: number (zone_extent / render_target_resolution; omitted if the resolution is unreadable or zero), applied: bool (DERIVED from read-back == request), requested: { extent, render_target_resolution } }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
extentNoOptional [X, Y] planar zone extent. !!! THIS IS THE **COMPLETE** EXTENT, NOT THE HALF-EXTENT / SEMI-AXIS !!! The engine halves it itself (AWaterZone::GetZoneBounds2D: "GetZoneExtents returns the full extent of the zone but BoxSphereBounds expects a half-extent"), so passing 4000000 gives world bounds of [-2000000, +2000000] around the actor -- a 40 km sea, not 80 km. Reading it as a semi-axis gives a sea of DOUBLE the intended size with bounds off the map; the `world_bounds_extent` field in the response is what disambiguates it (half of `zone_extent_actual`).
water_zone_labelYesLabel of the AWaterZone actor
render_target_resolutionNoOptional [X, Y] water-info render target resolution. Read back by reflection as `render_target_resolution_actual` (the getter is not exported, so this is the raw UPROPERTY, i.e. BEFORE the r.Water.WaterInfo.RenderTargetResolutionMax clamp).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A3.5/5.0
Behavior4/5

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

Annotations declare a non-readonly, idempotent, destructive mutation; the description goes well beyond them by disclosing that values are RE-READ from the actor rather than echoed, and that some fields are omitted when unreadable. It does not explain why destructiveHint is true (e.g. render-target reallocation cost/irreversibility), which is the main remaining gap.

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 first sentence front-loads the key semantic (set, then read back) and the Returns block is dense but justified because no output schema exists. The block is long, yet nearly every field note (omitted-if-unreadable, derived applied vs requested) earns its place.

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

Completeness4/5

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

For a 3-param mutation tool with no output schema, the description documents the full return shape, optionality, and verification semantics, which is exactly what the structured data lacks. It stops short of failure modes, permissions, or why the operation is destructive, but is otherwise complete enough to invoke correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the schema itself carries the critical full-vs-half-extent caveat and the render-target read-back detail. The description only names the two inputs ('planar extent', 'water-info render-target resolution'), adding little beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Set) and resource (an AWaterZone's planar extent and water-info render-target resolution), and the 'then RE-READ' clause pinpoints the tool's distinctive behavior. However, it never names or contrasts with nearby siblings like set_water_body_properties or get_water_zone_info, so the differentiation is inferable but not explicit.

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

Usage Guidelines2/5

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

The description says the two settable fields are 'and/or' optional, which implies you may call it for either, but it offers no when-to-use guidance, no prerequisites (e.g. the zone must already exist), and no alternative named for reading zone state. Usage must be inferred from the schema alone.

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

Deploy Server

Other Tools