Skip to main content
Glama
waqasdaar

Cisco Catalyst SD-WAN MCP Server

by waqasdaar

Cisco Catalyst SD-WAN MCP Server

A Model Context Protocol (MCP) server for Cisco Catalyst SD-WAN Manager (vManage). It lets AI assistants such as OpenChamber/OpenCode, GitHub Copilot in VS Code and Visual Studio, Cursor and Claude query the SD-WAN fabric in natural language: devices, control plane, OMP, BFD, routing, templates, policies, alarms and the rest of the vManage REST API.

All requests go through vManage. The server never connects to routers directly.

  • 83 MCP tools: 79 purpose-built tools, including UX 2.0 configuration groups, feature profiles and policy and topology groups, plus 4 general tools that reach every operation in the vManage OpenAPI spec (4,128 operations on 26.2).

  • Read-only by default. Operations that change configuration or state are disabled unless you enable them, and each call then needs explicit confirmation.

  • Validated against the spec. Calls through the general tools are checked against the OpenAPI spec published by your vManage before they are sent.

  • Secrets are protected. Endpoints that issue tokens, passwords, OTPs or credentials are blocked. Session IDs and CSRF tokens are redacted from responses.

  • Fast and resilient.

    • Reuses connections and shares one login across concurrent calls.

    • Combines identical concurrent requests and caps how many run against vManage at once.

    • Retries dropped connections, with bounded timeouts and clear errors when vManage is unreachable.

    • Caches the API spec on disk.

    • Returns compact JSON.

  • Device names work everywhere. Pass a hostname (Branch-1), system IP, UUID or serial number.

  • JWT authentication (vManage 20.18.1+) with session-cookie fallback for older releases.

flowchart LR
  U[User] -->|natural language| A[AI assistant<br/>Copilot / Claude / Cursor / OpenCode]
  A -->|MCP over stdio| S[catalyst-sdwan MCP server]
  S -->|HTTPS REST, JWT| M[SD-WAN Manager<br/>vManage]
  M --> C[Controllers / Validators / WAN edges]

Contents


Related MCP server: Cisco Meraki MCP Server

What you can achieve

Ask questions about your SD-WAN fabric in plain language and get answers built from live Manager data, without clicking through the GUI or writing API scripts.

Use case

Example questions

Main tools

Inventory and health

"How many devices are in the fabric, and are they all reachable?"

list_devices, list_reachable_devices, get_network_connections_summary

Control-plane troubleshooting

"Why is this edge missing control connections? Show the history."

get_control_connections, get_control_connections_history, get_control_local_properties

Overlay routing (OMP)

"Which TLOCs and routes does this site advertise in VPN 10?"

get_omp_routes, get_omp_tlocs, get_omp_peers

Data plane and transport

"Are all BFD sessions up? How many TLOCs does site 100 have?"

get_bfd_sessions, get_control_wan_interfaces, get_device_tloc

Application-aware routing

"Show tunnel loss/latency/jitter and SLA classes."

get_app_route_statistics, get_app_route_sla_class

Configuration audit (UX 2.0)

"Which configuration group configures the branch sites? What would a deploy change?"

list_config_groups, get_config_group, preview_config_group_device_config

Templates and policies (UX 1.0)

"Which device templates and centralized policies are in use?"

list_device_templates, get_attached_devices, list_policies

Operations

"Any critical alarms? Certificates expiring? Is the Manager cluster healthy?"

list_alarms, get_certificate_summary, get_cluster_status

Anything else in the API

"Show OSPF neighbors", "show IPsec/IKE sessions", "audit log for today"

search_api_operations → describe_api_operation → call_api_operation

Controlled changes (opt-in)

Any POST/PUT/DELETE operation, only after you approve it

call_api_operation with confirm: true and VMANAGE_ALLOW_WRITE=true


Quick start

# 1. Get the code and build it
git clone https://github.com/waqasdaar/cisco-catalyst-sdwan-mcp.git
cd cisco-catalyst-sdwan-mcp
npm ci && npm run build

# 2. Point it at your Manager
cp .env.example .env && chmod 600 .env
#    edit .env: VMANAGE_HOST, VMANAGE_USERNAME, VMANAGE_PASSWORD

# 3. (Optional) Smoke test with the MCP Inspector
npx @modelcontextprotocol/inspector node build/index.js
  1. Register the server in your AI client, for example VS Code .vscode/mcp.json:

    {
      "servers": {
        "catalyst-sdwan": { "type": "stdio", "command": "node", "args": ["${workspaceFolder}/build/index.js"] }
      }
    }
  2. Open the chat in Agent mode and ask: "How many devices are in my SD-WAN fabric?"

See Installation, Configuration and Integrating with MCP clients for details and other clients.


Versions and compatibility

Component

Version

Notes

MCP server

1.0.0

package.json version, reported in the MCP initialize response

Catalyst SD-WAN Manager

Tested on 26.2.1

Controllers 26.2.1, WAN edges Catalyst 8000V IOS XE 26.02.01

Catalyst SD-WAN Manager (auth)

20.18.1+ for JWT

Older releases: set VMANAGE_USE_JWT=false (session cookie + XSRF token)

Node.js

18+ to run the server; 20.12+ for the test/verification scripts

Tested on Node.js 26

MCP TypeScript SDK

@modelcontextprotocol/sdk ^1.0.4

Tested with 1.27.1

Transport

stdio

The client starts the server as a child process

MCP clients tested

OpenChamber 2.5 (bundled OpenCode 2.0.32), OpenCode 1.19

Other clients use their documented standard MCP config

The four general API tools (list_api_categories, search_api_operations, describe_api_operation, call_api_operation) download the OpenAPI spec that your vManage publishes at https://<vmanage>/apidocs/vmanageapi.json. They therefore follow the API of whatever release you connect to, and new endpoints in later releases are available without code changes.


Supported functionality

General API tools (full vManage API)

Tool

Purpose

Key parameters

Example prompt

list_api_categories

Lists the API categories (390 on 26.2) with counts of read, write and blocked operations

filter

"Which API categories exist for monitoring?"

search_api_operations

Finds operations by keywords matched against path, operationId, category and summary

query, category, method (GET/POST/PUT/DELETE), access (read/write/blocked), limit (default 25, max 100)

"Find the API for OSPF neighbors."

describe_api_operation

Shows an operation's documented parameters, request-body schema/example and access level

operation_id*

"What parameters does createOSPFNeighbors take?"

call_api_operation

Calls any operation; parameters and body are validated against the spec

operation_id*, path_params, query, body, confirm, max_items (default 200)

"Show OSPF neighbors on Branch-1."

Each of the 4,128 operations in the 26.2 spec falls into one of three access levels:

Access

Count on 26.2

Behaviour

read

2,392

Runs immediately

write

1,672

Disabled unless VMANAGE_ALLOW_WRITE=true; then each call also needs confirm: true

blocked

64

Never callable: issues or exposes tokens, passwords, OTPs, credentials or bootstrap configs; file uploads; event streams

Operations count as write when their method is POST, PUT or DELETE, or when their operationId or spec description describes an action. Examples: setvSmartMtHubList (pushes the serial list to controllers), reTriggerNetworkMigration, telemetry opt-in. vManage has several GET endpoints like these that change state.

Dedicated tools

Parameters marked * are required; all others are optional. Every device_id / device parameter accepts a hostname (e.g. Branch-1), system IP, UUID or serial number. Real-time device tools query the device through the Manager; tools with synced can return the Manager's cached copy instead, which is faster.

Devices and inventory (5)

Tool

Description

Key parameters

Example prompt

list_devices

All fabric devices (Manager, Controllers, Validators, WAN edges) with hostname, type, system IP, site ID, reachability and version

model (e.g. vedge-C8000V, vsmart)

"How many devices are in the SD-WAN fabric?"

get_device_details

Full inventory record of one device

device_id*

"Show details of Branch-1."

list_reachable_devices

Devices that are currently reachable

–

"Which devices are reachable right now?"

list_controllers

Manager, Controller and Validator inventory

–

"List the controllers and their versions."

list_vedge_inventory

WAN edge authorized list with certificate and validity status

–

"Which WAN edges are in the inventory but not valid?"

Control plane (13)

Tool

Description

Key parameters

Example prompt

get_control_connections

Control connections of a device to Controllers, Validator and Manager

device_id*, peer_type (vedge/vsmart/vmanage/vbond), system_ip, synced

"Show Branch-1's control connections to the vSmarts."

get_control_connections_history

Past connection attempts, errors and down reasons

device_id*

"Why did Branch-2 lose its control connections?"

get_control_local_properties

System IP, site ID, organization, certificate state, Validator address, max controllers

device_id*, synced

"What org name and certificate state does Hub-1 have?"

get_control_wan_interfaces

Per-TLOC control state: color, interface, public/private IP and port, controller counts

device_id*, synced

"How many TLOCs does Branch-1 have?"

get_control_valid_devices

Authorized device lists held by a Controller (vSmart)

device_id* (controller), list (devices/vsmarts/vmanage_id)

"Which edges are authorized on the first Controller?"

get_control_affinity

Controller-group affinity configuration or status

device_id*, type (config/status)

"Show controller affinity status of Hub-1."

get_control_links

Fabric-wide control links in a given state

state* (up/down)

"List all control links that are down."

get_control_status

Fabric-wide control up/down counts

–

"How many control connections are up vs. down?"

get_control_count

Control connection counts, fabric-wide or per site

site_id

"Control connection count for site 103."

get_control_network_summary

Per device: control connections, OMP peers, vSmart peers, reachability

state (up/down)

"Give me a fabric-wide control-plane summary."

get_network_connections_summary

Reachable/unreachable counts per device class

–

"How many WAN edges are unreachable?"

get_control_summary

Control-plane summary of a device

device_id*

"Control summary of Branch-3."

get_control_statistics

DTLS control connection statistics

device_id*

"Show DTLS statistics of Branch-1."

OMP – Overlay Management Protocol (9)

Tool

Description

Key parameters

Example prompt

get_omp_peers

OMP peers of a device

device_id*, synced

"Show the OMP peers of the first Controller."

get_omp_routes

OMP routes received or advertised

device_id*, direction (received/advertised), vpn_id, prefix

"Show OMP routes Branch-1 receives in VPN 10."

get_omp_tlocs

OMP TLOC routes received or advertised

device_id*, direction, color

"Which TLOCs does Branch-1 advertise?"

get_omp_services

OMP service routes (VPN, firewall, IDS, ...)

device_id*

"Which OMP services does Hub-1 know?"

get_omp_multicast

Multicast routes or auto-discovery entries

device_id*, type (routes/autodiscover), direction

"Show multicast auto-discovery on Branch-2."

get_omp_cloudx

Cloud OnRamp (CloudExpress) OMP routes

device_id*

"Any Cloud OnRamp routes on Hub-1?"

get_omp_links

Fabric-wide OMP peering links in a given state

state* (up/down)

"List OMP peerings that are down."

get_omp_status

Fabric-wide OMP up/down counts

–

"Are all OMP peerings up?"

get_omp_summary

OMP summary of a device

device_id*

"OMP summary of Branch-3."

Validator – vBond / orchestrator (6)

Use the Validator's system IP or hostname as device_id.

Tool

Description

Key parameters

Example prompt

get_validator_connections

Current connections on the Validator, or history

device_id*, history

"Show the Validator's connection history."

get_validator_summary

Validator connection summary

device_id*

"Validator connection summary."

get_validator_statistics

DTLS/control packet statistics

device_id*

"Show Validator packet statistics."

get_validator_local_properties

Organization, certificate state, system IP

device_id*

"Which organization name is the Validator using?"

get_validator_valid_devices

Authorized device lists on the Validator

device_id*, list (vedges/vsmarts/vmanage_id)

"How many WAN edges are authorized on the Validator?"

get_validator_proxy_mapping

NAT/proxy mapping table

device_id*

"Show the Validator NAT mapping table."

Data plane, interfaces, routing and system (12)

Tool

Description

Key parameters

Example prompt

get_bfd_sessions

BFD sessions (tunnels) of a device

device_id*

"Are all BFD sessions on Branch-1 up?"

get_bfd_summary

BFD session summary

device_id*

"BFD summary of Branch-2."

get_bfd_tloc

BFD session summary per TLOC

device_id*

"BFD sessions per TLOC color on Branch-3."

get_device_tloc

TLOC information of a device

device_id*

"Show TLOCs of Branch-1."

get_device_vpn

VPN configuration of a device

device_id*

"Which VPNs are configured on Hub-2?"

get_bridge_table

Bridge forwarding table

device_id*

"Show the bridge table of Branch-2."

get_device_interfaces

Interface status and configuration

device_id*

"Which interfaces are down on Branch-3?"

get_device_arp

ARP table (IPv4 to MAC)

device_id*

"Show the ARP table of Hub-1."

get_system_status

CPU, memory, uptime

device_id*

"What's the CPU and memory usage on Hub-1?"

get_bgp_neighbors

BGP neighbors

device_id*

"Show BGP neighbors on Hub-1."

get_bgp_routes

BGP routes

device_id*

"Show BGP routes on Hub-2."

get_bgp_summary

BGP summary

device_id*

"BGP summary of Hub-1."

Application-aware routing, flows and statistics (7)

Tool

Description

Key parameters

Example prompt

get_app_route_statistics

AAR tunnel statistics (loss, latency, jitter)

device_id*

"Show tunnel loss and latency on Branch-1."

get_app_route_sla_class

SLA classes used by application-aware routing

device_id*

"Which SLA classes are configured on Branch-1?"

get_cflowd_flows

cFlowd flow records

device_id*

"Show cFlowd flows on Branch-3."

get_cflowd_statistics

cFlowd packet statistics

device_id*

"cFlowd statistics of Branch-3."

get_app_log_flows

Packet flow logs

device_id*

"Show logged flows on Branch-2."

get_app_log_flow_count

Number of logged flows

device_id*

"How many flows are being logged on Branch-2?"

get_sdwan_stats

SD-WAN statistics: ACL drops, data policy, device metrics

device_id*

"Any data-policy drops on Branch-2?"

UX 2.0 configuration (12)

The solution parameter selects sdwan (default), sd-routing, nfvirtual or mobility. Groups and profiles can be passed by ID or exact name.

Tool

Description

Key parameters

Example prompt

get_ux2_overview

One-call summary: configuration, policy and topology groups with device counts and deployment state, plus feature-profile counts per type

solution

"Are any configuration groups out of sync or failed?"

list_config_groups

Configuration groups with feature profiles, device counts and deployment state

solution, name

"How many configuration groups are on vManage?"

get_config_group

One configuration group with its profiles and associated devices

config_group*

"Which devices does configuration group Branch-CG configure?"

get_config_group_device_variables

Device-specific variable values (all devices or one)

config_group*, device

"Show the variables of Branch-1 in Branch-CG."

preview_config_group_device_config

Read-only preview: configuration the group would push vs. running config. Nothing is deployed.

config_group*, device*, view (diff default/new/existing/both)

"What would Branch-CG change on Branch-1 if I deployed now?"

list_policy_groups

Policy groups with profiles, device counts and state

solution

"List the policy groups."

get_policy_group

One policy group with profiles and devices

policy_group*

"Which devices use policy group Branch-PG?"

list_topology_groups

Topology groups (hub-and-spoke, mesh)

solution

"Which topology groups exist?"

get_topology_group

One topology group with its profiles

topology_group*

"Show topology group Hub-Spoke."

list_feature_profiles

Feature profiles per type (system, transport, service, cli, policy-object, application-priority, ...)

solution, profile_type

"List all transport profiles."

get_feature_profile

One profile with its features (parcels)

profile_type*, profile*, solution

"Show the features in the Hub-Transport profile."

get_network_hierarchy

Global, regions, areas and sites

–

"Show the network hierarchy."

Templates and policy – UX 1.0 (7)

Tool

Description

Key parameters

Example prompt

list_device_templates

Device (master) templates

feature (all/lawful-interception/cloud-dock/network-design/vmanage-default)

"List the device templates."

list_feature_templates

Feature templates

–

"How many feature templates exist?"

get_attached_devices

Devices attached to a device template

template_id*

"Which devices use template X?"

get_template_definition

Definition of a device or feature template

template_id*, template_type* (device/feature)

"Show the definition of device template X."

list_policy_lists

Policy lists (app, color, prefix, site, SLA, TLOC, VPN, ...)

list_type

"Show all site lists."

list_policy_definitions

Policy definitions of one type

definition_type* (acl, approute, control, data, hubandspoke, mesh, qosmap, zonebasedfw, ...)

"List the app-route policy definitions."

list_policies

Centralized (vSmart), localized (vEdge) and security policies

policy_type (vsmart/vedge/security)

"Which centralized policy is active?"

Cloud OnRamp, administration and applications (8)

Tool

Description

Key parameters

Example prompt

get_cloudx_status

Cloud OnRamp for SaaS: sites per application

–

"Cloud OnRamp status for Office 365."

get_cloudx_gateway_list

Cloud OnRamp gateway sites

–

"Which sites are Cloud OnRamp gateways?"

get_cloudx_client_list

Cloud OnRamp client sites

–

"Which sites are Cloud OnRamp clients?"

get_cloudx_apps

Cloud OnRamp applications and VPNs

–

"Which SaaS apps are enabled for Cloud OnRamp?"

list_alarms

Active alarms

limit (default 100), site_id

"Any active alarms for site 103?"

