Skip to main content
Glama

Model Context Protocol (MCP) Server for Cisco Packet Tracer

mcp-name: io.github.kiskander/pt-mcp-server

Overview

pt-mcp brings AI assistants to your Packet Tracer labs. It lets you work with a running Cisco Packet Tracer in natural language from AI applications like Claude Desktop, Claude Code, and Cursor.

Instead of dragging devices around and typing every command by hand, tell the AI what you want in plain English, like "Build two routers with a serial link and static routes, then prove the PCs can ping each other" or "Step my ping through simulation mode and explain what the switch does with the frame". Then watch it happen in Packet Tracer.

This works through the Model Context Protocol (MCP), a standard way for AI applications to use external tools. pt-mcp connects to Packet Tracer through Packet Tracer's own external-application interface: the IPC API over PTMP, the same channel Cisco's "ExApps" use. That means no plugins inside Packet Tracer, no patched binaries, and no screen scraping.

It is built with CCNA students in mind. It can show you why the network behaves the way it does (Packet Tracer's own per-hop explanations in simulation mode), it verifies the way the exam expects, and by design it cannot read the answers or score of a graded activity.

Related MCP server: cml-mcp

Features

  • Build Topologies: Add devices, cable them (with automatic cable selection like the GUI), or build an entire lab (devices, expansion cards, cables, host IPs, IOS configs) in one call.

  • Export and Rebuild Labs: Export the open network, configs included, in the same format, and rebuild it anywhere.

  • Configure Devices: Paste whole IOS configs (show running-config output works as-is), run exec or config commands, and get each command's status. Read, save, and erase running and startup configs.

  • Expansion Modules: See a device's slots and supported cards (HWIC-2T, NIM-2T, WIC, SFPs…) and install or remove them. Power cycling is handled for you.

  • End Devices: Set PC/server IP settings, and run Command Prompt commands (ping, ipconfig, tracert) with their output.

  • Verify Connectivity: Ping matrices with loss statistics, retrying the usual ARP/STP first-ping failures.

  • Simulation Mode (Packet Tracer's "packet capture"): Send PDUs, step time, list events, and read Packet Tracer's own OSI-layer explanation of each hop plus decoded headers (Ethernet, 802.1Q, IP, ICMP, ARP, HDLC, TCP/UDP, STP, OSPF, DHCP, DNS, CDP…).

  • Console and Command Logs: Read a device's console buffer (%LINK/%LINEPROTO messages) and Packet Tracer's log of typed commands.

  • Annotations: Add, edit, and delete notes, lines, and circles on the logical workspace.

  • Activities (.pka): Read an activity's instructions. Answers and scores are deliberately out of reach.

  • Crash Protection: Only IPC calls verified against a live Packet Tracer are ever sent, and known crashing calls are blocked (see Crash protection).

  • Cross-Platform: Tested on macOS and Windows with Packet Tracer 9.0.1. .pkt files move between them.

  • Modular Architecture: Tools are organized into modules (devices, links, cli, simulation, etc.), following cml-mcp.

Quick Start

Requirements

  • Cisco Packet Tracer 9.0.1, running and logged in to NetAcad (8.2.0 API data is included but not re-verified)

  • macOS or Windows (Linux is detected but untested)

  • uv, which brings its own Python (3.12–3.14)

  • git, which uvx uses to fetch the server from GitHub

Step 1: Register pt-mcp with Packet Tracer (one time per computer)

uvx --from git+https://github.com/kiskander/pt-mcp-server pt-mcp setup

This finds Packet Tracer, generates a private key for this computer, creates PTMCP.pta in a pt-mcp folder in your home folder (~/pt-mcp/ or C:\Users\<you>\pt-mcp\), and opens that folder for you.

Then in Packet Tracer:

  1. Extensions → IPC → Configure Apps… → Add

  2. Choose PTMCP.pta from the pt-mcp folder

  3. Accept the prompt and leave it on On Demand

Step 2: Check the connection

uvx --from git+https://github.com/kiskander/pt-mcp-server pt-mcp doctor

Every line should say [OK]. If one doesn't, it tells you how to fix it.

Step 3: Add the server to your MCP client

Copy the block for your client into its MCP configuration file. No keys or passwords go here: the server reads the key that setup saved.

Claude Desktop: claude_desktop_config.json (macOS ~/Library/Application Support/Claude/, Windows %APPDATA%\Claude\, Linux ~/.config/Claude/)

{
  "mcpServers": {
    "Cisco Packet Tracer": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"]
    }
  }
}

Claude Code: .mcp.json in your project (or run claude mcp add --scope user packet-tracer -- uvx --from git+https://github.com/kiskander/pt-mcp-server pt-mcp)

{
  "mcpServers": {
    "packet-tracer": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"]
    }
  }
}

Cursor: ~/.cursor/mcp.json (or .cursor/mcp.json in a project)

{
  "mcpServers": {
    "packet-tracer": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"]
    }
  }
}

VS Code (GitHub Copilot): .vscode/mcp.json

{
  "servers": {
    "packet-tracer": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"]
    }
  }
}

Restart your client after saving, then ask: "Is Packet Tracer connected?"

TIP

"Command not found" for uvx? MCP clients don't always inherit your shell's PATH. Replace "uvx" with its full path: run which uvx on macOS/Linux or where uvx on Windows (e.g. "/Users/alice/.local/bin/uvx" or "C:\\Users\\alice\\.local\\bin\\uvx.exe"; JSON needs doubled backslashes).

WARNING

Use the--from git+https://github.com/kiskander/pt-mcp-server form exactly. A different, unrelated package called pt-mcp exists on PyPI, so uvx pt-mcp would run that instead.

Any setting can also go in an env block. If you set PT_APP_KEY here, it must match the key in the .pta that is registered in Packet Tracer (the one in pt-mcp.env, written by setup). A stale key here is the most common cause of "authentication rejected".

{
  "mcpServers": {
    "Cisco Packet Tracer": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/kiskander/pt-mcp-server", "pt-mcp"],
      "env": {
        "PT_HOST": "127.0.0.1",
        "PT_PORT": "39000",
        "PT_APP_ID": "net.netacad.cisco.ptmcp",
        "PT_APP_KEY": "<key from pt-mcp.env>"
      }
    }
  }
}

pt-mcp.env is in ~/Library/Application Support/pt-mcp/ (macOS), %APPDATA%\pt-mcp\ (Windows), or ~/.config/pt-mcp/ (Linux). All settings are listed in INSTALLATION.md.

For running from a clone, HTTP mode, Windows notes, and troubleshooting, see INSTALLATION.md.

Available MCP Tools

The server provides 45 MCP tools by default (plus one opt-in), organized into the following categories:

Connection

  • get_pt_information - Connection check: Packet Tracer version, device/link counts, workspace mode, open file

Network Topology

  • create_full_network_topology - Build a whole lab (devices, modules, links, host IPs, IOS configs) in one call; errors are collected, not fatal

  • export_network_topology - Export the open network (with configs) in the same format, for rebuilding or review

  • set_network_description - Set the file's description (objectives, addressing table…)

Device Management

  • get_devices_in_network - List devices with type, model, power, and position

  • get_device_models - List models for a device type (router, switch, pc, server, …)

  • add_device_to_network - Add a device, optionally named and positioned

  • rename_device - Change a device's display name

  • set_device_power - Power a device on or off

  • delete_device_from_network - Delete a device and its cables (asks for confirmation)

Device Configuration

  • get_device_configuration - Read the running-config or startup-config

  • configure_device - Apply an IOS config block (handles show run output and sub-modes; reports only rejected lines)

  • save_device_configuration - write memory

  • erase_device_configuration - Erase startup-config and reload to a blank config (asks for confirmation)

Expansion Modules

  • get_device_model_details - Show slots (installed or empty) and every supported module with its description

  • add_module_to_device - Install a module (e.g. HWIC-2T) and return the new ports

  • remove_module_from_device - Remove a module (asks for confirmation)

  • get_interfaces_for_device - Ports with status, MAC, IP/mask, and the remote device/port

  • configure_host_interface - IP, mask, gateway, DNS, or DHCP on PCs, servers, and laptops

  • set_interface_power - Turn a single port on or off

  • connect_two_devices - Cable two ports (auto picks serial, console, straight-through, or crossover)

  • get_all_links - Every cable with both ends and its type

  • delete_link - Remove the cable on a port (asks for confirmation)

CLI & Verification

  • send_cli_command - Run IOS commands in exec or config mode, with per-command status (ok, invalid, rejected, …) and output

  • send_terminal_command - Run a command in a PC/server Command Prompt (or a device terminal) and collect the output

  • verify_connectivity - Ping a list of destinations from a device and report sent/received/loss for each

  • get_console_log - The device's console buffer (boot and link messages)

  • get_command_history - Packet Tracer's log of commands typed into terminals

Simulation Mode

  • set_simulation_mode - Switch between Realtime and Simulation

  • send_simple_pdu - Send an ICMP PDU between two devices (the envelope tool)

  • step_simulation - Step forward or backward

  • get_simulation_events - The event list: where each PDU is, where it came from, protocol, and what happened

  • get_simulation_event_details - Packet Tracer's OSI-layer explanation of an event plus decoded inbound/outbound headers

  • reset_simulation - Clear the event list

Annotations (Visual Elements)

  • get_annotations - Notes, lines, and shapes on the workspace

  • add_text_note - Add a text note

  • edit_text_note - Change a note's text

  • add_line_annotation - Draw a line

  • add_circle_annotation - Draw a circle

  • delete_annotation - Delete a note or shape (asks for confirmation)

Activities

  • get_activity_instructions - Read a .pka activity's instruction pages as plain text (not answers or scores)

Files

  • create_new_network - Start a new, empty network (asks for confirmation)

  • open_network_file - Open a .pkt or .pka

  • save_network_file - Save the network as a .pkt

IPC API Reference

  • describe_ipc_class - Look up the methods and wire types of any Packet Tracer IPC class (offline)

  • call_ipc_api - (opt-in, PT_MCP_ENABLE_RAW_IPC=true) Call the raw IPC API; still limited to verified methods

Usage

Once configured, make sure Packet Tracer is open and logged in, restart your MCP client, and start chatting.

What Can You Do?

Here are some example prompts to try:

Getting Started:

  • "Is Packet Tracer connected? What version is it?"

  • "What router models can I add?"

  • "What's in my network right now?"

Building Labs:

  • "Add a 2911 router called R1 and a 2960 switch called SW1, and connect them"

  • "Give R1 a serial card so I can do a WAN link"

  • "Build two routers with a serial link between them and a PC behind each one"

Configuration & Testing:

  • "Configure the router interfaces with 192.168.1.1/24 and 10.0.12.1/30 and bring them up"

  • "Add static routes so both LANs can reach each other, then save the configs"

  • "Can PC1 ping PC2? If not, why not?"

  • "Show me R1's routing table and running config"

Learning:

  • "Switch to simulation mode, send a ping from PC1 to PC2, and explain each hop"

  • "Why did the switch flood that frame?"

  • "Show me the IP and Ethernet headers at the router. What changed?"

  • "What does this activity ask me to do?"

Complete Workflow Example:

  1. "Start a new network"

  2. "Add two 2911 routers R1 and R2, each with an HWIC-2T, a 2960 switch, and two PCs"

  3. "Connect R1 and R2 over Serial0/0/0, R1 to the switch, PC1 to the switch, and PC2 directly to R2"

  4. "Address R1's LAN as 192.168.1.0/24, R2's as 192.168.2.0/24, the WAN as 10.0.12.0/30, configure static routes, and save"

  5. "Verify PC1 can reach PC2"

  6. "In simulation mode, send a PDU from PC1 to PC2 and walk me through what R1 does with it"

  7. "Add a note labelling the WAN link, then save the lab to ~/labs/serial-wan.pkt"

System Prompt

If your LLM tool supports a system prompt, this works well:

You are a networking lab assistant for Cisco Packet Tracer, helping a student studying for the CCNA. You can build and configure topologies, verify connectivity, and use simulation mode to show how packets move. Explain what each step does and why. Verify with show commands and pings rather than assuming. On graded activities (.pka files), teach and give hints instead of completing the tasks for the student.

An example agent skill with Packet Tracer-specific conventions is also included.

Crash protection

Some Packet Tracer IPC calls crash the application (it exits and the open network is lost). The one confirmed so far is LogicalWorkspace.getEllipseItemData on 9.0.1. Packet Tracer exposes 4,500+ IPC methods and most have never been exercised, so:

  • The client only sends methods on an allow-list recorded while every tool ran successfully against a live Packet Tracer. Anything else is refused before it reaches Packet Tracer.

  • Known crashing calls are blocked unconditionally.

  • The raw call_ipc_api tool is off by default, and even when enabled it is limited to verified methods unless you also set PT_ALLOW_UNVERIFIED_IPC=true.

