Skip to main content
Glama
jaseonline

unifi-console-mcp

by jaseonline

unifi_console_client

Destructive

Preview and apply a change to one UniFi client's alias, note, fixed IP, or Local DNS record, with validation, verification, and a rollback call.

Instructions

Preview, then apply, a change to one known client: alias, note, fixed IP and Local DNS record.

Two steps, always: call with confirm=false to get a read-only preview (before, after, diff, warnings, a fingerprint); call again with the same fields plus confirm=true and that fingerprint to apply. The client is re-read first, so a stale preview is refused. A fixed IP is checked against the real LAN subnets, the gateway and broadcast addresses, other clients' fixed IPs and the addresses in use right now; a Local DNS name is checked against other clients and the static DNS records. Applying also needs UNIFI_CONSOLE_ENABLE_WRITES=true and 'client' in UNIFI_CONSOLE_WRITE_ENTITIES. After applying, the client is read back and the result reports verified true/false, the diff, and the exact rollback call. Every write is journalled. A fixed IP takes effect when the client next renews its lease.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already flag destructive=true, idempotent=false and readOnly=false, but the description adds substantial context beyond them: the client is re-read to reject stale previews, fixed IPs are validated against real LAN subnets/gateway/broadcast/other clients/in-use addresses, Local DNS names are checked against other clients and static DNS records, writes are journalled, the result reports verified true/false plus a diff and an exact rollback call, and a fixed IP only takes effect at the next lease renewal. This is unusually rich behavioral disclosure for a mutation tool.

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 with the purpose and the two-step rule, then a dense but waste-free block of validation, auth, verification and rollback facts. Every sentence carries operational information, though the single long paragraph is heavier than it needs to be and could be split for scannability.

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

Completeness5/5

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

For a destructive, gated write tool with an output schema, the description covers everything an agent needs: the confirm/fingerprint handshake, the environment prerequisites, what is validated, what the response reports, and the rollback path. Return-value detail is correctly left to the output schema.

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

Parameters4/5

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

Top-level schema coverage is reported at 0% and the top-level 'params' wrapper is undocumented, so the description must carry meaning; it does explain the two parameters that matter most operationally, confirm and fingerprint, including that the fingerprint must come from the preview of exactly this change. Field-level detail for name/note/fixed_ip/local_dns_record lives in the nested schema descriptions rather than the tool description, so it does not fully compensate for the coverage gap, but it covers the non-obvious control flow.

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

Purpose5/5

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

States a specific verb pair (preview, then apply) and a specific resource (one known client) and enumerates the exact mutable fields (alias, note, fixed IP, Local DNS record). It is clearly distinguishable from siblings like unifi_console_static_dns, unifi_console_client_command and unifi_console_client_group, which touch related but different resources.

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

Usage Guidelines5/5

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

Gives an explicit two-step protocol: call with confirm=false for a preview, then call again with the same fields plus confirm=true and the fingerprint. It also states the preconditions (UNIFI_CONSOLE_ENABLE_WRITES=true and 'client' in UNIFI_CONSOLE_WRITE_ENTITIES) and the refusal condition for a stale preview, leaving nothing to inference.

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