get_certificate_summary

Certificate validity summary

–

"Are any certificates about to expire?"

get_cluster_status

Manager cluster health per node

–

"Is the vManage cluster healthy?"

list_custom_apps

Custom application definitions

–

"List the custom applications."

Anything without a dedicated tool, such as OSPF, EIGRP, NAT, IPsec/IKE, QoS, multicast, cellular, UTD, statistics or the audit log, is available through search_api_operations and call_api_operation.


Installation

Prerequisites: Node.js 18+ (20.12+ for the test scripts), npm, and HTTPS access to Catalyst SD-WAN Manager.

git clone https://github.com/waqasdaar/cisco-catalyst-sdwan-mcp.git
cd cisco-catalyst-sdwan-mcp
npm ci
cp .env.example .env        # then edit .env (see Configuration)
npm run build

Check that it starts. Press Ctrl+C to stop it:

npm start
# stderr: Cisco Catalyst SD-WAN MCP Server running on stdio

The command your MCP client will run is:

node /absolute/path/to/catalyst-sdwan-mcp-community/build/index.js

If the project is in OneDrive, iCloud Drive, Dropbox or Google Drive, the sync client can move files to the cloud and the server then fails with ETIMEDOUT when it starts. Deploy a runtime copy instead:

npm run deploy
# Deployed to ~/mcp-servers/catalyst-sdwan-mcp
# MCP command: node ~/mcp-servers/catalyst-sdwan-mcp/build/index.js

npm run deploy builds the server and copies build/, .env (permissions 600) and the production dependencies to ~/mcp-servers/catalyst-sdwan-mcp. Set CATALYST_SDWAN_MCP_HOME to use another folder. Run it again after every code or .env change, then restart your MCP client.


Configuration

The server reads .env from the project (or deployed) root folder. You can also pass the variables through your MCP client's env settings. Values the client sets take precedence over .env.

Variable

Required

Default

Description

VMANAGE_HOST

Yes

Manager hostname or IP (no https://)

VMANAGE_USERNAME

Yes

API user

VMANAGE_PASSWORD

Yes

API password

VMANAGE_PORT

No

443

HTTPS port

VMANAGE_USE_JWT

No

true

false uses session-cookie auth (Manager releases before 20.18.1)

VMANAGE_ALLOW_WRITE

No

false

true allows write operations through call_api_operation (each still needs confirm: true)

VMANAGE_TIMEOUT_MS

No

120000

Per-request timeout. Real-time device queries are proxied through the Manager and can be slow.

VMANAGE_MAX_CONCURRENCY

No

8

Maximum simultaneous requests sent to the Manager

The OpenAPI spec is cached in ~/.cache/catalyst-sdwan-mcp/ for 24 hours. If the Manager is unreachable, an older cached copy is used. Delete the file to force a refresh after an upgrade.

VMANAGE_HOST=vmanage.example.com
VMANAGE_USERNAME=mcp-readonly
VMANAGE_PASSWORD=change-me
VMANAGE_PORT=443
VMANAGE_USE_JWT=true
VMANAGE_ALLOW_WRITE=false

Use a dedicated Manager account. A read-only user group such as operator is enough unless you plan to enable writes.


Integrating with MCP clients

In every example below, replace /absolute/path/to/build/index.js with your path:

  • ~/mcp-servers/catalyst-sdwan-mcp/build/index.js (expanded) if you used npm run deploy

  • otherwise <project>/build/index.js

On Windows use forward slashes (C:/mcp/catalyst-sdwan-mcp/build/index.js) or escaped backslashes in JSON. Clients do not expand ~, so always give the full path.

OpenChamber / OpenCode

OpenChamber runs on OpenCode, so MCP servers are configured in OpenCode's config. The desktop app bundles OpenCode 2.

  1. Add the server to a project config (opencode.json in the folder you open in OpenChamber) or to the global config (~/.config/opencode/opencode.json).

    OpenCode 2.x (OpenChamber 2.x): servers go under mcp.servers:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "servers": {
          "catalyst-sdwan": {
            "type": "local",
            "command": ["node", "/absolute/path/to/build/index.js"],
            "timeout": { "startup": 60000 }
          }
        }
      }
    }

    Or add it from the CLI. Add --global to make it available in every project:

    opencode mcp add catalyst-sdwan -- node /absolute/path/to/build/index.js

    OpenCode 1.x: servers go directly under mcp and use enabled:

    {
      "$schema": "https://opencode.ai/config.json",
      "mcp": {
        "catalyst-sdwan": {
          "type": "local",
          "command": ["node", "/absolute/path/to/build/index.js"],
          "enabled": true,
          "timeout": 60000
        }
      }
    }
  2. Restart OpenChamber completely (macOS: Cmd+Q, then reopen).

  3. Verify with /mcps in a session, or from a terminal in the project folder. Use the OpenCode CLI that matches your OpenChamber; the desktop app's copy on macOS is:

    /Applications/OpenChamber.app/Contents/Resources/opencode-cli/opencode mcp list
    # ✓ catalyst-sdwan   connected

The message "This file still uses the OpenCode 1 format" means the config uses the 1.x layout. Move the server under mcp.servers as shown above.

Visual Studio Code (GitHub Copilot)

Requires VS Code with GitHub Copilot Chat in Agent mode.

  1. Create .vscode/mcp.json in your workspace for a single project, or run MCP: Open User Configuration from the Command Palette for all workspaces:

    {
      "servers": {
        "catalyst-sdwan": {
          "type": "stdio",
          "command": "node",
          "args": ["/absolute/path/to/build/index.js"]
        }
      }
    }

    To keep the password out of files, let VS Code prompt for it. Values in env override .env:

    {
      "inputs": [
        { "type": "promptString", "id": "vmanage-password", "description": "vManage password", "password": true }
      ],
      "servers": {
        "catalyst-sdwan": {
          "type": "stdio",
          "command": "node",
          "args": ["/absolute/path/to/build/index.js"],
          "env": {
            "VMANAGE_HOST": "vmanage.example.com",
            "VMANAGE_USERNAME": "mcp-readonly",
            "VMANAGE_PASSWORD": "${input:vmanage-password}"
          }
        }
      }
    }

    If the server lives in the workspace you have open, you can use a relative path. The server then reads .env from the project root:

    {
      "servers": {
        "catalyst-sdwan": {
          "type": "stdio",
          "command": "node",
          "args": ["${workspaceFolder}/build/index.js"]
        }
      }
    }

    Alternatively, from a terminal:

    code --add-mcp '{"name":"catalyst-sdwan","command":"node","args":["/absolute/path/to/build/index.js"]}'
  2. Start the server: open mcp.json and click Start above the server, or run MCP: List Servers.

  3. In Copilot Chat, switch to Agent mode, open the tools picker and make sure the catalyst-sdwan tools are enabled.

Visual Studio 2022

Requires Visual Studio 2022 17.14 or later with GitHub Copilot.

  1. Create .mcp.json in your solution folder, or %USERPROFILE%\.mcp.json for all solutions:

    {
      "servers": {
        "catalyst-sdwan": {
          "type": "stdio",
          "command": "node",
          "args": ["C:/mcp/catalyst-sdwan-mcp/build/index.js"]
        }
      }
    }
  2. Open GitHub Copilot Chat, select Agent mode, click the tools icon and enable the catalyst-sdwan tools.

Cursor

  1. Edit ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project), or use Settings → MCP → Add new MCP server:

    {
      "mcpServers": {
        "catalyst-sdwan": {
          "command": "node",
          "args": ["/absolute/path/to/build/index.js"]
        }
      }
    }

    Optionally add "env": { "VMANAGE_HOST": "...", ... } instead of using .env.

  2. Open Settings → MCP and check that catalyst-sdwan shows a green status and lists its tools.

  3. Use the tools from the Agent chat.

Claude Desktop

  1. Open Settings → Developer → Edit Config, or edit the file directly:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    {
      "mcpServers": {
        "catalyst-sdwan": {
          "command": "node",
          "args": ["/absolute/path/to/build/index.js"]
        }
      }
    }
  2. Restart Claude Desktop. The tools appear under the tools (hammer) icon in the chat box.

Claude Code

claude mcp add catalyst-sdwan --scope user -- node /absolute/path/to/build/index.js
claude mcp list

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json, then refresh the MCP servers in Cascade:

{
  "mcpServers": {
    "catalyst-sdwan": {
      "command": "node",
      "args": ["/absolute/path/to/build/index.js"]
    }
  }
}

Docker

Build the image:

docker build -t catalyst-sdwan-mcp:latest .

MCP clients start the container per session over stdio. Pass the settings with --env-file; the image never contains .env. Example for Cursor or Claude Desktop:

{
  "mcpServers": {
    "catalyst-sdwan": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--env-file", "/absolute/path/to/.env", "catalyst-sdwan-mcp:latest"]
    }
  }
}

For VS Code, use the same command/args with "type": "stdio". For OpenCode, use "command": ["docker", "run", "-i", "--rm", "--env-file", "/absolute/path/to/.env", "catalyst-sdwan-mcp:latest"].


Examples

Sample session

Representative answers from a lab fabric (Manager 26.2.1, Catalyst 8000V edges). Names and addresses are anonymized.

"How many devices are in the SD-WAN fabric?" → list_devices

Type

Count

Reachable

vManage

1

1

vSmart

2

2

vBond

1

1

WAN edge

13

13

Total: 17 devices, all reachable.

"List the total number of TLOCs on Branch-1." → get_control_wan_interfaces, get_omp_tlocs

Color

Interface

Encap

State

private1

GigabitEthernet1

IPsec

up

mpls

GigabitEthernet2

IPsec

up

Total: 2 TLOCs, each advertised over OMP to both Controllers.

"How many configuration groups are on vManage, and which one configures the branch sites?" → list_config_groups, get_config_group

6 configuration groups. Example mapping:

Sites

Configuration group

Hub-1, Hub-2

Hub-CG

Branch-1, Branch-2

Branch-CG (added by tag rule)

Natural-language prompts

Ask your assistant

Tools it uses

"List all SD-WAN devices with hostname, type, model, system IP, site ID, reachability and version."

list_devices

"Give me an overview of the UX 2.0 configuration: which configuration groups are out of sync or failed?"

get_ux2_overview

"Which devices are in configuration group Branch-CG, and what are their variable values?"

get_config_group, get_config_group_device_variables

"What would configuration group Branch-CG change on Branch-1 if I deployed it now?"

preview_config_group_device_config

"Show the features in the Branch-Transport transport profile."

get_feature_profile

"Which devices are unreachable, and what do their control connection histories show?"

list_devices, get_control_connections_history

"Show the OMP routes that Branch-1 receives in VPN 10."

get_omp_routes (vpn_id: "10")

"Which TLOCs does Branch-1 advertise, and are its BFD sessions up?"

get_omp_tlocs, get_bfd_sessions

"Give me a fabric-wide control-plane summary: control connections and OMP peers per device."

get_control_network_summary

"How many WAN edges are authorized on the validator?"

get_validator_valid_devices

"Show OSPF neighbors on Branch-1."

search_api_operations → call_api_operation (createOSPFNeighbors)

"Which certificates expire soon, and are there active critical alarms?"

get_certificate_summary, list_alarms

"List the centralized policies and the device templates in use."

list_policies, list_device_templates

Tool calls (JSON arguments)

Received OMP routes in one VPN:

{ "name": "get_omp_routes", "arguments": { "device_id": "Branch-1", "direction": "received", "vpn_id": "10" } }

Find an API operation, check its parameters, then call it:

{ "name": "search_api_operations", "arguments": { "query": "ospf neighbor" } }
{ "name": "describe_api_operation", "arguments": { "operation_id": "createOSPFNeighbors" } }
{ "name": "call_api_operation", "arguments": { "operation_id": "createOSPFNeighbors", "query": { "deviceId": "<system-ip>" }, "max_items": 50 } }

Path parameters and statistics queries:

{
  "name": "call_api_operation",
  "arguments": {
    "operation_id": "getMasterTemplateDefinition",
    "path_params": { "templateId": "<template-id>" }
  }
}
{
  "name": "call_api_operation",
  "arguments": {
    "operation_id": "postDocCount_MonitoringAlarmsDetails_1604",
    "body": { "query": { "condition": "AND", "rules": [{ "field": "entry_time", "type": "date", "operator": "last_n_hours", "value": ["24"] }] } }
  }
}

Operation IDs can differ between Manager releases. Use search_api_operations to find the ID on your release.

A write operation, when VMANAGE_ALLOW_WRITE=true, after the user has approved it:

{ "name": "call_api_operation", "arguments": { "operation_id": "<write-operation-id>", "body": { }, "confirm": true } }

Without confirm: true, or with writes disabled, the server refuses the call and explains why.


Security

  • Read-only by default. POST, PUT and DELETE operations, and GETs documented as actions, are refused unless VMANAGE_ALLOW_WRITE=true. Each write call then also needs confirm: true, which assistants should set only after the user approves.

  • Blocked endpoints. Operations that issue or expose tokens, passwords, OTPs, credentials or bootstrap configurations are never callable. Neither are file uploads or server-sent event streams.

  • Validation. Path and query parameters must exist in the spec, required ones must be present, and types and enums are checked. Path values are URL-encoded and ./.. are rejected.

  • Redaction and limits. Values of keys such as password, token, csrf and sessionId are replaced with ***redacted***. List responses are capped (default 200 rows, max_items to change) and output stays under 200,000 characters.

  • TLS. Certificate verification is disabled so lab Managers with self-signed certificates work. Use it only on trusted networks, and treat this as a known limitation for production.

  • Credentials. Keep .env out of version control (it is in .gitignore), restrict its permissions (chmod 600 .env), and use a dedicated least-privilege Manager account.

  • Access-level detection is a heuristic. It uses the operationId and spec description. Test against a lab Manager before you enable writes on a production fabric.


Testing and verification

npm run build                 # compile TypeScript
# <edge>, <controller>, <validator>: hostname or system IP of a WAN edge, Controller and Validator in your fabric
npm run test:control-plane -- <edge> <controller> <validator>   # 39 live control-plane/OMP/validator calls + input-validation checks
npm run test:ux2 -- <edge-hostname>   # UX 2.0 tools incl. config preview, hostname resolution, parallel calls, error handling (with timings)
npm run verify:api -- <edge> <controller> <validator>   # full read-only coverage run (≈25 min) → API_COVERAGE.md + api_coverage.csv

verify:api calls every read operation that needs no IDs or input (about 1,260 on 26.2) through the real MCP server. It records the result of each operation in API_COVERAGE.md and api_coverage.csv. Although it only runs read operations, it sends a large number of calls, so run it against a lab Manager. The reports replace the test device IDs and the sampled group, profile and template names with placeholders such as <edge> and <config-group>, so they can be published.

Results on Catalyst SD-WAN Manager 26.2.1:

Item

Result

Operations in the spec

4,128 (2,392 read / 1,672 write / 64 blocked)

Read operations live-tested

1,261

Returned data

1,113

Errors from Manager or lab (feature not configured, query body required, provider-only role)

148

Dedicated tools verified live

83 / 83

To try individual tools interactively, use the MCP Inspector:

npx @modelcontextprotocol/inspector node /absolute/path/to/build/index.js

Troubleshooting

Symptom

Cause / fix

ETIMEDOUT ... read or the server hangs on start

Project is in a cloud-synced folder whose files were moved to the cloud. Run npm run deploy and point the client at ~/mcp-servers/catalyst-sdwan-mcp/build/index.js.

Cannot reach vManage at <host>:443 (ETIMEDOUT)

No network path to the Manager (often a disconnected VPN). The server gives up after 10 s instead of hanging. Spec-based tools keep working from the cached spec.

A tool is missing or behaves like an old version

The client is starting a different copy of the server. Check every config the client reads: for OpenCode, both the project opencode.json and the global ~/.config/opencode/opencode.json(c).

Calls take ~2 s each

That is the Manager's own response time per request, even on a reused connection. Prefer the combined tools (get_ux2_overview, list_feature_profiles), which run their requests in parallel.

OpenChamber: "This file still uses the OpenCode 1 format" or "No MCP servers configured"

OpenCode 2 reads only mcp.servers.<name>. See OpenChamber / OpenCode.

VMANAGE_HOST environment variable is required

.env is missing next to build/ (after deploying, run npm run deploy again) or the client env is incomplete.

JWT authentication failed: 400 ... Duration must be ... <= 1800

Fixed in this version (token duration is 1800 s). Rebuild.

JWT authentication failed on older Managers

Set VMANAGE_USE_JWT=false.

... is disabled: write operations need VMANAGE_ALLOW_WRITE=true

Expected in read-only mode. Enable deliberately, then npm run deploy and restart the client.

Unknown query parameter(s) / Missing required ...

The call does not match the spec. Run describe_api_operation for the exact parameter names.

vManage API error 400 ... Empty query

Statistics endpoints need a query body even when the spec marks it optional. See the statistics example above.

truncated in a response

The response was larger than the limit. Filter (for example vpn_id, site_id) or lower max_items.

Node warns about NODE_TLS_REJECT_UNAUTHORIZED

Comes from your shell environment, not this server. Remove the variable if you don't need it.


Project structure

src/
  index.ts                  # entry point: loads .env, starts stdio server
  server.ts                 # MCP tool definitions and handlers
  services/vmanageApi.ts    # HTTPS client, JWT/session auth, generic request()
  services/apiCatalog.ts    # OpenAPI-driven catalog: search, describe, validated calls, access control
  utils/config.ts           # environment configuration