Academic integrity

The ExApp file that setup builds deliberately does not request Packet Tracer's ACTIVITY_WIZARD privilege, the one that exposes a .pka activity's answer network, assessment, score, and password hash. Packet Tracer itself refuses those calls, so no client can use this server to pull answers. A test enforces that the privilege stays out.

Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

For development setup, testing, and code style, see DEVELOPMENT.md.

Troubleshooting

Common Issues

Start with pt-mcp doctor. It checks each step and prints the fix for whatever fails.

"authentication rejected"

The ExApp isn't registered with the key this machine is using. Re-run pt-mcp setup, then in Extensions → IPC → Configure Apps remove any old PT MCP Bridge entry and Add the new .pta.

"Cannot reach Packet Tracer" / nothing listening

Packet Tracer must be running and past the NetAcad login; IPC starts after you log in. Check Extensions → IPC → Options (Start Listening, port). If 39000 is busy (a second instance, or right after a crash), Packet Tracer moves to 39001+, and the server scans for it automatically.

"Refusing to call …: it has not been verified"

That's crash protection working. The tool you used needs an IPC method that hasn't been verified on your Packet Tracer version. Please open an issue with the method name and your Packet Tracer version.

Commands rejected right after adding a module

Adding or removing a module power-cycles the device (Packet Tracer requires it), and unsaved configuration on that device is lost. Save first, and give the device a moment to boot; the tools wait for it automatically.

For more troubleshooting help, see INSTALLATION.md.

Getting Help

Documentation

License

The MCP server portion of this project is licensed under the BSD 2-Clause "Simplified" License. However, it leverages IPC API definitions and data derived from Cisco Packet Tracer itself, which are covered under a proprietary Cisco license.

Available Tools

45 tools
add_circle_annotationAdd a Circle AnnotationA

Draw a circle on the logical workspace, e.g. to group a LAN, mark a broadcast or collision domain, or highlight an OSPF area. Returns the circle's id (get_annotations lists circles as kind "ellipse").

Examples:

  • "Circle the devices in VLAN 10"

  • "Mark each broadcast domain with a circle"

NameRequiredDescriptionDefault
colorNoRGB as 'r,g,b'0,128,255
radiusNoRadius in pixels
center_xYesLogical-workspace coordinate in pixels
center_yYesLogical-workspace coordinate in pixels

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare it is a non-read-only but non-destructive write, and the description goes beyond them by stating it returns the circle's id and that get_annotations reports circles as kind "ellipse" — a non-obvious lookup detail. It says nothing about persistence with the saved file or z-order/layering.

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

Conciseness4/5

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

Purpose, return value and quirk are front-loaded in two tight sentences; the example bullets are useful but slightly padded as a second list for a tool whose usage is already evident.

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

Completeness4/5

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

With an output schema present, the description need not explain return shape, yet it helpfully names the id return anyway. Adequate for a simple 4-param shape tool; only layering/persistence behavior is left unstated.

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

Parameters3/5

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

All four parameters already carry descriptions, patterns, ranges and defaults in the schema, so a baseline of 3 applies. The description adds only that coordinates are in the same logical-workspace space it draws on, nothing on radius/color semantics.

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

Purpose5/5

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

Specific verb ('Draw') plus resource ('a circle on the logical workspace'), with concrete domain purposes (group a LAN, broadcast/collision domain, OSPF area) that separate it from add_line_annotation and add_text_note.

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

Usage Guidelines4/5

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

Example intents ("Circle the devices in VLAN 10", "Mark each broadcast domain") make the intended situations clear, but there is no explicit when-not guidance or named alternative for a non-circular grouping.

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

add_device_to_networkAdd a Device to the NetworkA

Add a device to the logical workspace. Returns the device's name (Packet Tracer assigns one such as 'Router0'; it is renamed to name if given).

Required: device_type (e.g. "router", "switch", "pc", "server"), model (e.g. "2911", "ISR4331", "2960-24TT", "PC-PT", "Server-PT" -- discover via get_device_models). Optional: x/y position, name.

Examples:

  • "Add a 2911 router called R1"

  • "Put a 2960 switch at 300,200"

  • "Add two PCs to the network"

NameRequiredDescriptionDefault
xNoLogical-workspace coordinate in pixels
yNoLogical-workspace coordinate in pixels
nameNo
modelYes
device_typeYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false and destructiveHint=false; the description adds real behavioral value beyond them by explaining that Packet Tracer auto-assigns a name like 'Router0' and that the `name` argument overrides it, which is non-obvious. It omits whether devices are created powered on or what happens on duplicate names, but the output schema covers return shape, keeping this at a 4.

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

Conciseness4/5

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

The core behavior and return value are front-loaded in two tight sentences, followed by compact required/optional lists and examples. The final example ('Add two PCs to the network') is slightly misleading for a single-device call and is the one line that doesn't fully earn its place.

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

Completeness4/5

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

With an output schema present and annotations covering the mutation profile, the description needn't explain return values, and it correctly focuses on the required parameters and naming behavior. The remaining gap is the lack of guidance on placement defaults or duplicate-name handling for the optional coordinates.

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

Parameters3/5

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

Schema description coverage is 40%, and the description compensates where it matters: it gives concrete model examples ('2911', '2960-24TT', 'PC-PT') for the undocumented `model` parameter and device_type examples, plus the discovery route via get_device_models. However, 'x/y position' adds nothing over the schema's 'Logical-workspace coordinate in pixels', so coverage of the remaining params is thin.

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

Purpose5/5

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

Opens with a specific verb + resource ('Add a device to the logical workspace') and immediately describes the effect on the device's name, which lets an agent distinguish it from delete_device_from_network, rename_device, or add_module_to_device in the sibling list without opening any schema.

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

Usage Guidelines4/5

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

