Skip to main content
Glama
owine

UniFi Network MCP Server

by owine

List LAGs

unifi_list_lags
Read-only

List Link Aggregation Groups (LAGs) for a UniFi site to inspect bonded switch ports, member device/port mappings, and LAG type or stack/MC-LAG identifiers.

Instructions

List LAGs (Link Aggregation Groups — bonded switch ports) at a site. Returns: id, type (LOCAL/SWITCH_STACK/MULTI_CHASSIS), members[] ({deviceId, portIdxs[]}), switchStackId (SWITCH_STACK) or mcLagDomainId (MULTI_CHASSIS), metadata.origin.

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of records to return (API default: 25)
filterNoFilter expression, e.g. type.eq('LOCAL'), members.deviceId.contains('<deviceId>'), switchStackId.isNull()
offsetNoNumber of records to skip
siteIdYesSite ID

Output Schema

NameRequiredDescriptionDefault
dataYes
countNo
limitNo
offsetNo
totalCountNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changedv2.15.0
    • changedInput schema / properties / filter / description
      Previous value: -"Filter expression"New value: +"Filter expression, e.g. type.eq('LOCAL'), members.deviceId.contains('<deviceId>'), switchStackId.isNull()"
    • changedInput schema / properties / limit / description
      Previous value: -"Number of records to return (default: 25, max: 200)"New value: +"Number of records to return (API default: 25)"
    • changedInput schema / properties / offset / description
      Previous value: -"Number of records to skip (default: 0)"New value: +"Number of records to skip"
    • addedInput schema / properties / siteId / pattern
      Added value: +"^[A-Za-z0-9_-]{1,64}$"
    • changedOutput schema / additionalProperties
      Previous value: -falseNew value: +{}
    • addedOutput schema / properties / data / items / properties / metadata / properties / configurable
      Added value: +{
      +  "type": "boolean"
      +}
  2. Changed1 schema field changedv2.13.0
    • changedInput schema / properties / limit / minimum
      Previous value: -1New value: +0
  3. First observedv2.8.0

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds domain context on LAG types (LOCAL/SWITCH_STACK/MULTI_CHASSIS) and their associated identifiers, which is helpful, but it discloses nothing about pagination behavior or rate limits.

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?

Two tight sentences, front-loaded with the purpose and acronym expansion. The return-field enumeration is largely wasted effort given that an output schema exists, which is the only real structural inefficiency.

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 read-only list tool with full schema coverage and a dedicated output schema, the definition is essentially complete. The main shortfall is the absence of guidance on when to prefer this over unifi_get_lag or when to use filter versus limit/offset paging.

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 limit, offset, filter, and siteId are all documented in the schema, including a concrete filter expression example. The description adds no parameter-level detail beyond that, so the baseline of 3 applies.

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 and resource ('List LAGs') and disambiguates the acronym ('Link Aggregation Groups — bonded switch ports'), plus scopes it to a site. An agent can distinguish this from unifi_get_lag and unifi_list_switch_stacks immediately.

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?

The site scoping implies a siteId is required and the plural 'List' implies a collection read, but there is no explicit when-to-use guidance, no mention of the unifi_get_lag alternative for a single LAG, and no stated prerequisites. Usage is inferable but not spelled out.

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