scripts/
  deploy.mjs                # deploy runtime copy outside cloud-synced folders
  test-control-plane.mjs    # live regression test
  test-ux2.mjs              # live UX 2.0 tools test
  verify-api-coverage.mjs   # full coverage run and report
.vscode/mcp.json            # VS Code MCP server registration
API_COVERAGE.md, api_coverage.csv   # last coverage report
Dockerfile, docker-compose.yml

References

License

MIT. See LICENSE.

Based on the CiscoDevNet catalyst-sdwan-mcp-community project.

MCP Badge

Available Tools

83 tools
call_api_operationA

Call any vManage API operation by operation_id. Parameters and body are validated against the vManage OpenAPI spec. Read operations run directly; write operations require VMANAGE_ALLOW_WRITE=true on the server and confirm: true (only after the user approves the change).

NameRequiredDescriptionDefault
bodyNoRequest body for POST/PUT operations (JSON)
queryNoQuery parameters (names exactly as documented)
confirmNoMust be true for write operations, after explicit user approval
max_itemsNoMax rows returned from list responses (default 200)
path_paramsNoValues for {placeholders} in the path
operation_idYesoperationId from search_api_operations

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the burden and does well: it discloses input validation against the OpenAPI spec, the read/write execution split, the server-side env-flag gate, and the human-approval requirement for mutations. It stops short of saying whether writes are reversible, how failures surface, or how list responses are shaped/truncated.

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 short sentences with the core contract first, then the validation guarantee, then the read/write gating. Nothing is padded and no sentence could be dropped without losing a constraint an agent needs.

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 six-parameter nested-object dispatcher with no annotations and no output schema, the critical call-time facts (identifier source, spec validation, write gating, approval) are all present. Remaining gaps are response shape and error behavior, which matter less here because the payload is dictated by the underlying vManage operation rather than by this tool.

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?

Schema coverage is 100%, so the schema alone justifies a 3; the description earns the bump by framing body/query/path_params as spec-validated inputs that must be looked up via describe_api_operation, and by tying operation_id to search_api_operations. The confirm semantics it states largely restate the schema text, and max_items is left to the schema.

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?

Opens with a specific verb+resource ("Call any vManage API operation by operation_id") and immediately distinguishes itself from the discovery siblings by naming the identifier it consumes, which the schema ties back to search_api_operations. An agent can tell this is the execution endpoint of the search/describe/call triad without opening a schema.

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?

Clearly separates the read path (runs directly) from the write path (needs VMANAGE_ALLOW_WRITE=true plus confirm: true after user approval), which is exactly the precondition an agent must check before calling. The gap is that it never addresses when to prefer this generic dispatcher over the dozens of typed siblings like get_bgp_neighbors or get_omp_routes, leaving the main routing decision unstated.

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

describe_api_operationA

Show the documented parameters, request body schema/example, access level and description for one vManage API operation.

NameRequiredDescriptionDefault
operation_idYesoperationId from search_api_operations

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description does the work: 'Show' signals a non-mutating lookup, and it explicitly enumerates what information is returned (params, body schema/example, access level, description), which is a solid disclosure for a read-only introspection tool. It omits any mention of authentication or that the API spec must already be loaded, a minor gap.

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?

A single front-loaded sentence with the resource and returned fields packed in; no filler, nothing repeated.

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 one-parameter read tool with no output schema, the description usefully enumerates the returned content, compensating for the missing output schema. The only shortfall is the absence of workflow guidance tying it to search_api_operations and call_api_operation.

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 100% and the single parameter's description already explains that operation_id comes from search_api_operations. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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 ('Show') and enumerates the resource content it returns (parameters, request body schema/example, access level, description) scoped to 'one vManage API operation'. This is clearly distinguishable from search_api_operations and call_api_operation by the word 'documented' and the singular scope, though it never names those siblings explicitly.

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 description body gives no explicit when/when-not guidance or alternatives. The usage chain is only implied: the schema's operation_id description ('operationId from search_api_operations') suggests searching first, and 'Show documented parameters' implies inspecting before call_api_operation, but the agent must infer this.

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

get_app_log_flow_countB

Get count of packet flows being logged for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. "Get" implies a read, but it does not explain permissions, freshness, time window, or what "being logged" means operationally, leaving important behavioral context undisclosed.

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?

The description is a single front-loaded sentence with no filler or redundant phrasing. Every part of the sentence contributes to identifying the operation.

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

Completeness3/5

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

For a simple one-parameter read tool, the description covers the core purpose adequately. However, with no annotations and no output schema, it still omits useful context such as what the count represents, whether it is current or historical, and what the return value looks like.

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 100%, and the single device_id parameter is already documented as "Device ID or system-ip." The description adds no parameter meaning beyond what the schema provides, so the baseline 3 applies.

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 description states a specific verb and resource: getting a count of packet flows logged for a device. It is clearly distinguishable in concept from flow-listing siblings like get_app_log_flows or get_cflowd_flows, but it does not explicitly name or differentiate from those alternatives.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus get_app_log_flows, get_cflowd_flows, or get_cflowd_statistics. The word "count" implies aggregate usage, but the description provides no explicit when-to-use or when-not-to-use context.

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

get_app_log_flowsC

Get packet flow logging information for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden, and it discloses almost nothing. It doesn't state that this is a read-only operation, doesn't mention time range or default window for flow data, log volume, pagination, or permissions. For a flow-log retrieval tool these omissions matter to correct invocation.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though its brevity edges toward under-specification rather than optimal density.

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

Completeness2/5

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

No output schema and no annotations, so the description must fill in the blanks itself — and it doesn't. It never explains what fields the flow logs contain, the default time window, or how much data comes back. For a telemetry-retrieval tool this leaves the agent guessing.

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 100% and the single parameter is documented as 'Device ID or system-ip,' so the schema does the heavy lifting. The description adds nothing beyond 'for a device,' which merely restates the required parameter. Baseline 3 is appropriate.

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 and resource: 'Get packet flow logging information' scoped to 'a device.' An agent can tell it retrieves flow logs rather than config. However, it does not differentiate itself from close siblings such as get_cflowd_flows or get_app_log_flow_count, leaving the exact data source ambiguous.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. Given siblings get_cflowd_flows and get_app_log_flow_count exist, the absence of any routing hint is a real gap. The only implied usage is 'you want flow logs for a device.'

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

get_app_route_sla_classC

Get SLA class information for application-aware routing on a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. The verb 'Get' implies a read, but there is no disclosure of permissions, return shape, or what SLA class data includes; it adds little beyond restating the name.

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?

A single front-loaded sentence with the resource clearly stated and no filler. It is appropriately sized, though quite thin.

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

Completeness3/5

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

For a simple one-parameter read with no output schema, the description covers the basic purpose. However, with no annotations and no indication of what SLA class data is returned or when the tool is relevant, it is only minimally adequate.

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?

The single parameter has 100% schema description coverage ('Device ID or system-ip'), so the schema already does the work. The description adds no further detail about the parameter, making the baseline 3 appropriate.

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 (Get) and a specific resource (SLA class information for application-aware routing) scoped to a device. It's clearly distinct from siblings like get_app_route_statistics in subject matter, though it doesn't explicitly name the sibling boundary.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no alternatives. An agent must infer context entirely from the tool name and the SLA/routing terminology.

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

get_app_route_statisticsB

Get application-aware routing statistics (tunnel stats) for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only statistics retrieval, but does not state whether the stats are real-time or cumulative, what time window applies, whether device connectivity is required, or what the response includes.

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?

The description is a single, front-loaded sentence with no wasted words. It efficiently states the resource and scope.

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

Completeness3/5

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

For a simple one-parameter read tool, the description is minimally sufficient to identify the operation. However, with no annotations and no output schema, it leaves behavioral details and expected return information implicit.

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?

The single device_id parameter is fully documented in the schema as accepting a device ID or system-ip. The description does not add meaning beyond the schema, so the high schema coverage baseline of 3 applies.

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 description states a specific verb and resource: get application-aware routing statistics, clarified as tunnel stats, for a device. It is clearly distinct from generic siblings, though it does not explicitly contrast with closely related tools like get_app_route_sla_class or get_sdwan_stats.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus related routing/statistics tools, nor any stated prerequisites such as device reachability or required permissions. The phrase 'for a device' implies context but does not provide usage guidance.

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

get_attached_devicesB

Get devices attached to a specific device template.

NameRequiredDescriptionDefault
template_idYesTemplate ID

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it only says 'Get'. It does not state the operation is read-only, whether results are paginated or bounded, whether devices from child/derived templates are included, or what happens with an invalid template ID.

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?

One front-loaded sentence with zero filler. It is efficient, though its brevity reflects under-specification rather than tight editorial trim.

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

Completeness3/5

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

For a one-parameter read tool with no output schema, the description should at least hint at the shape of the result (device IDs vs. full records) and the scoping semantics of 'attached'. It stops short of that, so the agent must probe the response to learn what comes back.

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 100% and the single parameter is required with a description, so the baseline is 3. The phrase 'specific device template' mildly reinforces that template_id is a template (not a device) identifier, which is useful disambiguation but adds little beyond the schema.

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 concrete verb and resource ('Get devices attached to a specific device template'), so the agent knows exactly what the call returns conceptually. It does not differentiate against near-neighbors such as list_devices or get_device_details, leaving the agent to infer the template-scoped distinction.

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?

Usage is only implied: you call it when you already have a template ID and want its membership. There is no explicit when-to-use versus list_devices or get_device_details, and no prerequisite or exclusion guidance.

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

get_bfd_sessionsB

Get BFD (Bidirectional Forwarding Detection) sessions for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It says 'Get' but does not describe read-only safety, required permissions, whether results are current or historical, pagination, or return behavior.

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?

The description is a single front-loaded sentence with no wasted text. It is appropriately sized for a simple one-parameter lookup tool.

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

Completeness3/5

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

The tool has low complexity and full schema coverage, so the description is adequate to support invocation. However, with no annotations and no output schema, it could do more to describe return content or operational context.

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 parameter is documented as 'Device ID or system-ip.' The description adds no additional parameter semantics beyond the schema, so the baseline of 3 applies.

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 description states a specific verb and resource ('Get BFD sessions') and scopes it to a device. It is clear what the tool retrieves, but it does not explicitly differentiate itself from close BFD siblings such as get_bfd_summary and get_bfd_tloc.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The intended usage is only implied by the tool name and resource.

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

get_bfd_summaryC

Get BFD session summary for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. 'Get' implies a read, but nothing states permissions, whether the device must be reachable, pagination, or what a summary contains versus raw session data — significant gaps for a monitoring tool with zero annotation coverage.

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?

A single front-loaded sentence with no filler. It is efficient, though its brevity comes partly from omitting useful differentiation.

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

Completeness3/5

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

For a one-parameter read tool with a fully documented schema and no output schema, this is minimally viable, but the absence of any distinction from sibling BFD tools and any return-shape hint leaves an agent guessing in a crowded BFD/sibling namespace.

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 100% and the sole parameter is documented as 'Device ID or system-ip'. The description adds no meaning beyond the schema, so the baseline 3 applies.

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

Purpose3/5

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

States a specific verb and resource ('Get BFD session summary for a device'), but does not distinguish it from the close sibling get_bfd_sessions or explain what makes this a 'summary' versus a full session listing. The scope is vague enough that an agent can't confidently choose between the two BFD tools.

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

Usage Guidelines2/5

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

No guidance on when to use this versus get_bfd_sessions, get_bfd_tloc, or get_bfd_sessions for a device. The only implied context is that it's per-device, which the schema already conveys via the required device_id.

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

get_bfd_tlocB

Get BFD session summary per TLOC for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read operation, but it does not state read-only semantics, permissions, rate limits, or what 'summary' actually contains.

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?

A single short sentence that front-loads the action and resource with zero filler. Nothing is redundant.

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

Completeness3/5

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

For a simple one-parameter read tool this is minimally adequate, but with no output schema and no annotations, the description could explain what the per-TLOC BFD summary contains or what TLOC means in context.

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 100% and the single device_id parameter is documented as 'Device ID or system-ip'. The description adds no extra parameter meaning beyond the schema, which is the expected baseline.

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 and resource: get BFD session summary, scoped per TLOC for a device. It is clear what it does, but it doesn't distinguish itself from siblings like get_bfd_sessions, get_bfd_summary, or get_device_tloc.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus get_bfd_sessions, get_bfd_summary, or get_omp_tlocs. The 'per TLOC' scope hints at usage but no exclusions or alternatives are named.

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

get_bgp_neighborsC

Get BGP neighbors for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read-only lookup, but nothing is said about return shape, whether results are live-cached, or behavior when BGP is not enabled on the device.

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?

A single short sentence with zero filler and the resource/scoping front-loaded. It is efficient, though its brevity reflects under-specification rather than discipline.

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

Completeness2/5

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

With no output schema and no annotations, the description should convey what a 'neighbor' record contains (peer address, AS, state, uptime) to let an agent judge relevance against get_bgp_routes/get_bgp_summary. It says nothing about return content.

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 100% and the single parameter (device_id, accepting ID or system-ip) is fully documented in the schema. The description adds nothing 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.

Purpose4/5

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

States a specific verb and resource ('Get BGP neighbors') scoped to a device, which is unambiguous about what it returns. However, it does not distinguish itself from close siblings such as get_bgp_routes and get_bgp_summary, which an agent must choose between.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus get_bgp_routes or get_bgp_summary, nor any prerequisites (e.g., whether the device must have BGP configured). The device scoping is only implied by the parameter name.

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

get_bgp_routesC

Get BGP routes for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses almost nothing beyond the implied read operation. It does not state whether results are paginated, what route attributes are returned, or whether device type or permissions affect availability.

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?

The single sentence is front-loaded and free of filler. Its terseness is a completeness problem rather than a conciseness problem, so it scores well here but not perfectly.

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

Completeness2/5

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

For a tool with no annotations and no output schema, the description should explain what kind of route data is returned and how it relates to the BGP neighbors/summary siblings. It leaves both the return semantics and the tool-selection context unaddressed.

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?

There is only one parameter, and the schema already documents it at 100% coverage as 'Device ID or system-ip'. The description adds no further semantics, so the baseline of 3 applies.

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 description names a clear verb (Get) and resource (BGP routes) scoped to a device. It does not, however, distinguish this tool from closely related siblings like get_bgp_neighbors, get_bgp_summary, or get_omp_routes.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus get_bgp_neighbors or get_bgp_summary, nor any prerequisites or exclusions. An agent must infer usage from the tool name alone.

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

get_bgp_summaryC

Get BGP summary for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation but never states that it is read-only, what permissions or device reachability are required, or what the response contains.

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?

A single, front-loaded sentence with no wasted words. It is appropriately sized, though also under-specified rather than richly concise.

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

Completeness3/5

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

For a one-parameter read tool with a fully documented schema and no output schema, the description covers the basic purpose. It remains thin on scope—such as whether the summary is per-VRF, IPv4/IPv6, or session-state oriented—and on return behavior.

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% for the single device_id parameter, so the schema already documents the accepted ID formats. The description adds no additional parameter meaning, but the baseline is 3 when the schema is complete.

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 and resource: 'Get BGP summary'. An agent can tell it retrieves BGP summary data, but the description does not distinguish it from closely related siblings such as get_bgp_neighbors or get_bgp_routes.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus get_bgp_neighbors or get_bgp_routes, and no prerequisites or exclusion conditions are mentioned. Usage must be inferred from the tool name alone.

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

get_bridge_tableB

Get bridge forwarding table for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. 'Get' implies read-only behavior, but the description does not disclose permissions, data freshness, pagination, response format, or what the bridge forwarding table contains.

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?

The description is a single front-loaded sentence with no wasted words. For a simple one-parameter read tool, this is appropriately concise.

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

Completeness3/5

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

The tool is simple, has one fully documented parameter, and no output schema. However, without annotations or an output schema, the description does not explain return values or behavioral constraints, leaving it minimally viable rather than complete.

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 100%, and device_id is documented as 'Device ID or system-ip.' The description only says 'for a device' and adds no further parameter meaning, so it neither compensates nor detracts from the schema baseline.

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 description uses a clear verb and resource: 'Get bridge forwarding table for a device.' It is specific enough to understand the operation, but it does not distinguish this from many sibling get_* diagnostic tools such as get_device_arp or get_device_interfaces.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites, exclusions, or expected context. The only implied usage is that a device_id is required, which comes from the schema.

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

get_certificate_summaryB

Get certificate validity summary for devices.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral-disclosure burden. 'Get' implies a read operation, but the description does not explicitly confirm read-only behavior, authorization needs, rate limits, aggregation behavior, or what 'validity summary' includes.

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?

The description is a single efficient sentence with no waste. The operation and resource are front-loaded immediately.

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

Completeness3/5

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

For a parameterless summary tool, the description identifies the domain but does not explain the returned summary structure or any scope limits. With no output schema and no annotations, that leaves an agent with adequate but incomplete context.

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?

The tool has zero parameters, so there is no parameter semantics to document. The baseline for a parameterless tool is 4, and the description does not introduce confusion about inputs.

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 description states a specific verb and resource: 'Get certificate validity summary for devices.' This clearly identifies the operation and the certificate-validity domain, which no sibling tool name duplicates. It does not explicitly contrast with sibling summary tools, so it falls 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 Guidelines2/5

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

