io.github.AIops-tools/network-aiops
Supports Cisco network devices (IOS, IOS-XE, NX-OS, IOS-XR) for reading operational data (facts, interfaces, BGP, LLDP, ARP) and performing configuration operations (backup, diff, merge, replace, rollback).
Supports Huawei VRP devices for reading operational data and performing configuration operations via NAPALM community drivers (not officially tested).
Supports Nokia SR OS and SR Linux devices for reading operational data and performing configuration operations via NAPALM community drivers (not officially tested).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@io.github.AIops-tools/network-aiopsWhat are the facts for core-sw1?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
network-aiops
Disclaimer: This is a community-maintained open-source project and is not affiliated with, endorsed by, or sponsored by Cisco, Arista, Juniper, NetBox Labs, or any network vendor. Vendor and product names are trademarks of their respective owners. Source code is publicly auditable at github.com/AIops-tools/Network-AIops under the MIT license.
Governed multi-vendor network device operations for AI agents — 33 MCP tools,
every one wrapped with the bundled @governed_tool harness: a local unified audit
log under ~/.network-aiops/, token/runaway budget guard, undo-token recording,
and descriptive risk-tier labels. Credentials (device passwords + the NetBox token)
are kept in an encrypted store (secrets.enc), never plaintext on disk.
Devices are reached over NAPALM; an optional NetBox block adds source-of-truth lookups.
Standalone: the governance harness is bundled in the package (
network_aiops.governance) — network-aiops has no external skill-family dependency. Coverage focuses on common device operations and is not yet exhaustive.
Verification status: the test suite is mock-based; not yet validated against live devices — self-testable with cEOS / vMX / containerlab. See docs/VERIFICATION.md.
What works
Read device facts, interfaces (+ counters/IP), BGP/LLDP neighbors (summary and
detail), ARP/MAC tables, VLANs, route lookups, hardware environment, optics, NTP,
users, SNMP info, VRFs, and an aggregated device_health; run read-only RCA
diagnostics that flag down/erroring/flapping interfaces and unhealthy BGP
neighbors — each finding citing the measured number that tripped it; back up the
running config, dry-run a config diff, and merge/replace/rollback config — across the five
core NAPALM platforms below. Optional NetBox lookups (devices + interfaces) confirm
intended state before a change.
NAPALM does not implement every getter on every platform; an unsupported getter
returns a teaching error ("not supported by the <driver> driver") rather than
crashing. Secrets are never returned — get_users redacts password hashes and
get_snmp_information redacts community strings.
Related MCP server: mcp-server-sros
Supported devices
Platform | NAPALM driver | Transport |
Cisco IOS / IOS-XE |
| SSH |
Cisco Nexus NX-OS |
| HTTPS / SSH |
Cisco IOS-XR |
| SSH (XML agent) |
Arista EOS |
| eAPI (HTTPS) |
Juniper Junos |
| NETCONF (SSH) |
Additional platforms (Nokia SR OS / SR Linux, Huawei VRP, etc.) are reachable via NAPALM community drivers but are not officially tested here. Need one? See Contributing.
Supported actions
Action | Tool | R/W | Risk |
Device facts (hostname/vendor/model/OS/serial/uptime) |
| R | low |
Interfaces (up/down, speed, description) |
| R | low |
Interface traffic + error counters |
| R | low |
Interface IP addresses |
| R | low |
BGP neighbors (summary / detail) |
| R | low |
LLDP neighbors (summary / detail) |
| R | low |
ARP table |
| R | low |
MAC address table |
| R | low |
VLANs |
| R | low |
Route lookup |
| R | low |
Hardware environment (fans/temp/power/CPU/mem) |
| R | low |
Optical transceiver levels |
| R | low |
NTP servers / sync stats |
| R | low |
Local users (hashes redacted) |
| R | low |
SNMP info (communities redacted) |
| R | low |
Network instances (VRFs) |
| R | low |
Aggregated device health |
| R | low |
Interface health RCA (down / errors / discards / flaps) |
| R | low |
BGP neighbor RCA (down / shut / reset / route-less) |
| R | low |
Back up running config |
| R | low |
Diff a candidate (dry-run) |
| R | low |
Merge config + commit |
| W | medium |
Replace full config + commit |
| W | high |
Roll back last commit |
| W | medium |
NetBox list devices |
| R | low |
NetBox get device |
| R | low |
NetBox device interfaces |
| R | low |
List recorded reversible writes |
| R | low |
Apply a recorded inverse (governed, single-use, dry-run capable) |
| W | medium |
What this tool does, and does not, decide
It delivers multi-vendor network device (NAPALM) + NetBox operations — reads and writes — accurately and efficiently, and records every one of them. It does not decide whether a write is allowed to happen. That is the agent's judgement, or the permission of the account you connect it with: log in with a device account at a read-only privilege level (and give NetBox a read-only API token), and the writes fail at the server — the place that actually owns the permission.
So there is no read-only switch, no policy file, no approval gate to configure. The one thing the
tool guarantees is that nothing is silent: every call, over MCP and over the CLI alike, lands an
audit row in ~/.network-aiops/audit.db, and destructive writes still capture their before-state
and record an inverse where one exists.
Each tool declares a
risk_level, carried into the audit row as a descriptive tier (none/confirm/review) — so a reviewer can see at a glance that a row was a high-risk delete. It is a label, not a gate.
Running a smaller / local model? See agent-guardrails.md — it lists the guardrails this tool enforces for you (so you don't spend prompt budget restating them) and gives a ready-made system prompt for what's left.
Quick Start
As a Claude Code plugin
One install gives an agent both the skill and the MCP server:
/plugin marketplace add AIops-tools/marketplace
/plugin install network-aiops@aiops-toolsThe MCP server is fetched with uv and pinned to the
package version this plugin declares, so an audit row can be traced back to the
code that wrote it. Credentials are still configured with network-aiops init — see below.
As a CLI or standalone MCP server
uv tool install network-aiops
network-aiops init # wizard: device + driver + host + encrypted password
network-aiops doctor
network-aiops device facts -t core-sw1
network-aiops device health -t core-sw1
network-aiops diagnose interface-health -t core-sw1 # worst-first interface RCA
network-aiops diagnose bgp -t core-sw1 # worst-first BGP-neighbor RCA
network-aiops config backup -t core-sw1 -o core-sw1.cfgPlaybook: triage a flaky uplink before touching config
# 1. Ask the device what's actually wrong — findings are ranked worst-first and
# each cites the measured value (error count, last-flap seconds, uptime).
network-aiops diagnose interface-health -t core-sw1
network-aiops diagnose bgp -t core-sw1
# 2. If interface-health flags a link admin-up/oper-down with climbing errors and
# BGP shows the peer on that path recently reset, you have your root cause: a
# physical-layer fault (cable/optic) resetting the session — not routing.
# 3. Confirm intended state, then remediate with the governed, audited path.
network-aiops device counters -t core-sw1
network-aiops config diff -t core-sw1 -f fix.cfg # dry-run the change firstCreate ~/.network-aiops/config.yaml:
devices:
- name: core-sw1 # used as -t core-sw1
driver: eos # ios | nxos | nxos_ssh | iosxr | eos | junos
host: 10.0.0.1
username: admin
optional_args: # passed verbatim to NAPALM (optional)
secret: enable-pw # enable/secret
port: 443
# Optional source-of-truth:
netbox:
url: https://netbox.example.comSecrets are stored encrypted in ~/.network-aiops/secrets.enc (Fernet/AES +
scrypt-derived key; chmod 600) — never in config.yaml or a plaintext .env.
Device passwords are keyed by device name; the NetBox token uses the reserved
name netbox-token:
network-aiops init # interactive wizard (recommended)
network-aiops secret set core-sw1 # store a device password (hidden prompt)
network-aiops secret set netbox-token # store the NetBox API token
network-aiops secret list # names only — values are never printed
network-aiops secret migrate # import a legacy plaintext .env, then delete itExport NETWORK_AIOPS_MASTER_PASSWORD to unlock the store non-interactively (MCP
server / cron). Legacy plaintext env vars (NETWORK_<TARGET_UPPER>_PASSWORD,
NETWORK_NETBOX_TOKEN) remain a deprecated fallback. An empty device password is
allowed for key-based SSH auth.
MCP
{
"command": "network-aiops",
"args": ["mcp"],
"env": {
"NETWORK_AIOPS_CONFIG": "~/.network-aiops/config.yaml",
"NETWORK_AIOPS_MASTER_PASSWORD": "…" // unlocks the encrypted secret store
}
}Audit & Safety
Every tool call is logged to
~/.network-aiops/audit.db(local SQLite; relocate withNETWORK_AIOPS_HOME).config_merge/config_replacecapture the pre-change running config and record an inverseconfig_replace-to-backup undo descriptor.config_replaceisrisk_level=high; CLI destructive commands (config merge/replace/rollback) require double confirmation and support--dry-run(which prints the diff without committing).All device text passes through
sanitize()(output hygiene: control/format-char stripping + truncation).Device passwords and the NetBox token live only in the encrypted
secrets.enc(chmod 600); tools never return passwords, SNMP community strings, or hashes.
See skills/network-aiops/SKILL.md and SECURITY.md for details.
Companion Skills
If you want… | Use |
Network device config / facts (Cisco/Arista/Juniper) | network-aiops (this) |
Kubernetes cluster operations | a cluster ops skill |
Hypervisor VM lifecycle | a hypervisor ops skill |
Contributing & feature requests
Coverage is intentionally focused. Need a device or action that isn't here yet? Open an issue or pull request at github.com/AIops-tools/Network-AIops — contributions, feature requests, and comments are all welcome.
License
Available Tools
33 toolsbgp_neighbor_rcaA
[READ] Flag BGP neighbors that are down, shut, recently reset, or route-less.
Pulls get_bgp_neighbors and reports worst-first findings, each citing the session state (is_up / is_enabled) or uptime, with a cause and an action (check peer reachability / ACL / MD5 auth).
Args: target: Device name from config; omit to use the default device.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behavior. It explicitly marks as [READ], details the process of pulling data and reporting findings, and mentions the target parameter. Does not discuss cost or permissions, but sufficient for the tool's simple read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise and well-structured: a [READ] tag, one-line summary, explanatory paragraph, and Args section. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers functionality (flagging issues, worst-first reporting, causes/actions) and parameter usage completely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but description compensates with 'target: Device name from config; omit to use the default device.' This adds clear meaning beyond the schema's type and default, explaining how to use the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it flags BGP neighbors that are down, shut, reset, or route-less, distinguishing from sibling tools like get_bgp_neighbors which only fetch data. The verb 'flag' and resource 'BGP neighbors' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes what it does (pulls get_bgp_neighbors and reports findings) but does not explicitly state when to use it versus alternatives like get_bgp_neighbors_detail or interface_health_rca. No 'when not to use' guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_backupA
[READ] Return the device running config, credential values masked by default.
Password/secret hashes, SNMP communities, SNMPv3 auth+priv keys, IKE pre-shared keys and RADIUS/TACACS/keychain keys are replaced with ""; every other line comes back untouched, so interface, routing and policy config reads exactly as the device wrote it.
The result always carries a "redaction" block saying how many lines were changed. Redaction is pattern-based across five vendor syntaxes, so it REDUCES exposure rather than guaranteeing none remains — in particular it cannot see multi-line PKI key blocks.
Prefer the CLI's '-o ' flag over include_secrets when a human needs the real config: it writes the raw text to a file instead of into this transcript.
Args: include_secrets: True to return the verbatim config, credentials and all. Every secret in it then lives wherever this result is stored. target: Device name from config; omit to use the default device.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| include_secrets | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Exhaustively documents redaction scope (password hashes, SNMP keys, etc.), pattern-based detection, and the 'redaction' block in output. Discloses that it reduces rather than eliminates exposure, meeting transparency needs without annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Starts with a summary tag and structured explanation. Some redundancy exists (repeats redaction details), but remains readable and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers output content (redaction block, untouched lines), edge cases (PKI keys), and trade-offs of include_secrets. Lacks mention of error states or rate limits, but sufficient for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully explains both parameters: include_secrets warns about storing secrets, and target specifies the device. Adds clear usage context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with '[READ] Return the device running config' and details the redaction behavior. It clearly distinguishes from siblings like config_diff and config_replace by focusing on retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance to use the CLI's '-o' flag instead of include_secrets for human readability. Also notes the redaction limitation regarding multi-line PKI keys, implying when not to rely on it fully.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_diffA
[READ] DRY-RUN: stage a candidate, return the diff, then discard it.
Nothing is committed. This is the dry-run primitive for previewing a change.
The diff is credential-redacted like config_backup, and for the same reason: a diff that ADDS 'snmp-server community X' contains X, and one that removes a line quotes the credential the device already had. The result carries a "redaction" block with the count.
Args: config_text: The configuration snippet (merge) or full config (replace). replace: True to diff as a full-config replacement; False (default) to merge. include_secrets: True to return the verbatim diff — use when verifying that the literal key you are pushing is the one that will land. target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| replace | No | ||
| config_text | Yes | ||
| include_secrets | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses it is a dry-run, nothing is committed, diff is credential-redacted with a redaction block, and include_secrets provides verbatim output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a bold summary, behavioral explanation, and parameter list. It is thorough but slightly verbose; could be tightened slightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 covers behavioral traits and all parameters adequately. It explains the redaction block but does not detail the diff format or error handling, yet is sufficient for a preview tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description provides detailed explanations for all four parameters: config_text (merge vs replace), replace (toggle), include_secrets (verbatim), and target (device name), adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly labels it as a [READ] DRY-RUN operation, states it stages a candidate, returns the diff, and discards it with 'Nothing is committed.' This distinguishes it from sibling tools like config_merge and config_replace.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains it is the 'dry-run primitive for previewing a change' and contrasts redaction with config_backup. It implies use before committing but does not explicitly list when not to use or compare with all siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_mergeA
[WRITE] Merge a config snippet and commit under a device-side revert timer.
The device REVERTS the change by itself after revert_in seconds unless
confirm_commit follows — so a change that severs your own management access
heals without anyone having to reach the box. Verify reachability, THEN call
confirm_commit. Check commit.safetyNet in the result: drivers that
cannot arm a timer commit permanently and say so in commit.warning.
Returns diff and a backup digest (size + sha256). The full config is
deliberately NOT returned — it carries credential hashes and PSKs — but the
raw text is retained in undo.db for the recorded rollback. The diff is
credential-redacted with no opt-out (see the redaction block); use
config_diff(include_secrets=True) first if you must verify a literal key.
dry_run=True stages the candidate, returns the diff, discards it, and runs the SAME refusal the real commit would — so a green preview is never followed by a refusal.
Args: config_text: The configuration snippet to merge. revert_in: Device-side revert timer in seconds (default 300). 0 disables it, leaving the recorded undo as the only rollback path. dry_run: If True, preview the diff + safety assessment without committing. target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| dry_run | No | ||
| revert_in | No | ||
| config_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden of disclosing behaviors. It explains the revert timer, credential redaction (no opt-out), dry_run behavior (same refusal as real commit), non-return of full config for security, and the possibility of permanent commits with a warning. All important traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is detailed and meticulously structured, but every sentence delivers value. It opens with the primary purpose, then details behavior, workflow, and parameters. While not extremely concise, it earns its length through density of useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and lack of output schema, the description is comprehensive. It covers return values (diff, backup digest), security warnings, proper workflow (dry_run -> verify -> confirm_commit), and output fields (commit.safetyNet, commit.warning). No critical information appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema description coverage is 0%, the description adds rich semantic meaning to each parameter: config_text (snippet), revert_in (timer behavior, default, zero disables), dry_run (preview mode), and target (device name). It explains effects and defaults beyond the schema's basic types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Merge a config snippet and commit under a device-side revert timer.' It specifies the verb (merge) and resource (config on device), and distinguishes itself from siblings by highlighting the revert timer mechanism, a unique feature not present in other config tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises when to use the tool: after verifying reachability and before calling confirm_commit. It also provides guidance on when not to use it (e.g., if literal secrets are needed, use config_diff first) and explains the dry_run feature as a safe preview.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_replaceA
[WRITE] Replace the full config and commit under a revert timer. HIGH RISK.
Same commit-confirm contract as config_merge: the device reverts after
revert_in seconds unless confirm_commit follows. Verify reachability
first, then confirm. Check commit.safetyNet — when no timer could be
armed the change is permanent on landing.
Returns diff and a backup digest; the raw pre-change config is kept
in undo.db (0600) for the recorded rollback, not echoed back here. The
diff is credential-redacted with no opt-out (see the redaction
block); use config_diff(include_secrets=True) first if you must verify a
literal key.
dry_run=True previews the diff and runs the same refusal the real commit would, so the preview can never disagree with the commit.
Args: config_text: The full replacement configuration. revert_in: Device-side revert timer in seconds (default 300). 0 disables it, leaving the recorded undo as the only rollback path. dry_run: If True, preview the diff + safety assessment without committing. target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| dry_run | No | ||
| revert_in | No | ||
| config_text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses: high risk, revert timer with confirm_commit requirement, permanent change if no timer, credential-redacted diff (no opt-out), backup digest, and undo.db storage. No behavioral surprises.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with front-loaded key info and separate sections for warnings, return values, and parameter details. Every sentence adds value, though slightly verbose with repeated warnings. Still efficient for the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description specifies return values (diff, backup digest) and mentions undo.db. Covers preconditions, side effects, and alternatives (config_diff, config_merge). Completely prepares the agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description explains all four parameters: config_text (full replacement), revert_in (timer, default 300, 0 disables), dry_run (preview mode), and target (device name). Provides sufficient context beyond schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with '[WRITE] Replace the full config and commit under a revert timer. HIGH RISK.' which clearly states the verb (replace), resource (full config), and key behavior. It distinguishes from sibling config_merge by referencing the same commit-confirm contract while implying this is a full replacement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions the commit-confirm contract, instructs to verify reachability and check commit.safetyNet for permanent changes. Guides on when to use dry_run and when to use config_diff with include_secrets=True for unredacted diffs. Provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_rollbackA
[WRITE] Revert the last committed change via NAPALM rollback(). No undo.
Device support varies (rollback depth is platform-dependent).
dry_run=True cannot predict the resulting config without the device, so it opens a session (verifying reachability) and reports a digest of the current running config — the state rollback would replace — without rolling back.
Args: dry_run: If True, verify reachability and state what rollback would attempt. target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden of behavioral disclosure. It states the tool is a write operation (destructive), irreversible, platform-dependent, and explains the dry_run mode in detail, including that it opens a session, verifies reachability, and reports a digest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and structured with sections (warning, dry_run behavior). Every sentence adds value without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and 2 parameters, the description covers the essential behavior, dry_run nuance, and platform dependency. It does not detail the return format on actual rollback, but the explanation of dry_run's output is sufficient for an agent to infer typical tool behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning to both parameters: dry_run is explained with its behavior and effect, and target is described as 'Device name from config.' This fully compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reverts the last committed change via NAPALM rollback(), specifies it is a write operation, and adds 'No undo' for irreversibility. It distinguishes from sibling tools like config_backup, config_diff, config_merge, config_replace, and confirm_commit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that device support varies and rollback depth is platform-dependent, and details dry_run behavior. However, it does not explicitly state when to use this tool versus alternatives, though the context of sibling tools makes it implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
confirm_commitA
[WRITE] Confirm a pending commit-confirm change, cancelling its revert timer.
The second half of the commit-confirm workflow. Run it only AFTER verifying the device is still reachable and healthy — doing nothing is the safe alternative, because the device then reverts on its own.
dry_run=True reads whether a commit-confirm is actually pending (nothing is confirmed; the revert timer keeps running).
Args: dry_run: If True, report whether a pending commit exists without confirming. target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| dry_run | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description adequately discloses that this is a WRITE operation that confirms and cancels the revert timer. It warns about verifying device health first and explains the dry_run behavior. However, it lacks details on error conditions or what happens if the device is not reachable, which would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: a one-line summary, then workflow context, then usage guidance, then parameter explanations. Every sentence adds value and is front-loaded for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is fairly complete. It explains the workflow, safe alternative, and both parameters. Lacks return value format or error handling details, but still sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 2 parameters (target and dry_run) with 0% schema description coverage, so the description must add meaning. It does: 'dry_run=True reads whether a pending commit-confirm is actually pending' and 'target: Device name from config.' This clarifies the parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Confirm a pending commit-confirm change, cancelling its revert timer.' It identifies the specific verb and resource, and distinguishes this tool from sibling tools like config_merge or config_rollback by explaining it is the second half of the commit-confirm workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Run it only AFTER verifying the device is still reachable and healthy — doing nothing is the safe alternative.' It also explains the dry_run parameter for checking if a commit-confirm is pending, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_factsA
[READ] Core device facts: hostname, vendor, model, OS version, serial, uptime.
Also returns the interface name list. Use get_interfaces for per-interface state/speed.
Args: target: Device name from config; omit to use the default device.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
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 that the tool is read-only, lists the returned fields, and mentions the interface name list. It does not mention side effects or permissions, but for a read tool this is sufficient. Slightly generic on whether all fields are always returned, but overall good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two short paragraphs, front-loaded with '[READ]' and key facts. Every sentence adds value, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description adequately explains return values (hostname, vendor, model, etc.) and mentions the interface name list. It also references a sibling tool for more detail. The single optional parameter is fully covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the 'target' parameter beyond the schema: 'Device name from config; omit to use the default device.' This compensates for the 0% schema coverage, though it could also explain the format or constraints of the device name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is a READ operation for core device facts, listing specific fields (hostname, vendor, model, OS version, serial, uptime) and distinguishing from sibling 'get_interfaces' by noting it also returns interface names. The verb+resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use an alternative: 'Use get_interfaces for per-interface state/speed.' Also explains when to omit the target parameter. This provides clear usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
device_healthA
[READ] Aggregated health: facts + interface up/down counts + environment.
Resilient to drivers lacking get_environment (that section becomes a note). Returns a 'healthy' flag and an 'issues' list summarising attention points.
Args: target: Device name from config; omit to use the default device.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states returns ('healthy' flag and 'issues' list) and behavior (resilient to missing environment data, which becomes a note). It could add more about potential side-effects or performance, but is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three short paragraphs, front-loading the purpose. Every sentence adds value, and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only health summary tool with no output schema, the description explains the return structure and parameter behavior. It could mention what 'facts' includes, but overall it is complete enough for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the single parameter 'target' with 'Device name from config; omit to use the default device', adding meaning beyond the schema. Schema coverage is 0%, so description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with '[READ] Aggregated health: facts + interface up/down counts + environment', clearly stating the verb (READ) and resource (aggregated health) and its components. It distinguishes from sibling tools like get_interfaces_counters and get_environment by being an aggregation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a summary of device health and mentions resilience to missing environment data, but does not explicitly state when not to use it or list alternatives. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_arp_tableA
[READ] ARP table entries: interface, IP, MAC, age.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The '[READ]' prefix indicates idempotency and no side effects, but no annotations are provided to supplement. The description does not disclose details such as error behavior, pagination, or what happens when target is null. For a read operation, this is minimally acceptable but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with zero filler. The output fields are listed concisely, and the parameter is explained in a clear bullet format. Every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the core functionality and parameter meaning. However, it omits details like default behavior when target is null and potential error cases, making it slightly incomplete for an agent to use autonomously.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description adds 'Device name from config' for the target parameter, providing context beyond the raw schema types. This compensates well for the lack of schema descriptions, though it could clarify that target is optional and its default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool reads ARP table entries and lists the returned fields (interface, IP, MAC, age). The verb 'get' combined with 'ARP table' and the read indicator '[READ]' makes the purpose unambiguous. Among siblings like get_mac_address_table and get_interfaces, it is distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., get_mac_address_table for MAC table). The description only lists the parameter and output fields, leaving the agent to infer the tool's role without comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bgp_neighborsA
[READ] BGP neighbors per VRF: peer, remote AS, up state, prefix counts.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The '[READ]' prefix explicitly indicates a read-only operation, and the description specifies the fields returned. For a simple tool, this is good transparency. However, no annotations are present, so the description carries full burden, and it lacks discussion of potential exceptions or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the purpose and parameter explanation. Every sentence adds value with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description covers the core purpose and parameter semantics. It outlines the returned fields, but missing guidance on usage contexts and return format limits completeness slightly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, but the description explains the sole parameter 'target' as 'Device name from config', adding meaning. However, it does not mention whether it is required (schema says optional) or provide format constraints, so compensation is adequate but minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('READ'), resource ('BGP neighbors'), and what is returned ('peer, remote AS, up state, prefix counts'). The prefix '[READ]' and scope 'per VRF' differentiate it from sibling tools like get_bgp_neighbors_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for summary BGP neighbor data per VRF but does not explicitly guide when to use this tool versus alternatives like get_bgp_neighbors_detail or bgp_neighbor_rca. No when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bgp_neighbors_detailB
[READ] Detailed BGP neighbors per VRF: state, router id, AS, prefix stats.
Args: target: Device name from config; omit to use the default device.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes a [READ] prefix, indicating a safe operation, but provides no further behavioral traits such as performance, pagination, error handling, or whether it returns all VRFs or requires filtering. With no annotations, the description carries full burden and is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one line for the tool purpose and one line for the parameter description. No fluff, front-loaded with the most important information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers the basics but lacks clarity on VRF scope (all VRFs or specific) and output format. The ambiguity about 'per VRF' reduces completeness. Given the low complexity, a score of 3 reflects the gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'target' is described in the description: 'Device name from config; omit to use the default device.' This adds meaning beyond the schema (which has no parameter descriptions), clarifying it is optional and its purpose. For one parameter with 0% schema coverage, the description adequately compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads detailed BGP neighbors per VRF with specific fields (state, router id, AS, prefix stats). While it distinguishes from siblings like get_bgp_neighbors (implied summary), it does not explicitly contrast them, leaving slight ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives like get_bgp_neighbors or bgp_neighbor_rca. No prerequisites, context, or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_environmentA
[READ] Hardware environment: fans, temperature, power, CPU, memory.
Args: target: Device name from config; omit to use the default device.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly marks the tool as a read operation via '[READ]', disclosing its non-destructive nature. However, it does not mention any performance implications, permission requirements, or other behavioral details beyond that. Without annotations, this is adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the purpose and list the data categories, followed by a parameter explanation. Every sentence earns its place with zero waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description fully covers what data is returned (fans, temp, power, CPU, memory). No missing critical context given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage but the description adds meaning by explaining the 'target' parameter as a device name from config with a default behavior (omit for default). This compensates well for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a READ operation for hardware environment data including fans, temperature, power, CPU, and memory. This distinguishes it from many sibling tools that focus on networking or configuration, though a sibling 'device_health' may overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on the 'target' parameter but offers no information on when to use this tool versus alternatives like 'device_health' or other monitoring tools. No when-not-to-use or context for selection is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interfacesB
[READ] Interfaces with up/down state, enabled flag, speed, and description.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, but description starts with '[READ]' indicating read-only behavior. No destructive side effects implied. However, missing details on authentication or rate limits, which could be relevant for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise with two sentences. Front-loaded with '[READ]' and attribute list. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lists returned attributes but omits return format (e.g., list or dict). No output schema available. With minimal parameters and complexity, description is adequate but could be more complete by specifying output structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but description adds meaning: 'target: Device name from config' clarifies the parameter's purpose beyond the schema's generic string type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb '[READ]' and resource 'Interfaces' with specific attributes (up/down state, enabled flag, speed, description). However, it doesn't explicitly distinguish from sibling tools like get_interfaces_counters or get_interfaces_ip, so minor gap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. Parameter 'target' is described as 'Device name from config' but lacks context on prerequisites or scenarios. No when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interfaces_countersB
[READ] Per-interface traffic + error counters (octets, packets, errors, discards).
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only indicates a read operation and lists counter types, but does not disclose authorization needs, behavior on invalid targets, or output format details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences. It front-loads the purpose and lists key resources, though a structured parameter section could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with one parameter, the description covers the core purpose and parameter. However, it lacks details on the return value (e.g., format, per-interface representation) and potential error handling, leaving gaps for agent usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides no description for 'target' (0% coverage). The description adds meaning by stating 'Device name from config', helping the agent understand the parameter's purpose and source.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a read operation that retrieves per-interface traffic and error counters (octets, packets, errors, discards). This distinguishes it from sibling tools like get_interfaces (which likely returns interface status or configuration) and get_interfaces_ip.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The '[READ]' prefix implies it is safe, but there is no explicit context about suitable scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_interfaces_ipB
[READ] Per-interface IPv4/IPv6 addresses and prefix lengths.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The '[READ]' tag indicates non-destructive behavior, but no annotations are present to confirm. The description lacks disclosure of permissions, side effects, or behavior with null/valid target. No output schema, so return format is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short: one line and a parameter note. It is front-loaded with '[READ]' and contains no fluff. However, it might be too sparse for completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain the return format, pagination, or how filtering works when target is null. For a read tool on network interfaces, more detail is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'target' has a description 'Device name from config', adding meaning beyond the schema (which only has type). With 0% schema description coverage, this compensates effectively. Could specify format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves per-interface IPv4/IPv6 addresses and prefix lengths, using a specific verb ('get') and resource ('interfaces IP'). It distinguishes from siblings like 'get_interfaces' (likely interface status) and 'get_interfaces_counters' (counters).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives (e.g., 'get_interfaces' for interface status). The '[READ]' prefix hints at read-only, but no explicit 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_lldp_neighborsB
[READ] LLDP neighbors: local port, remote hostname, remote port.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. While '[READ]' implies a read-only operation, there is no mention of idempotency, safety, error handling, or what happens if the target is unreachable. The description does not disclose potential side effects or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two lines for the purpose and one line for the argument. It is front-loaded with the key information and contains no superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description provides the essential purpose and argument meaning. However, it could be more complete by explaining the behavior when target is null (e.g., returns neighbors for all devices) and by describing the return format. The completeness is adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'target' has 0% schema description coverage. The description line 'target: Device name from config' adds some semantic value by indicating the parameter's source (config) and type (device name), but it does not explain what values are valid, the meaning of null, or formatting requirements. Baseline for 0% coverage is 4, but the minimal addition reduces the score to 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with '[READ] LLDP neighbors: local port, remote hostname, remote port,' which clearly identifies the tool's purpose as a read operation and specifies the data returned. It distinguishes from siblings like 'get_lldp_neighbors_detail' which likely provides more detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'get_lldp_neighbors_detail' or other read tools. The description lacks information about prerequisites, order of operations, or situational context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lldp_neighbors_detailB
[READ] Detailed LLDP neighbors: chassis id, system name/description, capabilities.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only discloses the read-only nature via '[READ]' but does not explain other behaviors like return format, pagination, or performance implications. For a detailed tool, more behavioral context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with no wasted words. It front-loads the purpose and uses a clear structure with an Args section. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is incomplete. It lists returned fields but does not describe the output structure, pagination, error conditions, or any permissions needed. For a tool with one optional parameter, more detail is expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The sole parameter 'target' is explained as 'Device name from config,' adding meaning beyond the schema which only gives type and default. With 0% schema description coverage, this minimal explanation is helpful, though it could be more precise (e.g., format or examples).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves detailed LLDP neighbor information including chassis id, system name/description, and capabilities. It uses the verb 'get' and specifies the resource, distinguishing it from sibling tools like get_lldp_neighbors (likely summary) and get_bgp_neighbors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. With siblings like get_lldp_neighbors (presumably a summary) and other network tools, the description does not differentiate usage scenarios or mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mac_address_tableA
[READ] MAC address table: MAC, interface, VLAN, static/active flags.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description bears the full burden. It labels the tool as [READ] indicating non-destructive behavior, and lists the returned fields, but lacks details on authentication needs, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a front-loaded [READ] tag and a brief sentence on output, followed by parameter documentation. Each sentence earns its place, though more structured formatting could improve scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a table retrieval without output schema, the description lists the expected fields (MAC, interface, VLAN, flags), which is sufficient. It could mention that the output is a list or clarify the meaning of 'static/active flags', but overall it provides a solid overview.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It explains 'target' as 'Device name from config', adding minimal context beyond the schema. This is adequate but not rich; the parameter's purpose is clear but could specify format or required privileges.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states it is a READ operation on the MAC address table, listing MAC, interface, VLAN, and static/active flags. This clearly distinguishes it from sibling tools like get_arp_table (ARP table) and get_vlans (VLAN info).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 any prerequisites or exclusions. It only states the parameter, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_network_instancesA
[READ] Network instances (VRFs): name, type, state, member interfaces.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The [READ] tag indicates read-only behavior, and description lists returned fields. However, with no annotations, it lacks details on authentication, rate limits, or side effects. Adequate for a simple read tool but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one line for purpose and one for parameter. Front-loaded with [READ] tag. No unnecessary words, every part adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without output schema, description lists returned fields, which is sufficient for a simple read tool. Missing behavioral details but given its simplicity, it's mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains the single parameter 'target' as 'Device name from config', adding meaning beyond the schema (which only defines type and default). Schema coverage is 0%, so description compensates well.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it reads network instances (VRFs) and lists returned fields (name, type, state, member interfaces). It distinguishes from siblings by focusing on VRF-specific data, but could be more explicit about what 'member interfaces' means.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like get_interfaces or get_bgp_neighbors. Only specifies the 'target' parameter as device name but no context on prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ntp_serversC
[READ] Configured NTP servers.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only implies a read operation via '[READ]' but lacks details on behavior like handling null target, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise with no waste. The purpose and parameter are front-loaded in a clear structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity, the description omits return value details. With no output schema, the agent cannot infer what 'Configured NTP servers' includes (e.g., list of addresses, configuration status).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning to the parameter 'target' by stating it is a 'Device name from config', which is not in the schema. However, it does not explain behavior when target is null or provide further details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads configured NTP servers, using the verb 'get' implicitly and specifying the resource. However, it does not distinguish from sibling tools like get_ntp_stats, which could cause confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. No usage context or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ntp_statsC
[READ] NTP peer synchronization stats (stratum, offset, jitter, reachability).
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It indicates read-only via [READ] but fails to disclose behavior for null target input, error handling, or data freshness. No side effects are mentioned, but the read-only tag is helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with purpose and argument list. No superfluous text. However, it could benefit from slightly more detail without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple interface (1 optional param, no output schema), the description omits return format and details on null target behavior. It does not link to the sibling 'get_ntp_servers' for complementary usage, leaving gaps for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It explains 'target' as 'Device name from config', but does not clarify the effect of null (default) or whether it implies all devices. This leaves ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a read operation ([READ]) and specifies the exact data: NTP peer synchronization stats including stratum, offset, jitter, reachability. This distinguishes it from sibling tools like 'get_ntp_servers' which likely returns server configurations, not stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives. There is no mention of prerequisites or when not to use it. The sibling 'get_ntp_servers' is closely related but no comparison is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_opticsA
[READ] Optical transceiver levels per interface/channel (rx/tx power, bias).
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It declares '[READ]' indicating read-only, but does not disclose other behavioral traits like authorization needs, rate limits, or error conditions. Sufficient to understand it's safe, but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no extraneous text. The first sentence captures the purpose, the second describes the parameter. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one optional parameter and no output schema, the description is brief but covers the basics. However, it does not specify what 'levels' means exactly, whether it applies to all interfaces or a specific one, or what the output format is. Could be more complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but the description explains the only parameter 'target' as 'Device name from config'. This adds essential meaning beyond the schema type, though it could be more detailed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'get' and the resource 'optical transceiver levels per interface/channel', specifying 'rx/tx power, bias'. This distinguishes it from sibling tools like get_bgp_neighbors or get_interfaces_counters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives, no prerequisites, and no context about typical scenarios. The description only states what it does without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_route_toA
[READ] Routing-table lookup for a destination prefix (optionally by protocol).
Args: destination: The destination prefix to look up (e.g. 10.0.0.0/24). protocol: Optional protocol filter (e.g. bgp, ospf, static). target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| protocol | No | ||
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It uses '[READ]' to imply non-destructive behavior, but lacks details on permissions, error conditions, or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: one line for purpose, then a formatted parameter list. No superfluous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers parameters but lacks any hint about output format or return value. Without an output schema, some guidance on what is returned (e.g., best route, next-hop) would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaningful explanations for all three parameters (destination prefix, optional protocol filter, target device), compensating for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
[READ] signals read-only, 'Routing-table lookup for a destination prefix' specifies verb and resource clearly. It is distinct from siblings like get_bgp_neighbors or get_arp_table.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states the tool's purpose and parameters but does not explicitly guide when to use it versus alternatives or provide when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_snmp_informationA
[READ] SNMP metadata: chassis id, contact, location. Community strings redacted.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry burden. Only mentions '[READ]' hint of safe behavior but no details on permissions, error conditions, or what happens when target is null.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two lines with front-loaded purpose and parameter explanation, zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool, description covers purpose and parameter adequately, but lacks details on return format or behavior with null target.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% but description explains 'target' as 'Device name from config', adding meaningful context beyond the schema's type-only definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with '[READ] SNMP metadata: chassis id, contact, location' which clearly states the verb and specific resource, and distinguishes from sibling tools like BGP or LLDP.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description does not provide explicit when-to-use or when-not-to-use guidance, though the purpose is clear. No alternatives mentioned despite broad sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usersA
[READ] Local users and privilege levels. Password hashes are NOT returned.
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses the read-only nature with '[READ]' and explicitly states that password hashes are not returned. However, it does not mention other behavioral aspects like authentication requirements or scope of users returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines purpose, second defines the parameter. No unnecessary words, front-loaded with key constraints (read-only, no password hashes).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter read tool, the description is mostly adequate. It explains purpose and parameter meaning. Minor gaps: no mention of return format or pagination, but these are less critical for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage for the target parameter. The description adds 'Device name from config', which clarifies what the parameter represents. However, it does not specify format, default behavior, or if null means all devices.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reads local users and privilege levels, explicitly notes that password hashes are not returned, and distinguishes from sibling tools like get_bgp_neighbors or get_interfaces which cover different network data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives, no prerequisites, and no context about filtering (e.g., what happens when target is null or omitted). The description is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vlansB
[READ] VLANs: id, name, and member interfaces (driver support varies).
Args: target: Device name from config.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description states it is a read operation, implying no side effects. It notes "driver support varies," which hints at potential inconsistencies. However, without annotations, the description could disclose more about authorization needs or return limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, front-loading the read nature. Every word adds value, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is low complexity (one optional parameter, no output schema). The description mentions the returned fields but lacks details on the response structure (e.g., list or object, pagination). Given the minimal info, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter (target) with 0% description coverage. The description adds "Device name from config," providing more context than the schema alone. Yet it remains vague and does not specify allowed values or behavior when null.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses "[READ]" to indicate a read operation and lists the resource (VLANs) with returned fields (id, name, member interfaces). It is specific and distinguishes from sibling tools like get_interfaces or get_network_instances by focusing solely on VLANs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives such as get_network_instances or get_interfaces. No context about prerequisites or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interface_health_rcaA
[READ] Flag admin-up/oper-down, erroring, discarding, or flapping interfaces.
Pulls get_interfaces + get_interfaces_counters and reports worst-first findings — each citing the measured number (error/discard count, last-flap seconds) that tripped it, with a cause and a concrete action.
Args: target: Device name from config; omit to use the default device.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explicitly marks the tool as [READ], states it pulls two data sources (get_interfaces and get_interfaces_counters), and reports worst-first findings. It does not mention side effects, but the nature of the tool makes them unlikely.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with a clear header line followed by details and an Args section. However, the Args section could be considered slightly verbose for a single parameter but is still efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description partially compensates by describing the report format (worst-first, with counts, cause, and action). However, it lacks details like whether the output is a list or a single object, and it does not mention pagination or error handling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully explain parameters. It does so by describing 'target' as a device name and noting the default behavior (omit for default device). This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Flag' and the resource 'interfaces' with specific conditions (admin-up/oper-down, erroring, discarding, flapping). It distinguishes from siblings like get_interfaces and get_interfaces_counters by indicating it performs root cause analysis, not raw retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for diagnosing interface health issues but does not explicitly state when to use it versus alternatives like get_interfaces or device_health. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
netbox_device_interfacesA
[READ] List a NetBox device's interfaces (name, type, enabled, description).
The intended interface inventory from source-of-truth — compare against live device state (get_interfaces) to spot drift.
Returns {"interfaces": [...], "returned": N, "limit": L, "truncated": bool}.
Do NOT report drift from a truncated list — re-run with a higher limit.
Args: device: Exact NetBox device name (see netbox_list_devices). limit: Maximum interfaces to return (default 100).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| device | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It declares read-only intent with '[READ]', describes the return format (including 'truncated' bool), and explains truncation behavior. This is thorough, though it doesn't cover authentication or error scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a summary line, usage context, return format, caveat, and parameter explanations. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description covers the return format and truncation behavior. It could mention sorting or pagination beyond limit, but overall it's sufficiently complete for its complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clearly explains both parameters: device as exact name with a reference to netbox_list_devices, and limit with default value and purpose. This adds significant meaning beyond the minimal schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (List), resource (NetBox device's interfaces), and key fields (name, type, enabled, description). It distinguishes itself from the sibling get_interfaces tool by noting this is the source-of-truth inventory for drift detection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs to compare against get_interfaces to spot drift, warns against reporting drift from a truncated list, and suggests re-running with a higher limit. It also specifies that the device parameter requires an exact name from netbox_list_devices.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
netbox_get_deviceA
[READ] Return a single NetBox device by exact name.
Args: name: Exact NetBox device name (see netbox_list_devices).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must cover behavioral traits. The '[READ]' prefix indicates a read-only operation, which is helpful. However, it does not disclose what fields are returned, error handling (e.g., device not found), or any side effects, leaving gaps for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two clear sentences. The first sentence states the action and result, and the second explains the parameter with a useful cross-reference. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single required parameter, no output schema), the description adequately covers its purpose and parameter. It could mention the return format or error behavior, but as a single-device lookup, it is sufficiently complete for most agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds meaningful guidance: the parameter must be an exact device name, not partial. It also references the list tool for discovery, which enhances understanding beyond the schema's bare type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a single NetBox device by exact name, using the verb 'Return' and specifying the resource. It distinguishes from the sibling tool 'netbox_list_devices' by noting the exact name requirement and cross-referencing the list tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use when you have an exact device name. It references netbox_list_devices for finding names, implying a usage flow. However, it does not explicitly exclude alternative use cases or mention when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
netbox_list_devicesA
[READ] List NetBox devices (name, role, site, status, primary IP).
Requires a configured NetBox block. Use this to confirm intended state before pushing config to a device.
Returns {"devices": [...], "returned": N, "limit": L, "truncated": bool}.
When truncated is true the estate is larger than what you were shown —
re-run with a higher limit before concluding anything about coverage.
Args: name: Optional name filter (contains match). limit: Maximum devices to return (default 50).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, but description discloses truncation behavior and return structure, advising to increase limit if truncated. Covers key 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, with front-loaded purpose and structured Args section. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completeness is high: return format, truncation handling, parameter details, and usage advice provided. No output schema, but description compensates fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description adds value: 'name' is a contains match, 'limit' has default 50. Provides clear meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with '[READ] List NetBox devices' and lists key fields, making the verb and resource clear. It distinguishes from siblings like 'netbox_get_device'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States 'Use this to confirm intended state before pushing config to a device', providing a clear scenario. Does not explicitly exclude alternatives but offers context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_applyA
[WRITE][risk=medium] Apply a recorded undo by dispatching its inverse tool.
The inverse runs through its own governed tool, so its real risk tier is recorded in that tool's audit row. Pass dry_run=True to preview the inverse call without executing it. A token can only be applied once.
Args:
undo_id: The undoId from undo_list (or an _undo_id in a write result).
dry_run: If True, preview the inverse tool + params without running it.
target: Passed through to the inverse tool when it accepts a target.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | ||
| dry_run | No | ||
| undo_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses that the tool is a write operation with medium risk, that the token can only be used once, and the dry_run behavior. It also mentions the governance of the inverse tool. This is transparent for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear front-loaded summary, followed by relevant behavioral notes and parameter explanations. No fluff, but could be slightly more structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 parameters, the description covers behavior, parameters, and usage. It lacks explicit return value detail but is sufficient for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description explains each parameter: undo_id is from undo_list or _undo_id, dry_run previews, target passes through. This adds meaningful context beyond schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Apply a recorded undo by dispatching its inverse tool.' This specifies the action (apply) and the resource (recorded undo), and it is distinct from siblings like undo_list which lists undos.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use dry_run, notes that a token can only be applied once, and explains that the inverse runs through its own governed tool. However, it does not explicitly compare to other tools or say 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.
undo_listA
[READ] List recorded, not-yet-applied undo tokens (most recent first).
Each entry names the original tool, the inverse tool that undo_apply
would run, and a human note. Use the undoId with undo_apply.
Returns {"undos": [...], "returned": N, "limit": L, "truncated": bool}.
truncated is measured (one extra row is fetched), not guessed from a
length coincidence: when it is true there are MORE tokens than shown, so
re-run with a higher limit rather than reporting the list as complete.
Each entry carries effectVerified. False means the original write lost
its response, so the change it reverses is PROBABLE, not confirmed — check
the live state before applying, and do not report the result as a restore
of a state that may never have been reached.
Args: limit: Max rows to return (default 50, capped at 500). target: Unused (undo state is host-local); accepted for CLI uniformity.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| target | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavioral traits: it explains that the truncated flag is measured by fetching one extra row, describes the effectVerified field and its implications for probable vs. confirmed state, and notes that the target parameter is unused for CLI uniformity. This goes beyond minimal requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and well-structured. It covers necessary details without excessive verbosity. Some minor repetition could be trimmed, but it remains efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (undo tokens, effectVerified, truncated behavior, parameter quirks), the description is fully complete. It details the return structure, usage with undo_apply, and caveats. No output schema, but the description compensates adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clearly explains limit's default and cap (50, 500), and target's purpose (unused, for uniformity). This adds significant value beyond the schema, although the limit explanation could mention that it's optional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with "[READ] List recorded, not-yet-applied undo tokens (most recent first)", clearly stating it is a read operation that lists undo tokens. This distinguishes it from the sibling tool undo_apply, which applies them. The verb 'list' and resource 'undo tokens' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool: to see available undo tokens before applying them with undo_apply. It also provides guidance on the truncated flag, advising to re-run with higher limit when true. It does not explicitly state when not to use it, but the context is clear enough for an agent to decide.
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. Dates show when Glama detected each change.
33 tool updates
v0.8.0- First observed
bgp_neighbor_rca - First observed
config_backup - First observed
config_diff - First observed
config_merge - First observed
config_replace - First observed
config_rollback - First observed
confirm_commit - First observed
device_facts - First observed
device_health - First observed
get_arp_table - First observed
get_bgp_neighbors - First observed
get_bgp_neighbors_detail - First observed
get_environment - First observed
get_interfaces - First observed
get_interfaces_counters - First observed
get_interfaces_ip - First observed
get_lldp_neighbors - First observed
get_lldp_neighbors_detail - First observed
get_mac_address_table - First observed
get_network_instances - First observed
get_ntp_servers - First observed
get_ntp_stats - First observed
get_optics - First observed
get_route_to - First observed
get_snmp_information - First observed
get_users - First observed
get_vlans - First observed
interface_health_rca - First observed
netbox_device_interfaces - First observed
netbox_get_device - First observed
netbox_list_devices - First observed
undo_apply - First observed
undo_list
TDQS
Each tool has a unique purpose with no overlap. For example, get_bgp_neighbors and get_bgp_neighbors_detail differ by detail level, and get_interfaces, get_interfaces_counters, get_interfaces_ip are all distinct. Config operations (backup, diff, merge, replace) are clearly separated, and RCA tools address specific issues.
All tools follow a consistent verb_noun pattern with lowercase and underscores (e.g., get_lldp_neighbors, config_backup, netbox_list_devices). The naming is predictable and readable, with no mixing of styles.
33 tools is slightly high but justified for the breadth of network AIOps: monitoring, configuration, NetBox integration, and troubleshooting. Each tool addresses a specific need, though some consolidation might be possible.
The tool set covers read operations for many network aspects, configuration management with rollback/revert, NetBox source-of-truth, and RCA. Missing direct write tools for specific protocols, but config merge/replace covers generic changes. Minor gaps exist but core workflows are complete.
Maintenance
Related MCP Connectors
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Manage CloudPepper servers, Odoo instances, backups, and deployments over MCP.
Authenticated MCP server for ClearPolicy policy and compliance workflows.
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Related MCP Servers
- FlicenseBqualityDmaintenanceAsynchronous MCP server for unified multi-platform network infrastructure management, providing 97 tools across 10 connectors including SSH, MikroTik, Palo Alto, Aruba, Graylog, LibreNMS, Cisco APIC/NDFC, and Panorama.9722-
- AlicenseNot gradedqualityDmaintenanceProvides tools to view operational state and change configuration of Nokia SR OS devices using pySROS SDK and FastMCP.1MIT
- AlicenseNot gradedqualityBmaintenanceA read-only MCP server for interacting with Nautobot, enabling network source of truth queries, device management, IPAM, and data quality audits via tools and prompts.MIT
- FlicenseNot gradedqualityCmaintenanceProvides MCP tools for Cisco Meraki Dashboard API, enabling management of networks, configuration templates, and health checks via natural language commands.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/AIops-tools/Network-AIops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server