Skip to main content
Glama
UniFi Network MCP Server

UniFi Network MCP Server

by owine

List firewall groups

unifi_list_firewall_groups
Read-only

List a site's legacy firewall groups—address, IPv6 address, and port groups—from the classic controller API to retrieve IDs used by legacy firewall rules.

Instructions

List the site's firewall groups (address, IPv6 address and port groups) from the classic controller API (rest/firewallgroup), whole and unpaged. Legacy firewall rules reference these by ID. IDs are the classic controller's _id values, which differ from Integration API IDs: do not pass one to an Integration API tool, or the reverse.

Input Schema

NameRequiredDescriptionDefault
siteReferenceYesSite internalReference from unifi_list_sites (often default), not the Integration API UUID

Output Schema

NameRequiredDescriptionDefault
dataYes
countYes
siteReferenceYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv3.1.0

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds genuinely new behavioral facts: results are 'whole and unpaged' (no pagination to loop over), the data comes from the classic controller API, and the returned _id values are not interchangeable with Integration API IDs — a real footgun worth flagging.

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

Conciseness5/5

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

Three tight sentences: what it returns, why it matters, and the ID-compatibility caveat. The core purpose is front-loaded and nothing is redundant.

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?

An output schema exists so return shape needn't be described. The description covers API provenance, unpaged behavior, and ID namespace hazards — everything an agent needs to call this correctly and use the results safely.

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 single siteReference parameter is already documented in-schema (internalReference from unifi_list_sites, not the Integration API UUID). The description adds no further parameter semantics, so baseline 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 the site's firewall groups'), enumerates the three group types covered (address, IPv6 address, port groups), and names the underlying endpoint (rest/firewallgroup). This clearly separates it from siblings like unifi_list_firewall_policies, unifi_list_firewall_zones, and unifi_list_legacy_firewall_rules.

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?

Explains the context in which these objects matter ('Legacy firewall rules reference these by ID'), which effectively routes an agent here when resolving IDs for legacy rules. It also warns against cross-using IDs with Integration API tools. It stops short of naming an explicit alternative tool or stating when NOT to call it.

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