The phrase 'for devices' gives a scope hint, but the description does not say when to use this tool, when not to use it, or which sibling summary tool to prefer. There are no prerequisites or alternative-routing instructions.

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

get_cflowd_flowsC

Get cflowd flow information for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not say whether results are time-bounded, paginated, aggregated, or how large the response may be, leaving the agent unable to predict the behavior of this read call.

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?

One short sentence with no filler, and the resource is front-loaded. It is arguably too terse for a tool with zero annotations, but it wastes no words.

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

Completeness2/5

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

With no annotations and no output schema, the description should explain the return shape, temporal scope, and any aggregation or pagination behavior. Instead it supplies only a bare purpose, leaving significant gaps for a data-retrieval tool.

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 single device_id parameter is already documented as 'Device ID or system-ip'. The description adds only the loose phrase 'for a device' and no format, alternative identifier, or default details beyond the schema.

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 clear verb and resource (get cflowd flow information) scoped to a device. However, it does not distinguish itself from nearby siblings like get_cflowd_statistics or get_app_log_flows, so the agent cannot tell from the description alone which flow-related tool applies.

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

Usage Guidelines2/5

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

No indication of when to use this versus get_cflowd_statistics, get_app_log_flows, or get_app_log_flow_count. The only implicit guidance is the device scoping, with no exclusions or alternatives named.

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

get_cflowd_statisticsC

Get cflowd packet statistics for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read, but nothing is said about required permissions, whether the device must be actively exporting cflowd data, or what the statistics contain (aggregation window, counters, error states).

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?

A single front-loaded sentence with no filler. It is efficient, though the brevity is partly under-specification rather than tight writing.

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

Completeness2/5

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

With no output schema and no annotations, the description should at least indicate what statistics are returned or the data window. As written, an agent knows the target resource but not what it will get back or under what conditions the call succeeds.

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 100% and the single parameter already documents 'Device ID or system-ip'. With only one parameter and full schema documentation, baseline 3 applies; the description adds no format or selection detail beyond 'a device'.

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

Purpose3/5

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

States a verb (Get) and resource (cflowd packet statistics) scoped to a device, which is interpretable. However, it does not distinguish itself from the nearby sibling get_cflowd_flows, so an agent cannot tell from this text alone when 'statistics' ends and 'flows' begins.

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

Usage Guidelines2/5

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

There is no guidance on when to use this over get_cflowd_flows, get_app_route_statistics, or get_sdwan_stats, nor any prerequisites such as cflowd being enabled on the device. The agent must infer the use case.

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

get_cloudx_appsC

Get CloudExpress apps and VPNs configuration.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. 'Get' implies a read operation, but it says nothing about permissions, whether the response is per-device or global, pagination, or how large the config payload may be. For a cloud-controller query tool this is a significant gap.

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?

A single front-loaded sentence with no filler. It is efficient, though the brevity borders on under-specification rather than tightness.

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

Completeness2/5

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

With no output schema, no annotations, and no parameters, the description is the only source of information an agent has, and it does not describe the shape of the returned apps/VPN configuration or the scope of the query. It is not wrong, but it is too thin for an unannotated tool with no output contract.

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?

The tool takes zero parameters, which is the baseline-4 case; there is nothing for the description to disambiguate. Schema coverage is 100% trivially.

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

Purpose3/5

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

The description names a specific verb and resource: retrieving CloudExpress apps and VPN configuration. However, it does not say how this differs from sibling tools like get_cloudx_status, get_cloudx_gateway_list, get_cloudx_client_list, or get_omp_cloudx, so an agent must guess which endpoint surfaces apps/VPN data versus status or client lists.

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

Usage Guidelines2/5

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

There is no guidance on when to call this tool, what prerequisites exist, or which sibling to prefer for adjacent CloudExpress data. The agent is left to infer everything from the name alone.

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

get_cloudx_client_listC

Get CloudExpress client/site list.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond a bare 'Get'. It does not confirm read-only safety, note pagination or result size limits, or describe what happens on empty results. For a zero-annotation tool this is a meaningful gap, though 'Get' weakly implies a non-mutating read.

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?

A single short sentence with no filler, suitably sized for a trivial zero-parameter read. It is front-loaded with the verb and resource, though it is arguably under-specified rather than genuinely concise.

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

Completeness2/5

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

With no annotations and no output schema, the description is the only source of behavioral and return-value information, and it supplies neither. It does not say what fields each client/site entry contains or how the list is ordered. For a simple list tool this is thin enough to leave the agent under-informed before calling.

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?

The tool takes zero parameters, so the baseline of 4 applies. The description correctly implies a simple, unfiltered listing with nothing to configure, and there are no parameters whose meaning needs elaboration.

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

Purpose3/5

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

The description names a verb ('Get') and a resource ('CloudExpress client/site list'), so the basic operation is discernible. However, it never clarifies how 'CloudExpress' relates to the many sibling tools prefixed get_cloudx_* (get_cloudx_status, get_cloudx_gateway_list, get_cloudx_apps), leaving an agent unsure whether this is a distinct service or a synonym. The slash-joined 'client/site' also leaves the resource identity slightly ambiguous.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the numerous get_cloudx_* siblings or the broader listing tools like list_devices. No prerequisites, no scoping conditions, no exclusions are given. The agent must infer usage purely from the name.

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

get_cloudx_gateway_listC

Get CloudExpress gateway list.

NameRequiredDescriptionDefault

No parameters

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it only weakly implies read-only via the verb 'Get'. It says nothing about return contents, pagination, scoping, or whether gateways are filtered by anything.

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?

It is a single short, front-loaded sentence with no waste, but it is a bare label rather than a usefully concise definition. Brevity here comes at the cost of all substance.

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

Completeness2/5

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

No annotations, no output schema, and no parameter docs mean the description is the only source of context, and it supplies almost none. An agent cannot tell what a gateway entry is, whether results are filtered, or how this relates to other CloudX listing tools.

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?

The tool takes zero parameters, so the schema-side burden is minimal and the description has no parameter meaning to convey. Baseline for a no-param tool applies, with a slight deduction because nothing describes output shape either.

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

Purpose2/5

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

The description restates the tool name almost verbatim ('Get CloudExpress gateway list' for get_cloudx_gateway_list), adding no specificity. It doesn't clarify what a 'gateway list' contains or how it differs from nearby siblings such as get_cloudx_client_list, get_cloudx_apps, or get_omp_cloudx.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus the many CloudX-related siblings (get_cloudx_status, get_cloudx_client_list, get_cloudx_apps, get_omp_cloudx). The agent must infer selection from the name alone.

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

get_cloudx_statusB

Get CloudExpress (Cloud OnRamp) status - sites per application.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read operation, but the description does not state freshness, aggregation behavior, whether CloudExpress must be enabled, or what the status output represents beyond 'sites per application.'

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?

The definition is a single concise sentence with the core resource and scope front-loaded. There is no redundant or filler text.

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

Completeness3/5

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

For a zero-parameter status tool, the description is minimally sufficient but leaves out useful context such as whether results are aggregated, how staleness is handled, and how it relates to the other CloudExpress tools. With no output schema, the description could do more to set expectations about the returned status.

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?

The tool has zero parameters, so there are no parameter semantics to explain. This matches the baseline expectation for a no-parameter tool.

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 description uses a specific verb and resource: 'Get CloudExpress (Cloud OnRamp) status,' and adds scope with 'sites per application.' It is clear what the tool retrieves, but it does not differentiate itself from nearby CloudExpress siblings such as get_cloudx_apps, get_cloudx_gateway_list, or get_omp_cloudx.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus the many sibling tools, including get_cloudx_apps, get_cloudx_gateway_list, get_cloudx_client_list, and get_omp_cloudx. It also provides no exclusions or preconditions.

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

get_cluster_statusA

Get vManage cluster health status per node.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; 'Get' implies a non-destructive read, and 'per node' hints that results are broken down by cluster node rather than aggregated. Beyond that it says nothing about authentication requirements, error behavior when a node is unreachable, or cost/latency, which are real gaps for a cluster-wide query.

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?

A single front-loaded sentence with no filler, appropriately sized for a zero-parameter read tool. Every word (vManage, cluster, health, per node) constrains meaning.

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

Completeness3/5

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

There is no output schema and no annotations, so the description is the only source of return-value information; 'health status per node' gives the shape but not what fields constitute 'health' (node role, election state, service liveness, etc.). Adequate to call correctly, but thin for interpreting the response.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description does not claim any filtering options, which correctly matches the empty schema.

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 ('Get') and a specific resource ('vManage cluster health status') with a scope qualifier ('per node'), which distinguishes it from generic status siblings like get_system_status or get_control_status. It does not explicitly name or rule out those siblings, but the resource is narrow enough to be identifiable.

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?

No explicit when-to-use, when-not-to-use, or alternatives are given; the guidance is only implied by the phrase 'cluster health status'. An agent can infer this is for cluster-wide health checks on vManage, but must guess how it differs from the many other status tools in the sibling list.

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

get_config_groupA

Get one configuration group (by ID or exact name) with its feature profiles and associated devices.

NameRequiredDescriptionDefault
config_groupYesConfiguration group ID or exact name

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. 'Get' clearly signals a read-only operation and the mention of embedded feature profiles/devices conveys return shape, but nothing is said about behavior when the group doesn't exist, permission requirements, or result size.

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?

One sentence, front-loaded with the verb and resource, with the identifier options and returned contents appended efficiently. No filler.

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?

With no output schema, the description helpfully names the main returned components (feature profiles, associated devices). Missing only edge-case/error behavior for a lookup tool, which keeps it just short of complete.

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 100% and the single parameter is fully documented as 'Configuration group ID or exact name'. The description restates the same fact rather than adding matching rules, case sensitivity, or ambiguity handling, so baseline 3 applies.

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 and resource ('Get one configuration group') and even outlines the payload (feature profiles and associated devices). It implicitly contrasts with list_config_groups by emphasizing 'one', though no sibling is named explicitly.

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 parenthetical 'by ID or exact name' hints at how to identify the target, but there is no explicit guidance on when to use this versus list_config_groups, get_feature_profile, or get_attached_devices. Usage is inferable from the name and description only.

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

get_config_group_device_variablesB

Get device-specific variable values of a configuration group (all devices, or one device).

NameRequiredDescriptionDefault
deviceNoOptional device: hostname, system-ip, UUID or chassis number
config_groupYesConfiguration group ID or exact name

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. 'Get' implies a read, but the description says nothing about whether values reflect inherited or overridden variables, whether resolution requires the device to be attached to the group, or what the response contains. For a no-annotation tool this is a meaningful gap.

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?

A single sentence with the scope qualifier front-loaded in parentheses; no filler, no repetition of the tool name or title.

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

Completeness3/5

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

The tool is simple (2 params, 1 required), but with no annotations and no output schema, the description should say more about what the returned variable set looks like and how inheritance or overrides are represented. It is minimally sufficient to call correctly but not to interpret results confidently.

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 100%, so both parameters are already documented in detail, including the accepted device identifier formats. The description adds one piece of meaning the schema omits — that omitting device returns values for all devices — but contributes nothing further about the config_group identifier or value semantics.

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 description states a specific verb and resource ('Get device-specific variable values of a configuration group') and scopes it with '(all devices, or one device).' It clearly distinguishes variable values from plain group metadata, though it never names the near siblings get_config_group or preview_config_group_device_config to clarify the boundary.

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 parenthetical '(all devices, or one device)' implies when to supply the device argument versus omitting it, which is useful. However, there is no explicit guidance on when to use this tool rather than get_config_group or preview_config_group_device_config, and no prerequisites are stated.

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

get_control_affinityC

Get controller group affinity configuration or status for a device.

NameRequiredDescriptionDefault
typeNoAffinity config or status (default: status)
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read, but the description says nothing about whether config retrieval requires elevated permissions, whether the two modes touch different endpoints, or what the response contains. For an unannotated tool this is a meaningful gap.

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?

A single front-loaded sentence with zero filler. Its brevity is appropriate, though it leaves content gaps handled under other dimensions rather than being padded here.

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

Completeness3/5

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

A simple two-parameter, no-output-schema read tool, so the bar is modest. However, the description never clarifies what 'affinity configuration' or 'affinity status' actually report, leaving an agent to guess at the returned content.

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%, with both parameters documented and the 'type' enum including its default ('status'). The description adds no syntax, format, or meaning beyond what the schema already states, so the baseline 3 applies.

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 ('Get') and a distinct resource ('controller group affinity configuration or status') scoped to a device. Among the many get_control_* siblings, this names a unique resource, so an agent can discriminate it, though it never explicitly contrasts itself with neighbors like get_control_status.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus the many other get_control_* siblings, and no guidance on when to request 'config' versus 'status'. The two modes are named but not explained, leaving the choice entirely to the schema enum.

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

get_control_connectionsB

Get control plane connection status for a device. Shows connections to vSmart/vBond.

NameRequiredDescriptionDefault
syncedNoReturn vManage cached (synced) data instead of querying the device in real time
device_idYesDevice ID or system-ip
peer_typeNoOnly connections to this peer type
system_ipNoOnly connections to this peer system-ip

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about read-only semantics, whether data is live versus cached (that detail lives only in the schema), latency, or what the response contains. The only behavioral hint is the peer scope (vSmart/vBond), which is thin for a zero-annotation tool.

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?

Two short sentences with zero filler, the core purpose front-loaded. Nothing redundant and nothing wasted.

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

Completeness3/5

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

For a 4-parameter, zero-annotation tool with no output schema, the description is adequate but sparse: it doesn't clarify return content or differentiate from the many neighboring control/OMP/validator tools. Schema coverage compensates for parameters, but the behavioral and disambiguation gaps remain.

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%, including clear descriptions for synced, peer_type, and system_ip, so the schema does the heavy lifting. The description adds no parameter-level meaning beyond the peer-type hint, so baseline 3 applies.

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 and resource (get control plane connection status for a device) and adds scope with 'connections to vSmart/vBond'. It doesn't distinguish itself from close siblings like get_control_connections_history or get_validator_connections, so an agent must infer the boundary from the name alone.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no mention of prerequisites, and no routing to alternatives such as the history variant or summary tools. Only a minimal implied context ('for a device') is present.

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

get_control_connections_historyB

Get control connection history for a device (past connection attempts, errors, and down reasons).

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses useful return-content categories (past connection attempts, errors, down reasons), but does not cover permissions, time range, freshness, pagination, or response structure. Some behavioral context is added, but significant gaps remain.

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?

A single, front-loaded sentence with no waste. The core action and scope appear first, and the parenthetical efficiently adds return-content detail without restating the name.

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

Completeness3/5

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

For a simple one-parameter tool, the description covers the basic purpose and lists the kinds of history returned. However, with no annotations and no output schema, it should clarify the time span of the history, any pagination behavior, or the response shape; those omissions leave the agent with an incomplete operational picture.

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 sole parameter device_id is documented in the schema as "Device ID or system-ip." The description does not add any parameter-specific meaning 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.

Purpose4/5

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

States a specific verb and resource: get control connection history for a device. The parenthetical clarifies the content as past connection attempts, errors, and down reasons. It does not explicitly name the sibling get_control_connections or explain the distinction, so it falls short of full sibling differentiation.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance, no exclusions, and no alternatives. The implied use for troubleshooting past connection issues is present but only inferred from the purpose; an agent must decide on its own whether this or get_control_connections is appropriate.

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

get_control_countB

Get fabric-wide control connection counts, optionally for one site.

NameRequiredDescriptionDefault
site_idNoOptional site ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden, yet it discloses nothing beyond the aggregation itself. It does not say whether counts are a single total or a per-site/per-peer breakdown, whether results are cached or live, or anything about permissions or rates.

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?

A single front-loaded sentence with no filler; the scope (fabric-wide) precedes the optional narrowing. Nothing is wasted.

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

Completeness3/5

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

For a one-parameter read tool with no output schema, the description covers the basic call but leaves the return shape ambiguous — 'counts' could mean one number or a structured breakdown. Minimal but not inadequate.

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 100% and the single parameter is already documented as 'Optional site ID'. The description adds one genuinely new semantic: omitting site_id yields fabric-wide counts rather than an error or empty result. That is useful but thin, keeping it at baseline.

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 and resource ('Get ... control connection counts') plus a scope qualifier ('fabric-wide ... optionally for one site'). It implicitly separates itself from listing tools like get_control_connections by emphasizing aggregation, but it never names or contrasts a sibling such as get_control_statistics or get_network_connections_summary.

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?

Usage is only implied: the agent infers 'call this when you want counts rather than a list' and 'pass site_id to narrow'. There is no explicit when-to-use/when-not-to-use guidance and no routing to alternatives among the many get_control_* siblings.

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

get_control_local_propertiesB

Get control plane local properties for a device (system-ip, site-id, org name, certificate status, vBond address, max controllers).

NameRequiredDescriptionDefault
syncedNoReturn vManage cached (synced) data instead of querying the device in real time
device_idYesDevice ID or system-ip

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral-disclosure burden. 'Get' implies a read operation, but the description does not state whether the call is real-time or cached, what permissions are required, or how the response is structured; the cached/real-time distinction appears only in the schema's synced parameter.

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?