It routes the agent to the sibling get_device_models for model discovery and lists required vs. optional inputs plus three natural-language example requests, which gives clear usage context. It stops short of explicit when-not-to-use guidance (e.g., don't use this to clone an existing device or to add a device to a physical topology view instead).

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

add_line_annotationAdd a Line AnnotationA

Draw a line on the logical workspace, e.g. to separate sites, mark a WAN boundary, or underline a label. Returns the line's id.

Examples:

  • "Draw a red line between the HQ and branch halves of the topology"

  • "Underline the title note"

NameRequiredDescriptionDefault
colorNoRGB as 'r,g,b'0,0,0
end_xYesLogical-workspace coordinate in pixels
end_yYesLogical-workspace coordinate in pixels
widthNoLine width in pixels
start_xYesLogical-workspace coordinate in pixels
start_yYesLogical-workspace coordinate in pixels

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the mutation profile is already known; the description usefully adds that the call returns the line's id, which is behavior not captured by annotations. It does not discuss whether the annotation is editable/deletable afterward, but that is minor.

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

Conciseness5/5

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

The purpose and return value are front-loaded in one sentence, followed by two short examples. Zero padding and no restatement of the name or title.

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

Completeness4/5

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

With an output schema present and full schema coverage, the description need only cover intent and usage, which it does with examples. It could be slightly fuller by noting whether the line persists in the saved file or how it relates to get_annotations/delete_annotation, but nothing essential for correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with all six parameters documented (coordinates in logical-workspace pixels, RGB color pattern, width bounds), so the schema carries the semantics. The description only indirectly hints at color ('red line') and adds nothing substantive beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Draw') and resource ('a line on the logical workspace') and gives concrete use cases (separating sites, marking WAN boundaries, underlining labels). It is distinguishable from add_circle_annotation and add_text_note by shape, though it never names those siblings explicitly.

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

Usage Guidelines4/5

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

Provides clear when-to-use context through examples such as 'Draw a red line between the HQ and branch halves of the topology.' It does not state exclusions or point to the alternative annotation tools (circle, text note), so routing between annotation siblings is left to inference.

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

add_module_to_deviceAdd a Module to a DeviceA

Install a hardware module (e.g. HWIC-2T for two serial ports, NIM-2T on ISR4000s, HWIC-4ESW, SFPs) into a free slot. The device is powered off for the change and powered back on, so an unsaved running-config on it is lost -- save first if needed. Returns the new port names (e.g. ["Serial0/0/0", "Serial0/0/1"]).

Examples:

  • "Add a serial card to R1 so I can do a WAN link"

  • "Put an HWIC-2T in slot 0/0 of R2"

  • "Add a NIM-2T to the ISR4331"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
slotYesSlot path, e.g. '0/0' (see get_device_model_details)
moduleYesModule model, e.g. 'HWIC-2T', 'NIM-2T', 'WIC-2T', 'HWIC-4ESW'

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: the device is power-cycled, unsaved running-config is lost, and the call returns the newly created port names with a concrete example. That 'what gets destroyed' disclosure is exactly the context annotations (readOnlyHint=false, destructiveHint=false) cannot convey; the config loss is an indirect consequence of the power cycle, not of the additive module install, so this reads as added disclosure rather than a contradiction.

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

Conciseness4/5

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

Front-loaded with the action, then the side effect and return value, then examples. The three natural-language example requests are slightly redundant given the model list already in the first sentence, but they usefully map user phrasing to the tool.

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

Completeness4/5

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

Covers action, side effects, prerequisite lookup and the important return value; an output schema exists so return detail is a bonus rather than a requirement. The only real gap is module/slot compatibility guidance — it points at get_device_model_details for the slot but never says how to confirm a module is supported by the model.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented. The description adds only marginal semantics beyond the schema — that module choice determines the resulting port names and that a slot path like '0/0' must be free — so the baseline of 3 is appropriate.

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

Purpose5/5

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

Specific verb + resource + target ('Install a hardware module ... into a free slot') with concrete model examples (HWIC-2T, NIM-2T, SFP) so the agent knows exactly what class of action this is. It is clearly separable from remove_module_from_device and add_device_to_network, which are the nearest confusable siblings.

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

Usage Guidelines4/5

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

It states the precondition chain well: slot must be free, slot path can be looked up via get_device_model_details, and if a running-config must survive the caller should save first (implying save_device_configuration). What's missing is an explicit counterpart statement ('to remove, use remove_module_from_device'), though the sibling name makes the exclusion obvious.

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

add_text_noteAdd a Text NoteA

Place a text note on the logical workspace (the "Place Note" tool) -- e.g. subnet labels, "VLAN 10 - Sales", an addressing table, or lab instructions. Returns the note's id.

Examples:

  • "Label the LAN behind R1 as 192.168.1.0/24"

  • "Add a note with the lab objectives at the top"

NameRequiredDescriptionDefault
xNoLogical-workspace coordinate in pixels
yNoLogical-workspace coordinate in pixels
textYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already establish that this is a non-read-only but non-destructive operation. The description adds useful behavioral context by stating that the tool returns the note's id and by clarifying the logical-workspace placement, though it does not describe whether notes can overlap or require specific permissions.

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

Conciseness5/5

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

The description is front-loaded with the core action and return value, followed by concise examples that earn their place by illustrating intended usage. There is no redundant or filler text.

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

Completeness4/5

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

An output schema exists, so the description need not explain return structure in detail, and it does state that an id is returned. For a three-parameter annotation tool, the definition is complete enough to invoke correctly, though it could better address placement behavior and sibling annotation tools.

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

Parameters3/5

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

Schema coverage is 67%: x and y are documented in the schema as logical-workspace pixel coordinates, but the required text parameter has no schema description. The description supplies examples of text content but does not explain coordinate defaults, placement semantics, or text formatting beyond what the examples imply.

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

Purpose4/5

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

The description uses a specific verb and resource: 'Place a text note on the logical workspace,' and provides examples that clarify what counts as a text note. It distinguishes itself implicitly from line/circle annotation siblings by emphasizing text notes, but it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

The examples imply good use cases such as subnet labels, VLAN descriptions, addressing tables, and lab instructions. However, it does not explicitly state when to use this instead of add_line_annotation, add_circle_annotation, or edit_text_note, so guidance is contextual rather than explicit.

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

configure_deviceConfigure a Cisco DeviceA
Destructive

Apply a block of IOS configuration to a Cisco device, like pasting it into the CLI in global config mode. Accepts output of show running-config as-is: "!" lines, "end", "enable", "configure terminal", "version", and prompt lines are skipped. Indentation does not matter. Returns how many commands were sent and only the ones IOS rejected. save=true runs "write memory" afterwards.

Prefer this over send_cli_command for multi-line configs (VLANs, OSPF, ACLs, interface blocks).

CRITICAL: Changes device configuration. Show the user the config and confirm before applying.

Examples:

  • "Configure OSPF area 0 on R1 for 10.0.0.0/8"

  • "Apply this config to SW1 and save it"

  • "Create VLANs 10 and 20 on the switch and assign Fa0/1-12 to VLAN 10"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
saveNo
configYes

Output Schema

NameRequiredDescription
savedNo
deviceYes
errorsNoCommands IOS rejected (status != ok)
commands_sentYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already flag destructiveHint=true, but the description goes well beyond that: it discloses preprocessing behavior (which lines are skipped, indentation tolerance), that save=true executes 'write memory', and that only rejected commands are returned. The confirmation requirement for a destructive write is exactly the kind of context annotations cannot convey.

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

Conciseness5/5

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

Front-loaded with the core action, then behavior, then the sibling routing rule, then the safety warning, then examples. Every sentence adds information an agent needs; nothing is repeated from the schema or annotations.

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

Completeness5/5

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

Output schema exists, yet the description still briefly characterizes the result ('how many commands were sent and only the ones IOS rejected'), which is strictly additive. For a destructive 3-param tool, the agent has everything needed to decide, call, and warn the user.

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

Parameters4/5

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

Schema coverage is 33%, with only 'name' documented inline, so the description carries the load for the two undocumented params and does so well: 'config' semantics (accepts show running-config as-is, skip rules) and 'save' semantics (runs write memory). Minor gap: nothing confirms what 'name' requires beyond the schema's own description, but that parameter is already covered.

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

Purpose5/5

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

States a specific verb and resource ('Apply a block of IOS configuration to a Cisco device') plus the exact mental model ('like pasting it into the CLI in global config mode'). It explicitly distinguishes itself from the closest sibling, send_cli_command, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

Names the alternative and the selecting condition: 'Prefer this over send_cli_command for multi-line configs (VLANs, OSPF, ACLs, interface blocks).' It also states a hard precondition ('Show the user the config and confirm before applying') and provides concrete example intents that map user phrasing to this tool.

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

configure_host_interfaceConfigure an End-Device InterfaceA
Idempotent

Set IPv4 settings on an end device's port (PC, laptop, server, printer...). Typical port names: 'FastEthernet0' (PC-PT), 'GigabitEthernet0'. For routers and switches use send_cli_command. subnet_mask defaults to 255.255.255.0 when ip_address is given. dhcp=true switches the port to DHCP.

Examples:

  • "Give PC0 192.168.1.10/24 with gateway 192.168.1.1"

  • "Set the server's DNS to 8.8.8.8"

  • "Put PC1 on DHCP"

NameRequiredDescriptionDefault
dhcpNo
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
portYesFull port name (e.g. 'GigabitEthernet0/0', 'FastEthernet0', 'Serial0/1/0')
dns_serverNo
ip_addressNo
subnet_maskNo
default_gatewayNo

Output Schema

NameRequiredDescription
dhcpNo
ip_addressNo
subnet_maskNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already disclose readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavior beyond that: subnet_mask defaults to 255.255.255.0 when ip_address is supplied, and dhcp=true switches the port to DHCP. It does not fully explain interactions such as whether static fields are ignored or cleared when DHCP is enabled, so it is strong but not exhaustive.

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

Conciseness5/5

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

The key scope and exclusion are front-loaded, followed by compact default/DHCP notes and relevant examples. The examples earn their place by showing DNS, gateway, and DHCP usage patterns without bloating the definition.

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

Completeness4/5

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

An output schema exists, so return values need not be described. The description covers purpose, sibling routing, port naming, defaults, and examples well, but with 29% schema coverage some parameter interactions remain underspecified.

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

Parameters3/5

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

Schema description coverage is only 29%, so the description must compensate. It usefully explains port naming, subnet_mask defaulting, and DHCP mode, and its examples imply DNS and gateway usage, but it does not fully document all seven parameters or interactions among ip_address, subnet_mask, default_gateway, dns_server, and dhcp.

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

Purpose5/5

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

The description gives a precise verb and resource: setting IPv4 settings on an end device's port, with concrete device types and port names. It explicitly distinguishes routers/switches by directing those to send_cli_command, so an agent can select it confidently against siblings.

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

Usage Guidelines5/5

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

It states the relevant scope (end devices such as PC, laptop, server, printer) and gives an explicit exclusion: 'For routers and switches use send_cli_command.' The DHCP example further clarifies a common usage mode without ambiguity.

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

connect_two_devicesConnect Two DevicesA

Cable a port on one device to a port on another and return the cable type used. Both ports must exist and be free; use get_interfaces_for_device to find port names. cable="auto" (default) picks like Packet Tracer's GUI: serial for Serial ports, console for console ports, straight-through between a switch and a host/router, crossover between like devices.

Examples:

  • "Connect R1 Gi0/0 to SW1 Gi0/1"

  • "Cable PC0 FastEthernet0 to the switch's Fa0/1"

  • "Add a serial link between R1 Serial0/1/0 and R2 Serial0/1/0"

NameRequiredDescriptionDefault
cableNoauto
port_aYesFull port name (e.g. 'GigabitEthernet0/0', 'FastEthernet0', 'Serial0/1/0')
port_bYesFull port name (e.g. 'GigabitEthernet0/0', 'FastEthernet0', 'Serial0/1/0')
device_aYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
device_bYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false; the description goes beyond that by disclosing the precondition that ports must be free and by explaining exactly how cable="auto" chooses serial, console, straight-through or crossover, mirroring the Packet Tracer GUI. It does not say what happens when a port is already occupied (error vs. replacement), which is the one behavioral gap for a mutating tool.

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

Conciseness4/5

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

The core action is front-loaded, followed by preconditions and then the auto-cabling rules; nothing is buried. The three worked examples are helpful for phrasing but slightly pad a description that would read fine without them.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the description covers preconditions, discovery workflow and cable selection for a moderately parameterized mutation. Missing only the failure/recovery behavior on occupied ports or invalid names.

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

Parameters4/5

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

With 80% schema coverage the four device/port parameters are already documented, so the description's real contribution is the semantics of the undescribed 'cable' parameter — the auto-selection rules. It leaves the other enum values (fiber_singlemode, phone, coaxial, octal, etc.) unexplained, so it stops short of full coverage.

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

Purpose5/5

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

The opening sentence gives a specific verb (cable/connect) plus the objects (a port on each of two devices) and even the return value (the cable type used). It is trivially distinguishable from siblings such as delete_link or get_all_links.

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

Usage Guidelines5/5

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

It states a hard precondition (both ports must exist and be free) and routes the agent to get_interfaces_for_device to obtain valid port names, which is an explicit alternative for the discovery subtask. The examples further anchor the phrasing expected of inputs.

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

create_full_network_topologyCreate a Full Network TopologyA

Build a whole network in one call into the open Packet Tracer file (existing devices are kept). Same format export_network_topology returns, so exports can be rebuilt. Steps run in order: devices (+modules), links, host IP settings, then IOS configs; errors are collected, not fatal.

Format: { "description": "OSPF lab", "devices": [ {"name": "R1", "device_type": "router", "model": "2911", "x": 100, "y": 100, "modules": [{"slot": "0/0", "module": "HWIC-2T"}], "config": "hostname R1\ninterface Gi0/0\n ip address 192.168.1.1 255.255.255.0\n no shutdown"}, {"name": "SW1", "device_type": "switch", "model": "2960-24TT", "x": 300, "y": 100}, {"name": "PC1", "device_type": "pc", "model": "PC-PT", "x": 500, "y": 100} ], "links": [{"device_a": "R1", "port_a": "GigabitEthernet0/0", "device_b": "SW1", "port_b": "GigabitEthernet0/1"}, {"device_a": "PC1", "port_a": "FastEthernet0", "device_b": "SW1", "port_b": "FastEthernet0/1"}], "hosts": [{"name": "PC1", "port": "FastEthernet0", "ip_address": "192.168.1.10", "subnet_mask": "255.255.255.0", "default_gateway": "192.168.1.1"}] } Use full port names. cable defaults to "auto". Discover models with get_device_models and modules with get_device_model_details.

Examples:

  • "Build a 3-router OSPF lab with a LAN behind each router"

  • "Recreate the topology I exported earlier"

  • "Set up a router-on-a-stick lab with two VLANs"

NameRequiredDescriptionDefault
topologyYesTopology object (or its JSON string): description, devices, links, hosts -- see the docstring

Output Schema

NameRequiredDescription
linksNo
errorsNo
devicesNo

TDQS

A4.7/5.0
Behavior5/5

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

Adds real behavior beyond the annotations: execution order (devices+modules, links, host IPs, then IOS configs), partial-failure semantics ('errors are collected, not fatal'), and the additive nature ('existing devices are kept') which clarifies the non-destructive hint. It also flags an operational gotcha ('Use full port names') and a default ('cable defaults to auto') that an agent would otherwise have to discover by trial.

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

Conciseness4/5

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

The critical scope and retention caveat are front-loaded before the format block, and each section (behavior, format, discovery hints, examples) earns its place. The JSON example is long but is the highest-value content for a single-parameter bulk tool; minor trimming of the redundant host entry naming PC1 twice could still be done.

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

Completeness5/5

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

For a high-complexity bulk-mutation tool, the description covers preconditions (open file), retention behavior, ordering, error handling, format, and how to resolve model/module values. An output schema exists, so return values needn't be explained, and nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

Schema coverage is 100%, but the schema leaves most nested fields undocumented, so the description carries the real load: a full worked JSON body showing device/link/host shapes, the required device fields (name, device_type, model, x/y) and config-as-IOS-text usage. It exceeds the baseline by explaining field intent and cross-referencing get_device_models for model values.

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

Purpose5/5

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

Opens with a specific verb+resource+scope: 'Build a whole network in one call into the open Packet Tracer file', and immediately clarifies the retention semantics ('existing devices are kept'). It also distinguishes itself from the export sibling by naming the inverse relationship ('Same format export_network_topology returns'), so an agent can tell bulk-creation apart from the incremental add_device_to_network/connect_two_devices path.

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

Usage Guidelines4/5

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

Gives concrete selection contexts through the three examples ('Build a 3-router OSPF lab', 'Recreate the topology I exported earlier', 'router-on-a-stick lab with two VLANs') and the export-rebuild use case. It also routes the agent to sibling discovery tools (get_device_models, get_device_model_details) before calling. It stops short of explicitly saying when NOT to use it versus add_device_to_network/connect_two_devices for single-object edits.

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

create_new_networkCreate a New Empty NetworkA
Destructive

Close the current network and start a new, empty one without a save prompt.

CRITICAL: Unsaved changes to the current network are lost. Always ask "Discard the current network?" (or offer save_network_file first) and wait for the user's "yes" before invoking this tool.

Examples:

  • "Start a fresh topology"

  • "Clear the workspace"

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true, but the description adds what the annotations cannot: exactly what is lost (unsaved changes to the current network), that there is no automatic save prompt, and a mandatory confirmation protocol before calling. This is substantive context beyond structured fields.

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

Conciseness4/5

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

The critical warning and the confirmation instruction are front-loaded where they will be read first, and the sentences are tight. The two example utterances ('Start a fresh topology', 'Clear the workspace') are mildly redundant with the opening sentence and don't earn much space.

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

Completeness5/5

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

For a zero-parameter destructive tool with an output schema, everything an agent needs to act safely is present: the effect, the data-loss risk, and the required user confirmation step. Return values are covered by the output schema.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is nothing parameter-related the description could usefully add. It correctly stays silent on arguments rather than inventing any.

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

Purpose5/5

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

States a specific verb pair and resource: 'Close the current network and start a new, empty one.' The 'without a save prompt' qualifier distinguishes it from open_network_file and the single sentence makes the net effect unambiguous.

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

Usage Guidelines5/5

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

Explicitly routes the agent: ask the user 'Discard the current network?' or offer save_network_file first, and wait for a 'yes' before invoking. That is a named alternative plus a precondition, not just implied usage.

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

delete_annotationDelete an AnnotationA
Destructive

Delete a note or drawn shape from the workspace.

CRITICAL: Destructive. Confirm with the user before deleting.

Examples:

  • "Remove the old 'TODO' note"

NameRequiredDescriptionDefault
annotation_idYesAnnotation UUID from get_annotations

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=true, and the description reinforces this while adding a requirement the annotations do not carry: confirm with the user first. However, it omits whether deletion is permanent or undoable and what happens to the annotation's content or dependent references, which is material for an irreversible operation.

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

Conciseness4/5

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

Three short blocks – purpose, a flagged warning, and one example – with the destructive warning front-loaded ahead of the example. The example adds marginal value over the purpose sentence but is not wasteful; no filler prose.

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

Completeness4/5

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

With one fully documented parameter and an output schema handling return values, the definition covers what an agent needs to invoke it. The remaining gap is the absence of any statement about permanence or recovery for a destructive tool.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter is well documented in the schema, including the UUID pattern and its provenance ('Annotation UUID from get_annotations'). The description adds nothing beyond that, which is acceptable given the schema does the work, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and two concrete resources ('delete a note or drawn shape'), which cleanly separates it from the additive siblings add_text_note, add_line_annotation, and add_circle_annotation. It doesn't name any sibling explicitly, but the destructive verb makes the distinction obvious without opening another schema.

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

Usage Guidelines4/5

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

Provides a clear usage context ('Remove the old TODO note') and an explicit procedural precondition: confirm with the user before deleting. It stops short of naming alternatives or exclusions (e.g., 'to modify rather than remove a note, use edit_text_note'), so it is clear context without full routing guidance.

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

delete_device_from_networkDelete a Device from the NetworkA
Destructive

Delete a device and all of its links from the network.

CRITICAL: Destructive and irreversible (the device's configuration is lost). Always ask "Confirm deletion of [device]?" and wait for the user's "yes" before invoking this tool.

Examples:

  • "Delete R2"

  • "Remove the extra switch"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true; the description goes well beyond by stating irreversibility, the specific loss (device configuration), the cascading link removal, and the required user confirmation gate. This is exactly the extra behavioral context the annotations cannot carry.

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

Conciseness4/5

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

The destructive warning is front-loaded and the examples are short and functional, so every section earns its place. The ALL-CAPS "CRITICAL" block is slightly heavy-handed for a description but is justified by irreversibility.

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

Completeness5/5

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

An output schema exists, so return values need no explanation here. Combined with the disclosed irreversibility, cascade behavior, and confirmation protocol, an agent has everything needed to invoke this correctly and safely.

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

Parameters3/5

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

Schema description coverage is 100% and the single `name` parameter is fully documented in the schema, so the baseline of 3 applies. The examples ("Delete R2", "Remove the extra switch") loosely illustrate the name format but add no semantics beyond the schema's own description of display names.

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

Purpose5/5

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

Specific verb+resource ("Delete a device") with an explicit scope qualifier: "and all of its links" — which distinguishes it from the sibling delete_link and from erase_device_configuration. An agent can tell exactly what this removes without opening the schema.

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

Usage Guidelines4/5

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

It prescribes a concrete pre-invocation protocol: ask "Confirm deletion of [device]?" and wait for "yes". Examples map user utterances to the tool. It stops short of naming when a different tool is the right choice (e.g. delete_link vs erase_device_configuration), so it is not a full when/when-not treatment.

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

describe_ipc_classDescribe a Packet Tracer IPC ClassA
Read-only

Show an IPC class's inheritance and method signatures, (param types) -> return type plus the ExApp privilege each needs. Use with call_ipc_api.

Examples:

  • "What methods does a Router have for OSPF?" -> class_name="OspfProcess"

  • "How do I read a port's MAC address?" -> class_name="Port", name_filter="mac"

NameRequiredDescriptionDefault
class_nameYesIPC class, e.g. Router, CiscoDevice, HostPort, LogicalWorkspace, AppWindow
name_filterNoOnly methods whose name contains this text

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds real value beyond that by disclosing that results include inheritance, method signatures, parameter/return types, and the ExApp privilege required per method — a behavioral trait (privilege gating) that would otherwise be invisible.

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

Conciseness5/5

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

One sentence of specification followed by two compact examples; the output contract and the companion tool are front-loaded, and nothing is repeated from the schema.

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

Completeness4/5

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

With an output schema present, the return values need no elaboration, and the examples cover the main ambiguity (which class_name to use). It stops short of stating any precondition such as needing an active Packet Tracer session, which is the only notable gap.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns an extra point by demonstrating real argument values (class_name="OspfProcess", class_name="Port", name_filter="mac"), which clarifies that both class names and filters are arbitrary substrings rather than the enum-like lists in the schema.

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

Purpose5/5

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

The description states a precise verb and resource: 'Show an IPC class's inheritance and method signatures, (param types) -> return type plus the ExApp privilege each needs.' It even defines the output shape inline, and no sibling tool overlaps with class introspection, so disambiguation is implicit but complete.

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

Usage Guidelines4/5

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

'Use with call_ipc_api' establishes the workflow context in which this tool belongs, and the two examples show how a natural-language question maps to arguments. There is no explicit when-not guidance or named alternative, but the pairing instruction gives an agent enough to place the call.

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

edit_text_noteEdit a Text NoteB
Idempotent

Replace the text of an existing note.

Examples:

  • "Change the R1 LAN label to 10.1.1.0/24"

NameRequiredDescriptionDefault
textYes
annotation_idYesAnnotation UUID from get_annotations

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnly=false, idempotent=true, and destructive=false, so safety is covered. The description adds the one genuinely useful behavioral fact beyond that — 'Replace' means full overwrite of the text rather than append or partial edit — but says nothing about failure modes (missing annotation, wrong annotation type) or what happens to the prior text.

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

Conciseness4/5

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

One declarative sentence front-loads the operation, followed by a single relevant example — nothing wasted. It is arguably too lean rather than too long, but structurally it is clean.

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

Completeness3/5

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

With an output schema present and annotations covering safety and idempotency, the remaining burden is small, but the description still leaves open what a text note is versus other annotation types and what happens if the id is invalid. Adequate as a minimum, not complete.

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

Parameters3/5

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

Schema coverage is 50%: annotation_id is documented as coming from get_annotations, while 'text' carries only min/maxLength constraints with no meaning attached. The description's example ('Change the R1 LAN label to 10.1.1.0/24') illustrates the intent of the text parameter, but with half the schema undocumented this only reaches the baseline.

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

Purpose4/5

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

The description states a specific verb and resource ('Replace the text of an existing note'), which separates it from add_text_note and delete_annotation among the siblings. It does not explicitly name those siblings, but the word 'existing' plus 'replace' makes the operation unambiguous.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: 'existing' suggests you need an annotation_id first, and the schema note points at get_annotations, but the description never says when to use this instead of add_text_note or delete_annotation. The example gives a flavor of intended use without routing rules.

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

erase_device_configurationErase a Device's ConfigurationA
Destructive

Erase a Cisco device's startup-config ("write erase") and, by default, reload it so it boots with a blank configuration -- the classic way to reset lab gear. Prompts are answered automatically (the running config is NOT saved before reload).

CRITICAL: Destructive and irreversible. Always ask "Erase the configuration of [device]?" and wait for the user's "yes" before invoking this tool.

Examples:

  • "Wipe R1's configuration"

  • "Reset the switch to factory defaults"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
reloadNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations only say destructiveHint=true; the description adds the material details an agent actually needs — write erase semantics, auto-answered prompts, the fact that the running config is NOT saved before reload, and that the operation is irreversible. It also mandates a confirmation protocol before invoking.

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

Conciseness5/5

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

Front-loaded with the action, then the CRITICAL safety gate, then examples — each block earns its place with no filler. The confirmation instruction is exactly the kind of content worth spending tokens on for an irreversible operation.

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

Completeness5/5

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

A destructive two-parameter tool with an output schema and adequate annotations: the description covers what is destroyed, irreversibility, prompt handling, and the required user-confirmation step. Nothing an agent needs to invoke it safely is missing.

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

Parameters4/5

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

Coverage is 50%: 'name' is documented in the schema, while 'reload' has no schema description. The description compensates by explaining that reload is on by default and what that means (device boots blank), implying reload=false skips the reboot, though it never states that case explicitly.

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

Purpose5/5

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

States a specific verb and resource ('Erase a Cisco device's startup-config ("write erase")') plus the default reload behavior, which cleanly separates it from save_device_configuration, get_device_configuration, and delete_device_from_network.

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

Usage Guidelines4/5

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

Explains the intended scenario ('the classic way to reset lab gear') and gives two concrete invocation examples, and states that prompts are auto-answered. It does not explicitly contrast with siblings like delete_device_from_network or configure_device, so a 4 rather than a 5.

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

export_network_topologyExport the Network TopologyA
Read-only

Export the open network as a topology object: devices (type, model, position, installed modules, running-config), links, and host IPv4 settings. The result can be fed back to create_full_network_topology, saved as a study reference, or reviewed for mistakes.

Examples:

  • "Export my lab"

  • "Give me a summary of everything in this network including configs"

  • "Back up this topology as JSON"

NameRequiredDescriptionDefault
include_configsNo

Output Schema

NameRequiredDescription
hostsNoIPv4 settings for PCs/servers/laptops
linksNo
devicesNo
descriptionNoNetwork description (Packet Tracer's File > Network description)

TDQS

A4.1/5.0
Behavior4/5

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

readOnlyHint=true already tells the agent this is a safe read. The description adds real behavioral context beyond that: it is a whole-network snapshot rather than an incremental read, its output is round-trippable into create_full_network_topology, and it can include running-configs. It doesn't warn about payload size/verbosity on a large lab, which is the one practical trait an agent would want before calling.

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

Conciseness4/5

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

The core sentence is front-loaded and dense with useful detail, and the alternative-use sentence earns its place. Three examples is one more than needed — the 'export my lab' and 'back up this topology as JSON' examples cover essentially the same intent and could be trimmed.

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

Completeness4/5

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

An output schema exists, so return values needn't be explained, and readOnlyHint covers the safety profile; the description correctly spends its words on scope and downstream use instead. The only remaining gap is the include_configs semantics, which is the single thing an agent must get right to call it correctly.

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

Parameters3/5

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

The single parameter include_configs has 0% schema description coverage, so the description carries the burden — and it only hints at the behavior indirectly via the example 'including configs'. It never says what setting include_configs=false does (omits running-configs, lighter result) or that the default is true, leaving the agent to infer from the parameter name.

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

Purpose5/5

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

States a specific verb (export) and resource (the open network as a topology object), then enumerates exactly what is captured: devices with type/model/position/modules/running-config, links, and host IPv4 settings. That enumeration distinguishes it cleanly from the partial getters in the sibling list (get_devices_in_network, get_all_links, get_device_configuration) without needing to name them.

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

Usage Guidelines4/5

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

Gives three concrete use cases — feeding the result back to create_full_network_topology, saving as a study reference, and reviewing for mistakes — plus natural-language examples that map user intent to the tool. What's missing is an explicit exclusion, e.g. 'use get_devices_in_network if you only need the device list', which would fully settle the choice against similar-looking siblings.

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

get_activity_instructionsGet Activity InstructionsA
Read-only

If the open file is a Packet Tracer activity (.pka, e.g. a NetAcad CCNA lab), return its instruction pages as plain text: objectives, addressing table, and the tasks to complete.

This server cannot read an activity's answers, score or completion percentage (it does not hold Packet Tracer's ACTIVITY_WIZARD privilege). Use Check Results in Packet Tracer for grading. When helping a student, prefer explaining concepts and hinting over doing the graded tasks for them.

Examples:

  • "What does this activity ask me to do?"

  • "Read me the addressing table from the instructions"

  • "Explain task 3 of this lab"

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
pagesNoInstruction pages as plain text
page_countNo
is_activityYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true, and the description is consistent with that, but it goes well beyond them by disclosing a capability limit (the server lacks Packet Tracer's ACTIVITY_WIZARD privilege, so no answers or scores are available) and the shape of the payload (plain-text instruction pages). That is exactly the kind of constraint an agent cannot infer from structured fields.

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

Conciseness4/5

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

The core behaviour is front-loaded in the first sentence, followed by the limitation and then three illustrative queries. Every block is useful, though the example list adds length that a shorter one-line sample could have covered.

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

Completeness5/5

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

For a no-argument read tool with an output schema, the description supplies everything needed: the trigger condition, what the returned text contains, what it deliberately cannot do, and where the agent should redirect grading questions. Nothing necessary for a correct call is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; the description implicitly conveys that the call operates on whatever activity file is currently open rather than requiring an identifier. There is no additional parameter nuance to document.

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

Purpose5/5

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

The description names a specific verb and resource (return instruction pages of the open .pka activity as plain text) and enumerates the content returned: objectives, addressing table, and tasks. It is clearly distinct from siblings such as get_pt_information or send_simple_pdu, so an agent can route to it without inspecting other schemas.

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

Usage Guidelines5/5

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

It gives an explicit precondition (the open file must be a Packet Tracer activity, .pka) and an explicit negative case: grading, answers and completion percentage are out of scope, with the alternative named ('Use Check Results in Packet Tracer'). It also adds a behavioural preference for student-facing use (explain and hint rather than completing graded tasks), which is genuine usage guidance.

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

get_annotationsGet Workspace AnnotationsA
Read-only

List the notes and drawn shapes on the logical workspace with their ids, positions and note text.

Examples:

  • "What notes are on my topology?"

  • "Find the label that says 'LAN A'"

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

readOnlyHint=true already tells the agent this is a safe read, and the output schema covers return shape, so the bar is lower; the description still adds meaningful scope ('logical workspace', covering both notes and drawn shapes) rather than just notes. It omits anything about ordering, counts, or whether the result spans multiple workspaces.

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

Conciseness4/5

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

One front-loaded sentence carries the substance, and the examples are short. The example block is somewhat padded for a zero-argument tool, but each line does illustrate a distinct retrieval intent (browse vs. lookup by label).

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

Completeness4/5

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

With an output schema, zero parameters, and a readOnly annotation, almost everything an agent needs is already structured. The description is complete enough to invoke correctly; minor omissions about result ordering or cross-workspace scope are not blocking.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The description correctly signals a parameter-free call by not implying any filtering arguments.

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

Purpose5/5

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

Specific verb+resource ('List the notes and drawn shapes') with explicit scope ('on the logical workspace') and the fields returned (ids, positions, note text). The read-oriented verb naturally contrasts with the write siblings add_text_note, add_line_annotation, edit_text_note and delete_annotation.

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

Usage Guidelines4/5

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

The two example queries ('What notes are on my topology?', 'Find the label that says LAN A') give clear situational context for when to call it. It stops short of naming an explicit alternative or stating when not to use it, so it is context-clear rather than fully prescriptive.

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

get_command_historyGet Command HistoryA
Read-only

Return Packet Tracer's command log: commands typed into device terminals (by a person in the CLI tab, or by send_terminal_command/verify_connectivity; send_cli_command and configure_device are not logged), with time, device and prompt (so the mode is visible, e.g. "R1(config-if)#"). Great for reviewing how a lab was solved, spotting a typo, or building a study sheet of the commands used. Most recent last.

Examples:

  • "What commands did I type on R1?"

  • "Make me a cheat sheet from the commands I used in this lab"

  • "Which command did I mistype?"

NameRequiredDescriptionDefault
nameNoOnly this device (display name); omit for all devices
limitNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, and the description is consistent with that. Beyond annotations it adds genuinely useful behavior: the ordering (most recent last), the exact fields captured (time, device, prompt/mode), and the sourcing rules for the log. It does not mention truncation behavior when results exceed the default limit, which matters for a log-shaped return.

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

Conciseness4/5

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

Front-loaded with the core definition and scoping rules, then use cases, then compact examples. The parenthetical about logging sources is dense but every clause carries information; only the example block is mildly redundant with the stated use cases.

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

Completeness4/5

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

An output schema exists, so return-value shape needn't be explained, and the description covers sourcing, ordering, and result content well. The remaining gap is the undocumented `limit` parameter and resulting truncation semantics, which an agent needs to call it correctly on a large log.

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

Parameters3/5

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

Schema coverage is only 50%: the `name` filter is documented in schema but `limit` is undocumented anywhere. The description reinforces the per-device filter through its examples ("What commands did I type on R1?") but says nothing about the limit or default of 200 / max 2000, leaving a parameter the agent must set blind.

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

Purpose5/5

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

States a specific verb and resource (return the command log of commands typed into device terminals) and precisely scopes what counts by naming the populating tools (send_terminal_command, verify_connectivity) and the excluded ones (send_cli_command, configure_device). An agent can distinguish this from the sibling log/command tools without opening any schema.

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

Usage Guidelines4/5

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

Gives concrete when-to-use scenarios (reviewing how a lab was solved, spotting a typo, building a cheat sheet) backed by user-style example queries, and implies a when-not by explicitly stating which sibling commands are not captured. It stops short of naming a specific alternative tool (e.g. get_console_log) for the excluded logs, so routing in that direction is left to inference.

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

get_console_logGet Console Log for a DeviceA
Read-only

Return the device's console/terminal buffer as shown in its CLI tab (or the PC's Command Prompt): boot messages, %LINK/%LINEPROTO and other syslog messages, and recent command output.

Examples:

  • "Show R1's console messages"

  • "Did any interface go down on the switch?"

  • "What happened on PC1's command prompt?"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
max_charsNoReturn at most this many trailing characters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The readOnlyHint annotation already establishes the safety profile. The description adds useful behavioral context by explaining that this returns the console/terminal buffer, including boot and syslog messages, rather than executing new commands. It still does not discuss truncation behavior or buffer limits in the description, though max_chars is documented in the schema.

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

Conciseness5/5

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

The definition is front-loaded with the core purpose, followed by concise, relevant examples. Every sentence contributes to understanding what the tool returns and when to use it.

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

Completeness5/5

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

An output schema exists, annotations cover the read-only nature, and parameter descriptions are complete in the schema. The description supplies enough context about the console buffer contents and usage examples for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters are already documented. The description's examples illustrate device names like R1, PC1, and switch, but add little beyond the schema for the name and max_chars parameters.

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

Purpose5/5

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

The description uses a specific verb and resource: return the device's console/terminal buffer as shown in the CLI tab or Command Prompt. It identifies the exact content returned (boot messages, syslog, recent command output), which distinguishes it from generic command execution or command-history tools.

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

Usage Guidelines4/5

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

The examples clearly indicate when to use the tool, such as inspecting console messages, checking whether an interface went down, or reviewing PC command prompt output. It does not explicitly name alternatives or when not to use it, but the usage context is clear.

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

get_device_configurationGet a Device's ConfigurationA
Read-only

Return a Cisco device's running-config (default) or startup-config as text. Useful for reviewing a lab, comparing running vs startup ("did I save?"), or exporting a config to reuse.

Examples:

  • "Show me R1's running config"

  • "Is SW1's startup config the same as its running config?"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
sourceNorunning

Output Schema

NameRequiredDescription
configYes
deviceYes
sourceYesrunning | startup

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds useful context: output is plain text, running is the default source, and the tool supports comparing the two configs. It says nothing about config size limits, truncated output, or behavior when a device has no startup config, which are the kinds of operational details the annotations do not supply.

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

Conciseness4/5

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

Front-loaded with the core behavior in the first sentence, followed by compact use cases. The two example quotes largely restate the use cases already listed, adding slight redundancy, but the whole thing stays short and scannable.

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

Completeness4/5

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

An output schema exists, so return-value detail is not required, and the description correctly covers source selection and default behavior. What's missing is guidance on the relationship to adjacent tools (save_device_configuration, erase_device_configuration, send_cli_command), which matters given the crowded sibling set. For a simple two-parameter read tool, it is otherwise sufficient to call correctly.

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

Parameters4/5

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

Schema coverage is 50%: `name` is documented in the schema, but `source` has only an enum and default with no description. The description compensates by explaining that running-config is the default and startup-config is the alternative, which fills the exact gap in the schema. It adds no further detail on `name` formatting, though the schema already handles that.

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

Purpose4/5

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

States a specific verb and resource: 'Return a Cisco device's running-config (default) or startup-config as text.' The default behavior is called out explicitly, so an agent knows what happens when `source` is omitted. It does not explicitly differentiate itself from close siblings like save_device_configuration or send_cli_command, which keeps it from a 5.

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

Usage Guidelines4/5

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

Gives concrete usage contexts (reviewing a lab, comparing running vs startup, exporting) plus two worked example requests that map natural language to the call. There is no explicit 'when not to use' or pointer to an alternative sibling such as send_cli_command or save_device_configuration, so it stops short of a 5.

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

get_device_model_detailsGet Device Model Details (Slots and Modules)A
Read-only

Show a device's expansion slots (installed module and its ports, or empty) and every module model it supports with Packet Tracer's description. Use before add_module_to_device.

Examples:

  • "What modules can I add to R1?"

  • "Which slots on the 2911 are free?"

  • "Does this router have serial interfaces?"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')

Output Schema

NameRequiredDescription
modelYes
slotsYes
deviceYes
supported_modulesYes

TDQS

A4.1/5.0
Behavior4/5

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

readOnlyHint=true already signals that this is a safe read, so the description only needs to add scope, which it does: it reveals that empty slots are reported as empty and that module descriptions come from Packet Tracer. It does not discuss failure modes (for example, an unknown device name), but that is a minor gap given the annotations and the output schema.

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

Conciseness4/5

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

The core behavior is front-loaded in the first sentence, and the examples follow as concrete usage illustrations. The examples are useful rather than filler, though the leading sentence is long and could be split for faster scanning.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, and the single parameter is fully documented in the schema. Naming the follow-up tool add_module_to_device closes the workflow loop; only edge-case behavior (invalid device name, models with no slots) is unaddressed.

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

Parameters3/5

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

Schema coverage is 100% and there is a single required parameter, so the schema already carries the parameter meaning (device display name such as 'Router0'). The description only implies it through "a device's", so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: it shows a device's expansion slots (including whether a module and its ports are installed, or the slot is empty) plus all module models the device supports. This is clearly distinct from the sibling get_device_models, which enumerates models rather than a single device's slots.

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

Usage Guidelines4/5

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

"Use before add_module_to_device" gives a concrete workflow trigger and names the follow-up tool, and the three example questions show the situations this tool answers. There is no explicit statement of when not to use it, but the context is unambiguous.

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

get_device_modelsGet Available Device ModelsA
Read-only

List the device models Packet Tracer offers for a device type. Use one of these model strings with add_device_to_network.

Examples:

  • "Which router models can I add?"

  • "List the available switch models"

  • "What PC models does Packet Tracer have?"

NameRequiredDescriptionDefault
device_typeYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

readOnlyHint=true already declares this is a safe, non-mutating read, and an output schema exists, so return shape need not be explained. The description adds the useful workflow fact that returned values are strings intended for add_device_to_network. It does not mention whether an invalid/empty device type yields empty results or an error, which is the remaining behavioral gap.

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

Conciseness4/5

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

Front-loaded with the purpose in the first sentence, followed by the downstream usage, then short examples. The three examples are slightly redundant with each other but each maps to a distinct user phrasing, so they earn their place as retrieval triggers.

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

Completeness4/5

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

With annotations covering safety, an output schema covering returns, and a single enum-constrained required parameter, the description covers what an agent needs to select and call it. Only the failure/empty-result behavior for unusual device types is unaddressed.

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

Parameters3/5

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

Schema coverage is 0%, but the single parameter is fully constrained by an enum of ~50 device types, which is self-documenting. The description confirms the parameter's meaning as the device type being queried, but does not clarify whether an unsupported string is rejected or returns nothing. Adequate but not compensating fully for the lack of field text.

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

Purpose4/5

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

States a specific verb and resource: "List the device models Packet Tracer offers for a device type." An agent immediately understands the scope is discovery of model strings per category. It does not explicitly distinguish itself from the sibling get_device_model_details, which is the nearest potential confusion point.

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

Usage Guidelines4/5

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

Explicitly routes the output to add_device_to_network ("Use one of these model strings with add_device_to_network"), which tells the agent this is the prerequisite discovery step before device creation. The three sample user phrasings reinforce the triggering context. No explicit exclusions or guidance about when to prefer get_device_model_details instead.

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

get_devices_in_networkGet All Devices in the NetworkA
Read-only

List every device in the active Packet Tracer network: name, IPC class, model, device type, power state and logical-workspace x/y position. Packet Tracer's auto-created power distribution device is hidden unless include_infrastructure=true.

Examples:

  • "What devices are in my Packet Tracer network?"

  • "List all routers and switches"

  • "Show me the topology"

NameRequiredDescriptionDefault
include_infrastructureNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

readOnlyHint=true already declares the safety profile, so the description's added value is the disclosure that Packet Tracer's auto-created power distribution device is hidden by default — a genuinely non-obvious behavioral trait that affects results. It does not cover scale/pagination or whether the list is a live snapshot.

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

Conciseness4/5

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

Front-loaded with the core action and return fields, then the one behavioral caveat, then examples. The examples are somewhat redundant and 'List all routers and switches' mildly implies a filtering capability this tool lacks, so there is a little slack.

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

Completeness5/5

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

An output schema exists so return-value detail is already structured, and the readOnly annotation covers safety. With purpose, parameter meaning and the hidden-device caveat all present, nothing needed to call this correctly is missing.

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

Parameters5/5

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

The single parameter has 0% schema description coverage, and the description fully compensates by naming the exact device class it governs and the default-hidden behavior: infrastructure is excluded unless include_infrastructure=true. An agent can set it correctly without touching the schema.

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

Purpose4/5

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

States a specific verb and resource — 'List every device in the active Packet Tracer network' — and even enumerates the fields returned (name, IPC class, model, type, power state, position). The scope is clearly narrower than siblings like get_all_links or get_interfaces_for_device, though no sibling is named explicitly.

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

Usage Guidelines4/5

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

Three sample user queries ('What devices are in my Packet Tracer network?', 'List all routers and switches', 'Show me the topology') give concrete intake contexts for when to pick this tool. There are no explicit exclusions or alternative-tool routing, and 'Show me the topology' arguably overlaps with get_all_links.

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

get_interfaces_for_deviceGet Interfaces for a DeviceA
Read-only

List a device's ports: name, IPC class, link/protocol state, MAC, IPv4 address/mask (host ports), and the remote port name if a cable is attached.

Examples:

  • "What interfaces does R1 have?"

  • "Which ports on the switch are connected?"

  • "Show PC0's IP address"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

readOnlyHint=true already declares the safe-read profile, so the description's added value is the field inventory, including the conditional notes that IPv4 is a host-port field and the remote port name appears only when a cable is attached. It says nothing about failure behavior for unknown device names or about how unconnected ports are represented.

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

Conciseness4/5

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

The field inventory is front-loaded in the first sentence and the examples are each a single line, so nothing is buried. The field enumeration is dense but every item maps to real returned data rather than filler.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and one fully documented parameter is the entire input surface. What remains unstated is behavior on a nonexistent device or empty port list, a minor but real gap for an agent planning recovery.

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

Parameters3/5

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

Schema coverage is 100% with an explicit description of 'name' as the Packet Tracer display name, so the schema carries the parameter semantics. The examples reinforce the naming convention (R1, PC0) but the description adds no details beyond what the schema states.

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

Purpose5/5

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

Specific verb 'List' applied to a precise resource ('a device's ports') with the returned fields enumerated. It is clearly distinguishable from siblings such as get_all_links (cables) and get_device_configuration (config), which matters in a 45-tool namespace.

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

Usage Guidelines4/5

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

Three natural-language example requests ('What interfaces does R1 have?', 'Which ports on the switch are connected?', 'Show PC0's IP address') make the intended call contexts concrete. It stops short of naming alternatives or stating when not to use it versus get_all_links or get_device_configuration.

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

get_pt_informationGet Packet Tracer InformationA
Read-only

Connect to Cisco Packet Tracer over IPC and report its version, the IPC API spec in use, device/link counts, workspace mode (logical/physical, realtime/simulation) and the open file. Call this first to confirm the connection works.

Examples:

  • "Is Packet Tracer connected?"

  • "What version of Packet Tracer is running?"

  • "How many devices are in my network?"

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
fileNoSaved filename of the active network, if any
link_countYesLinks in the active network
pt_versionNoPacket Tracer version reported over IPC (e.g. '9.0.1.0858')
server_uidNoIPC server instance UUID
device_countYesDevices in the active network
ipc_api_specYesBundled IPC API spec in use
logical_modeNoTrue when the Logical workspace is showing
simulation_modeNoTrue when in Simulation mode (False = Realtime)

TDQS

A4.4/5.0
Behavior4/5

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

readOnlyHint=true already covers the safety profile, so the bar is lower. The description adds real context beyond the annotation: it discloses the IPC transport and frames the call as a connectivity probe, implying failure is a meaningful outcome. It stops short of saying what an error looks like, but the added value is genuine.

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

Conciseness4/5

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

The core sentence is front-loaded and dense with useful detail, and 'call this first' follows immediately. The three example utterances are mildly redundant given the enumeration above them, but each maps to a distinct user phrasing rather than restating the same one.

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

Completeness5/5

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

An output schema exists, so return-shape detail is optional, and the description still names the reported fields for fast scanning. For a zero-parameter read-only probe the description covers purpose, ordering, and transport, leaving nothing an agent needs to call it correctly.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. Consistently, the description claims no argument behavior it would need to explain.

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

Purpose5/5

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

The description uses a specific verb ('Connect ... and report') against a named resource (Cisco Packet Tracer over IPC) and enumerates exactly what comes back: version, IPC API spec, device/link counts, workspace mode, open file. That enumeration distinguishes it from siblings like get_devices_in_network, which lists devices rather than reporting aggregate counts.

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

Usage Guidelines4/5

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

'Call this first to confirm the connection works' gives an explicit ordering rule, and the sample user questions ('Is Packet Tracer connected?', 'How many devices are in my network?') map the tool to concrete intents. No exclusion or alternative-tool guidance is offered, keeping it short of a 5.

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

get_simulation_event_detailsGet Simulation Event DetailsA
Read-only

Explain one Simulation-mode event the way Packet Tracer's PDU Information window does: the device's OSI-layer decisions in plain English ("The frame destination MAC address is not in the MAC table. The Switch floods the frame...") plus the inbound and outbound headers decoded field by field (Ethernet, 802.1Q, IP, ICMP, ARP, TCP/UDP, STP, OSPF, DHCP, ...). Great for learning why a packet was forwarded or dropped.

Examples:

  • "Why was event 2 dropped?"

  • "What does the switch do with the frame at event 1?"

  • "Show me the IP and Ethernet headers of the ping"

NameRequiredDescriptionDefault
indexYesEvent index from get_simulation_events

Output Schema

NameRequiredDescription
timeYesSimulation time of the event
indexYes
sourceNo
statusYessent | accepted | dropped | buffered | collided | in_transit | not_forwarded | unexpected
protocolYesTraffic type label, e.g. ICMP, ARP, OSPF, STP
at_deviceNo
decisionsNoPacket Tracer's OSI-layer explanation of what the device did
destinationNo
from_deviceNo
inbound_pduNoHeaders as received, outermost first
outbound_pduNoHeaders as sent, outermost first

TDQS

A4.3/5.0
Behavior4/5

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

The readOnlyHint annotation already covers the safety profile. The description adds useful behavioral context by explaining that it returns plain-English OSI-layer reasoning plus inbound and outbound headers decoded field by field, which tells the agent what to expect beyond a simple event record.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by a parenthetical example and three concise usage examples. Every sentence contributes to explaining what the tool does and when to use it.

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

Completeness5/5

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

With an output schema, readOnlyHint annotation, and full schema description coverage, the description provides sufficient context for an agent to call the tool correctly. It explains the tool's output and references the sibling tool for obtaining the required index.

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

Parameters3/5

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

The single parameter has 100% schema description coverage, including 'Event index from get_simulation_events'. The description does not add further parameter details, so the schema does the heavy lifting and a baseline 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb and resource: it explains one Simulation-mode event in the style of Packet Tracer's PDU Information window. It distinguishes itself from get_simulation_events by detailing OSI-layer decisions and decoded headers rather than merely listing events.

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

Usage Guidelines4/5

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

The examples make clear when to use it, such as asking why an event was dropped or what a switch does with a frame. However, it does not explicitly state when not to use the tool or name alternatives beyond the implicit reference to get_simulation_events in the schema.

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

get_simulation_eventsGet Simulation EventsA
Read-only

List Simulation-mode events (the Event List): time, the device the PDU is at, where it came from, protocol, and what happened (sent, accepted, dropped, buffered...).

Examples:

  • "Where did the ping go?"

  • "Show only the ARP events"

  • "Did any packet get dropped?"

NameRequiredDescriptionDefault
limitNoMax events to return
startNoFirst event index
protocolNoOnly this protocol, e.g. ICMP, ARP, OSPF, STP, DHCP

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

readOnlyHint=true already establishes the safety profile, so the description only needs to add context. It does add the scope constraint that these are Simulation-mode events (not live/realtime data) and enumerates the event outcome types. It omits whether simulation must be running/stepped first, how events are ordered, and the hard 500-event cap — all behavior an agent would want before calling.

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

Conciseness4/5

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

Front-loaded with purpose and the returned fields in one tight sentence, then examples. The examples earn their place by mapping to concrete agent intents, though the third one ('Did any packet get dropped?') maps to no parameter and is the weakest.

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

Completeness4/5

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

An output schema exists, so return values needn't be explained, and the parameter surface is fully documented. The remaining gap is workflow context — this tool sits among set_simulation_mode, step_simulation, and reset_simulation, and the description never says the simulation must be in a stepped state for events to exist.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents limit, start, and protocol including protocol examples. The description's 'Show only the ARP events' example loosely reinforces the protocol filter but adds no syntax or format detail beyond the schema. Baseline 3 applies.

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

Purpose4/5

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

Specific verb+resource: 'List Simulation-mode events (the Event List)' followed by an enumeration of the fields returned (time, device, origin, protocol, outcome). The parenthetical ties it to the Packet Tracer UI concept, which helps recognition. It does not distinguish itself from the sibling get_simulation_event_details, which an agent could easily confuse it with.

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

Usage Guidelines3/5

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

The three example questions ('Where did the ping go?', 'Show only the ARP events', 'Did any packet get dropped?') imply realistic usage contexts, which is better than nothing. However, usage is only implied — there is no explicit when-to-use statement and no exclusion or routing to the obvious alternatives (get_simulation_event_details, get_console_log).

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

open_network_fileOpen a Network FileA
Destructive

Open a .pkt (network) or .pka (activity) file. Returns Packet Tracer's result code.

CRITICAL: Replaces the open network; unsaved changes may be lost. Confirm with the user first.

Examples:

  • "Open ~/labs/ospf.pkt"

  • "Load the activity file I downloaded"

NameRequiredDescriptionDefault
pathYesAbsolute path to a .pkt/.pka file on the Packet Tracer host

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

The annotations already flag destructiveHint=true, and the description adds the concrete consequence beyond the flag: the open network is replaced and unsaved changes may be lost, plus a required user-confirmation step. That is exactly the extra context the annotation cannot convey, and it is consistent with the destructive hint.

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

Conciseness4/5

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

The destructive warning is front-loaded and clearly separated from the functional sentence. The two examples are short but partly redundant with the parameter description, adding some length without much new information.

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

Completeness5/5

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

For a single-parameter destructive tool with an output schema (so return values need no explanation) and full annotation coverage, the description supplies everything an agent needs: accepted file types, the destructive consequence, and the confirmation requirement.

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

Parameters3/5

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

Schema coverage is 100% and the single path parameter is already documented as an absolute path to a .pkt/.pka file, so the schema carries the burden. The examples add mild format guidance but never clarify whether tilde paths are accepted, and the '~' example mildly conflicts with the schema's 'absolute path' wording.

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

Purpose5/5

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

States a specific verb (open) and resource (a .pkt/.pka network or activity file), with scope that clearly distinguishes it from save_network_file and create_new_network. The added note that it returns Packet Tracer's result code further pins down what the caller gets.

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

Usage Guidelines4/5

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

Gives explicit preconditions (confirm with the user first, because the currently open network is replaced) and illustrates with two realistic invocation examples. It stops short of naming an alternative sibling such as create_new_network or save_network_file for the case where the user doesn't want to replace the current file.

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

remove_module_from_deviceRemove a Module from a DeviceA
Destructive

Remove the module in a slot. The device is power-cycled; cables on the module's ports are removed.

CRITICAL: Destructive. Confirm with the user ("Remove the module in [slot] of [device]?") first.

Examples:

  • "Take the serial card out of R1 slot 0/0"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
slotYesSlot path, e.g. '0/0' (see get_device_model_details)

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Although annotations already mark the tool as destructive, the description adds important behavioral detail beyond them: the device is power-cycled and cables on the module's ports are removed. It also supplies a confirmation script, which is valuable for a destructive operation.

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

Conciseness5/5

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

The description is front-loaded with the action and side effects, then gives a critical warning and one concise example. Every sentence earns its place and nothing is wasted.

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

Completeness5/5

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

Given an output schema, complete parameter descriptions, and destructive annotations, the description supplies the remaining needed context: side effects, confirmation requirement, and an example. An agent has enough information to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and both required parameters are documented there. The description repeats "slot" in the confirmation prompt but adds no syntax, constraints, or format details beyond the schema, so baseline 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb and resource ("Remove the module in a slot") and immediately clarifies scope. It is clear what the tool does, but it does not explicitly name the inverse sibling add_module_to_device or otherwise differentiate among module-related operations.

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

Usage Guidelines4/5

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

It provides a concrete usage example and a mandatory user-confirmation step, giving the agent clear operational context. However, it does not explicitly state when to use this versus add_module_to_device or other module tools, so it lacks full alternative-selection guidance.

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

rename_deviceRename a DeviceA
Idempotent

Change a device's display name (the name used by all other tools). This does not change the IOS hostname; use send_cli_command with "hostname X" for that.

Examples:

  • "Rename Router0 to R1"

  • "Call PC0 'Accounting-PC'"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
new_nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the mutation profile is known. The description adds important scope context that the display name is used by all other tools and that the IOS hostname is unaffected, though it does not discuss permissions or failure behavior.

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

Conciseness5/5

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

The description is front-loaded with the core behavior and scope caveat, followed by two compact examples. Every sentence adds useful information with no repetition.

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

Completeness5/5

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

Given the annotations, full schema coverage, and an output schema, the description contains what an agent needs to invoke the tool correctly. The critical distinction between display name and hostname is covered explicitly.

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

Parameters4/5

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

Schema coverage is 100%, so a baseline of 3 is appropriate. The examples add useful meaning by showing that one argument is the current device name and the other is the new display name, especially since the schema descriptions for name and new_name are identical and do not distinguish them.

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

Purpose5/5

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

The description states a specific verb and resource: it changes a device's display name. It also distinguishes this from changing the IOS hostname, which prevents confusion with send_cli_command and other device-configuration siblings.

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

Usage Guidelines5/5

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

It explicitly names the alternative for hostname changes: use send_cli_command with "hostname X". The examples further clarify the intended use with concrete rename requests.

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

reset_simulationReset the SimulationA

Clear the Simulation-mode event list and restart simulation time (Reset Simulation). Device configurations are not changed.

Examples:

  • "Clear the event list"

  • "Start the simulation over"

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false; the verb 'Clear' is consistent with a write, and the description usefully narrows the blast radius by stating device configurations survive. It does not say whether cleared events are recoverable or whether simulation time restart affects pending events, which would have fully closed the loop.

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

Conciseness4/5

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

The action and its scope limit are front-loaded in the first two sentences. The example list is slightly redundant — 'Clear the event list' largely restates the opening clause — but remains short and non-padding.

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

Completeness4/5

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

With an output schema present, return-value description is unnecessary, and annotations cover the safety profile. The only gap is precondition state (must Simulation mode be active?) and the permanence of the cleared events, both of which an agent could plausibly need.

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

Parameters4/5

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

Zero parameters, so there is nothing to disambiguate and the baseline applies. The description's note that configurations are untouched is the only semantic context needed for a no-arg call.

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

Purpose4/5

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

States a concrete compound action — clearing the Simulation-mode event list and restarting simulation time — plus an explicit scope limit ('Device configurations are not changed'). An agent can tell this apart from get_simulation_events or step_simulation, though no sibling is named outright.

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

Usage Guidelines3/5

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

The example utterances ('Clear the event list', 'Start the simulation over') imply when to reach for it, and the 'device configurations are not changed' line rules out config-reset intent. However, it never says whether Simulation mode must already be active, nor does it point to set_simulation_mode or step_simulation as alternatives.

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

save_device_configurationSave a Device's ConfigurationA
Idempotent

Save a Cisco device's running-config to startup-config ("write memory" / "copy run start") so it survives a reload or power cycle. Returns true when IOS reports [OK].

Examples:

  • "Save R1's config"

  • "Make sure all my changes on SW1 survive a reload"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: it explains the persistence semantics (survives reload/power cycle) and the return contract (true when IOS reports [OK]). It stops short of failure modes — e.g. whether it errors on non-Cisco devices, powered-off devices, or unsupported models.

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

Conciseness5/5

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

Two front-loaded sentences carry the purpose, the persistence rationale, and the return value; the examples are short and each earns its place by mapping to plausible user phrasing. No filler.

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

Completeness4/5

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

An output schema exists and the description still summarizes the true/[OK] return, and the single parameter is fully documented. The remaining gap is environmental preconditions (device must be a Cisco device and presumably reachable/powered on) that an agent would need to avoid failed calls.

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

Parameters3/5

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

Schema coverage is 100% and the single 'name' parameter is documented in-schema as the Packet Tracer display name with examples. The description adds nothing about the parameter, so the baseline 3 applies — the schema does all the work.

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

Purpose5/5

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

States a specific verb (save), the exact resource pair (running-config to startup-config), and grounds it in the real IOS commands ("write memory" / "copy run start"). This clearly separates it from siblings like get_device_configuration, configure_device, and erase_device_configuration.

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

Usage Guidelines4/5

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

The two examples ("Save R1's config", "Make sure all my changes on SW1 survive a reload") give concrete when-to-use context that maps well to agent intent matching. However, it never names alternatives or exclusions — notably the sibling save_network_file (saving the .pkt file) and configure_device (which makes the changes this tool persists) are not disambiguated.

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

save_network_fileSave the Network to a FileA

Save the current network as a .pkt file at an absolute path, without a dialog. Overwrites an existing file at that path. Returns the saved path.

Examples:

  • "Save this topology to ~/labs/campus.pkt"

  • "Back up the network"

NameRequiredDescriptionDefault
pathYesAbsolute path to a .pkt/.pka file on the Packet Tracer host

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false; the description adds genuinely new behavioral context by disclosing that an existing file at that path is overwritten without prompting, and that the saved path is returned. It stops short of stating failure modes (invalid extension, unwritable directory) or whether the network must already be open.

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

Conciseness5/5

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

Two front-loaded sentences carry the core action and the overwrite caveat, followed by a short examples block that is clearly delimited. No sentence is redundant with the schema or annotations.

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

Completeness5/5

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

Output schema exists, so return values need no elaboration — yet the description still notes the saved path is returned. For a one-parameter save tool with annotations covering the safety profile and overwrite disclosed, an agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the single path parameter is already documented as an absolute .pkt/.pka path on the host, so the description only echoes that. Baseline 3 applies when the schema carries the parameter semantics.

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

Purpose5/5

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

States a specific verb and resource ("Save the current network as a .pkt file") plus a scope qualifier ("without a dialog", "at an absolute path") that separates it from the GUI-style save and from siblings like export_network_topology or save_device_configuration. An agent can tell what this does and what it does not do without opening any schema.

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

Usage Guidelines3/5

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

The two examples ("Save this topology to ~/labs/campus.pkt", "Back up the network") imply when to reach for it, but there is no explicit routing guidance — nothing says when to prefer export_network_topology, open_network_file, or create_new_network instead, and no prerequisites are named.

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

send_cli_commandSend CLI Command to a Cisco DeviceA
Destructive

Send IOS commands to a Cisco device (router, switch, multilayer switch, ASA, WLC...) and return each command's status and output. Works even before the device finishes booting (boot is skipped).

  • Separate multiple commands with newlines.

  • config_command=false (default): privileged exec mode (e.g. "show ip interface brief").

  • config_command=true: configuration mode -- DO NOT include "enable", "configure terminal" or "end". Sub-modes carry over, so "interface Gi0/0\nip address 10.0.0.1 255.255.255.0\nno shutdown" works.

  • status is "invalid"/"incomplete"/"ambiguous" when IOS rejected a command.

CRITICAL: Can modify device state. Review commands carefully before executing, especially when config_command=true.

Examples:

  • "Run 'show ip route' on R1"

  • "Configure Gi0/0 on R1 with 10.0.0.1/24 and bring it up"

  • "Show the running config of SW1"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
commandsYes
config_commandNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations only flag readOnlyHint=false / destructiveHint=true; the description goes well beyond by stating it works before boot completes, that sub-modes carry over between commands, and that status can be 'invalid'/'incomplete'/'ambiguous' when IOS rejects input. The CRITICAL state-mutation warning reinforces the destructive annotation rather than contradicting it.

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

Conciseness5/5

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

Front-loaded purpose sentence, then tight bullets for the multi-command and mode rules, a bolded safety warning, and short natural-language examples. Every line maps to a decision the caller has to make; there is no filler.

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

Completeness4/5

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

Output schema and annotations already cover return shape and destructiveness, and the description handles the mode semantics thoroughly. It is silent on failure handling for an unknown or powered-off device name and on any confirmation/rollback behavior, which are the remaining gaps for a destructive tool.

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

Parameters5/5

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

Schema coverage is only 33% (commands and config_command are bare), and the description fully compensates: newline separation for multiple commands, the default and meaning of config_command, sub-mode persistence, and the exact command prefix to omit. Only 'name' relies on the schema, and that carries a description.

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

Purpose4/5

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

A specific verb+resource pair — 'send IOS commands to a Cisco device... and return each command's status and output' — with the supported device families enumerated. It never distinguishes itself from the neighboring send_terminal_command or configure_device tools, so an agent must guess which of the three to pick.

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

Usage Guidelines4/5

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

The two operating modes are spelled out with concrete guidance: config_command=false targets privileged exec, config_command=true targets configuration mode with an explicit 'DO NOT include enable/configure terminal/end'. There is clear context but no exclusion rules relative to sibling tools that also push commands to devices.

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

send_simple_pduSend a Simple PDU (ICMP)A

Create a Simple PDU (the envelope tool: an ICMP echo) from one device to another. In Simulation mode, step_simulation then moves it hop by hop and get_simulation_events shows where it went -- including any ARP it triggers. Returns the PDU's index in the user-created PDU list.

Examples:

  • "Send a ping PDU from PC1 to the server and watch it"

  • "Show me how ARP works between PC1 and R1"

NameRequiredDescriptionDefault
sourceYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
destinationYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false and destructiveHint=false, so the write/safety profile is covered. The description adds that the PDU is queued in a 'user-created PDU list' and returns its index, plus that ARP may be triggered, which is useful. It still leaves ambiguous what happens outside Simulation mode (does the PDU actually traverse the network?) — a meaningful gap for this tool.

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

Conciseness4/5

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

Core behavior is front-loaded in the first sentence, with the simulation workflow and examples following as supplementary detail. The examples and the 'envelope tool' aside are slightly discursive but still earn their place by disambiguating terminology.

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

Completeness4/5

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

An output schema exists, so return values needn't be explained, and the description still helpfully notes the PDU index. Given the two well-documented parameters and the simulation workflow hint, an agent has enough to call it correctly; only the realtime-mode behavior is left unclear.

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

Parameters3/5

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

Schema coverage is 100% and both parameters already document that they take Packet Tracer display names. The description adds no further semantics (no mention that source/destination must exist, be powered on, or be of compatible types), so baseline 3 applies.

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

Purpose4/5

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

Names a specific verb and resource ('Create a Simple PDU (ICMP echo) from one device to another') and clarifies it is the envelope/ping tool. It distinguishes itself from simulation siblings by naming step_simulation and get_simulation_events, though it never contrasts with verify_connectivity, which an agent could plausibly confuse it with.

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

Usage Guidelines4/5

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

Gives a concrete workflow for Simulation mode (create, then step_simulation, then get_simulation_events) and two example phrasings showing when to reach for it. It doesn't state exclusions — e.g. whether it can be used in realtime mode or when verify_connectivity is the better choice.

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

send_terminal_commandSend Command to an End-Device TerminalA

Type one command into a device's terminal and collect its output -- for PCs, laptops and servers this is the Desktop > Command Prompt ('ping 10.0.0.1', 'ipconfig /all', 'tracert 8.8.8.8', 'arp -a'). Output is collected until Packet Tracer reports the command ended or the timeout passes; pings in Realtime mode take a few seconds.

Examples:

  • "Ping 192.168.1.1 from PC0"

  • "Run ipconfig on the laptop"

  • "Traceroute from PC1 to the server"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
commandYes
timeoutNoSeconds to wait for the command to finish

Output Schema

NameRequiredDescription
outputYes
statusNo
completedYesTrue if Packet Tracer reported the command finished before the timeout

TDQS

A3.6/5.0
Behavior4/5

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

Adds real behavioral context beyond the annotations: output is collected until Packet Tracer reports the command ended or the timeout passes, and Realtime pings take a few seconds, which sets realistic latency expectations. Since readOnlyHint=false is declared, it would have been better to note that the typed command may alter device state, but the collection/timeout semantics are substantive additions.

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

Conciseness4/5

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

Front-loaded with the core action, then scope, then collection semantics, then illustrative examples. Every element serves a purpose, though the three user-utterance examples are slightly redundant given the inline command examples already shown.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the annotations cover safety hints. What is missing is the sibling disambiguation versus send_cli_command and any statement of device-state prerequisites or side effects for a non-read-only tool, leaving a meaningful gap for a 3-parameter mutation-adjacent call.

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

Parameters3/5

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

Schema coverage is 67% with documented descriptions for name and timeout, but `command` has no schema description. The description compensates partially by giving concrete command examples ('ipconfig /all', 'tracert 8.8.8.8') that imply a single shell-command string, and it references timeout behavior, so it does add some meaning over the schema but not full compensation.

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

Purpose4/5

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

States a specific verb and resource ('Type one command into a device's terminal and collect its output') and scopes it to end devices (PCs, laptops, servers via Desktop > Command Prompt). However, it never names the closest sibling, send_cli_command, which is almost certainly the tool for router/switch CLI, so an agent must infer the split from the phrase 'end-device'.

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

Usage Guidelines3/5

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

The examples ('Ping 192.168.1.1 from PC0', 'Run ipconfig on the laptop') make the intended usage concrete and implied-when conditions are clear. But there is no explicit 'use this instead of X' routing against send_cli_command or configure_device, and no prerequisites (device powered on, terminal availability) are stated.

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

set_device_powerSet Device PowerA
Idempotent

Power a device on or off. Powering off a Cisco device discards its unsaved running-config.

Examples:

  • "Turn off R1"

  • "Power on all the switches"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
power_onYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

The note that powering off a Cisco device discards its unsaved running-config is genuinely valuable behavioral context that the annotations do not convey. But it directly conflicts with destructiveHint=false, creating ambiguity about whether this call can lose data, and there is no statement about idempotent re-application (already-on/off), device-type scope, or persistence of state beyond the session.

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

Conciseness4/5

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

One sentence of purpose followed by a high-value caveat and two short examples – nothing extraneous, and the destructive side effect is front-loaded where an agent will read it. The examples are mildly redundant with the boolean parameter but still demonstrate the natural-language trigger phrasing.

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

Completeness4/5

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

With a defined output schema, return values need no explanation, and the two required parameters are largely covered. What is missing is the safety framing (should you save first? does the warning apply only to Cisco devices?) and any statement of side effects on interfaces, which is the main residual risk for a state-changing tool.

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

Parameters4/5

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

Schema coverage is only 50% (power_on has no description), and the description compensates by mapping the boolean to natural-language intent via the examples and the phrase "on or off". The name parameter's display-name semantics are already covered by the schema, so the added value sits almost entirely on power_on, which is the gap that mattered.

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

Purpose4/5

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

"Power a device on or off" gives a specific verb (set power state) and a specific resource (a device), which is immediately actionable. It is implicitly distinguishable from the sibling set_interface_power, but the description never names that sibling or states the device-vs-interface scope explicitly, so the differentiation is left to inference.

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

Usage Guidelines3/5

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

The two examples ("Turn off R1", "Power on all the switches") illustrate realistic invocation contexts, and the unsaved-config warning implies a prerequisite (save first). However, there are no explicit when-to-use/when-not rules and no routing to alternatives such as set_interface_power or save_device_configuration, leaving the agent to guess which sibling applies.

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

set_interface_powerSet Interface PowerA
Idempotent

Administratively enable or disable a port at the physical level (like plugging/unplugging the port's power in Packet Tracer). For IOS 'shutdown'/'no shutdown' use send_cli_command.

Examples:

  • "Disable PC0's FastEthernet0"

NameRequiredDescriptionDefault
nameYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
portYesFull port name (e.g. 'GigabitEthernet0/0', 'FastEthernet0', 'Serial0/1/0')
power_onYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare this as a non-read-only, idempotent, non-destructive operation. The description adds useful behavioral context by framing it as physical port power, analogous to plugging/unplugging, and by separating it from IOS shutdown semantics. It does not detail persistence or connectivity effects, but the annotations reduce the burden.

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

Conciseness5/5

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

The description is front-loaded, direct, and free of wasted text. The example is compact and reinforces the intended usage without bloating the definition.

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

Completeness5/5

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

For a simple three-parameter mutation tool with annotations and an output schema, the description covers purpose, scope, and the key alternative. Return-value explanation is unnecessary because an output schema exists, and the main behavioral safety signals are handled by annotations.

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

Parameters3/5

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

Schema coverage is 67%: 'name' and 'port' are well described, but 'power_on' has no schema description. The description implies the enable/disable meaning and gives a disable example, but it does not explicitly map true/false to enable/disable. This partially compensates for the schema gap but not fully.

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

Purpose5/5

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

The description states a specific verb and resource: administratively enable or disable a port at the physical level. It also explicitly distinguishes this from IOS shutdown/no shutdown behavior, which helps the agent tell it apart from CLI-based siblings.

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

Usage Guidelines5/5

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

It clearly says to use send_cli_command for IOS 'shutdown'/'no shutdown', providing an explicit alternative and condition. The physical-level port-power scope further distinguishes it from device-level power tools.

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

set_network_descriptionSet the Network DescriptionA
Idempotent

Set the network file's description (shown in Packet Tracer under File > Network description / Info). Handy for lab notes, objectives, or an IP addressing table.

Examples:

  • "Describe this lab as 'CCNA 2 - OSPF single area practice'"

  • "Put the addressing table in the network description"

NameRequiredDescriptionDefault
descriptionYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

The annotations already disclose that this is a non-read-only, idempotent, non-destructive write. The description adds where the value is shown and what it is useful for, but it does not explicitly state whether an existing description is overwritten, whether the change persists without save_network_file, or what the response contains.

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

Conciseness5/5

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

The description is front-loaded with the core action and then adds a small set of practical examples. Every sentence contributes useful context without excessive length.

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

Completeness4/5

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

Annotations cover the mutation safety profile and an output schema exists, so return values need not be explained. The main remaining gap is that the description does not mention prerequisites such as having an open network file or whether save_network_file is needed to persist the description.

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

Parameters3/5

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

There is one required string parameter with 0% schema description coverage, so the description carries the burden. It clarifies the intended content through use cases and examples, but it does not describe format, length limits, newline support, or whether the value replaces existing text.

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

Purpose5/5

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

The description states a specific verb and resource: 'Set the network file's description.' It also locates where that value appears in Packet Tracer (File > Network description / Info), which distinguishes this from generic annotation-style tools such as add_text_note.

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

Usage Guidelines4/5

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

It gives clear use cases ('lab notes, objectives, or an IP addressing table') and concrete examples, making the intended context obvious. However, it does not explicitly say when not to use it or name alternatives like add_text_note or add_line_annotation.

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

set_simulation_modeSwitch Realtime/Simulation ModeA
Idempotent

Switch Packet Tracer between Simulation mode (enabled=true: time advances only when stepped, every packet is recorded) and Realtime mode (enabled=false). Returns the resulting mode. Switching back to Realtime clears the event list, so read events/details first.

Examples:

  • "Switch to simulation mode so I can watch the ping"

  • "Go back to realtime"

NameRequiredDescriptionDefault
enabledYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only declare readOnly=false, idempotent=true, destructive=false; the description adds genuinely new behavioral context — that Realtime mode clears the event list, which is a data-loss side effect not visible in structured fields. It also states the return value. The clearing behavior sits slightly at odds with destructiveHint=false, but reads as normal mode semantics rather than a contradiction.

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

Conciseness4/5

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

Front-loaded with the mode definition and the critical clearing warning before the examples. The examples are illustrative rather than filler, though they mildly duplicate the prose already given.

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

Completeness5/5

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

A one-boolean tool with an output schema; the description covers what both states mean, the side effect, the pre-read recommendation, and even the return value. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry the single parameter, and it does: enabled=true means Simulation mode with stepped time and packet recording, enabled=false means Realtime. Both values are given meaning beyond the bare boolean type.

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

Purpose5/5

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

Names a specific verb (switch) and the two modes it toggles between, and explains the operational meaning of each state ('time advances only when stepped, every packet is recorded'). An agent can distinguish this from siblings like step_simulation or reset_simulation immediately.

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

Usage Guidelines4/5

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

Gives concrete when-to-use framing and two example utterances ('Switch to simulation mode so I can watch the ping'), and adds an ordering constraint: read events/details before switching back to Realtime. It does not explicitly exclude other tools, but the context is clear.

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

step_simulationStep the SimulationA

Advance (or rewind) Simulation mode by N steps, like clicking Capture/Forward. Returns the simulation time, total event count and how many new events were recorded.

Examples:

  • "Step the simulation forward 5 times"

  • "Go back one step"

NameRequiredDescriptionDefault
stepsNoHow many steps (Capture/Forward clicks)
directionNoforward

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already declare that this is not read-only and not destructive, and the description consistently describes a state-changing simulation step. It adds useful context by listing returned values, but does not cover prerequisites, permissions, or side effects beyond what annotations and the output schema provide.

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

Conciseness5/5

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

The description is front-loaded with the core operation and returns, followed by short examples. Every sentence adds practical value without unnecessary repetition.

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

Completeness4/5

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

For a two-parameter simulation action with annotations and an output schema, the description is largely complete. It explains the operation and return behavior, though it could state prerequisites such as being in Simulation mode before stepping.

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

Parameters4/5

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

Schema coverage is only 50%, so the description must carry weight, and it does clarify that steps means Capture/Forward clicks and that rewind/backward stepping is supported. The examples map naturally to the direction enum, though defaults and limits are left to the schema.

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

Purpose4/5

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

The description states a specific verb and resource: advance or rewind Simulation mode by N steps, using the Capture/Forward analogy. It is clear what the tool does, but it does not explicitly name nearby alternatives such as set_simulation_mode or reset_simulation to sharpen sibling differentiation.

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

Usage Guidelines3/5

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

The examples show forward and backward stepping, which implies when to use the tool during simulation. However, there is no explicit guidance on when to choose this over set_simulation_mode, reset_simulation, or get_simulation_events.

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

verify_connectivityVerify Connectivity (Ping Test)A
Read-only

Ping each destination from a device (PC/server Command Prompt or a Cisco device) and report sent/received/ loss per destination. A destination that loses everything is retried (ARP resolution and STP on fresh switch links make the first ping fail). Raw output is included only for failures. The standard way to verify a CCNA lab end to end.

Examples:

  • "Can PC1 reach its gateway, the server and the other LAN?"

  • "Verify connectivity from PC1 to 192.168.1.1, 192.168.2.10 and 8.8.8.8"

  • "Is my static routing working?"

NameRequiredDescriptionDefault
sourceYesDevice display name as shown in Packet Tracer (e.g. 'Router0', 'PC1')
attemptsNoPings per destination if all packets are lost
destinationsYesIP addresses or hostnames to ping

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

readOnlyHint=true is consistent with a pure ping. Beyond the annotation it discloses non-obvious behavior: automatic retry when a destination loses all packets, the ARP/STP reason the first ping often fails, and that raw output is returned only for failures — exactly the facts an agent needs to interpret partial results.

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

Conciseness4/5

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

The behavioral core is front-loaded in the first two sentences and each sentence carries information. The three examples add useful routing cues but make the block longer than strictly necessary for a 3-parameter tool.

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

Completeness5/5

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

An output schema exists, so return format need not be explained, and the description covers the remaining gaps: retry semantics, failure-only raw output, and where the ping executes from. Nothing an agent needs to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description earns a bump by explaining why the 'attempts' retry parameter exists (fresh switch links and ARP resolution cause first-ping loss) rather than just restating its default. It adds nothing new for 'source' or 'destinations' beyond the schema text.

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

Purpose5/5

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

States a specific verb and resource ('Ping each destination from a device') plus the exact report shape (sent/received/loss per destination). The scope is tight enough that an agent can distinguish it from the nearest sibling, send_simple_pdu, without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete invocation scenarios via three examples and frames it as 'the standard way to verify a CCNA lab end to end', which tells the agent when to reach for it. It never states when not to use it or names an explicit alternative such as send_simple_pdu, so it falls short of a 5.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 45 tool updatesv0.2.0
    • First observedadd_circle_annotation
    • First observedadd_device_to_network
    • First observedadd_line_annotation
    • First observedadd_module_to_device
    • First observedadd_text_note
    • First observedconfigure_device
    • First observedconfigure_host_interface
    • First observedconnect_two_devices
    • First observedcreate_full_network_topology
    • First observedcreate_new_network
    • First observeddelete_annotation
    • First observeddelete_device_from_network
    • First observeddelete_link
    • First observeddescribe_ipc_class
    • First observededit_text_note
    • First observederase_device_configuration
    • First observedexport_network_topology
    • First observedget_activity_instructions
    • First observedget_all_links
    • First observedget_annotations
    • First observedget_command_history
    • First observedget_console_log
    • First observedget_device_configuration
    • First observedget_device_model_details
    • First observedget_device_models
    • First observedget_devices_in_network
    • First observedget_interfaces_for_device
    • First observedget_pt_information
    • First observedget_simulation_event_details
    • First observedget_simulation_events
    • First observedopen_network_file
    • First observedremove_module_from_device
    • First observedrename_device
    • First observedreset_simulation
    • First observedsave_device_configuration
    • First observedsave_network_file
    • First observedsend_cli_command
    • First observedsend_simple_pdu
    • First observedsend_terminal_command
    • First observedset_device_power
    • First observedset_interface_power
    • First observedset_network_description
    • First observedset_simulation_mode
    • First observedstep_simulation
    • First observedverify_connectivity

TDQS

A3.9/5.0

Scored across 45 tools

Disambiguation4/5

Most tools have clearly distinct resource/action targets, especially around devices, links, annotations, files, and simulation. A few boundaries overlap slightly: send_cli_command, configure_device, and send_terminal_command all send commands, though the descriptions explain when to use each.

Naming Consistency5/5

All tool names use consistent snake_case verb_noun phrasing such as get_devices_in_network, add_device_to_network, delete_link, and set_simulation_mode. Variants like get_interfaces_for_device and get_device_model_details are still predictable and readable.

Tool Count2/5

The 45-tool surface is very large for an MCP server and exceeds the expected range even for a broad Packet Tracer automation domain. While many tools are justified, the set could likely be consolidated into fewer higher-level operations.

Completeness4/5

Coverage is strong across topology building, device configuration, interfaces, links, modules, annotations, files, and simulation workflows. Minor gaps remain, such as repositioning existing devices or reading back some workspace metadata like the network description, but core lifecycles are well covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers