Skip to main content
Glama

set_river_spline_points

DestructiveIdempotent

Set any water body's spline path from world points, then synchronize metadata and read back point count and closed-loop status to confirm it applied.

Instructions

Set ANY water body's spline path from world points, then synchronize the water spline metadata and RE-READ the spline (point count + closed-loop) to prove it landed.

Returns: { water_body_label: string, point_count: int (RE-READ), spline_point_count_actual: int (RE-READ, same value, unambiguously named), closed_loop_actual: bool (RE-READ), requested_point_count: int, applied: bool (DERIVED: read-back count == requested count) }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pointsYesArray of [X, Y, Z] WORLD points (>= 2) defining the spline. Entries that are not a >= 3-element numeric array are skipped silently; `requested_point_count` reports how many survived parsing.
water_body_labelYesLabel of the AWaterBody actor. DESPITE THE COMMAND NAME THIS IS NOT RIVER-ONLY: it works on any water body that has a UWaterSplineComponent -- lake, ocean, river, custom -- and it is the only way to give a LAKE its real shoreline, because the spline the actor factory creates is an arbitrary CLOSED triangle (3 points) that has nothing to do with the basin. `closed_loop` is a property of the spline and is NOT touched here: set 12 points on a factory-made lake and you get 12 points still closed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A3.9/5.0
Behavior5/5

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

Annotations declare destructive/idempotent/non-readOnly, but the description adds substantial behavior beyond them: it synchronizes water spline metadata, RE-READS the spline to prove the write landed, notes that closed_loop is deliberately NOT touched, and warns that malformed point entries are skipped silently. No annotation contradiction; the overwrite semantics are consistent with destructiveHint=true and idempotentHint=true.

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?

Front-loaded: the core action appears in the first clause, followed by the returns block. It is dense and every element is informative, though the returns block is slightly redundant ('point_count (RE-READ)' vs 'spline_point_count_actual (RE-READ, same value, unambiguously named)') and the heavy uppercase emphasis is a little noisy.

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?

No output schema exists, so spelling out the return fields (point_count, closed_loop_actual, applied) in the description is necessary and well handled, as is the silent-skip and closed-loop caveat. It stops short of full completeness by not stating overwrite-vs-append semantics for existing points explicitly or any permission/context requirements.

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%, so the schema already documents both parameters (world-point format, the >=2 constraint, the label semantics). The description reinforces the 'ANY water body' interpretation of water_body_label but adds no new syntax or format detail. Baseline 3 is appropriate when the schema carries the load.

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+resource (set water body spline path from world points) plus the follow-on sync and read-back verification, so the action is unambiguous. It also actively corrects the misleading tool name by clarifying scope ('NOT RIVER-ONLY', works on lakes/oceans). It does not name sibling alternatives (e.g., set_spline_points) to sharpen differentiation, keeping it just short of a 5.

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

Usage Guidelines3/5

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

Offers an implied use case with real value: it is 'the only way to give a LAKE its real shoreline' because the factory spline is an arbitrary closed triangle. That tells the agent when this tool matters, but there is no explicit when-not or comparison against the generic set_spline_points / set_landscape_spline_control_point siblings that also manipulate splines.

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