The description is a single front-loaded sentence with no wasted wording. The parenthetical field list is useful and directly supports interpretation of the returned data.

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 simple getter with fully described parameters, the description is nearly complete and usefully lists the returned fields in the absence of an output schema. It could be stronger by noting behavioral details such as read-only status or the synced versus real-time distinction.

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 both parameters are already documented in the input schema. The description lists returned properties rather than adding parameter semantics, so the schema baseline of 3 applies.

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 description uses a specific verb and resource: 'Get control plane local properties for a device,' and enumerates the returned fields. It is clear what the tool does, but it does not explicitly differentiate itself from nearby siblings such as get_validator_local_properties.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives, nor does it state any exclusions or prerequisites. The use case is only faintly implied by the tool name and the phrase 'for a device.'

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

get_control_network_summaryB

Fabric-wide: per-device control plane summary (control connections, OMP peers, vSmart peers, reachability).

NameRequiredDescriptionDefault
stateNoFilter by control state

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the aggregation scope (fabric-wide) and the data categories returned, which is useful. It says nothing about read-only nature, permissions, pagination, or result shape, leaving meaningful gaps for a no-annotation 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?

A single compact sentence with the scope front-loaded and no filler. It reads as a fragment without an explicit verb, which slightly reduces scannability, but every element carries information.

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

Completeness3/5

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

For a summary tool with no output schema and one optional enum parameter, listing the included metrics is a reasonable completeness level. The missing piece is disambiguation from the many similarly named control/OMP summary siblings, which an agent needs in this crowded namespace.

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 field is an enum, so the schema fully documents the 'state' filter. The description adds no information about it, so baseline 3 is appropriate.

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 description names the resource (per-device control plane summary) and enumerates the exact contents: control connections, OMP peers, vSmart peers, reachability, plus the 'fabric-wide' scope. That is far more specific than a tautology. It does not, however, differentiate itself from close siblings such as get_control_summary or get_omp_summary.

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?

Usage is only implied: 'fabric-wide' hints that this aggregates across all devices rather than one device. There is no explicit when-to-use statement, no prerequisite, and no named alternative among the many control/OMP summary siblings that could be chosen instead.

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

get_control_statisticsC

Get control plane DTLS connection statistics for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure, but only states the retrieval target. It does not explicitly confirm read-only safety, describe the returned statistics, mention authentication or device reachability requirements, or clarify whether the data is live or historical.

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?

The description is a single front-loaded sentence with no wasted words. It efficiently states the resource and scope without unnecessary elaboration.

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

Completeness2/5

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

Given no annotations and no output schema, the description should provide more context about what statistics are returned and how they differ from similar control-plane tools. It is too minimal to help an agent select this tool confidently among many get_control_* siblings.

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 100% and the single device_id parameter is documented with 'Device ID or system-ip.' The description adds only the phrase 'for a device,' which reinforces but does not extend the schema's meaning, so the baseline of 3 is appropriate.

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 description states a specific verb and resource combination: 'Get control plane DTLS connection statistics for a device.' This clearly identifies the entity and scope, and is distinguishable from siblings such as get_control_connections or get_control_status, though it does not explicitly name sibling alternatives.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives like get_control_connections, get_control_status, or get_validator_statistics. It provides only a bare statement of what is retrieved, leaving the agent to infer selection criteria.

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

get_control_statusB

Fabric-wide: control connection up/down status counts (dashboard view).

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It indicates an aggregate/dashboard read operation, but does not disclose freshness, aggregation semantics, permissions, or what 'dashboard view' specifically changes, leaving meaningful behavioral gaps.

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?

The definition is a single compact sentence with the scope and output type front-loaded. The phrase 'dashboard view' is slightly vague, but there is no wasted text.

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

Completeness3/5

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

For a zero-parameter read tool with no output schema, the description gives the core output idea (fabric-wide up/down counts). However, it does not clarify how this differs from numerous similarly named control, summary, and statistics tools, leaving an agent with insufficient routing context.

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?

The tool has zero parameters, so there are no parameter semantics to explain. The description appropriately does not introduce unnecessary parameter details, making the baseline score of 4 appropriate.

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 description identifies a specific resource (control connections) and output shape (up/down status counts), and scopes it as fabric-wide. It does not explicitly name or distinguish itself from close siblings such as get_control_count, get_control_summary, or get_control_statistics, so it stops 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 Guidelines2/5

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

There is no explicit guidance on when to use this tool instead of nearby alternatives like get_control_connections, get_control_count, or get_control_summary. The only usage clue is 'dashboard view', which is not enough to route an agent reliably among many get_control_* siblings.

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

get_control_summaryC

Get control plane summary (device count) for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It implies a read-only operation via 'Get' and says the result is a device count, but it does not clarify authorization requirements, whether the count reflects connected devices or configured devices, error behavior, or other operational traits.

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?

The description is a single front-loaded sentence with no filler or repeated information. It is appropriately terse, though its brevity contributes to the sibling ambiguity noted elsewhere.

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

Completeness3/5

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

The tool is simple: one required parameter, complete parameter schema coverage, and no output schema. The description states the return subject (device count) but leaves 'control plane summary' underspecified and offers no behavioral context, which is a noticeable gap given the absence of annotations and output schema.

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%; the single required parameter device_id is documented in the schema as 'Device ID or system-ip'. The description only adds the phrase 'for a device' and does not extend parameter semantics meaningfully beyond the schema.

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 and resource: get a control plane summary for a device, with the parenthetical clarifying that it returns a device count. The purpose is understandable without opening the schema, though it does not explicitly differentiate itself from close siblings such as get_control_count or get_control_network_summary.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus semantically close siblings like get_control_count, get_control_status, or get_control_network_summary. The agent must infer the selection criteria from the name and is not told when this tool is inappropriate.

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

get_control_valid_devicesA

Get the authorized device lists held by a Controller (vSmart). Use a controller system-ip.

NameRequiredDescriptionDefault
listNoWhich list to return (default: devices)
device_idYesController (vSmart) system-ip

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full disclosure burden. It makes clear this is a read of controller-held data and that the argument must be a vSmart system-ip (not a vEdge), but says nothing about scope, permissions, or result size.

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 short sentences that are front-loaded with the resource and end with the key input constraint. No wasted clauses, though the second sentence largely restates the schema's device_id description.

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 two-parameter read tool with full schema coverage and no output schema, the description is sufficient to invoke it correctly. The main residual gap is not explaining the semantics of the `list` selector.

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, establishing a baseline of 3. The description reinforces that device_id is a Controller system-ip but adds nothing about the `list` enum values (devices/vsmarts/vmanage_id) beyond the plural phrasing.

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 ('Get the authorized device lists held by a Controller (vSmart)'), and the explicit 'Controller (vSmart)' qualifier distinguishes it from the near-identical sibling get_validator_valid_devices.

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?

'Use a controller system-ip' gives a precondition for the input, but there is no explicit when-to-use or when-not guidance and no routing to alternatives such as get_validator_valid_devices or list_controllers. Usage is only implied.

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

get_control_wan_interfacesB

Get control plane WAN interface (TLOC) state for a device: color, public/private IP and port, control connection counts.

NameRequiredDescriptionDefault
syncedNoReturn vManage cached (synced) data instead of querying the device in real time
device_idYesDevice ID or system-ip

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. It usefully identifies the returned state fields, but it does not disclose whether data is real-time or cached by default, permission requirements, or rate/query behavior; the 'synced' parameter documents that choice only in the schema.

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?

The description is a single dense sentence with no wasted text. The resource and return fields are front-loaded, making it easy to scan.

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 simple two-parameter read tool with full schema coverage and no output schema, the description is mostly complete because it names the key return fields. It could mention the real-time versus cached behavior as behavioral context, but that is already covered by the schema's synced parameter.

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 both parameters are already documented, including the synced-vs-real-time distinction. The description adds no parameter-specific meaning beyond what the schema provides, so the baseline of 3 applies.

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 description uses a specific verb and resource: 'Get control plane WAN interface (TLOC) state for a device,' and enumerates the state fields (color, public/private IP/port, connection counts). It is clear what the tool does, but it does not explicitly distinguish itself from closely related siblings such as get_device_tloc or get_control_connections.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it state any prerequisites, exclusions, or preferred contexts. It only implies usage by saying the query is 'for a device.'

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

get_device_arpB

Get ARP table (IPv4 to MAC mappings) for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It conveys that this is a retrieval operation and what data is returned, but does not mention permissions, device reachability requirements, error behavior, or pagination.

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?

The description is a single, front-loaded sentence with no wasted words. It immediately states the operation and the returned data.

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 simple one-parameter read tool with no output schema, the description is largely complete: it names the resource, clarifies the returned mapping, and the parameter is fully documented in the schema. Minor omissions include device reachability or empty-table behavior.

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 device_id parameter is already fully documented as 'Device ID or system-ip'. The description adds no parameter-specific semantics beyond what the schema provides, making the baseline score of 3 appropriate.

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 description states a specific verb and resource: get the ARP table for a device. It also clarifies the content as IPv4-to-MAC mappings, which helps distinguish it from generic device tools, though it does not explicitly name or differentiate from sibling tools like get_bridge_table.

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

Usage Guidelines2/5

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

Usage is only implied by the tool name and description; there is no explicit guidance on when to use this tool versus alternatives such as get_bridge_table or get_device_interfaces. No exclusions or prerequisites are mentioned.

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

get_device_detailsB

Get detailed information for a specific device by device ID or system IP.

NameRequiredDescriptionDefault
device_idYesDevice ID (UUID) or system-ip

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only lookup but does not disclose permissions, error behavior for unknown devices, response shape, or whether the data is live versus cached.

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?

It is a single front-loaded sentence with no wasted words. The key purpose and identifier options appear immediately.

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

Completeness3/5

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

For a simple one-parameter lookup, the description covers the basic operation. However, with no output schema and no annotations, it leaves the meaning of "detailed information" and returned fields underspecified.

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 parameter is already documented as a UUID or system-ip. The description repeats the accepted identifier forms but adds no syntax, formatting, or validation detail beyond the schema.

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 description states a specific verb and resource: get detailed information for a specific device. It distinguishes lookup of one device by ID/IP from list-oriented siblings, but does not explicitly differentiate from the many other device-specific detail tools.

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?

It implies usage when the caller has a device ID or system IP and needs device details, but gives no explicit when-to-use guidance, exclusions, or named alternatives among the many sibling device/control tools.

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

get_device_interfacesC

Get interface status and configuration for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It implies a read ("Get") and reveals that it returns both operational status and configuration, but says nothing about permissions, whether all interfaces are returned or a subset, pagination, or volume—significant gaps for a zero-annotation 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?

A single front-loaded sentence with no waste. It is efficient, though its brevity borders on under-specification rather than tightness.

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

Completeness3/5

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

The tool is simple (one required parameter) but has no annotations and no output schema, so the description is the only place to learn what comes back. It names status+configuration, which is the minimum viable coverage, but omits scope and return shape.

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 device_id parameter is documented as 'Device ID or system-ip'. The description only confirms the device scoping, so it adds nothing beyond the schema—baseline 3 applies.

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 (get) and resource (interface status and configuration) scoped to a device, which is far more informative than a tautology. However, it never distinguishes itself from siblings like get_control_wan_interfaces or get_bridge_table, leaving the agent to guess which interface view to pick.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternative tools. With several sibling tools returning interface-adjacent data, the agent gets no routing signal at all.

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

get_device_tlocC

Get TLOC (Transport Locator) information for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It implies a read operation via 'Get' but says nothing about permissions, whether the device must be online, what happens if TLOC data is unavailable, or what shape the response takes.

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?

A single well-formed sentence with the essential resource stated up front and the acronym explained. It is not padded, though it is arguably under-specified rather than optimally concise.

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

Completeness3/5

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

For a simple one-parameter read tool with no output schema, the description is minimally adequate but leaves the agent guessing about what TLOC data is returned and how it differs from the sibling TLOC endpoints. Slightly more routing context would complete it.

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?

Only one parameter with 100% schema coverage ('Device ID or system-ip'), so the schema already does the work. The description adds nothing about which identifier form is preferred or how lookup behaves, so baseline 3 applies.

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 (Get) and resource (TLOC information) scoped to a device, with the acronym expanded. However, it does not distinguish itself from close siblings like get_bfd_tloc or get_omp_tlocs, so an agent cannot tell from the description which TLOC tool to pick.

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

Usage Guidelines2/5

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

No indication of when to use this versus the other TLOC-related siblings, no prerequisites (e.g., device must be reachable/managed), and no exclusions. The agent must infer usage from the name alone.

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

get_device_vpnC

Get VPN configuration for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it says nothing about permissions, whether the data is live or configured, error behavior for unknown devices, or what the 'configuration' contains. Only the weak implication of 'Get' suggests a read-only operation.

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?

A single front-loaded sentence with zero redundancy. It is appropriately tight, though the brevity leaves room for one clarifying clause at no structural cost.

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

Completeness3/5

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

For a low-complexity single-parameter read tool the definition is minimally viable, but with no annotations and no output schema the description never indicates what a 'VPN configuration' response contains or what happens on a bad device_id.

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 100% and the single device_id parameter is fully documented in the schema (ID or system-ip), so the description does not need to restate it. Baseline 3 applies since the schema does the heavy lifting.

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 description states a specific verb and resource ('Get VPN configuration') plus the target scope ('for a device'), so an agent knows exactly what it retrieves. It does not differentiate itself from any sibling, though none of the listed siblings is a close VPN-config analogue.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this versus other device-scoped tools (e.g. get_device_details or get_device_interfaces), no prerequisites, and no exclusions. Usage must be inferred entirely from the name.

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

get_feature_profileB

Get one UX 2.0 feature profile with its features (parcels): e.g. system (AAA, banner, logging, NTP...), transport (WAN VPN, interfaces, routing), service (LAN VPNs, interfaces, routing).

NameRequiredDescriptionDefault
profileYesProfile ID or exact profile name
solutionNoSolution family (default: sdwan)
profile_typeYesProfile type, e.g. system, transport, service, cli

TDQS

B3.4/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It discloses that the tool retrieves a profile along with its features (parcels) and gives examples of feature contents, which is useful return-value context. However, it does not mention permissions, error behavior, or any operational constraints, leaving a gap for a mutation-free but still behaviorally opaque tool.

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?

The description is a single well-formed sentence that front-loads the core action and resource, then supplies compact examples. Every part earns its place with no redundancy.

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?

With no output schema and no annotations, the description does a reasonable job of explaining what is returned (profile plus features/parcels) and illustrates the domain. It omits edge cases like missing profiles or permission requirements, but for a simple read tool with fully documented parameters, it is largely complete.

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 all parameters are self-documented. The description adds examples of profile types (system, transport, service) and their contents, which gives some meaning to the profile_type values, but it does not mention the 'solution' parameter or clarify default behavior. Baseline 3 is appropriate.

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 description uses a specific verb and resource ('Get one UX 2.0 feature profile with its features (parcels)') and gives concrete examples of profile types, making it clear what the tool returns. It distinguishes itself from list_feature_profiles by specifying 'one', though it does not name the sibling explicitly.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The examples of profile types indirectly hint at valid usage, but there is no stated context or alternative routing.

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

get_network_connections_summaryA

Fabric-wide: reachable/unreachable counts per device class (vSmart, WAN Edge, vBond, vManage).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It does communicate the fabric-wide aggregation scope and the grouping by device class, but it does not explicitly state that this is a read-only operation, whether counts are live or cached, or what permissions are required.

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?

The description is a single compact phrase that front-loads the fabric-wide scope and then enumerates the device classes. There is no filler or repetition.

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?

Given the tool has no input parameters and no output schema, the description sufficiently explains that the result is counts per device class. It could be improved by clarifying usage relative to sibling summaries, but the core return concept is present.

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?

The tool has zero parameters, so there is no parameter semantics burden. The baseline for zero-parameter tools is 4, and the description appropriately avoids unnecessary parameter discussion.

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 description clearly states that this returns reachable/unreachable counts per device class across the fabric, which is more specific than the tool name alone. It distinguishes the result type (aggregate counts) from sibling list or detail tools, though it does not explicitly name which sibling to use instead.

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

Usage Guidelines2/5

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

There is no guidance on when to use this summary versus related siblings such as get_control_summary, get_control_count, or list_reachable_devices. The description only says what the output contains, leaving the agent to infer the appropriate context.

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

get_network_hierarchyA

Get the UX 2.0 network hierarchy (global, regions, areas and sites) used by configuration groups and policies.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It correctly frames this as a retrieval of an existing structure, which implies a read-only, zero-parameter, low-risk call, but it says nothing about return shape, ordering, or whether the hierarchy is a nested tree versus a flat list.

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?

A single front-loaded sentence with the resource named first and the level enumeration in parentheses. No filler, though the trailing purpose clause is slightly compressed.

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

Completeness3/5

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

There is no output schema, so the description is the only source of information about what comes back; it partially compensates by naming the four hierarchy levels. For a zero-param tool that is close to adequate, but the shape of the returned structure remains unspecified.

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?

The tool takes zero parameters and the schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 applies; the description cannot and need not add parameter meaning here.

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 ('Get') and a specific resource ('UX 2.0 network hierarchy') and enumerates the levels it covers: global, regions, areas and sites. That contrasts reasonably with the closest siblings (get_ux2_overview, list_config_groups), though it never names an alternative to distinguish against.

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 clause 'used by configuration groups and policies' implies the context in which an agent would need this tool, but there is no explicit when-to-use, when-not-to-use, or named alternative among the many siblings. Usage must be inferred.

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

