Skip to main content
Glama

Configure network public forwarding

configure_network_public_forwarding
DestructiveIdempotent

Configure TCP/UDP listeners on an existing reserved public forwarding binding to define backend port mappings for VPSnet traffic.

Instructions

Configure an existing reserved forwarding binding's TCP/UDP listeners. Forwarding uses one backend per listener; proxy load balancers use their own appliance authority and are refused here. Requires explicit networking:read for reads or networking:manage for changes; full/read defaults do not grant networking. The backend enforces ownership, feature availability and service 2FA locks. Read current capabilities and owned resource state first; obtain approval for the exact change. An accepted operation is pending, not proof of connectivity. Poll the returned operation/resource on its in_progress flag, waiting next_check_seconds between reads: while in_progress is true its reason_code is what is awaited (reason_kind waiting, e.g. a queued or pending reason, or a control plane that has not answered yet), never an error; only in_progress false with reason_kind failure is a failure. Preserve reason_code. On transport uncertainty inspect state and reuse only the original key and unchanged request; never automatically retry.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
listenersYes
binding_idYesExact lowercase UUID returned by an owned networking resource
idempotencyKeyYesIdempotency-Key for this exact change; preserve it and the unchanged body on uncertain recovery
expected_generationYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.3.16

TDQS

A4/5.0
Behavior5/5

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

Goes well beyond the destructive/idempotent/openWorld annotations: it discloses the credential scope (networking:read vs networking:manage, with full/read denied), backend enforcement of ownership, feature availability and 2FA locks, and the pending-vs-failure semantics of the returned operation with reason_code/reason_kind polling rules. This is exactly the operational context an agent needs for a mutating, asynchronous call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose is front-loaded, but the body is a dense single paragraph stacking polling, reason_code, retry and permission rules with heavy nesting. The content is mostly useful, but it would read better as distinct short statements rather than one long run-on block.

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 destructive, asynchronous mutation with no output schema, the description covers permissions, approval, idempotent recovery and operation-status interpretation thoroughly. The remaining gap is the meaning and conflict behavior of expected_generation, which is undocumented in both schema and description.

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 coverage is 50%: binding_id and idempotencyKey carry their own descriptions, and the description reinforces the idempotency-key preservation rule. However it says nothing about expected_generation, which is a required optimistic-concurrency token, and the phrase 'one backend per listener' sits awkwardly beside the schema's backends array of 1-64 items.

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?

The opening sentence names a specific verb (Configure) and resource (an existing reserved forwarding binding's TCP/UDP listeners), and notes that proxy load balancers are refused, which separates it from LB-listener siblings. It never names an alternative tool by name, so differentiation is inferred rather than explicit.

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

Usage Guidelines4/5

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

Gives a clear precondition workflow: read capabilities and owned resource state first, obtain approval for the exact change, and never auto-retry on transport uncertainty. It stops short of pointing to the specific read tools (get_network_public_binding, get_networking_capabilities) or an alternative write tool, so the agent must infer which siblings to call.

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