get_omp_cloudxC

Get OMP Cloud OnRamp (CloudExpress) routes for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation but does not explain whether Cloud OnRamp must be configured, what happens when no routes exist, or what the response contains.

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?

The definition is a single front-loaded sentence with no wasted words. It is efficient, though its brevity contributes to the gaps in usage and behavioral guidance.

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

Completeness2/5

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

With no annotations and no output schema, the description should do more to explain what Cloud OnRamp routes are and what the caller receives. For a domain-specific read tool in a large sibling set, this is under-specified.

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 100%, and the single device_id parameter is already documented as accepting a device ID or system-ip. The description adds only 'for a device', which is consistent but adds little beyond the schema.

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 description states a specific verb and resource: get OMP Cloud OnRamp (CloudExpress) routes for a device. It is clearly narrower than a generic OMP route tool, but it does not explicitly differentiate itself from siblings like get_omp_routes or get_cloudx_status.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus get_omp_routes or the get_cloudx_* family. The only implied usage is retrieving Cloud OnRamp routes, but no prerequisites or exclusions are stated.

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

get_omp_multicastC

Get OMP multicast routes or multicast auto-discovery entries for a device.

NameRequiredDescriptionDefault
typeNoMulticast routes or auto-discovery (default: routes)
device_idYesDevice ID or system-ip
directionNoDirection (default: received)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read, but the description does not state that this is read-only and non-destructive, whether results are paginated, or whether both entry types are ever returned together. For a device-scoped query tool with zero annotation coverage, that is a notable gap.

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?

A single front-loaded sentence with no filler; the resource and scope arrive immediately. It is perhaps too terse to earn a 5, but nothing is wasted.

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

Completeness3/5

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

For a simple 3-parameter read tool with full schema coverage and no output schema, the description is minimally adequate. It omits what the response contains and how the two entry types differ, leaving the agent to rely entirely on the schema.

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%, with enums and defaults documented for both 'type' and 'direction', so the baseline is 3. The description only echoes the 'routes or autodiscover' split already present in the schema and adds no further semantics about device_id format or direction meaning.

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 ('Get') and resource ('OMP multicast routes or multicast auto-discovery entries') scoped to a device, which separates it from the many sibling OMP tools like get_omp_routes and get_omp_peers. It stops short of naming those siblings, so differentiation relies on the word 'multicast' alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this over the closely related get_omp_routes or get_omp_peers, nor on when to pick 'routes' versus 'autodiscover' beyond the bare enumeration. Usage must be inferred entirely from the name and schema.

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

get_omp_peersC

Get OMP (Overlay Management Protocol) peers for a device.

NameRequiredDescriptionDefault
syncedNoReturn vManage cached (synced) data instead of querying the device in real time
device_idYesDevice ID or system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no statement that this is a read-only query, whether it hits the device in real time by default, latency/failure behavior if a device is unreachable, or what the response contains. The only behavioral hint, the cached-vs-real-time trade-off, lives in the schema, not the description.

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?

A single front-loaded sentence with no filler or redundancy. It is efficient, though the brevity comes at the cost of under-specification rather than being a model of economy.

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

Completeness2/5

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

With no annotations and no output schema, the description is the only place an agent could learn default behavior, return contents, or error handling for an unreachable device, and it says none of that. For a device-scoped query tool in a large sibling set, this is a significant completeness gap.

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%, with both parameters (device_id and synced) documented in the schema, so the baseline is 3. The description adds no parameter meaning beyond what the schema already provides, such as what identifies a valid device_id or the implications of synced=true.

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 and resource ('Get OMP peers') and scopes it to a device, which distinguishes it from sibling OMP tools like get_omp_routes, get_omp_tlocs and get_omp_links. It doesn't clarify what a 'peer' covers versus those adjacent OMP resources, so it falls short of full sibling differentiation.

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

Usage Guidelines2/5

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

No indication of when to use this tool versus the many adjacent OMP tools (get_omp_status, get_omp_summary, get_omp_links), nor any guidance on when the real-time query is appropriate versus the cached path. The agent is left to infer usage entirely.

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

get_omp_routesA

Get OMP routes received or advertised by a device. Filter by VPN and/or prefix to limit output.

NameRequiredDescriptionDefault
prefixNoFilter by exact prefix (e.g. 10.10.116.1/32)
vpn_idNoFilter by service VPN ID (e.g. 10)
device_idYesDevice ID or system-ip
directionNoRoute direction (default: received)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read-only retrieval and notes that direction can be received or advertised, but it does not describe return shape, pagination, permissions, or other behavioral traits.

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?

Two short sentences with no wasted words. The core purpose is front-loaded and the filtering note follows naturally.

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 simple read query with full schema coverage and no output schema, the description gives enough to identify and invoke the tool correctly. A minor gap is the absence of any return-value or output-format context, though that is mitigated by the lack of an output schema.

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 all four parameters are already well documented. The description adds a brief note about using VPN and prefix filters but does not add meaning beyond the schema.

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 description states a specific verb and resource: get OMP routes for a device, with received/advertised scope. It is clear what the tool does, though it does not explicitly differentiate itself from sibling route-related tools such as get_bgp_routes.

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?

It mentions filtering by VPN and/or prefix to limit output, which implies when to use those parameters. However, it gives no explicit guidance on when to choose this tool over alternatives like get_bgp_routes or when not to use it.

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

get_omp_servicesA

Get OMP service routes (VPN, firewall, IDS, etc.) known to a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden; 'Get' implies a read-only operation and the parenthetical enumerates which service types are returned, which is useful behavioral context. It still says nothing about the response shape, volume of data, or any device-reachability prerequisite (e.g. whether the device must be online).

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?

A single tight sentence with the resource and scope front-loaded and no filler. Every phrase (including the parenthetical) carries information.

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

Completeness3/5

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

For a single-parameter read with no output schema, the bar is low and the description is adequate to call the tool correctly. It is not complete enough to route between this and the dense cluster of get_omp_* siblings, which is the main ambiguity an agent faces here.

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?

Only one parameter and schema coverage is 100% ('Device ID or system-ip'), so the schema fully documents it. The description adds only the implicit scoping that this identifier selects the device whose services are reported, which is marginal beyond the schema.

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 ('Get') and resource ('OMP service routes') scoped to a device, and clarifies with parenthetical examples (VPN, firewall, IDS) what 'services' means. It does not, however, distinguish itself from the many near-identical siblings such as get_omp_routes, get_omp_peers, or get_omp_tlocs.

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?

Usage is only implied: fetch OMP service route data for a given device. There is no explicit when-to-use guidance and no mention of when get_omp_routes (the closest sibling) would be the better choice instead.

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

get_omp_statusA

Fabric-wide: OMP peering up/down status counts (dashboard view).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations exist, so the description must carry the burden; it does convey that this is a read-only aggregate count scoped to the whole fabric, which is the key behavioral fact. It says nothing about data freshness, snapshot vs. live timing, or how the up/down tally is computed, which matters for a status counter an agent may report as ground truth.

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?

A single front-loaded sentence with the scope qualifier first and the return shape second; nothing is redundant. Its only weakness is terseness, not verbosity.

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?

With no output schema and no annotations, the description does state the shape of the return (up/down status counts) and the scope (fabric-wide), which is close to sufficient for a zero-parameter read. Missing only freshness/timing context that would let an agent interpret the counts confidently.

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?

The tool takes zero parameters, so the schema is complete by definition and the description has no parameter semantics to add. Baseline 4 applies.

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?

Names a specific resource (OMP peering up/down status counts) and states its scope (fabric-wide), so an agent can tell it returns an aggregate count rather than peer detail. It stops short of explicitly naming the sibling to prefer for per-peer detail (get_omp_peers) or for the broader rollup (get_omp_summary).

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

Usage Guidelines2/5

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

The phrase '(dashboard view)' faintly implies a quick summary use case, but there is no statement of when to choose this over get_omp_peers, get_omp_summary, or get_control_status, and no exclusions or prerequisites.

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

get_omp_summaryC

Get OMP summary for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it discloses nothing about return content, whether the device must be reachable, or whether this is a live query vs cached data. Only the device scoping is implied.

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?

One short sentence with no wasted words, but that brevity is achieved through under-specification rather than tight editing. There is nothing front-loaded because there is nothing substantive to front-load.

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

Completeness2/5

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

With no annotations and no output schema, the description needed to explain what the summary contains and how it relates to the dense OMP sibling set. For a domain-jargon tool in a large tool family, this is inadequate.

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 100% and the single required parameter device_id is documented as 'Device ID or system-ip'. The description adds no additional meaning, which is acceptable at full schema coverage (baseline 3).

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

Purpose2/5

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

The sentence 'Get OMP summary for a device' essentially restates the tool name (get_omp_summary) and adds only that it is scoped to a device. It does not clarify what an OMP summary contains or how it differs from sibling tools like get_omp_status, get_omp_peers, or get_omp_routes.

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

Usage Guidelines2/5

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

No guidance on when to call this versus the many related siblings (get_omp_status, get_omp_links, get_omp_peers, get_control_summary). An agent must guess which OMP or summary endpoint is appropriate.

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

get_omp_tlocsC

Get OMP TLOC routes received or advertised by a device.

NameRequiredDescriptionDefault
colorNoFilter by TLOC color (e.g. mpls, biz-internet)
device_idYesDevice ID or system-ip
directionNoTLOC direction (default: received)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. 'Get' implies a read-only query, but there's no mention of permissions, whether it hits a live device, throttling, or the shape of the result — significant gaps for an unannotated 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?

A single compact sentence with the key scope front-loaded and no wasted words. It is appropriately sized for a simple query tool, though it errs toward under-specification.

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

Completeness2/5

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

No output schema exists, yet the description says nothing about the returned structure, count, or format. Combined with no annotations and no alternative routing, an agent lacks enough context to know what to expect back or when this is the right call.

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 all three parameters (color, device_id, direction) are already documented in the schema. The description adds nothing beyond the schema's own wording, so baseline 3 applies.

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 (Get) plus the resource (OMP TLOC routes) and the scope (received or advertised by a device). It's clear what data is returned, though it doesn't explicitly distinguish itself from close siblings like get_device_tloc or get_omp_routes.

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

Usage Guidelines2/5

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

No guidance on when to use this versus get_device_tloc, get_omp_routes, or get_bfd_tloc, and no exclusions or prerequisites. The agent must infer selection purely from the name and the 'received or advertised' phrasing.

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

get_policy_groupA

Get one policy group (by ID or exact name) with its profiles and associated devices.

NameRequiredDescriptionDefault
policy_groupYesPolicy group ID or exact name

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the return payload shape ('with its profiles and associated devices'), which is real value given there is no output schema. It says nothing about authentication requirements, behavior when the exact name is ambiguous or unmatched, or whether the lookup is read-only — gaps that matter for a lookup that accepts a fuzzy 'exact name'.

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?

A single front-loaded sentence with zero filler; the resource, lookup key, and return contents are all packed in without redundancy.

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 single-parameter, read-only lookup with no output schema, the description covers what is returned at a summary level and how to identify the record. It falls short only on edge-case behavior (ambiguous names, not-found responses) that an agent would need before calling with a name instead of an ID.

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?

Only one parameter exists with 100% schema description coverage, and the description's '(by ID or exact name)' merely restates the schema's 'Policy group ID or exact name'. Baseline 3 is appropriate since the schema already does the work and the description adds no syntax or format detail.

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 and resource ('Get one policy group') and clarifies the return payload ('with its profiles and associated devices'). The word 'one' distinguishes it from the sibling list_policy_groups, though the sibling is never named explicitly.

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 phrase '(by ID or exact name)' implies you should call this when you already have an exact identifier rather than browsing, which is a usable usage signal. However, no alternative is named (e.g. list_policy_groups for discovery) and there is no statement of when not to use it, so the guidance remains implied rather than explicit.

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

get_sdwan_statsB

Get SD-WAN statistics (ACL drops, data policy, device metrics) for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. Beyond naming metric categories, it does not disclose whether statistics are real-time or historical, aggregation windows, permissions, pagination, or error behavior for an unknown device.

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?

The description is a single efficient sentence with the resource and scope front-loaded. Every part earns its place and there is no redundant text.

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

Completeness3/5

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

For a simple one-parameter read tool, the description gives enough to invoke it correctly but not enough to interpret or qualify the results. With no annotations and no output schema, the missing behavioral details leave a noticeable gap.

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?

The schema has one parameter with 100% description coverage ('Device ID or system-ip'), so the description need not repeat it. The phrase 'for a device' is consistent but adds no meaning beyond the schema.

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 description uses a specific verb ('Get') and resource ('SD-WAN statistics') scoped to a device, and names concrete metric categories (ACL drops, data policy, device metrics). It does not distinguish this tool from the many sibling statistics tools such as get_control_statistics or get_system_status.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The device-scoped read is implied by the name and description, but nothing helps an agent choose it over the numerous other get_*_statistics tools.

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

get_system_statusA

Get system status (CPU, memory, uptime) for a device.

NameRequiredDescriptionDefault
device_idYesDevice ID or system-ip

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden; 'Get' plus the metric list reasonably conveys a read-only operation, and naming CPU/memory/uptime tells the agent what comes back. It does not state whether values are live or cached, whether the device must be reachable, or what happens for an unknown/offline device ID.

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?

A single front-loaded sentence with the returned metrics in parentheses and no filler. Nothing extraneous and nothing buried.

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 one-parameter read tool with a fully documented schema and no output schema, the description largely suffices: it names the resource, the scope, and the returned metrics. The remaining gaps (freshness of metrics, behavior on unreachable devices) are modest but real.

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 100%, and the schema already documents device_id as 'Device ID or system-ip'. The phrase 'for a device' in the description adds nothing beyond that, so the baseline 3 applies.

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?

Clear verb+resource ('Get system status') with an explicit enumeration of the returned metrics (CPU, memory, uptime) scoped to a single device. This partially distinguishes it from broader siblings like get_device_details, though it never names that alternative outright.

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?

Usage is only implied: an agent can infer this is the tool for point-in-time health metrics of one device. There is no explicit statement of when to prefer it over get_device_details, get_cloudx_status, or the many other per-device status tools in the sibling list.

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

get_template_definitionC

Get the definition/configuration of a device or feature template.

NameRequiredDescriptionDefault
template_idYesTemplate ID
template_typeYesType of template

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Get' implies a read operation, but the description does not state permissions, whether sensitive configuration data is returned, error behavior for missing IDs, or anything about the response shape.

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?

The description is a single front-loaded sentence with no wasted words. It is efficient, though its brevity leaves little room for differentiating context.

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

Completeness3/5

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

For a simple two-parameter read tool with complete schema coverage, the description is minimally sufficient to invoke the tool. However, with no annotations and no output schema, it could do more to describe return content or operational context.

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 both parameters are already documented in the schema. The description only restates that the template can be device or feature, adding little beyond the enum, so baseline 3 is appropriate.

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 description uses a specific verb (Get) and resource (definition/configuration of a device or feature template), and the template_type enum reinforces the device-vs-feature distinction. It is clear, though it does not explicitly contrast itself with sibling list tools or related get tools.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as list_device_templates, list_feature_templates, or get_feature_profile. The required template_id and template_type imply lookup by ID and type, but no usage context or exclusions are provided.

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

get_topology_groupA

Get one topology group (by ID or exact name) with its topology profiles.

NameRequiredDescriptionDefault
topology_groupYesTopology group ID or exact name

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read-only, non-destructive operation and the description usefully discloses that topology profiles are included in the result, but it says nothing about behavior when the identifier is unknown/ambiguous, permission requirements, or result size.

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?

One sentence, front-loaded with the verb and resource, with the qualifier and return scope appended. No filler at all.

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 single-parameter read tool with no output schema and full schema coverage, the description covers what is fetched and what comes back. Only error/not-found and access behavior are absent, which is a minor gap at this complexity.

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 100% and the single parameter is fully documented in the schema. The description's 'by ID or exact name' restates the schema's own wording, adding slight emphasis on exact-match semantics but no information beyond it. Baseline 3 applies.

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 and resource ('Get one topology group') and scopes it to a single record rather than a collection, which implicitly separates it from list_topology_groups. It also notes the payload includes topology profiles, so an agent knows the return is more than the group object.

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?

Usage is only implied: 'one ... by ID or exact name' signals single-record lookup, and the sibling list_topology_groups is the obvious alternative, but the description never names it or states the condition for choosing between them.

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

get_ux2_overviewA

UX 2.0 configuration overview in one call: configuration groups, policy groups and topology groups with device counts and deployment state (up-to-date / failed / in progress), plus feature profile counts per type.

NameRequiredDescriptionDefault
solutionNoSolution family (default: sdwan). Others: sd-routing, nfvirtual, mobility

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the return contents well (groups with device counts, deployment states up-to-date/failed/in progress, feature profile counts), but omits permission/scope requirements, whether it's read-only (only implied by the 'get' name), and any pagination or tenant-scoping behavior.

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?

One dense sentence, front-loaded with the operation ('overview in one call') followed by the enumerated contents. Every clause maps to a real output dimension, though the sentence is long enough that the list of groups and the state/profile details run together.

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?

With no output schema and no annotations, the description does the necessary work of enumerating what comes back. For a zero-required-param overview tool this is nearly sufficient; only scope (tenant/global) and read-only confirmation are missing.

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 100% and the single optional 'solution' parameter is fully documented in the schema with its default (sdwan) and alternatives (sd-routing, nfvirtual, mobility). The description adds nothing about it, so baseline 3 applies.

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 resource ('UX 2.0 configuration overview') and enumerates what it aggregates: configuration groups, policy groups, topology groups, feature profile counts. The 'in one call' phrasing implicitly contrasts it with the granular sibling listers (list_config_groups, list_policy_groups, list_topology_groups), though it never names them.

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 'in one call' framing implies this is the summary entry point vs. the individual list_/get_ group tools, but there is no explicit 'use this when you want X, use list_config_groups when you need Y' guidance or any stated prerequisites.

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

get_validator_connectionsB

Get connections on a Validator (vBond), current or history. Use the validator system-ip.

NameRequiredDescriptionDefault
historyNoReturn connection history instead of current connections
device_idYesValidator (vBond) system-ip

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses little: only that the tool can return either current or historical data. It says nothing about read-only nature, permissions required, volume/pagination of results, or what a 'connection' record contains, which matters for a monitoring query.

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?

Two short sentences, front-loaded with the core operation and followed by the operative input hint. No filler and nothing that could be trimmed without losing meaning.

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

Completeness3/5

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

For a simple two-parameter read tool with full schema coverage this is minimum-viable: the agent knows what it retrieves and what to pass. With no annotations and no output schema, though, the description should say more about the shape of the returned connection data and any limits.

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 100%, so both parameters are documented in the schema itself. The description adds marginal reinforcement by tying 'system-ip' to the device_id concept and 'current or history' to the history flag, but no new format or validation detail.

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 and resource: 'Get connections on a Validator (vBond)', with the 'current or history' scope distinction. It is distinguishable from siblings such as get_validator_summary or get_validator_statistics by resource focus, though it does not explicitly name the sibling that fetches the same data for controllers.

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?

'current or history' implies the two operating modes, and 'Use the validator system-ip' hints at the input. But there is no explicit when-to-use guidance, no mention of when to prefer get_control_connections or get_control_connections_history, and no prerequisites stated.

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

get_validator_local_propertiesB

Get Validator (vBond) local properties (org name, certificate state, system-ip).

NameRequiredDescriptionDefault
device_idYesValidator (vBond) system-ip

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While the verb 'Get' implies a read operation, the description does not mention permissions, side effects, rate limits, or any other behavioral trait beyond the purpose.

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?

The description is a single, front-loaded sentence with no wasted words; the parenthetical list of properties is efficient and informative.

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

Completeness3/5

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

With no output schema and no annotations, the description should ideally clarify return format and any behavioral context. It lists three returned properties but does not describe the full response structure, leaving the agent with only a partial picture.

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 parameter device_id is fully documented in the schema as the Validator system-ip. The description does not add further meaning about the parameter, so the baseline of 3 is appropriate.

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 description states a specific verb (Get) and resource (Validator/vBond local properties), and enumerates the fields returned (org name, certificate state, system-ip). It implicitly distinguishes itself from siblings like get_control_local_properties by naming the validator role, but it does not explicitly contrast with those alternatives.

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

Usage Guidelines2/5

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

The description offers no guidance on when to use this tool versus alternatives such as get_validator_connections, get_validator_summary, or get_control_local_properties. It merely states what the tool retrieves, leaving the agent to infer the appropriate context.

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

get_validator_proxy_mappingC

Get Validator (vBond) NAT/proxy mapping table.

NameRequiredDescriptionDefault
device_idYesValidator (vBond) system-ip

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it only implies a read via 'Get' and says nothing about what the mapping table contains, whether the validator must be reachable, or what happens on an unresolvable device_id. For a zero-annotation tool this is thin behavioral disclosure.

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?

A single front-loaded sentence with zero filler. It is efficiently sized, though its brevity borders on under-specification rather than optimal conciseness.

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

Completeness3/5

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

For a simple one-parameter read tool this is minimally adequate, but with no output schema and no description of the mapping-table fields (e.g., public/private IP pairs), the agent cannot anticipate the return shape. A sentence on the returned columns would complete it.

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?

The single parameter has 100% schema description coverage ('Validator (vBond) system-ip'), so the schema already documents it fully. The description adds only the vBond clarification and no format examples or constraints, which matches the baseline 3 for high-coverage schemas.

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 ('Get') plus a precise resource ('Validator (vBond) NAT/proxy mapping table'), and the vBond parenthetical disambiguates the device type. It is clearly distinct from siblings like get_validator_connections or get_validator_summary, though it never explicitly names those alternatives.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the many other get_validator_* siblings, and no prerequisites or exclusions are stated. The agent must infer usage purely from the tool name and resource.

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

get_validator_statisticsC

Get Validator (vBond) DTLS/control packet statistics.

NameRequiredDescriptionDefault
device_idYesValidator (vBond) system-ip

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden: it does not confirm the operation is read-only, say whether the device must be online/reachable, or describe the shape of the returned counters. Only the word 'Get' signals non-mutation.

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?

One short, front-loaded sentence with no filler. It is efficient, though it leaves obvious room for a clarifying clause at no length cost.

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

Completeness3/5

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

For a one-parameter read tool with no output schema, the minimum needed to call it correctly is present via the schema. However, an agent still cannot tell what the statistics contain or how they differ from sibling validator tools.

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?

There is a single required device_id and schema coverage is 100%, with the schema already specifying 'Validator (vBond) system-ip'. The description adds nothing 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.

Purpose4/5

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

States a specific verb and resource: retrieve DTLS/control packet statistics for a Validator (vBond). The narrow 'DTLS/control packet' qualifier implicitly separates it from aggregate siblings like get_validator_summary or get_validator_connections, but no sibling is named.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this over the many neighbouring get_validator_* / get_control_* tools, and no prerequisites or exclusions are stated. The agent must infer selection purely from the noun phrase.

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

get_validator_summaryC

Get Validator (vBond) connection summary.

NameRequiredDescriptionDefault
device_idYesValidator (vBond) system-ip

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation via 'Get' but discloses nothing about permissions, rate limits, output shape, or whether the summary is scoped to a single device or broader state.

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?

The description is a single front-loaded sentence with no wasted words. Its brevity is efficient, though it borders on under-specification for a tool with many similar siblings.

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

Completeness2/5

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

With no annotations, no output schema, and many overlapping validator-related sibling tools, the description is too thin. It does not tell the agent what a 'connection summary' returns or how to choose between this and get_validator_connections.

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 100%, and the schema documents device_id as the Validator (vBond) system-ip. The description adds no parameter meaning beyond what the schema already provides, so the baseline score of 3 applies.

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

Purpose3/5

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

The description states a specific verb and resource: get a Validator (vBond) connection summary. However, it does not clarify what the 'summary' contains or how it differs from sibling tools such as get_validator_connections, get_validator_statistics, and get_control_summary.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like get_validator_connections or get_validator_statistics. The agent must infer usage from the name alone.

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

get_validator_valid_devicesB

Get the authorized device lists held by a Validator (vBond).

NameRequiredDescriptionDefault
listNoWhich list to return (default: vedges)
device_idYesValidator (vBond) system-ip

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure, yet it only implies read-only behavior through the word 'Get'. It says nothing about required permissions, whether the lists are cached/live, what 'authorized' means in this context, or what each list contains.

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?

A single tightly worded sentence with no filler, and the resource is front-loaded. It is efficient, though the brevity comes at the cost of the guidance dimensions above rather than being purely virtuous.

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 two-parameter read tool with a fully described schema, the description identifies the target object and semantics adequately, though it omits return-shape notes (no output schema exists) and sibling differentiation.

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%: the enum values (vedges, vsmarts, vmanage_id) with a documented default and the device_id system-ip are fully explained in the schema. The description adds no parameter detail beyond that, so the baseline 3 applies.

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 ('Get') and a specific resource ('authorized device lists held by a Validator (vBond)'), and clarifies the vBond terminology. However, it does not distinguish itself from the very similar sibling get_control_valid_devices, which likely returns the analogous data for controllers, leaving the agent to infer the boundary.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, when not to, or which sibling to prefer. An agent choosing between this and get_control_valid_devices, get_validator_connections, or get_validator_summary gets no routing guidance at all.

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

list_alarmsC

List active alarms from vManage.

NameRequiredDescriptionDefault
limitNoMax number of alarms to return (default 100)
site_idNoOnly alarms for this site ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden and largely drops it. It does not disclose pagination behavior, the default/limit semantics beyond what the schema says, ordering, or the fact that this is a read-only fetch. Only the word 'active' hints at filtering behavior.

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?

One short, front-loaded sentence with no filler. It is terse rather than padded — the issue is under-specification, not verbosity.

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

Completeness2/5

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

A simple read tool with only optional parameters, but with no annotations and no output schema the description should say something about what an alarm record looks like or that results are a capped list. As written it leaves the return shape entirely unknown.

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 both parameters are already documented in the schema with defaults. The description adds nothing beyond that, which is the baseline 3 case rather than a gain.

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?

Specific verb + resource ('List active alarms') plus the source system (vManage), which is unambiguous. It does not, however, relate itself to any sibling tool — though in this sibling set no other alarm-related tool exists, so the ambiguity risk is low.

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

Usage Guidelines2/5

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

No statement of when to use this versus alternatives, no prerequisites, no note on what 'active' excludes (cleared/acknowledged alarms). The agent must infer everything about scope selection from the word 'active'.

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

list_api_categoriesA

List all vManage API categories (from the connected vManage OpenAPI spec) with counts of read, write and blocked operations. Start here to explore APIs not covered by a dedicated tool.

NameRequiredDescriptionDefault
filterNoOnly categories containing this text (e.g. "Monitoring", "Feature Profile")

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral load; it discloses the data source (connected vManage OpenAPI spec) and returns aggregate counts including blocked operations, which is genuinely useful context. It does not state that the operation is read-only, nor whether results reflect a live fetch versus a cached spec.

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?

Two tight sentences: what it returns first, then when to use it. No filler or redundancy.

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, but the description explains the shape of the result (categories with read/write/blocked counts), which is the key missing detail an agent would otherwise have to discover. For a one-optional-param list tool this is close to complete.

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?

There is a single optional parameter with 100% schema description coverage, including a concrete example ("Monitoring", "Feature Profile"). The description adds nothing about the filter, so the schema does all the work and the 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 vManage API categories) and specifies the payload: counts of read, write and blocked operations from the connected vManage OpenAPI spec. This is clearly distinguishable from data-fetching siblings like get_device_details and from the search/describe/call API-operation trio.

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?

"Start here to explore APIs not covered by a dedicated tool" gives explicit entry-point guidance and implies the downstream chain (search_api_operations, describe_api_operation, call_api_operation) without naming them. It stops short of stating when to prefer a dedicated tool over this one.

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

list_config_groupsB

List UX 2.0 configuration groups with their feature profiles, device counts and deployment state.

NameRequiredDescriptionDefault
nameNoExact configuration group name
solutionNoFilter by solution (e.g. sdwan, sd-routing)

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses useful output content (feature profiles, device counts, deployment state) and implies a read-only listing, but it omits pagination behavior, result limits, and any auth or scope constraints.

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?

A single front-loaded sentence with no wasted words. It identifies the resource, scope, and returned fields efficiently.

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

Completeness3/5

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

For a simple two-optional-parameter list tool with full schema coverage, the description is adequate but not complete. It lacks pagination or result-size guidance, and with no output schema it could say more about return shape beyond a brief field summary.

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 both optional filters (name, solution) are already documented. The description adds no additional parameter semantics beyond what the schema provides, which is the expected baseline.

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 (List) and resource (UX 2.0 configuration groups) and even summarizes the returned fields (feature profiles, device counts, deployment state). It is clear and distinguishable from singular siblings like get_config_group, but it does not explicitly name or contrast with an alternative tool.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no prerequisites, and no alternatives. An agent must infer from the name that this is the list variant versus get_config_group or list_feature_profiles.

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

list_controllersA

List vManage, vSmart, and vBond controllers in the fabric.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'List' implies a read-only inventory operation, but the description does not state read-only behavior, permissions, pagination, or return characteristics.

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?

The description is a single, front-loaded sentence with no filler. Every word contributes to naming the operation and its scope.

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 zero-parameter list tool, naming the controller types and fabric scope is sufficient for invocation. Since there is no output schema, a brief note on return shape would improve completeness, but the description is adequate for the tool's complexity.

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?

The tool has zero parameters and the schema is empty, so there are no parameter semantics to explain. The baseline for zero parameters is 4.

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?

The description gives a specific verb ('List') and names the exact resources (vManage, vSmart, and vBond controllers) plus the fabric scope. This clearly distinguishes it from generic control, validator, and device sibling tools.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no mention of alternatives among the many sibling tools such as get_control_* or list_devices. Use is only implied by the single sentence.

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

list_custom_appsB

List custom application definitions.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden, yet it says nothing about read-only semantics, pagination, filtering scope, or what the returned definitions contain. Only the verb 'List' hints that it is a non-mutating enumeration.

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?

A single front-loaded sentence with no waste, but it is almost too minimal: the same word count could have carried one useful qualifier about scope or return shape.

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

Completeness3/5

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

For a zero-parameter list tool with no output schema and no annotations, the bar is low, but the description still omits scope and return-shape hints that would help an agent decide to call it. It is minimally sufficient rather than complete.

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?

The tool takes zero parameters, so there is no parameter semantics to explain; the baseline for a 0-param tool applies. The empty schema also matches the description, which mentions no arguments.

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 (List) and resource (custom application definitions), which is enough for an agent to know it retrieves the set of custom app definitions. It does not differentiate itself from nearby siblings such as get_cloudx_apps or the app-route tools, so it falls 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 Guidelines2/5

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

No guidance on when to call this versus alternatives; there are several app-related siblings (get_cloudx_apps, get_app_route_statistics, get_app_log_flows) and nothing says which one answers which question. Usage is only implied by the word 'List'.

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

list_devicesA

List all devices in the SD-WAN fabric (vEdges, vSmarts, vBonds, vManage). Returns hostname, system-ip, device-type, status, site-id, version.

NameRequiredDescriptionDefault
modelNoFilter by device model (e.g., vedge-C8000V, vsmart)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description carries the full behavioral burden. 'List all' implies a non-mutating read, and the description helpfully discloses the returned fields (hostname, system-ip, device-type, status, site-id, version), but it says nothing about pagination, result limits, permissions, or whether the response is a flat array — real gaps for a zero-annotation tool.

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?

Two tight sentences: purpose first, return contract second. No filler, no restated title, and the scope enumeration earns its place by telling the agent which device types appear.

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?

With one optional parameter, no output schema, and no annotations, the description covers purpose plus the return fields, which is most of what an agent needs. It falls short only on the optional model filter and on result-size/pagination behavior.

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 optional 'model' filter is already documented with examples in the schema. The description mentions no filtering at all, so it adds nothing beyond the schema; baseline 3 applies.

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 description gives a specific verb and resource ('List all devices in the SD-WAN fabric') and enumerates the device families covered (vEdges, vSmarts, vBonds, vManage), so an agent knows exactly what is returned. It does not differentiate itself from nearby siblings such as list_vedge_inventory, list_reachable_devices, or get_device_details, which keeps it below 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?

Usage is only implied: 'List all devices' suggests an inventory-listing tool, but there is no statement of when to prefer it over list_reachable_devices (reachability-focused) or get_device_details (single-device deep dive). No exclusions, prerequisites, or alternatives are named.

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

list_device_templatesB

List device templates (master templates) in vManage.

NameRequiredDescriptionDefault
featureNoTemplate feature filter (default: all)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It only states that the tool lists templates; it does not mention authentication requirements, pagination behavior, rate limits, or whether results are filtered by permissions.

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?

The description is a single, front-loaded sentence with no filler. Every word contributes to identifying the resource, and there is no unnecessary verbosity.

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

Completeness3/5

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

For a simple one-parameter list tool with full schema coverage and no output schema, the description is minimally adequate. However, the lack of annotations and the absence of sibling differentiation or behavioral context leave meaningful gaps for an agent deciding whether to call it.

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 optional 'feature' enum parameter is already documented with its default. The description adds no additional meaning about how the filter behaves, so the baseline of 3 is appropriate.

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 description states a specific verb and resource: 'List device templates (master templates) in vManage.' This is clear enough to know what is returned, and the parenthetical 'master templates' helps distinguish the resource from feature templates, though it does not explicitly mention the sibling list_feature_templates.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as list_feature_templates or get_template_definition. The description gives no exclusions, prerequisites, or context selection cues.

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

list_feature_profilesA

List UX 2.0 feature profiles. Without profile_type, returns every profile type of the solution (system, transport, service, cli, policy-object, application-priority, embedded-security, ...).

NameRequiredDescriptionDefault
solutionNoSolution family (default: sdwan). Others: sd-routing, nfvirtual, mobility
profile_typeNoProfile type, e.g. system, transport, service, cli, policy-object, application-priority

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It usefully discloses the broad default behavior (returning all profile types for a solution), but does not mention permissions, pagination, response shape, or other operational traits.

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?

Two sentences, front-loaded with the core action and followed by the key optional-parameter behavior. There is no unnecessary text.

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 simple two-optional-parameter list tool with no output schema or annotations, the description gives enough to call it correctly. It could be slightly richer about return shape or pagination, but the core behavior is covered.

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?

Schema description coverage is already 100%, so the schema documents both parameters including examples and defaults. The description adds meaningful semantics by explaining what happens when profile_type is absent, which goes beyond the schema text.

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 description states a specific verb+resource ("List UX 2.0 feature profiles") and clarifies that the tool returns all profile types when no profile_type is supplied. This distinguishes it from a singular get_feature_profile sibling implicitly, but does not name the sibling explicitly.

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?

It provides conditional behavior for when profile_type is omitted, which implies how to use the parameter. However, it does not explicitly say when to use this tool versus get_feature_profile or other profile-related siblings, nor does it list any exclusions.

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

list_feature_templatesB

List all feature templates in vManage.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but it does convey the useful behavioral fact that results are unfiltered and unpaginated ('all'). It omits any statement about read-only safety, result volume, or whether templates from all config groups/versions are included, which would matter for a vManage inventory call.

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?

A single front-loaded sentence with zero filler; the resource is stated immediately after the verb. Nothing could be removed without losing information.

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

Completeness3/5

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

For a zero-parameter list tool with no output schema, the description is minimally adequate but leaves the agent guessing about what a feature template is and what fields come back. One clause on return shape or on how template types differ would close the gap.

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?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It correctly implies no filtering options exist.

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 ('List') and resource ('feature templates') plus the target system vManage, so an agent knows exactly what is returned. However, it does nothing to distinguish feature templates from the closely related siblings list_device_templates and list_feature_profiles, which an agent could easily confuse.

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

Usage Guidelines2/5

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

No indication of when to use this versus list_device_templates, list_feature_profiles, or get_template_definition, all of which appear in the sibling list and could plausibly serve overlapping intent. The only implied usage is 'list everything', with no exclusions or prerequisites.

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

list_policiesC

List centralized (vsmart), localized (vedge) and security policies.

NameRequiredDescriptionDefault
policy_typeNoOnly this policy type (default: all three)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden, yet it only states what is listed. It says nothing about read-only nature, permissions required, pagination, result size, or whether the list covers all policies or only configured ones.

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?

One compact sentence with no filler, and the resource plus its three variants are front-loaded. It could have used the remaining space for sibling differentiation instead, but it is not bloated.

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

Completeness3/5

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

With one optional enum parameter and no output schema or annotations, the definition is minimally sufficient to call the tool but leaves gaps: return shape, whether results are paginated, and how this differs from the other policy-list tools are all unaddressed.

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 100% and the single enum parameter is fully documented ('Only this policy type (default: all three)'). The description adds no syntax or semantics beyond what the schema already provides, which is the expected baseline when the schema does the work.

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?

Names a specific verb (list) and resource (policies), and enumerates the three concrete subtypes (vsmart, vedge, security), which is more informative than a bare 'list policies'. However, it does not distinguish itself from nearby siblings such as list_policy_lists, list_policy_definitions, or list_policy_groups, so an agent must guess which of these four to pick.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and none of the similar siblings (list_policy_groups, list_policy_lists, list_policy_definitions) are referenced as alternatives. The default behavior ('all three') is only conveyed implicitly through the schema's parameter description.

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

list_policy_definitionsB

List policy definitions of one type (ACL, app-route, data, control, etc.).

NameRequiredDescriptionDefault
definition_typeYesDefinition type, e.g. acl, aclv6, approute, cflowd, control, data, hubandspoke, mesh, qosmap, vedgeroute, zonebasedfw

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the behavioral burden. The verb 'list' strongly signals a read-only operation, but the description does not mention permissions, pagination, volume, or whether results span all devices.

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?

The definition is a single front-loaded sentence with no filler. It is appropriately sized, though its brevity contributes to the missing usage and behavioral context.

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

Completeness3/5

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

For a simple read-only list tool with one fully documented parameter, the description covers the basic operation. However, with no annotations, no output schema, and many overlapping sibling tools, it leaves out enough context that an agent may struggle to select it confidently.

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 single parameter is already fully documented in the schema. The description repeats example types, which marginally reinforces meaning but adds little beyond what the schema already provides.

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 description states a specific verb and resource: list policy definitions, scoped to one definition type. It gives examples of accepted types, making the operation concrete. It does not distinguish this tool from nearby siblings such as list_policies, list_policy_lists, or list_policy_groups.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any prerequisites or exclusions. The phrase 'of one type' implies a use case, but the agent must infer how this differs from the other policy-listing tools.

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

list_policy_groupsA

List UX 2.0 policy groups with their profiles, device counts and deployment state.

NameRequiredDescriptionDefault
solutionNoFilter by solution (e.g. sdwan)

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden: 'List' reasonably conveys a read-only, non-destructive operation, and naming the payload fields (profiles, device counts, deployment state) tells the agent what comes back. It says nothing about pagination, result limits, or required permissions, which is a real gap for a no-annotation tool.

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?

One sentence, front-loaded with the verb and resource, with the return content appended only where it earns its place. No filler or restatement of the title.

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 simple, one-optional-parameter list tool with no output schema, the description supplies the one thing the schema cannot: what the result set contains. Only pagination/limit behavior and the read-only guarantee remain unaddressed, which is minor against this tool's complexity.

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 100% and the single 'solution' parameter already documents itself with an example ('e.g. sdwan'). The description adds no further meaning about the filter, so the baseline of 3 applies.

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 ('List') and resource ('UX 2.0 policy groups'), and adds the returned content fields (profiles, device counts, deployment state). It implicitly contrasts with the singular sibling get_policy_group, but never names it, so the differentiation is left to inference.

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 'List' verb and the 'UX 2.0' scoping imply this is the enumeration entry point, but there is no explicit statement of when to use it over get_policy_group, list_policies, list_policy_lists, or list_policy_definitions — a crowded sibling set where routing guidance matters. Usage is inferable but not stated.

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

list_policy_listsB

List policy lists (app, aspath, color, community, data-prefix, etc.).

NameRequiredDescriptionDefault
list_typeNoList type, e.g. app, aspath, color, community, dataprefix, dataipv6prefix, policer, prefix, site, sla, tloc, vpn, zone (omit for all lists)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read-only listing operation but does not state permissions, pagination behavior, output structure, or any other operational detail beyond the bare purpose.

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?

The description is a single short sentence with the main action front-loaded. It contains no filler and is appropriately sized for a simple list operation.

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

Completeness3/5

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

For a low-complexity one-parameter list tool with no output schema, the description is minimally adequate. Still, it does not clarify the tool's relationship to similarly named siblings or provide any behavioral context, leaving some ambiguity an agent must resolve elsewhere.

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 100%, and the single list_type parameter is already documented with examples and the 'omit for all lists' behavior. The description repeats a subset of those examples but adds no semantics beyond what the schema already provides, so the baseline of 3 is appropriate.

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 description states a specific verb and resource ('List policy lists') and adds examples of list types, so the basic purpose is clear. However, it does not distinguish this tool from nearby siblings such as list_policies, list_policy_groups, or list_policy_definitions, which is a meaningful gap in a dense sibling set.

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

Usage Guidelines2/5

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

The description gives no explicit guidance about when to use this tool versus alternatives like list_policies or list_policy_groups. The schema does indicate that omitting list_type returns all lists, but the description itself offers no when-to-use or when-not-to-use criteria.

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

list_reachable_devicesA

List devices that are currently reachable in the SD-WAN fabric.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that only currently reachable devices are returned, which is a behavioral trait. However, it does not explain how reachability is determined, whether results are cached or live, or what the response format looks like.

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?

A single sentence with no wasted words, front-loading the action and scope. It is appropriately sized for a simple list tool.

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 zero-parameter, read-only listing tool with no output schema, the description covers the core purpose. Given the absence of annotations, it could add a bit more about output or scope, but it is largely complete for this level of complexity.

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?

The tool takes zero parameters, so there is no parameter semantics to document. The baseline score of 4 applies because the empty schema is fully self-explanatory.

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 (List) and resource (devices) with a clear qualifier: 'currently reachable in the SD-WAN fabric'. This distinguishes it from a general device listing, but it does not explicitly name the sibling tool list_devices or clarify how it differs.

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

Usage Guidelines2/5

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

Provides no guidance on when to use this tool versus alternatives like list_devices or get_device_details. The implied use case is evident from the name and description, but there are no explicit conditions, exclusions, or sibling references.

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

list_topology_groupsB

List UX 2.0 topology groups (hub-and-spoke / mesh topologies) with device counts and state.

NameRequiredDescriptionDefault
solutionNoFilter by solution (e.g. sdwan)

TDQS

B3.2/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It does disclose that results include device counts and state, which is useful output-shape context, but says nothing about pagination, permissions, or whether device counts are live or cached.

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?

One front-loaded sentence with no filler. Every clause ('UX 2.0', 'hub-and-spoke / mesh', 'device counts and state') contributes information.

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

Completeness3/5

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

A simple read-only list tool with one optional parameter and no output schema. The description hints at return contents but doesn't fully describe the response shape (fields per group, ordering, empty-case behavior), leaving a modest gap.

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?

Single optional 'solution' parameter with 100% schema description coverage, so the schema already documents filtering. The description adds no meaning about the filter or its default behavior, which is the acceptable baseline.

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 and resource ('List UX 2.0 topology groups') and adds scope (hub-and-spoke / mesh topologies) plus the contents enumerated (device counts and state). Sibling get_topology_group is implicitly the single-record counterpart, though the description never names it.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance. An agent must infer from the name alone that this is the bulk-listing counterpart to get_topology_group.

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

list_vedge_inventoryA

List WAN edge inventory (authorized device list) with certificate and validity status.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral disclosure. It adds useful scope (authorized device list) and return content (certificate and validity status), but omits read-only, pagination, and auth details; for a zero-parameter list tool this is adequate but incomplete.

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?

A single front-loaded sentence with no wasted words. The resource and key return fields are stated immediately.

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 simple zero-parameter inventory list with no output schema, the description gives the resource and notable status fields. It still leaves out pagination and scope details, so it is not fully complete.

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?

The tool has zero parameters and an empty schema, so there is no parameter meaning to document. Baseline 4 applies, and the description does not need to compensate for parameter coverage.

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 description gives a specific verb, 'List', and a specific resource, 'WAN edge inventory (authorized device list)', plus included certificate and validity status. It is clear, but does not explicitly name a sibling alternative such as list_devices, so it falls 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 Guidelines2/5

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

No sentence states when to choose this tool over siblings like list_devices, list_reachable_devices, or get_control_valid_devices. The inventory framing implies a listing use case, but there are no exclusions, prerequisites, or alternative-tool routing.

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

preview_config_group_device_configA

Read-only: render the configuration a configuration group would push to one device, compared with its running configuration. Shows a line diff by default. Nothing is deployed.

NameRequiredDescriptionDefault
viewNoWhat to return (default: diff)
deviceYesDevice hostname, system-ip, UUID or chassis number (must be associated with the group)
config_groupYesConfiguration group ID or exact name

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well by stating read-only behavior, default diff output, and that nothing is deployed. It does not cover permission requirements, output size, or other operational constraints, so it is not fully transparent.

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?

The description is short, front-loaded, and every sentence earns its place: purpose, default output mode, and non-deployment guarantee. There is no redundant or vague phrasing.

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, but the description explains what is returned: a rendered comparison and line diff by default. The view enum in the schema covers other output modes, though the description could say more about the shape of the result.

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 each parameter and the view enum. The description reinforces the default diff behavior but adds little parameter-level meaning beyond the schema.

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?

The description uses a specific verb and resource: render the configuration a configuration group would push to one device, compared with running configuration. It clearly distinguishes the tool from config-group read/list siblings by emphasizing preview and diff behavior.

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?

The description gives clear context for use: preview what would be pushed versus running config, with no deployment. It does not explicitly name alternatives or when-not-to-use cases, so it falls short of full routing guidance.

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

search_api_operationsA

Search every vManage API operation by keywords (matched against path, operationId, category and summary). Returns operation_id values for describe_api_operation / call_api_operation.

NameRequiredDescriptionDefault
limitNoMax results (default 25, max 100)
queryNoSpace-separated keywords, all must match (e.g. "ospf neighbor", "config-group")
accessNoFilter by access level
methodNoFilter by HTTP method
categoryNoFilter by category name (substring)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose the key behavioral traits: what fields keywords are matched against and that results are operation_id values. It omits read-only confirmation, result ordering, and any note on how limit interacts with total matches, so a small gap remains.

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?

Two sentences, zero filler, with the search scope stated before the downstream-use note. Every clause carries information about matching or output.

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 search tool with five fully documented parameters and no output schema, the description covers matching semantics and return shape adequately. It leaves unaddressed how results are ordered or what happens when the query is empty, minor for this tool class.

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?

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning by naming the four fields that the query string matches against, which the schema's query description does not specify. It does not explain how access/method/category filters interact with the keyword match, leaving room above baseline but not at ceiling.

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 ('Search every vManage API operation') and clarifies the match scope: path, operationId, category and summary. Naming describe_api_operation / call_api_operation as consumers of the returned operation_id values makes it immediately distinguishable from those siblings.

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?

The return-value clause implicitly positions this as the lookup step before describe_api_operation / call_api_operation, which is clear workflow guidance. It does not explicitly exclude alternatives such as list_api_categories or note when browsing is preferable to keyword search, so it stops short of full when/when-not coverage.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 83 tool updatesv1.0.0
    • First observedcall_api_operation
    • First observeddescribe_api_operation
    • First observedget_app_log_flow_count
    • First observedget_app_log_flows
    • First observedget_app_route_sla_class
    • First observedget_app_route_statistics
    • First observedget_attached_devices
    • First observedget_bfd_sessions
    • First observedget_bfd_summary
    • First observedget_bfd_tloc
    • First observedget_bgp_neighbors
    • First observedget_bgp_routes
    • First observedget_bgp_summary
    • First observedget_bridge_table
    • First observedget_certificate_summary
    • First observedget_cflowd_flows
    • First observedget_cflowd_statistics
    • First observedget_cloudx_apps
    • First observedget_cloudx_client_list
    • First observedget_cloudx_gateway_list
    • First observedget_cloudx_status
    • First observedget_cluster_status
    • First observedget_config_group
    • First observedget_config_group_device_variables
    • First observedget_control_affinity
    • First observedget_control_connections
    • First observedget_control_connections_history
    • First observedget_control_count
    • First observedget_control_links
    • First observedget_control_local_properties
    • First observedget_control_network_summary
    • First observedget_control_statistics
    • First observedget_control_status
    • First observedget_control_summary
    • First observedget_control_valid_devices
    • First observedget_control_wan_interfaces
    • First observedget_device_arp
    • First observedget_device_details
    • First observedget_device_interfaces
    • First observedget_device_tloc
    • First observedget_device_vpn
    • First observedget_feature_profile
    • First observedget_network_connections_summary
    • First observedget_network_hierarchy
    • First observedget_omp_cloudx
    • First observedget_omp_links
    • First observedget_omp_multicast
    • First observedget_omp_peers
    • First observedget_omp_routes
    • First observedget_omp_services
    • First observedget_omp_status
    • First observedget_omp_summary
    • First observedget_omp_tlocs
    • First observedget_policy_group
    • First observedget_sdwan_stats
    • First observedget_system_status
    • First observedget_template_definition
    • First observedget_topology_group
    • First observedget_ux2_overview
    • First observedget_validator_connections
    • First observedget_validator_local_properties
    • First observedget_validator_proxy_mapping
    • First observedget_validator_statistics
    • First observedget_validator_summary
    • First observedget_validator_valid_devices
    • First observedlist_alarms
    • First observedlist_api_categories
    • First observedlist_config_groups
    • First observedlist_controllers
    • First observedlist_custom_apps
    • First observedlist_device_templates
    • First observedlist_devices
    • First observedlist_feature_profiles
    • First observedlist_feature_templates
    • First observedlist_policies
    • First observedlist_policy_definitions
    • First observedlist_policy_groups
    • First observedlist_policy_lists
    • First observedlist_reachable_devices
    • First observedlist_topology_groups
    • First observedlist_vedge_inventory
    • First observedpreview_config_group_device_config
    • First observedsearch_api_operations

TDQS

C2.9/5.0

Scored across 83 tools

Disambiguation3/5

Most tools target distinct resources (OMP, BFD, BGP, CloudExpress, config groups), but several fabric-wide control tools overlap heavily (get_control_summary, get_control_status, get_control_count, get_control_network_summary) and OMP has similar summary/status variants. Descriptions help somewhat, but an agent could easily misselect among these near-duplicates.

Naming Consistency4/5

Names overwhelmingly follow a snake_case verb_noun pattern (list_devices, get_omp_peers, get_bfd_summary), which is easy to scan. Minor deviations appear in generic API tools (search_api_operations, describe_api_operation, call_api_operation) and preview_config_group_device_config, but the convention remains readable.

Tool Count2/5

83 tools is far beyond a reasonable surface for one server and forces agents to sift through many near-duplicate monitoring endpoints. While the SD-WAN domain is broad, the count feels inflated and would benefit from consolidation into aggregate or parameterized tools.

Completeness4/5

The surface covers a wide range of SD-WAN monitoring domains (devices, control/OMP, BFD, BGP, templates, policies, UX 2.0 groups) and provides a generic API escape hatch for uncovered operations. Some lifecycle gaps remain (most tools are read-only; write coverage relies on call_api_operation), but core observability is well represented.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers