pktctl
Introduction
pktctl lets an AI agent build, configure and test networks in Cisco Packet
Tracer the way a person would, but through a programmatic interface instead of
the mouse. You describe the network you want; the agent places the devices,
cables them, types the IOS configuration at each console, runs ping from the
end hosts and reads the results back, all inside the Packet Tracer window you
already have open.
It is a server for the Model Context Protocol (MCP), the open standard that AI clients such as Claude Code, Claude Desktop and Cursor use to call external tools. pktctl gives those clients 72 tools that cover Packet Tracer's logical and physical workspaces, simulation mode, end-device applications and activities, plus direct access to the complete IPC API for anything else.
pktctl talks to Packet Tracer through PTMP, the native protocol Packet Tracer offers to registered external applications. That choice shapes how it behaves:
Nothing to keep open inside Packet Tracer. There is no extension window and no polling bridge between the agent and the simulator; a single registration is enough.
Fast and precise. Calls round-trip in well under a millisecond, and
call_ipcchecks every argument against the official API before sending it.Readable failures. Errors come back as typed messages the agent can act on (
Device: IPC Cache entry), never as a modal dialog that freezes the application.One self-contained binary. No runtime, interpreter or package manager is needed to run it. On Linux it uses the desktop's X11, Wayland and PipeWire libraries for window captures, which desktop distributions already ship.
pktctl is useful to students practicing CCNA labs, to instructors preparing and checking activities, and to anyone who wants to automate or document network scenarios in Packet Tracer.
An example
Asked for two sites joined by OSPF, with DHCP on each LAN and a web server at
headquarters, an agent using pktctl placed and cabled the routers, switches and
hosts, configured both routers, requested the DHCP leases and checked the
result: OSPF adjacency in FULL state, the remote LAN in the routing table,
and ping and traceroute from the branch to headquarters.
Related MCP server: Packet Tracer Visual MCP
Contents
Requirements
Requirement | Notes |
Cisco Packet Tracer 9.0.1 | Available at no cost from Cisco Networking Academy. |
Rust 1.88 or newer | Only to build from source. Install it with rustup. |
An MCP client | Claude Code, Claude Desktop, Cursor or any client that runs stdio MCP servers. |
pktctl builds on Linux, macOS and Windows. Every live validation so far ran on macOS; the registration paths for the other systems are described in ExApp registration.
Installation
Installation takes five steps. Only the fourth one happens inside Packet Tracer, and it is done once.
1. Install the binary
Prebuilt. Each release
carries archives for macOS 11 or newer (Apple Silicon and Intel), Linux with
glibc 2.39 or newer (Ubuntu 24.04, Debian 13; x86_64 and ARM64) and Windows. Unpack the one for your system and put pktctl somewhere
permanent, such as ~/.local/bin. To check an archive before running it:
shasum -a 256 -c SHA256SUMS --ignore-missing
gh attestation verify pktctl-*.tar.gz --repo TantiE100/pktctlThe attestation proves the archive was built by this repository's release
workflow. macOS quarantines binaries downloaded with a browser; clear the flag
with xattr -d com.apple.quarantine pktctl, or download with curl, which does
not set it. The binaries are not notarized by Apple.
With cargo-binstall, the same prebuilt archive is fetched and installed in one step:
cargo binstall pktctlFrom source. With Rust 1.88 or newer, from crates.io:
cargo install pktctl --lockedThe development version on main:
cargo install --git https://github.com/TantiE100/pktctl pktctl --locked.
Cargo builds pktctl and places it in ~/.cargo/bin/pktctl
(%USERPROFILE%\.cargo\bin\pktctl.exe on Windows). To build from a clone
instead, run make release; the binary is written to target/release/pktctl.
Either way, check it with pktctl --version.
2. Choose an app id and a secret
Packet Tracer identifies external applications by an id and authenticates them
with a shared secret. Pick any reverse-domain id, such as dev.pktctl, and
generate a random secret:
openssl rand -hex 24Keep the secret private: it grants full control of Packet Tracer.
3. Add pktctl to your MCP client
claude mcp add pktctl --scope user \
-e PKTCTL_APP_ID=dev.pktctl \
-e PKTCTL_SECRET=your-random-secret \
-- "$HOME/.cargo/bin/pktctl"Edit claude_desktop_config.json
(~/Library/Application Support/Claude/ on macOS,
%APPDATA%\Claude\ on Windows) and restart Claude Desktop:
{
"mcpServers": {
"pktctl": {
"command": "/Users/you/.cargo/bin/pktctl",
"env": {
"PKTCTL_APP_ID": "dev.pktctl",
"PKTCTL_SECRET": "your-random-secret"
}
}
}
}Most clients accept the same mcpServers block shown for Claude Desktop; in
Cursor it goes in ~/.cursor/mcp.json. Use the absolute path to the binary,
because clients do not always inherit your shell's PATH.
4. Register pktctl in Packet Tracer
Ask the agent: "Run setup_exapp." pktctl writes the registration file
~/.config/pktctl/pktctl.pta.In Packet Tracer, open Extensions → IPC → Configure Apps, choose Add, select that file and confirm with Ok.
Quit Packet Tracer normally once (File → Exit). Packet Tracer only saves its list of registered apps when it closes cleanly.
The complete procedure, including a manual alternative, is in ExApp registration.
5. Verify the connection
Ask the agent: "Check the pktctl status." A reply with connected: true,
the Packet Tracer version and the device count means everything works. If
not, the reply explains what to fix; see Troubleshooting.
What you can do
The tools are grouped by the job they do. A few example requests for each group:
Area | What pktctl handles | Try asking |
Topology | Adding, renaming, moving and cabling devices, installing modules, notes and drawings on the canvas | "Add a 2911 router and two 2960 switches and cable them." |
IOS | Running any command at a router or switch console and applying configuration blocks, with confirmations answered | "Configure OSPF area 0 on both routers and show the neighbors." |
End devices | IPv4 and IPv6 addressing, DHCP, firewalls, Command Prompt, web browser, email, VPN and files | "Give the PCs addresses by DHCP and ping the server from each one." |
Servers | DHCP pools, DNS records, web pages, FTP and email accounts | "Publish intranet.lab.local on the server and browse to it from PC1." |
Simulation | Simulation mode, PDUs, stepping and the per-hop event list with Packet Tracer's explanations | "Send a ping from PC1 to PC4 in simulation and explain each hop." |
Physical workspace | Cities, buildings, closets, racks and where each device sits | "Put the switches in a rack in the wiring closet." |
Wireless | Access point security and client association | "Secure the access point with WPA2 and connect the laptops." |
Activities |
| "How much of this activity is complete, and what is missing?" |
Everything else | The full IPC API: 346 classes and 3111 methods, searchable and callable | "Find the IPC method that reads the ARP table of R1." |
The complete list of the 72 tools is in docs/tools.md, and docs/coverage.md records how each area was validated.
How it works
AI client ──MCP over stdio──▶ pktctl ──PTMP over TCP 39000──▶ Packet TracerThe MCP client starts pktctl as a child process. pktctl authenticates to
Packet Tracer as a registered external application and translates each tool
call into one or more IPC calls. When a tool needs something the IPC API does
not offer, such as buildings or furniture in the physical workspace, pktctl
edits the saved .pkt file and reopens it. The design is described in
docs/architecture.md and the wire format in
docs/reference/ptmp.md.
Configuration
pktctl reads its settings from environment variables:
Variable | Required | Default | Purpose |
| yes | App id registered in Packet Tracer. | |
| yes | Shared secret registered in Packet Tracer. | |
| no | ports 39000 to 39009 on this computer | Address of Packet Tracer's IPC listener. Without it, pktctl finds Packet Tracer on the first of those ports where it accepts the credentials; with it, pktctl uses that address only. |
| no |
| Time limit for a single IPC call. |
| no | usual install folders | Packet Tracer installation, used by |
| no |
| Where |
| no |
| Log level, written to stderr. |
Troubleshooting
What | Cause and fix |
| Packet Tracer is closed, or it listens outside ports 39000 to 39009. When 39000 is still taken, for example right after a crash, Packet Tracer moves to 39001; pktctl follows it on its own, and |
| pktctl is not registered, or |
| pktctl was registered with an older template. Register the file |
Documentation
The docs/ folder holds the architecture, the feature references, the PTMP wire reference and the development guide. Releases are listed in CHANGELOG.md.
Contributing
Issues and pull requests are welcome. docs/development.md
covers the commands, the test layers, the live test suite against a running
Packet Tracer and the branch workflow. make check runs the same formatting,
lint and test steps as CI.
License
pktctl is released under the MIT License.
Cisco, Packet Tracer and Cisco IOS are trademarks of Cisco Systems, Inc. This project is an independent client and is neither affiliated with nor endorsed by Cisco. It ships no Packet Tracer code, files or documentation: you need your own installation of Packet Tracer for it to talk to anything.
Available Tools
72 toolsactivity_instructionsBRead-only
Read a page of the open activity's instructions, as text and as HTML.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number starting at 1. Defaults to 1. |
Output Schema
| Name | Required | Description |
|---|---|---|
| html | Yes | The page as Packet Tracer stores it, with embedded images replaced by `data:,image-removed` so they do not flood the reply. |
| page | Yes | |
| text | Yes | The page as readable text. |
| pages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that results come back in two formats (text and HTML), which is modestly useful, but says nothing about pagination behavior, page-size, out-of-range pages, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the resource and output format front-loaded and no filler. Appropriate size for a one-parameter read tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the one parameter is fully documented. The main remaining gap is the absence of any usage condition (e.g., an activity must be open), which keeps it short of a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single 'page' parameter is already documented in the schema with its default. The description only hints at pagination via 'a page of'; it adds no syntax or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (the open activity's instructions) and notes the dual text/HTML representation. It does not name or differentiate against a sibling, but the resource is distinctive enough to be unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The phrase 'the open activity's instructions' implies an activity must already be open, but this is left to inference rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
activity_statusARead-only
Progress of the open activity (.pka): percentage complete, score, assessment items and points, instruction pages, time elapsed or left. For a plain network it only says it is not an activity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| items | No | Assessment items (the Check Results tree). |
| points | No | Assessment points. |
| is_activity | Yes | |
| seconds_left | No | Seconds left when the activity has a countdown timer. |
| score_percent | No | |
| seconds_elapsed | No | |
| percent_complete | No | |
| instruction_pages | No | |
| password_confirmed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds one behavioral edge case — that on a non-activity network it returns an 'is not an activity' result rather than failing — which is genuinely useful, though it does not cover failure modes or empty-state behavior beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the primary payload (activity progress) followed by the caveat. Every clause carries information; no filler or repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and read-only semantics carried by annotations, the description need not detail return shapes. For a zero-parameter, read-only query tool it is effectively complete, missing only differentiation from the check_activity sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document. Baseline of 4 applies; the description's listing of returned fields is orthogonal to parameters and does not mislead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (the open .pka activity) and enumerates what the tool reports: percentage complete, score, assessment items/points, instruction pages, time elapsed or left. This is a concrete verb+resource statement. It does not, however, distinguish itself from the sibling check_activity, which appears to overlap.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The clause 'For a plain network it only says it is not an activity' implies when the tool is pointless, giving implicit usage guidance. But it never states when to prefer this over check_activity or status, nor any prerequisites, so routing 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_deviceA
Add a device to the logical workspace by model name (see list_models), optionally naming it and placing it at x/y. Routers and switches boot immediately. Returns the device as Packet Tracer now shows it.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Canvas x of the device center. Give both x and y, or neither to use the next free grid slot. | |
| y | No | Canvas y of the device center. | |
| name | No | Name to give the device. Packet Tracer picks one (Router0, PC1, ...) when omitted. | |
| model | Yes | Model name as listed by `list_models`, for example `2911`, `2960-24TT`, `PC-PT`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | Yes | |
| y | Yes | |
| kind | Yes | |
| name | Yes | |
| model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare it is a non-readonly, non-destructive, closed-world write. The description adds genuine behavioral context beyond that: 'Routers and switches boot immediately' tells the agent the device becomes active on add, which the annotations do not convey. It stops short of stating auth needs or whether a failed add is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core action front-loaded, followed by the boot behavior and return note. No filler; every sentence carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description need not detail return values, and it appropriately just notes the device is returned as shown. Combined with the boot-behavior note and full schema coverage, it is nearly complete; only cross-tool routing (remove_device, arrange_devices) is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (model, name, x, y) are already documented in the schema. The description restates the model-name source and optional naming/placement but adds no new syntax or format detail beyond the schema, matching the baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Add) and resource (a device to the logical workspace) with the scope constraint that it is selected by model name. It clearly distinguishes itself from siblings like list_models and list_devices, so an agent can identify the tool 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes the agent to list_models for valid model names and explains the x/y pairing (both or neither). However it gives no exclusions or guidance on when to prefer add_module, connect, or power_cycle_all instead, so usage is clear-context but not fully comparative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_locationA
Create a place in the physical workspace: a city, a building, a wiring_closet, or furniture to arrange devices on (rack, table, shelf, cable_pegboard, container), with an optional name and position. Cities and closets use Packet Tracer's own buttons; the rest are written into the network file and come back with the temporary copy Packet Tracer now has open, so save with save_network to keep them.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | What to create: `city`, `wiring_closet`, `building`, `rack`, `table`, `shelf`, `cable_pegboard` or `container`. Packet Tracer's own API only creates cities and wiring closets; the rest are written into the network file. | |
| name | No | Name for the new location. Packet Tracer's default name is used when omitted. | |
| inside | No | Path of the city or building to put a wiring closet in, for example `Home City/Corporate Office`. Omit for Intercity. Cities always go in Intercity. | |
| x_percent | No | Where to put it inside its parent, as a percentage of the room's width and height. | |
| y_percent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | No | The temporary copy Packet Tracer now has open, when the change went through the network file. Your own file is untouched: save with `save_network` and a path to keep the change there. |
| location | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare non-read-only, non-destructive, closed-world. The description adds the critical behavior that cities and wiring closets are created via Packet Tracer's own buttons while other kinds are written into the network file into a temporary copy that requires save_network to persist — exactly the kind of non-obvious side effect an agent needs 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded verb and resource with the kind list immediately after, followed by the persistence caveat. Two sentences with little waste, though the second sentence is dense and could be split for scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations cover the safety profile. The description supplies the unusual persistence behavior and kind semantics; the only gap is the absence of sibling routing or failure conditions for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the per-parameter docs already carry most meaning; the description only paraphrases 'an optional name and position'. It adds no syntax or format detail (e.g. inside path form, percent semantics) beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a place in the physical workspace') and enumerates the exact kinds it accepts, so an agent can immediately tell this apart from siblings like add_device or remove_location. The scope (locations, not devices or links) is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives contextual guidance ('save with save_network to keep them') which is real usage advice, but never states when to choose this over move_to_location, rename_location, or remove_location, nor any prerequisites. Usage is implied by the enumerated kinds rather than explicitly framed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_moduleADestructive
Install a module (for example HWIC-2T for serial ports) in an empty slot. The device is powered off, the module inserted and the device powered back on, exactly like real hardware, so unsaved configuration is lost. Returns the ports the module added.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | Empty slot path from `list_slots`, for example `0/1`. | |
| device | Yes | Router or switch name. | |
| module | Yes | Module model supported by the device, for example `HWIC-2T` or `NIM-2T`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slot | Yes | |
| device | Yes | |
| module | Yes | |
| cut_links | No | |
| ports_added | Yes | |
| ports_removed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description goes further by spelling out the exact mechanism and consequence: power off, module inserted, power on, 'so unsaved configuration is lost.' That is the kind of concrete side-effect detail the annotation cannot convey. It stops short of mentioning permissions or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight clauses: what it does, the hardware-emulation side effect, and the return value. Front-loaded with the action and free of filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and an output schema covering the returned ports, the description adds the essential prerequisite (empty slot) and the destructive consequence (config loss). Complete for the call decision, though it doesn't address whether prior device configuration must be saved first or any dependency on the device already existing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already provides examples for both module and slot, so the schema does the heavy lifting. The description only adds the 'empty slot' constraint, a marginal gain over structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (install) and resource (module) with a concrete example model (HWIC-2T for serial ports) and target context (empty slot). This clearly distinguishes it from the sibling remove_module without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The prerequisite that the slot must be empty and the fact that the device is power-cycled give clear usage context, and the schema points to list_slots for valid slot paths. There is no explicit when-not-to-use or named alternative, but the operating conditions are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_noteA
Write a text note on the logical canvas, for example to label a subnet or a VLAN. Returns the note with its id.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Canvas x coordinate of the note. | |
| y | Yes | Canvas y coordinate of the note. | |
| text | Yes | Text to show, for example `LAN 192.168.10.0/24 (VLAN 10)`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | Yes | |
| y | Yes | |
| id | Yes | |
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the agent knows this is a non-destructive local write. The description adds that the note is returned with its id, which is useful confirmation of the mutation's result. It does not state whether placement collides with existing notes or what happens on duplicate coordinates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the action and scope come first, the return behavior second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With full schema coverage, an output schema for the return value, and annotations covering the safety profile, the description supplies what the agent needs to call the tool. Only minor gaps remain, such as how notes interact with existing canvas content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so x, y, and text are already documented in the schema, including a concrete example for text. The description adds no parameter syntax or constraints beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Write a text note on the logical canvas') and clarifies the target surface is the canvas rather than e.g. a device config. It doesn't explicitly differentiate itself from siblings like remove_note or list_notes, but the action is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'for example to label a subnet or a VLAN' implies the intended use case (annotating/labeling the topology). There is no explicit when-not guidance or naming of alternatives such as list_notes for reading notes back.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_pduA
Send a simple PDU (ICMP echo) from one device to another, like the Add Simple PDU button. In Realtime mode it goes at once; in Simulation mode it waits for simulation_step.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Device the ping starts from, for example `PC1`. | |
| destination | Yes | Device it is sent to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mode | Yes | `realtime`: sent at once. `simulation`: waits for `simulation_step`. |
| source | Yes | |
| destination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds non-obvious behavioral context the annotations cannot convey: the mode-dependent execution timing (immediate vs. deferred until simulation_step). It does not say what state the PDU changes or how it appears in the simulation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, no filler, with the core action front-loaded before the mode-dependent caveat. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be described, and the mode-specific timing behavior is covered. The only remaining gap is that nothing states the effect (does it create a persistent object in the workspace?) or whether source/destination must be existing devices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (source, destination) are already documented with examples in the schema. The description conveys the 'one device to another' relationship but adds no format, naming, or edge-case detail beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — 'Send a simple PDU (ICMP echo) from one device to another' — and anchors it to the familiar 'Add Simple PDU' UI button, so the agent understands exactly which capability this is. It does not name or contrast any sibling tool, so it stops short of the 5 tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes the two usage contexts: it fires immediately in Realtime mode and defers to simulation_step in Simulation mode, which is genuine when-to-use guidance tied to sibling tools. It lacks any when-not-to-use or prerequisite statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_server_userC
Add an FTP account (with permissions such as RWDNL) or an email account to a server.
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | ||
| domain | No | Email: the server's mail domain, for example `gamc.bo`. | |
| service | Yes | ||
| password | Yes | ||
| username | Yes | ||
| permissions | No | FTP permissions: any of R(ead) W(rite) D(elete) N (rename) L(ist). Defaults to `RWDNL`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| device | Yes | |
| service | Yes | |
| username | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds essentially nothing beyond that: no mention of required permissions, idempotency, what happens on duplicate usernames, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence with the verb and both variants front-loaded. Nothing is wasted, though there is very little content to begin with.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a six-parameter mutation tool with low schema coverage, the description leaves the required parameters and the semantics of the two service modes under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description needs to compensate, and it partially does: the FTP-vs-email branching explains why 'permissions' matters only for FTP and why 'domain' matters only for email, which the raw schema does not express. It still leaves 'device', 'username', and 'password' entirely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Add') and two concrete resources ('FTP account', 'email account') plus the target ('to a server'). It is immediately clear what the tool does, though it gives no hint of how it differs from nearby tools like set_server_service or configure_email.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use, when-not-to-use, or alternative-tool guidance. The agent must infer from the sibling list alone whether add_server_user or set_server_service is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arrange_devicesA
Lay devices out inside a room, building, rack or table of the physical workspace, moving in the ones that are somewhere else. Positions are percentages of the room, which is how Packet Tracer draws them: leave them out for an even grid, set columns and margin_percent to shape it, or give exact spots like [[20, 30], [60, 30]].
| Name | Required | Description | Default |
|---|---|---|---|
| spots | No | Exact spots instead of a grid, as percentages of the room: `[[20, 30], [60, 30]]`, one per device. | |
| columns | No | How many per row. Defaults to the squarish grid that fits them. | |
| devices | No | Devices to place, in order. Omit to arrange everything already in that location. | |
| location | Yes | Path of the room, building, rack or table to tidy up, as listed by `list_locations`. | |
| margin_percent | No | Free space left around the grid, as a percentage of the room. Defaults to 12. |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | No | The temporary copy Packet Tracer has open when the moves went through the network file, which is what furniture needs; save with `save_network` to keep it. |
| devices | Yes | |
| location | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false with destructiveHint=false, so the agent knows this mutates layout without destroying anything. The description adds valuable context beyond that: devices located elsewhere are pulled in, and coordinates are percentages as drawn by Packet Tracer, both of which shape expectations about side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A dense but front-loaded passage: the action and target come first, then the positioning modes. No filler sentences, though it is long enough that a shorter split would aid scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the safety profile is covered by annotations. The description covers the mutation's side effect (pulling devices from elsewhere), the required location path source (`list_locations`), and the coordinate model – nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds relational meaning the schema lacks – that `columns` and `margin_percent` jointly shape the grid and are only relevant when `spots` is omitted. It also reinforces the percentage semantics of `spots`, which the schema states per-field but not globally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Lay devices out inside a room, building, rack or table', with the added scope 'moving in the ones that are somewhere else'. This clearly separates it from single-device siblings like move_device and move_to_location.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lays out three concrete modes of use – omit positions for an even grid, set `columns`/`margin_percent` to shape it, or supply exact `spots` – which tells the agent how to pick a strategy. It does not explicitly say when to prefer this over move_device or move_to_location, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
browse_webARead-only
Open a URL in the Web Browser of a PC, laptop or server, like typing it and pressing Go, and return the page Packet Tracer served: its status (ok, timeout, host_not_found, ...), the server's address, the HTML and the text. Names are resolved through the host's DNS server.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Address as typed in the browser, for example `http://www.gamc.bo` or `https://192.168.10.10/index.html`. `http://` is added when missing. | |
| device | Yes | PC, laptop or server whose Web Browser opens the page. | |
| timeout_secs | No | Seconds to wait for the page. Defaults to 30, maximum 300. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| html | Yes | |
| text | Yes | The page as readable text. |
| device | Yes | |
| server | No | The address the name resolved to, when it did. |
| status | Yes | `ok`, `not_found`, `timeout`, `host_not_found`, `dns_server_not_found`, ... |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive and openWorldHint=false; the description reinforces this by explaining that URL names resolve through the host's own simulated DNS server, which clarifies why the operation is not truly open-world. It also surfaces the status vocabulary (ok, timeout, host_not_found) and the default/max timeout, adding context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the action and return payload front-loaded; nothing is wasted, though it is somewhat long and the DNS clause could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return-value explanation is largely redundant, yet the description still names the key response fields and error statuses, which is helpful. For a read-only browser-simulation tool the definition is essentially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three params (url, device, timeout_secs) are already documented. The description adds only marginal meaning (DNS resolution, status names) and no param syntax beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (open), resource (URL in a device's Web Browser) and explicitly enumerates the return payload (status, server address, HTML, text). This clearly separates it from siblings like screenshot, run_host_command, or set_web_page.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the 'like typing it and pressing Go' framing and the DNS resolution note, but there is no explicit when-to-use vs. when-not, and no named alternatives among siblings (e.g. run_host_command or screenshot for other page inspection paths).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_ipcADestructive
Call any Packet Tracer IPC method: start at a root or an object uuid and chain steps, like network -> getDevice("R1") -> getPower(). Every step is checked against the official API before anything is sent, with exact argument types; objects come back as a class and uuid you can start the next call from. Prefer the dedicated tools when one fits; this reaches everything else, including changes, so read describe_ipc first.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | Where the call starts: a root (`network`, `appWindow`, `simulation`, `options`, `hardwareFactory`, `ipcManager`, `multiUserManager`, `userAppManager`, `commandLog`, `systemFileManager`) or the uuid of an object returned by an earlier call. | |
| steps | No | Methods to call one after another, each on the object the previous one returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| call | Yes | The call as resolved, for example `network.getDevice("R1").getPower()`. |
| value | Yes | The value. Objects come back as `{ "class", "uuid" }`, enums as `{ "name", "value" }`. |
| returns | Yes | Declared return type of the last method. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false and destructiveHint=true; the description reinforces this with 'including changes', which the agent needs to know before invoking a mutation path. It also adds behavior beyond the annotations: every step is validated against the official API before anything is sent, argument types are exacted, and returned objects carry a class and uuid usable in the next call. It stops short of describing error/partial-failure behavior in a multi-step chain, which is the one real remaining gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then chaining, then validation, then the routing rule — a sensible order with no filler. It is dense (long clauses, backtick examples) but every clause carries information; only the parenthetical example chain could be trimmed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-parameter but high-power escape hatch, the definition covers the prerequisite (describe_ipc), the safety posture (reaches changes), and the round-trip object contract. An output schema exists, so return values need no explanation, and the two nested-object parameters are schema-documented. Partial-failure semantics in a chained call are the only unaddressed area.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the `from`/`steps` fields are well documented in-schema, so baseline would be 3. The description adds genuine meaning on top: the chaining contract ('each on the object the previous one returned'), the root-vs-uuid distinction for the start point, and the class+uuid round-trip that makes multi-step calls possible. It doesn't restate the argument-encoding rules, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Call any Packet Tracer IPC method'), explains the chaining model with a concrete example (`network` -> getDevice("R1") -> getPower()), and explicitly positions itself against the many dedicated sibling tools ('Prefer the dedicated tools when one fits'). An agent can tell exactly what this is and when it is the right reach.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit routing rule ('Prefer the dedicated tools when one fits; this reaches everything else, including changes') plus a prerequisite ('read describe_ipc first'). Both the when-to-use and the when-to-use-something-else conditions are stated, not inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_activityB
Run the open activity's connectivity tests and return them with the current completion and score, like Check Results.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| connectivity | Yes | |
| connectivity_results | Yes | One line per connectivity test, as Packet Tracer reports it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false with destructiveHint=false, and 'Run ... tests' is consistent with a non-read-only, non-destructive operation, so no contradiction. The description adds that it returns current completion and score, but omits whether running the tests mutates simulation state or has prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with the action and its outcome stated immediately; no padding. The only soft spot is the trailing UI analogy, which is mildly wasteful for an agent reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A zero-parameter tool with an output schema and annotations needs little, and the description covers the action and the returned values. However, in an activity/grading context it should state prerequisites (activity open/unlocked) or how the result relates to activity_status, which it leaves out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so per the rubric baseline is 4. The description correctly never invents parameter detail, and the empty schema leaves nothing to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Run) plus resource (the open activity's connectivity tests) with a clear statement of what is returned (completion and score), which separates it from status-style siblings like activity_status. The trailing 'like Check Results' is a UI reference that adds little for an agent but doesn't obscure the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use guidance. With siblings such as activity_status, activity_instructions, and unlock_activity, the description never says whether this is a graded check, whether the activity must be open/unlocked first, or how it differs from simply reading activity_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_access_pointA
Set the SSID, security (open, wep, wpa_psk, wpa2_psk), key and SSID broadcast of an access point or wireless router. Clients keep their current association until connect_wireless reconnects them.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Passphrase for WPA (8-63 characters) or WEP key (10 or 26 hex digits). | |
| ssid | Yes | ||
| device | Yes | Access point or wireless router name. | |
| security | No | open | |
| broadcast_ssid | No | Advertise the SSID. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ssid | Yes | |
| device | Yes | |
| security | No | |
| broadcast_ssid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false), so the description's key added value is that clients retain their existing association until connect_wireless reconnects them — a genuinely useful, non-obvious side effect. It could go further on defaults/permissions, but this is real context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler; the action and its fields are front-loaded, and the follow-up caveat about client reconnection comes second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With five parameters, an output schema present, and annotations covering the safety profile, the description supplies the essentials: what gets changed and the delayed effect on clients. The main omission is that the security default of 'open' is never flagged as significant, which an agent configuring wireless security arguably needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60% (key and broadcast_ssid are documented; ssid, device, security are not), so the schema carries much of the load. The description enumerates the security values and names 'SSID broadcast', which maps to parameters, but adds no format or constraint detail beyond what the schema already encodes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) plus the exact resource fields (SSID, security, key, SSID broadcast) on an access point/wireless router, so the agent knows precisely what is configured. It is clear but does not explicitly name a sibling to distinguish itself from, e.g., connect_wireless, other than a passing mention in the follow-up sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence implies the workflow — configure here, then use connect_wireless to actually reconnect clients — which effectively tells the agent when this tool's effect materializes. However it never states prerequisites, when not to use it, or what alternatives exist for the same goal, so guidance remains implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_dhcp_serverB
Configure the DHCP service of a server: switch it on and create or update pools (gateway, DNS, start address, mask, maximum users). Existing pools with the same name are updated.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port the DHCP service runs on. Defaults to `FastEthernet0`. | |
| pools | No | ||
| device | Yes | ||
| enabled | No | Switch the service on or off. Defaults to on. |
Output Schema
| Name | Required | Description |
|---|---|---|
| port | Yes | |
| pools | Yes | |
| device | Yes | |
| enabled | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-destructive, closed-world write. The description usefully adds the idempotency semantics ('existing pools with the same name are updated') and the default-on behavior, but says nothing about whether unspecified pools are preserved or removed, or whether the service restarts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and then the pool fields and update rule. No filler, though the parenthetical field list is a slightly dense inventory.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and annotations cover safety. However, for a mutation tool whose schema leaves `device`/`port` undocumented, the description should clarify which device identifier is expected and the port default to be fully actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%; the pool fields are well documented but `device` and `port` have no schema description, and the description only loosely covers `enabled` ('switch it on') without mentioning port or device naming. It compensates partially but leaves gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (configure) and resource (DHCP service of a server), and enumerates the sub-actions (enable, create/update pools). It doesn't distinguish itself from the sibling configure_dns_server, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus configure_dns_server, set_server_service, or list_server_services, and no prerequisites or exclusions stated. The agent must infer the context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_dns_serverB
Switch a server's DNS service on and add A, CNAME or NS records.
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | ||
| enabled | No | Switch the service on or off. Defaults to on. | |
| records | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| device | Yes | |
| enabled | Yes | |
| records | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds the non-obvious dual behavior — it both toggles the DNS service and creates records in one call — but says nothing about whether existing records are merged or replaced, error behavior on duplicate names, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the core action and resource come first and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but for a three-parameter mutation tool with low schema coverage the description leaves meaningful gaps: the role of `device`, the off-switch semantics of `enabled`, and how added records interact with existing DNS state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33%, so the description must carry more weight than it does. It clarifies the record types (A, CNAME, NS) matching the enum, but says nothing about the required `device` parameter or that `enabled` can be set to false to switch the service off (description only says 'switch on').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific verbs (switch on, add) and concrete resources (DNS service, A/CNAME/NS records), so an agent can tell it apart from siblings like configure_dhcp_server. It does not, however, distinguish itself explicitly from set_server_service or configure_host, which operate in the same space.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus the very similar set_server_service or configure_dhcp_server siblings, and no stated prerequisites (e.g., whether the device must already exist or the service must be installed). Usage is only implied by the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_emailB
Set up the Email app of a PC, laptop or server: display name, address, user name, password and the incoming (POP3) and outgoing (SMTP) servers. Returns the account as Packet Tracer now has it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Your Name, for example `Ana`. | |
| Yes | Email Address, for example `ana@gamc.bo`. | ||
| device | Yes | PC, laptop or server whose Email app to set up. | |
| password | Yes | ||
| username | Yes | User Name on the mail server, usually the part before `@`. | |
| incoming_server | Yes | Incoming Mail Server (POP3): address or name. | |
| outgoing_server | Yes | Outgoing Mail Server (SMTP): address or name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| Yes | ||
| device | Yes | |
| username | Yes | |
| incoming_server | Yes | |
| outgoing_server | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so safety and scope are already covered. The description adds only the return-semantics note ('Returns the account as Packet Tracer now has it'), which suggests the operation is idempotent/reflective, but it says nothing about overwriting an existing account or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and the configured fields; the parenthetical POP3/SMTP glosses are genuinely useful. Slightly list-heavy but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description need not explain return values, and annotations carry the safety profile, so what remains — what gets configured and where — is covered. The only gap is the absence of any lifecycle context (setup-before-send, overwriting an existing account).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 86%, so the schema already documents nearly every field with examples. The description restates the same field list (display name, address, user name, password, POP3/SMTP servers) and adds no format, ordering, or default information beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Set up') and resource ('the Email app of a PC, laptop or server') and enumerates exactly which settings are configured. An agent can distinguish this from send_email/receive_email by the setup verb, though the description never names a sibling to sharpen the contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use, prerequisites, or alternative guidance. It never says, for example, that this must run before send_email/receive_email will work, or how it relates to add_server_user and set_server_service, all of which sit alongside it in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_hostA
Set the IPv4 configuration of a PC, laptop or server: either DHCP, or a static ip and mask with optional gateway and DNS. Catches classic mistakes (invalid mask, host address equal to the network or broadcast, gateway outside the subnet) before touching Packet Tracer.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Static IPv4 address, for example `192.168.10.10`. Required unless `dhcp` is true. | |
| dns | No | DNS server address. | |
| dhcp | No | Get the address from a DHCP server instead of setting it statically. | |
| mask | No | Subnet mask, for example `255.255.255.0`. Required unless `dhcp` is true. | |
| port | No | Network port to configure. Defaults to `FastEthernet0`. | |
| device | Yes | PC, laptop or server name. | |
| gateway | No | Default gateway; must be inside the host's subnet. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ip | No | |
| dns | No | |
| dhcp | Yes | |
| mask | No | |
| port | Yes | |
| device | Yes | |
| gateway | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the safety profile is covered. The description adds real value beyond that by disclosing pre-flight validation behavior (invalid mask, host equals network/broadcast, gateway outside subnet) that fires before the simulator is touched. It doesn't state idempotency or what an invalid input returns, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the primary action and its two modes front-loaded and the validation guarantee as supporting detail. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and annotations cover the safety profile, so return values and read/write nature need no explanation here. The description covers both modes and the validation contract; the only minor omission is the port parameter and its FastEthernet0 default, which lives only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including the 'required unless dhcp is true' conditions and the gateway-in-subnet constraint. The description only restates that ip/mask are needed for static mode and gateway/DNS are optional, adding little beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (set) plus resource (IPv4 configuration) and scopes it to PC/laptop/server. The word 'IPv4' cleanly separates it from the sibling configure_host_ipv6, and the two operating modes (DHCP or static) are stated up front.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the usage context: choose DHCP or static ip/mask with optional gateway and DNS. It does not, however, name when to prefer this over related siblings such as configure_host_ipv6 or configure_ios, so routing is left partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_host_ipv6A
Set the IPv6 configuration of a PC, laptop or server, like the IPv6 part of IP Configuration: static with an address such as 2001:db8:10::20/64, auto for SLAAC, or off; optional gateway (usually the router's link-local fe80::1) and DNS. Returns the addresses Packet Tracer now has on the port.
| Name | Required | Description | Default |
|---|---|---|---|
| dns | No | IPv6 DNS server. | |
| mode | No | `static` (default), `auto` for SLAAC, or `off`. | static |
| port | No | Network port to configure. Defaults to `FastEthernet0`. | |
| device | Yes | PC, laptop or server name. | |
| address | No | Static address with its prefix length, for example `2001:db8:10::20/64`. | |
| gateway | No | Default gateway, usually the router's link-local address such as `fe80::1`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dns | No | |
| mode | Yes | |
| port | Yes | |
| device | Yes | |
| gateway | No | |
| addresses | Yes | Addresses on the port as `address/prefix`, read back from Packet Tracer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, closed-world mutation, so the description is not required to restate safety. It does add real behavioral value beyond the annotations: it discloses the post-condition (returns the addresses Packet Tracer now has on the port) and clarifies that `off` simply switches IPv6 off.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A compact, front-loaded passage that leads with the verb and resource and then enumerates the meaningful modes. It is dense but every clause (modes, gateway, DNS, return value) carries information; only the redundant address/gateway examples are slightly wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, full schema coverage, and an output schema covering return values, the description covers what an agent needs. Minor gaps remain: no note on prerequisites such as device power state or whether the change is persistent, and the default port is only in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including the mode oneOf meanings and the FastEthernet0 default) is already documented structurally. The description's examples (2001:db8:10::20/64, fe80::1) duplicate the schema text rather than extending it, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Set) plus a precise resource and scope (IPv6 configuration of a PC, laptop or server), and anchors it to the familiar IP Configuration UI. The 'IPv6 part' phrasing implicitly separates it from the broader configure_host and configure_ios siblings, so an agent can distinguish it without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the scope statement (host-side IPv6 addressing), and the mode examples hint at scenarios, but there is no explicit when-to-use guidance or contrast with alternatives such as configure_host, configure_ios, or configure_access_point. Nothing tells the agent when NOT to reach for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_iosADestructive
Apply a block of IOS configuration commands to a router or switch, as if typed after configure terminal: the first command enters global configuration and the rest follow the prompt, so interface ... sub-modes work. Stops at the first command IOS rejects, always leaves configuration mode, and runs write memory when save is true.
| Name | Required | Description | Default |
|---|---|---|---|
| save | No | Run `write memory` afterwards so the configuration survives a reload. | |
| device | Yes | Router or switch name. | |
| commands | Yes | Configuration commands in order, for example `hostname R1`, `interface GigabitEthernet0/0`, `ip address 10.0.0.1 255.255.255.0`, `no shutdown`. A leading `enable` or `configure terminal` and a trailing `end` are handled for you. |
Output Schema
| Name | Required | Description |
|---|---|---|
| saved | Yes | |
| total | Yes | |
| device | Yes | |
| applied | Yes | |
| results | Yes | |
| completed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing failure semantics (stops at the first rejected command), cleanup behavior (always leaves configuration mode), and the effect of `save` (runs `write memory`). These are exactly the behavioral traits an agent needs before issuing a destructive multi-command mutation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense but well-ordered sentence plus a short clarification – no filler, and the operational model (enter config, follow the prompt) is front-loaded before the edge-case behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema available and annotations covering the safety profile, the description supplies everything else an agent needs: how commands are sequenced, failure handling, mode cleanup, and persistence via `save`. Nothing material is missing for a destructive tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates the `save` behavior and the prompting model already documented in the schema, adding little new meaning about individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource: apply a block of IOS configuration commands to a router or switch. The 'as if typed after `configure terminal`' framing pins down the exact operation and separates it from siblings like configure_host, configure_access_point, or run_cli.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong operational context (commands execute in order, sub-modes work, leading enable/configure terminal and trailing end are handled) so an agent knows exactly when this tool applies. It does not, however, explicitly compare itself to run_cli or the other configure_* siblings for exclusion cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connectA
Cable two ports together. Both ports must exist and be free. With the default auto cable pktctl picks serial, straight or cross the way the CCNA rules do; pass cable to force fiber, rollover, console, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| cable | No | Cable to use. `auto` picks serial for serial ports, straight between a host or router and a switch, and cross between devices of the same layer. | |
| port_a | Yes | Port on the first device, exactly as `list_ports` shows it, for example `GigabitEthernet0/0`. | |
| port_b | Yes | Port on the second device. | |
| device_a | Yes | First device name. | |
| device_b | Yes | Second device name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| a | Yes | |
| b | Yes | |
| cable | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so safety is largely covered. The description adds real operational context beyond that: ports must already exist and be unoccupied, and the default `auto` selection is deterministic. It does not state error behavior or whether an existing link is replaced, which caps it at 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: first the action and precondition, second the cable-selection behavior. The action is front-loaded and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and annotations cover the safety profile. The description covers the action, prerequisites and cable semantics, but leaves unstated what happens if a port is busy or whether the call is idempotent, which is the only remaining gap for a mutation tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; the schema already documents all five parameters, including the auto-selection rules for `cable`. The description's mention of CCNA rules and forcing fiber/rollover/console overlaps with that schema text rather than adding new syntax or format detail, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Cable two ports together') that unambiguously identifies physical link creation and distinguishes it from siblings such as disconnect and connect_wireless. The scope is clear from the first four words.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete precondition ('Both ports must exist and be free') and explains the default cable behavior, including the escape hatch of passing `cable` to force a type. It does not name an alternative tool or a when-not-to-use condition, 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.
connect_wirelessA
Connect a laptop, PC or other client with a wireless card to a network: SSID, security and key, plus DHCP or a static address. Packet Tracer only associates when a network is loaded, so pktctl takes the network as bytes, sets the client's current profile, opens the result as a temporary copy (your own file is not written) and reports whether it associated and with which access point.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | No | Static address. Omit for DHCP. | |
| dns | No | ||
| key | No | ||
| mask | No | ||
| ssid | Yes | ||
| device | Yes | Client with a wireless card, for example a laptop. | |
| gateway | No | ||
| security | No | open | |
| bring_access_point | No | Move the access point with this SSID next to the client first when it is out of radio range (Packet Tracer's radios reach about 120 units in the physical workspace). |
Output Schema
| Name | Required | Description |
|---|---|---|
| ip | No | Address of the wireless port; with DHCP, the lease if one arrived. |
| file | Yes | The temporary copy Packet Tracer now has open. Your own file is untouched: save with `save_network` and a path to keep the change there. |
| ssid | Yes | |
| device | Yes | |
| diagnosis | No | When the client did not associate: why, with the distance to each access point broadcasting the SSID. |
| associated | Yes | |
| access_point | No | |
| moved_access_point | No | The access point that `bring_access_point` moved next to the client. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations (readOnlyHint=false, destructiveHint=false): it sets the client's current profile, operates on a temporary copy so the user's own file is not written, and reports association status and the access point joined. That non-persistence guarantee and the returned outcome are exactly the kind of context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the purpose and then the notable behavior; almost every clause earns its place. Slightly dense but no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and annotations cover the safety profile. The description supplies the crucial non-persistence detail and the loaded-network prerequisite, leaving mainly the underserved ip/mask/gateway/dns parameters as a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% across 9 parameters, so the description must compensate. It covers ssid, security, key and the DHCP-vs-static distinction (ip 'Omit for DHCP'), but says nothing about mask, gateway, dns, or bring_access_point semantics. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Connect a laptop, PC or other client with a wireless card to a network') and enumerates the relevant inputs (SSID, security and key, DHCP or static address). The wireless-card scoping naturally separates it from the wired `connect` sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when it applies (a client with a wireless card, a loaded network) via the prerequisite 'Packet Tracer only associates when a network is loaded', but never names an alternative such as `connect`, `configure_host`, or `wireless_status`, nor states a when-not condition. Usage is inferable but not spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_ipcARead-only
Explore Packet Tracer's complete IPC API (every class, method, argument and enum of the official framework). Give search to find methods by keyword, class to list everything an object offers, enum to read accepted values, or nothing for the list of roots. Use it before call_ipc for anything the dedicated tools do not cover.
| Name | Required | Description | Default |
|---|---|---|---|
| enum | No | Show the values of one enum, for example `ConnectType`. | |
| class | No | Show one class with every method it offers, inherited ones included, for example `Router`. | |
| limit | No | Maximum number of search results. Defaults to 40, maximum 200. | |
| events | No | Show the events an object class raises, for example `LogicalWorkspace`, for `watch_events`. An empty string lists every class that raises events. | |
| search | No | Search class names, method names and summaries, for example `ssid` or `simulation`. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and closed-world, so safety is covered. The description adds genuine behavioral detail beyond them: it explains that each mode changes what is returned (keyword search, full class listing, enum values, or roots) and frames the tool as read-only introspection never touching live state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then a compact enumeration of the four modes, and finally the routing advice. Every sentence earns its place; the mode list is dense but integral to usage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the discovery workflow and its handoff to call_ipc. The only gap is the unmentioned `events`/`limit` behavior, which is minor given full schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully documents all five parameters with examples. The description reinforces the search/class/enum modes but omits two parameters entirely (`limit` and `events`), so it does not add meaning beyond the schema and the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: exploring Packet Tracer's complete IPC API down to classes, methods, arguments and enums. It also enumerates the four modes (search/class/enum/none), so an agent immediately knows what the tool does and how its shape differs from call_ipc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: 'Use it before call_ipc for anything the dedicated tools do not cover.' This establishes the discovery-before-execution workflow and when this tool applies. It stops short of naming specific alternative tools or stating exclusions for covered operations, so it falls just under the top band.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnectBDestructive
Remove the cable plugged into a port.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Port name, exactly as `list_ports` shows it. | |
| device | Yes | Device name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| port | Yes | |
| device | Yes | |
| was_connected_to | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is a mutating operation. The description adds a small amount of context by specifying that a cable is removed from a port, but it does not disclose reversibility, side effects on the port or device state, or authorization needs. With annotations covering the safety profile, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. The action and target are front-loaded, and every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the presence of an output schema (so return values need not be explained), and annotations that already cover the mutation safety profile, the description is largely complete. A minor gap is that it does not mention the inverse relationship with connect or what happens to the port after disconnection, but these are not essential for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the device and port parameters are already documented in the input schema. The description mentions 'cable plugged into a port', which loosely maps to the port parameter, but adds no syntax, format, or usage details beyond what the schema provides. Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (remove) and resource (cable plugged into a port). It clearly distinguishes the action from sibling tools like connect (opposite action) and remove_device (removes a device rather than a cable). However, it does not explicitly name or contrast with any sibling, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as connect or remove_device. There are no prerequisites, conditions, or exclusions stated; usage must be inferred entirely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drawA
Draw on the logical canvas: a circle (centre and radius) around a subnet or group, a rectangle (two corners) to frame an area, or a line to mark a boundary. color is the outline (red, blue, green, ... or #rrggbb); fill fills circles and rectangles. The drawing is written into the network file, which Packet Tracer reopens from a temporary copy; save with a path to keep it. Returns the id remove_drawing takes.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Circle: the centre. Rectangle: one corner. Line: where it starts. Canvas coordinates, as in `add_device`. | |
| y | Yes | ||
| fill | No | Circle and rectangle: fill them with this colour, named or `#rrggbb`. Left unfilled when omitted. | |
| to_x | No | Rectangle: the opposite corner. Line: where it ends. | |
| to_y | No | ||
| color | No | Outline colour: `red`, `orange`, `yellow`, `green`, `blue`, `purple`, `gray`, `black`, `white`, or a `#rrggbb` value. Defaults to blue. | |
| shape | No | `circle` (default), `rectangle` or `line`. | circle |
| radius | No | Circle: its radius. Defaults to 60. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| file | Yes | The temporary copy Packet Tracer now has open: drawings go through the network file. Your own file is untouched: save with `save_network` and a path to keep the drawing there. |
| fill | No | |
| color | Yes | |
| shape | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, destructiveHint=false, openWorldHint=false. The description adds the crucial non-obvious behavior: drawings are written into the network file, Packet Tracer reopens from a temporary copy, and the change is only kept if the agent saves with a path. It also states the return value (an id) and its consumer. This is material context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four dense sentences: shapes first, then colour/fill, then persistence semantics, then return value. No filler, and the most consequential constraint (the temp-copy/save behavior) is stated before the return note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a mutating canvas operation with an output schema, and the description covers the shape vocabulary, the coordinate conventions, defaults, and the persistence caveat. Nothing needed to invoke it correctly is missing; return-value detail is appropriately brief since an output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, so the baseline is 3, but the description actively compensates: it specifies colour syntax (named palette or `#rrggbb`), the default outline colour (blue), radius default (60), and what x/y/to_x/to_y mean per shape. It largely duplicates schema text rather than extending it, so it stops short of 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Draw on the logical canvas') and enumerates the three concrete shapes with their geometric meaning. It also names the sibling that consumes this tool's output ('Returns the id `remove_drawing` takes'), making it distinguishable from list_drawings/remove_drawing 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Each shape is tied to a use case ('ring a subnet or group', 'frame an area', 'mark a boundary'), which tells the agent which variant to select. It also says when to save ('save with a path to keep it'), a real usage condition. It does not, however, state when not to draw or name alternatives in the shape-selection space.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fast_forwardA
Press Realtime mode's Fast Forward Time button: timers jump ahead so spanning tree converges, DHCP leases arrive and routing protocols settle at once instead of after 30 seconds or more. Call it after cabling or configuring, before testing connectivity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| done | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this mutates state but is not destructive. The description adds real behavioral context by explaining what actually changes (spanning tree converges, DHCP leases arrive, routing protocols settle) and the time it saves, which is beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences, with the core action front-loaded and the usage timing following. Every clause earns its place by conveying either effect or timing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. For a parameterless action tool, the description supplies purpose, effect, and invocation timing, leaving nothing essential missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there are no parameter semantics to explain; the baseline for a parameterless tool is 4. Nothing in the description is needed to clarify inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Press Realtime mode's Fast Forward Time button') and states its concrete effect ('timers jump ahead'), which is unambiguous. It is clearly distinguishable from siblings like simulation_mode and simulation_step because it scopes itself to Realtime mode's time-advance behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit sequencing guidance: 'Call it after cabling or configuring, before testing connectivity.' This is clear contextual instruction, though it does not name an alternative tool or state when not to use it, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_preferencesARead-only
Read Packet Tracer's preferences: port labels, link lights, device labels, auto cabling, animation, sound, device dialog tabs, toolbars and more.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| values | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safe read-only nature is established structurally. The description adds only the scope of preferences returned; with an output schema present, the enumerated categories are partly redundant, and nothing extra is disclosed about auth or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and resource. The trailing 'and more' is mildly vague filler but does not obscure the core meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile, an existing output schema covering return values, and no parameters, the description gives an agent everything needed to call it correctly. The only soft spot is the undefined 'and more' scope, which the output schema resolves.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. There is no parameter surface for the description to explain, and it correctly avoids inventing input arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Read) and resource (Packet Tracer's preferences) and enumerates the setting categories covered. It does not name the set_preferences sibling, but the 'Read' verb implicitly distinguishes it as the retrieval counterpart to that mutator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the read side of preferences and that set_preferences handles mutation, but the description never states when to call it, its relationship to set_preferences, or any conditions. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
host_filesADestructive
Work with the text files of a PC, laptop or server, the ones its Text Editor opens and dir lists: list, read, write (creates or replaces) or delete a file in C:.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | File name in C:\, for example `notes.txt`. Required except for `list`. | |
| text | No | Text to write. Required for `write`. | |
| action | No | `list` (default), `read`, `write` or `delete`. | list |
| device | Yes | PC, laptop or server. |
Output Schema
| Name | Required | Description |
|---|---|---|
| text | No | The file's text, for `read`. |
| files | Yes | The files in C:\ after the action. |
| action | Yes | |
| device | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds useful specifics: `write` creates or replaces a file, and `delete` removes `name`. This clarifies the destructive behavior beyond the annotation flag without contradicting it. It does not cover permissions or error behavior, but with annotations present that is a modest gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that names the resource, scope, and available actions without wasted words. It uses a colon to enumerate actions compactly and is appropriately sized for the tool. Every phrase contributes to identifying the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists and annotations disclose the safety profile, the description does not need to explain return values. It adequately covers the tool's scope and action set for a host file utility. It could be more complete by mentioning access requirements or action-specific limitations, but the core operational context is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains each parameter and action in detail, including defaults and requirements. The description reinforces the action names and C:\ file scope but adds little syntax or semantic detail beyond what the schema already provides. Baseline 3 is appropriate when structured fields carry the parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear resource and scope: text files on a PC, laptop or server, specifically files in C:\ that a Text Editor opens and `dir` lists. It enumerates the four actions (list, read, write, delete) so the agent knows what the tool does. It does not name or contrast any sibling tool, so it falls short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by defining the tool as working with host text files in C:\ and by listing the available actions. However, it gives no explicit when-to-use or when-not-to-use guidance, and it does not point to alternatives such as run_host_command or other host-configuration siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_devicesARead-only
List every device in the open network with its model, kind (router, switch, pc, ...) and canvas position. Use the names to target devices in other tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| devices | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the scope is 'every device in the open network' and that names are reusable identifiers, which is useful context, but it says nothing about ordering, payload size, or whether an empty network returns an empty list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: the first defines scope and return shape, the second gives the practical follow-on action. Scope and content are front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations cover the safety profile. For a zero-parameter read tool the description is essentially complete, with only minor gaps such as ordering/emptiness behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 per the rubric. Schema description coverage is 100% and there is nothing further the description could add about inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a clear verb and resource ('List every device in the open network') and even enumerates the returned fields (model, kind, canvas position), so an agent can distinguish it from list_models, list_links or list_ports. It stops short of explicitly naming those siblings as alternatives, which keeps it at a 4.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use the names to target devices in other tools' hints at downstream usage, but there is no statement of when to prefer this tool over sibling listing tools (list_models, list_slots, network_description) or any precondition/exclusion. Usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_drawingsARead-only
List the circles, rectangles and lines drawn on the logical canvas with their ids and centres.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| drawings | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds that the listing covers shapes on the logical canvas with ids and centres, but says nothing about scoping or whether the list can be empty/partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence with no filler; the key noun phrase (what is listed) comes first and the returned fields follow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return details need not be repeated, and the description is sufficient for a zero-param read-only listing. It could be marginally stronger by noting the scope of the canvas being enumerated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (circles, rectangles and lines on the logical canvas), and even names the returned fields. Read alongside siblings like draw and remove_drawing, the intent is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this versus alternatives such as screenshot or show_workspace, and no prerequisites or exclusions. Usage is only implied by the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_linksARead-only
List every cable in the network with both endpoints and the cable type.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| links | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety and scope profile. The description adds that it enumerates every cable and includes endpoint and type details, but it does not disclose additional behavioral traits such as pagination, filtering behavior, or response characteristics beyond what the annotations and output schema imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. It efficiently communicates the action, scope, and returned information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with an output schema and annotations, the description is complete enough. It states what is listed and what details are included, while the output schema handles the return structure and annotations cover safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The description correctly does not invent or discuss parameters, and the empty input schema is self-explanatory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: list every cable in the network, with the returned properties (both endpoints and cable type). This is clear, but it does not explicitly distinguish itself from sibling listing tools such as list_ports or list_devices, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like list_ports or list_devices. The description implies it is for retrieving cable links, but it provides no explicit usage context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_locationsARead-only
List the physical workspace: Intercity, cities, buildings, wiring closets and racks, each with its path, position and the devices placed in it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| locations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered. The description adds that entries carry path, position, and contained devices, but this is largely return-shape information that the output schema already supplies, so the marginal behavioral value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence naming the verb and resource first, then the hierarchy. It is compact with no filler, though the long enumerations of levels and fields border on return-value description that overlaps the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with an output schema and clean annotations, the description is essentially complete. An agent knows what it returns and that it is safe to call; only an explicit pointer to the sibling alternative is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, which is the baseline-4 case; there is nothing to disambiguate. Schema description coverage is 100%, so nothing is left undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource (the physical workspace hierarchy: Intercity, cities, buildings, closets, racks), so an agent can distinguish it from list_devices, list_notes, and list_links. It does not explicitly contrast itself with show_workspace, which also exposes workspace structure, but the hierarchy enumeration is specific enough to route correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: it is a read-only enumeration, so an agent can infer 'use this to discover the location tree.' But there is no explicit when-to-use guidance and no named alternative (e.g., show_workspace) for the overlapping case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_modelsARead-only
List the device models this Packet Tracer can create, straight from its hardware catalog, optionally filtered by kind (router, switch, pc, server, access_point, ...). Set include_modules to also list slot modules such as HWIC-2T or NIM-2T, or give a module kind (interface_card, pt_laptop_module, ...) to list only those modules.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only models of this kind: a device kind such as `router`, `switch`, `pc`, `server`, or a module kind such as `interface_card` or `pt_laptop_module`, which lists modules. | |
| include_modules | No | Also list the modules (HWIC, NIM, NM cards) that can be installed in slots. |
Output Schema
| Name | Required | Description |
|---|---|---|
| devices | Yes | |
| modules | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety and scope are covered. The description adds useful context that results come from a static hardware catalog rather than the active topology, but says nothing about result size, paging, or ordering.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action and followed by the filtering behavior. Slightly clause-heavy in the second sentence but no wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and annotations cover the safety profile. Both parameters are addressed and the catalog-vs-live distinction is made, leaving little an agent needs beyond this to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes further by giving concrete device-kind and module-kind examples (access_point, interface_card, pt_laptop_module) and, importantly, explaining the interaction: passing a module kind to `kind` lists only modules. That interaction is meaningful semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the device models this Packet Tracer can create") and clarifies the source is the hardware catalog rather than live network state, which implicitly separates it from list_devices/list_slots. It does not explicitly name a sibling, so it stops short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the two practical usage modes (filter by kind, or set include_modules/adjust kind to surface modules), which is implied guidance. However, it never states when NOT to use it or points to an alternative such as list_devices for currently instantiated hardware.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_notesARead-only
List the text notes on the logical canvas with their ids and positions. Port labels drawn at cable ends are left out unless include_port_labels is true.
| Name | Required | Description | Default |
|---|---|---|---|
| include_port_labels | No | Also list the port labels Packet Tracer draws at each end of a cable (`Gig0/0`, `Fa0/1`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description usefully adds that port labels are excluded by default, going beyond the annotations, but says nothing about ordering, volume, or scope limits of the listing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action and scope, followed by the one conditional caveat. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only list tool with one optional boolean and an output schema that already defines return values, the description covers what an agent needs. Minor omissions (result ordering, whether it covers all pages of the canvas) are not critical here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter is fully documented in the schema. The description restates the default behavior of include_port_labels ('left out unless ... is true'), which marginally reinforces rather than extends the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (text notes on the logical canvas) plus what is returned (ids and positions), which cleanly separates it from add_note and remove_note. It does not, however, explicitly distinguish itself from the nearby list_drawings sibling, which an agent might reasonably 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied by the tool name and the note about port labels; there is no explicit statement of when to call this versus list_drawings or show_workspace. The include_port_labels sentence does convey a conditional behavior, which is a partial substitute for guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_portsARead-only
List a device's ports with their state, IPv4 address when they have one, and what each port is connected to. Use it to pick free ports before connect.
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | Device name as shown by `list_devices`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ports | Yes | |
| device | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description reinforces that this is a state-inspection read but adds no behavioral detail such as ordering, pagination, or error behavior for unknown devices. Adequate but not rich beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the purpose front-loaded and the usage hint second. Every clause earns its place by describing distinct returned fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value detail need not be repeated, and annotations cover the read-only nature. The definition is sufficient for correct invocation, with only minor room to note how a device name is discovered or resolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the 'device' parameter is already documented in the schema as 'Device name as shown by list_devices.' The description adds no further semantics about this parameter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List a device's ports') and enumerates what each entry contains (state, IPv4, connections), so an agent knows exactly what is returned. It does not explicitly differentiate from the nearest lookalike sibling (list_slots), so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete use case: 'Use it to pick free ports before connect,' which names the sibling tool (connect) whose precondition it serves. It stops short of a 5 because it offers no when-not guidance or statement about ports that are already occupied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_server_servicesARead-only
List the services of a server (DHCP, DNS, HTTP, HTTPS, FTP, SMTP, POP3, NTP, Syslog, TFTP) and whether each one is on.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port whose DHCP service to report. Defaults to `FastEthernet0`. | |
| device | Yes | Server name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| device | Yes | |
| services | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the agent knows this is a safe, local read. The description adds that it reports on/off status for each service, but says nothing about permissions, rate limits, or side effects beyond what the annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The resource is stated first, followed by the enumerated services and status detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has only two parameters, full schema coverage, and an output schema. The description names the resource and the full set of services, and annotations cover the safety profile, so nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema. The description implies a server target ('of a server') but adds no syntax, defaults, or port semantics beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('List') and resource ('services of a server'), and enumerates the exact service types returned. It is easily distinguished from sibling tools like set_server_service or configure_dhcp_server, which mutate rather than list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating what is listed, but gives no explicit when-to-use guidance or alternatives. It does not say to call it before set_server_service or how it differs from configure_* tools. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_simulation_eventsBRead-only
Read the simulation event list: where each PDU was, when, which protocol, and whether it was accepted or dropped. With include_decisions, also Packet Tracer's per-layer explanation of each step, the same text as the PDU Details window.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum events to return, newest last. Defaults to 50, maximum 500. | |
| device | No | Only events at this device. | |
| protocols | No | Only these protocols, for example `["ICMP", "ARP"]`. Omit for every protocol. | |
| include_decisions | No | Include Packet Tracer's explanation of each step (the OSI decisions in PDU Details). |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | Every event recorded so far. |
| events | Yes | |
| matching | Yes | Events matching the filters, before `limit`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful content detail by noting that include_decisions surfaces Packet Tracer's per-layer explanation, the same text as the PDU Details window. It says nothing about ordering beyond the schema's hint, pagination limits, or behavior on an empty/raw simulation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with zero filler. The core read purpose and its field set are front-loaded, and the optional decision-text behavior is deferred to the second sentence, which is the right ordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value documentation is unnecessary, and the description adequately covers what the list contains. The remaining gap is routing: with siblings like watch_events and simulation_step present, the description gives no guidance on which one to pick, so the definition is adequate but not complete for selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (limit, device, protocols, include_decisions) are already fully documented with defaults and semantics. The description only restates include_decisions at a higher level, adding 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb (Read) and resource (simulation event list) and enumerates the fields returned: location, timing, protocol, accepted/dropped. That clearly distinguishes it from state-changing siblings. However, it never contrasts itself with close siblings like watch_events or simulation_step, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit statement of when to use this tool versus watch_events, simulation_step, or simulation_mode. The use case (inspecting a completed simulation log) is only implied by the name and field list. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_slotsARead-only
List a device's module slots (path, the kind of module each accepts, what is installed) and the module models the device supports.
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | Device name as shown by `list_devices`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slots | Yes | |
| device | Yes | |
| supported_modules | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description usefully discloses the shape of the returned content (paths, accepted module kinds, installed modules, supported models), but adds nothing about errors, permissions, or device-name validity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the parenthetical carries real information about the return payload rather than restating the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering safety, a fully documented single parameter, and an output schema present to describe return values, the description is sufficient to call the tool correctly. Only the lack of routing guidance to sibling tools keeps it from full marks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and schema coverage is 100% with the schema already stating 'Device name as shown by list_devices.' The description does not add format or syntax detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('a device's module slots'), and the parenthetical enumerates what each slot record contains, so the agent knows exactly what it gets back. It does not explicitly differentiate from near-neighbours such as list_ports or list_models, though the scope is clear enough to infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the tool is the natural precursor to add_module/remove_module, but the description never states when to call it or what alternative to prefer. No prerequisites or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_deviceB
Move a device to a new position on the logical canvas.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | New canvas x of the device center. | |
| y | Yes | New canvas y of the device center. | |
| name | Yes | Device name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | Yes | |
| y | Yes | |
| kind | Yes | |
| name | Yes | |
| model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the safety profile is covered structurally. The description adds no behavioral context beyond that, such as whether coordinates are absolute or relative, whether the move is animated, or whether it requires a running simulation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste. The verb and resource lead, and no padding follows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and three required params are fully documented in the schema. However, for a canvas-mutating tool with adjacent siblings, the description leaves selection context and coordinate semantics implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter is documented as canvas x/y of the device center and device name, so the schema does the heavy lifting. The description adds nothing beyond the schema's own naming, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (move) and resource (device) with the target surface (logical canvas position). It is clear what the tool does but does not distinguish itself from siblings like arrange_devices or move_to_location, which could also reposition things.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives such as move_to_location or arrange_devices. The agent gets no condition for selecting this tool over repositioning siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_to_locationA
Move a device, or a whole location such as a wiring closet, to another place in the physical workspace, for example a switch into Home City/Corporate Office/Main Wiring Closet. Devices moved into a wiring closet land on its rack or table.
| Name | Required | Description | Default |
|---|---|---|---|
| into | Yes | Path of the destination, for example `Home City/Corporate Office/Main Wiring Closet`. Devices moved into a wiring closet land on its rack or table, as Packet Tracer places them. | |
| device | No | Device to move, by its name in `list_devices`. Give this or `location`. | |
| location | No | Location to move, by its path in `list_locations`. Give this or `device`. | |
| x_percent | No | Where to leave it inside the destination, as a percentage of the room's width and height: 50 and 50 is the middle. | |
| y_percent | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | No | The temporary copy Packet Tracer now has open, when the move went through the network file. Save with `save_network` and a path to keep it. |
| moved | Yes | The device name or location name that moved. |
| now_in | Yes | Path of the location it ended up in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context that a device moved into a wiring closet lands on its rack or table, but says nothing about reversibility, error conditions, or what happens to existing placement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load the core action and follow with the wiring-closet nuance. Minimal waste, though the closing detail partially duplicates the 'into' schema description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers both target types and the notable placement rule. It is nearly complete, missing only the mutual-exclusivity rule for device vs location and any error behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so the schema already documents 'into', 'device', 'location' and 'x_percent'. The description largely restates that content (destination path, device-by-name, location-by-path, wiring-closet landing) rather than adding new semantics such as coordinate ranges or what happens when both/neither of device and location are supplied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (move) and resources (a device or a whole location) plus the domain (physical workspace), with a concrete example path. It does not name or differentiate against the sibling move_device, which does similar work for devices, leaving the boundary implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the example ('for example a switch into Home City/Corporate Office/Main Wiring Closet'). There is no explicit when-to-use guidance, no mention of when to prefer this over move_device, and no statement of prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
network_descriptionA
Read the open file's description (the Description button in Packet Tracer), or replace it with text.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | New description (HTML or plain text). Omit to only read it. |
Output Schema
| Name | Required | Description |
|---|---|---|
| html | Yes | |
| text | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the agent knows this is a local, non-destructive write. The description adds that 'replace' overwrites the existing description, which is useful signal, but it omits whether the prior value is recoverable or whether the operation requires the file to be saved. Modest added value over annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence with the read case and the write case front-loaded and zero filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema (so return values need no explanation), and 100% parameter coverage. The description covers both modes adequately. It is only slightly incomplete in not clarifying what happens to the existing description or whether reading returns HTML versus text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only one optional parameter and 100% schema description coverage, the schema already documents that `text` accepts HTML or plain text and that omitting it performs a read. The description restates this rather than adding syntax, format, or size constraints beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific dual-mode operation: read the open file's description or replace it with `text`. It also maps the concept to a concrete UI affordance (the Description button in Packet Tracer), which grounds the agent's understanding. It does not explicitly distinguish itself from siblings like describe_ipc, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when each mode applies — providing `text` triggers replacement, omitting it reads — but this is also encoded in the schema's default and parameter docs. There is no explicit statement of when to prefer this tool over alternatives, and no prerequisites or preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
new_networkADestructive
Start an empty network. Unsaved changes are discarded unless save_current_to gives a path to save them first.
| Name | Required | Description | Default |
|---|---|---|---|
| save_current_to | No | Save the current network here first. Without it, unsaved changes are discarded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cleared | Yes | |
| saved_previous | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false. The description adds concrete destructive behavior—unsaved changes are lost—and the exact mitigation via save_current_to, which is valuable context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences with no wasted words; the destructive consequence and mitigation are stated directly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with annotations and an output schema, the description covers the action, destructive behavior, and optional save path. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The one parameter has full schema description coverage and the description mirrors that text, adding no syntax or format details. Baseline 3 is appropriate because the schema already documents the parameter fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Start') and resource ('empty network'). The word 'empty' differentiates it from open_network, so an agent can select it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the key decision point for the optional parameter: use save_current_to to preserve unsaved changes before starting, otherwise they are discarded. It does not explicitly name open_network or other alternatives, but the context for when this tool is appropriate is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_networkADestructive
Open a .pkt or .pka file. Unsaved changes in the current network are discarded unless save_current_to gives a path to save them first. Never shows a dialog.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path of a `.pkt` or `.pka` file. | |
| save_current_to | No | Save the current network here first. Without it, unsaved changes are discarded. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| devices | Yes | |
| saved_previous | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already flags this as a data-destroying operation, and the description adds real value beyond it: it specifies exactly what is destroyed (unsaved changes in the current network), how to avoid it, and the non-obvious trait that it 'never shows a dialog', which matters for a headless agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information: what it opens, the destructive consequence and its mitigation, and the no-dialog behavior. Nothing is padded and the critical warning is front-loaded after the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need no explanation, and the description covers destruction, mitigation, and the dialog behavior. The only minor gap is not routing to sibling tools for saving or creating networks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3, and the description adds semantic weight by clarifying that save_current_to must be supplied *before* opening or the current network's changes are lost, reinforcing the schema's default-null warning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (open) and resource (.pkt/.pka file), which is clearly distinguishable from siblings like new_network and save_network. It stops short of explicitly contrasting with those siblings, but the purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The conditional 'unless save_current_to gives a path' implies usage context and warns about data loss, but it never names save_network or new_network as alternatives, so an agent must infer when opening is preferable to creating or saving.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
power_cycle_allADestructive
Power cycle every device that is on, like the Power Cycle Devices button but without its confirmation dialog: every device reloads and unsaved configuration on every router and switch is lost. Returns the devices cycled.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| devices | Yes | Devices that were on and have been switched off and back on. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, but the description goes well beyond them: it discloses that EVERY device reloads, that unsaved configuration on every router and switch is lost, and that there is no confirmation dialog. That is exactly the consequence-level detail an agent needs before firing a destructive bulk operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the destructive consequence stated before the trailing return-value note; no wasted words and the most important warning is not buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, destructive bulk action with an output schema that covers return values, the description supplies everything an agent needs: scope, irreversibility, absence of a confirmation gate, and the response shape. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and the schema is fully covered, so there is nothing for the description to document; the baseline of 4 for a no-param tool applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('power cycle every device that is on') and pins the scope to on devices only, and it anchors the action to a known UI equivalent ('like the Power Cycle Devices button'), letting an agent distinguish it from per-device power tools like set_power.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the trigger (all on devices, bulk reload) and even explains the difference from the GUI button's confirmation dialog, but it never names an alternative tool such as set_power for granular control or states when-not to use this bulk action. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
receive_emailA
Press Receive in the Email app: download the account's new mail over POP3 and return it. Like a real POP3 client, the mail is removed from the server; Packet Tracer does not expose the app's inbox, so keep what this returns.
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | Device whose Email app receives, set up with `configure_email`. | |
| timeout_secs | No | Seconds to wait for mail. Defaults to 10; an empty mailbox answers after this long. |
Output Schema
| Name | Required | Description |
|---|---|---|
| mails | Yes | |
| device | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations by disclosing a real side effect (POP3 semantics delete the mail server-side) and a critical operational caveat (the app's inbox is not exposed, so the caller must persist the return value). It also implies the call blocks up to a timeout on an empty mailbox, consistent with the schema's timeout_secs. This is exactly the extra context 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences: the action first, then the protocol/side-effect, then the retention warning. No filler, and the most important caveat is front-loaded rather than buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present the description need not explain the return shape, and it correctly spends its budget on prerequisites, side effects, and the retention requirement instead. Nothing needed 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are already well documented there, including defaults and the empty-mailbox timeout behavior. The description adds no parameter-level semantics (e.g., device naming conventions), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource (download the account's new mail over POP3) and names the mechanism, which cleanly separates it from send_email and configure_email in the sibling list. An agent can tell exactly what the call produces: the inbox contents for one device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It frames the tool as the 'Press Receive' action and ties it to a device that has already been set up via configure_email (echoed in the schema). It gives no explicit when-not-to-use or explicit alternative for reading existing mail, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_deviceADestructive
Delete a device and all of its links from the network.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Device name as shown by `list_devices`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| removed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context beyond them: the operation cascades to all links attached to the device, which is a side effect an agent would not infer from the name alone. It still omits reversibility/confirmation expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence carrying the verb, the resource, and the cascade side effect with zero filler. Nothing to trim and nothing important buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with an output schema and full annotation coverage, the description is nearly complete: it conveys purpose and the cascading link removal. The only gap is the absence of any note on confirmability, permission needs, or whether a deleted device can be restored.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and there is only one parameter, whose schema description already explains the format and points at list_devices as the source of valid values. The description adds nothing to parameter semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (device), and adds the important scope detail that all of the device's links are removed too. This clearly separates it from sibling tools like remove_module, remove_location, remove_note, and remove_drawing, which operate on different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The destructive 'delete' verb implies when it would be used, but there is no explicit guidance about when to prefer it over alternatives (e.g. disconnect vs. remove, or rename_device for non-destructive edits) and no stated preconditions such as needing a valid device name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_drawingADestructive
Remove a circle, rectangle or line from the logical canvas by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Note id as returned by `add_note` or `list_notes`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| removed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this mutates state. The description adds context that the target is a drawing on the logical canvas keyed by id, beyond the boolean flags. Output schema exists, so return value need not be explained. Not a full 5 because it doesn't clarify irreversibility or permission requirements beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the verb, no filler. Exactly the right length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple one-param destructive tool with a full schema, annotations, and an output schema, the description is nearly complete. It could mention irreversibility or handling of missing ids, but the destructiveHint covers the main risk.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the 'id' parameter. The description adds the useful scope that id refers to drawings (circle, rectangle, line) on the logical canvas, which is minor added value. Baseline would be 3-4 with full coverage; this is compatible.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (remove) and resource (circle, rectangle, line on logical canvas) scoped by id. Distinguishes from add-drawing operations, though it doesn't explicitly name the sibling toolbar draw tool. Clear enough for selection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, nor prerequisites (e.g., must exist first, ownership). Agent must infer context entirely from the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_locationADestructive
Delete a city, building, wiring closet or rack with everything inside it. Devices must be moved out first (move_to_location); the power units Packet Tracer puts in racks go with it. Packet Tracer has no call for this, so pktctl edits the network as bytes and opens the result as a temporary copy; save with save_network and a path to keep the change.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of the city, building, wiring closet or rack to delete, as listed by `list_locations`. Everything inside it goes too. |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | The temporary copy Packet Tracer now has open. Your own file is untouched: save with `save_network` and a path to keep the change there. |
| removed | Yes | |
| power_units_removed | No | Power Distribution Devices that were inside and were removed with it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds substantial context the annotations can't: exactly what is destroyed (everything inside, including Packet Tracer's power units in racks), and the critical fact that the edit is written as bytes into a temporary copy that is discarded unless save_network is called. That persistence caveat is the kind of behavioral disclosure that prevents silent data loss.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences with no filler: the destructive scope comes first, the precondition second, and the persistence requirement last. Every sentence carries information an agent needs to act correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation. Between the destructive scope, the move-out precondition, and the temp-copy/save requirement, the description covers everything needed to call this mutation safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'path' parameter is fully documented in the schema, including the list_locations reference and the 'everything inside goes too' warning. The description's restatement of the deletable object types adds little beyond the schema, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Delete') and precise resources (city, building, wiring closet, rack) with the crucial scope qualifier 'with everything inside it.' An agent can distinguish this from siblings like remove_device and remove_note 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit precondition ('Devices must be moved out first (move_to_location)') routes the agent to the correct alternative tool when the condition isn't met, and it names save_network + a path as the required follow-up to persist the change. Both when-to-use and the alternative path are spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_moduleADestructive
Remove the module in a slot, power cycling the device like add_module. Returns the ports that disappeared with it.
| Name | Required | Description | Default |
|---|---|---|---|
| slot | Yes | Slot path holding the module to remove. | |
| device | Yes | Router or switch name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| slot | Yes | |
| device | Yes | |
| module | Yes | |
| cut_links | No | |
| ports_added | Yes | |
| ports_removed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the mutation profile is covered. The description adds real value beyond that: it discloses a power-cycling side effect on the device and that the returned ports are those that disappeared, which the annotations and schema do not say.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and scope, with the side effect and return info trailing. Efficient and free of filler, though 'like add_module' is a slightly indirect way to describe the power-cycle behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the destructive profile and an output schema existing (so return values need not be explained), the description supplies the key missing hazard (power cycling) and the return semantics. It omits any prerequisite or error condition (e.g., invalid slot), a minor gap for a two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (device, slot) are fully documented in the schema with their meaning. The description adds no format or syntax detail beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Remove the module in a slot') with a clear scope tied to a slot path, and names add_module as its counterpart operation. It is readily distinguishable from other remove_* siblings (remove_device, remove_note) by naming the module-in-slot target, though it doesn't explicitly differentiate those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'like add_module' implicitly frames it as the inverse of add_module, which hints at when to use it, but there is no explicit when/when-not guidance or statement of prerequisites (e.g., slot must hold a module). Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_noteBDestructive
Delete a note from the logical canvas by id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Note id as returned by `add_note` or `list_notes`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| removed | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and readOnlyHint=false, so the agent knows this is an irreversible mutation. The description adds the 'logical canvas' scope but says nothing about what happens if the id is missing, cascade effects, or confirmation requirements, so it adds only modest behavioral value on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence that front-loads the verb and resource with zero filler. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with a full output schema and explicit destructive annotations, the description covers the essentials an agent needs to invoke it. Only minor gaps remain, such as error behavior on a nonexistent id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the id parameter already documents its provenance ('as returned by add_note or list_notes'). The description's 'by id' is redundant with the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (note) with a scoping qualifier ('from the logical canvas'), which separates it from sibling mutators like remove_drawing and remove_device. It does not explicitly contrast against the closely related remove_* set, but the resource is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, nor any prerequisites (e.g., whether the note must exist, or whether list_notes should be consulted first). Usage is only implied by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_deviceB
Rename a device. The new name must not be taken by another device.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Current device name. | |
| new_name | Yes | New, unused device name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| x | Yes | |
| y | Yes | |
| kind | Yes | |
| name | Yes | |
| model | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds one useful behavioral rule — the new name must not collide with an existing device — but says nothing about failure behavior, permissions, or side effects on references to the device.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the action stated first and the constraint second. Nothing to trim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and annotations carry the safety profile. However, for a mutation tool the description omits when-to-use and error/prerequisite context, leaving a modest gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the two parameters ('name' as current device name, 'new_name' as unused device name) are fully documented in the schema. The description's uniqueness clause simply restates the constraint already given in the 'new_name' schema description, adding no new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Rename a device'), which is unambiguous and distinct from siblings like remove_device or add_device. It doesn't explicitly contrast with rename_location, but the resource noun makes the target clear enough.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives, and no mention of prerequisites such as the device already existing or being part of the workspace. The uniqueness constraint is a rule, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_locationA
Rename a city, building, wiring closet or other location. Packet Tracer has no call for this, so pktctl takes the network as bytes, edits them and opens the result as a temporary copy; your own file is not written, save with save_network and a path to keep the change.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | New name, for example `Edificio Central`. | |
| path | Yes | Path of the location, as listed by `list_locations`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | No | The temporary copy Packet Tracer now has open, when the change went through the network file. Your own file is untouched: save with `save_network` and a path to keep the change there. |
| location | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses important behavioral details beyond the annotations: Packet Tracer has no native rename call, pktctl edits the network as bytes and opens a temporary copy, and the user's original file is not written until saved with save_network. This aligns with the non-destructive annotation and gives the agent critical persistence information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the purpose and then explains the unusual behavior and required follow-up action. Every sentence contributes necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a fully described schema, clear annotations, and an output schema present, the description covers the key behavioral and persistence details an agent needs. No important contextual gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already fully documented in the input schema. The description adds no further parameter meaning, making the baseline score of 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Rename a city, building, wiring closet or other location') and lists concrete location types. It is clearly distinguishable from sibling tools such as rename_device, which operates on a different resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a useful follow-up workflow instruction ('save with save_network and a path to keep the change'), but it does not explicitly state when to use this tool versus alternatives like rename_device or add_location. The usage context is implied rather than clearly bounded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_activityADestructive
Reset the open activity to its initial network, discarding the work done in it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| items | No | Assessment items (the Check Results tree). |
| points | No | Assessment points. |
| is_activity | Yes | |
| seconds_left | No | Seconds left when the activity has a countdown timer. |
| score_percent | No | |
| seconds_elapsed | No | |
| percent_complete | No | |
| instruction_pages | No | |
| password_confirmed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and readOnlyHint=false, but the description adds specific context the annotations cannot: what is destroyed ('the work done in it') and the resulting state (initial network). This tells the agent the reset is scoped to activity content rather than, say, the file itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with the action and consequence front-loaded; there is no filler, and the destructive effect is stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the destructive behavior is disclosed. The only gap is the precondition around activity state (e.g., whether it must be unlocked or a simulation must be stopped), which is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies no filtering or selection input is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (reset) and resource (the open activity) with a concrete outcome (returns to initial network state). It distinguishes itself implicitly from new_network/open_network/unlock_activity, though it does not name a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use guidance and no alternatives are named. The phrase 'the open activity' merely implies a precondition that an activity is loaded; the agent must infer the rest from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_cliADestructive
Type one IOS command at the console of a router or switch and return its output, including commands that take time such as ping or traceroute. status tells whether IOS accepted the command. A command still running after timeout_secs is stopped with Ctrl+Shift+6 and comes back with finished: false and the output so far. When IOS asks something ([confirm], [yes/no], Password:) the reply carries question and the console keeps waiting: answer with another run_cli in mode current, an empty command for Enter.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Mode to run the command in. Defaults to `enable`. | |
| device | Yes | Device name exactly as shown by `list_devices`. | |
| command | Yes | One IOS command, for example `show ip interface brief`. To answer a question the previous command left open (`question` in its reply), send the answer here with mode `current`; an empty command presses Enter, which confirms `[confirm]`. | |
| password | No | Console line password, when the device asks for one at `Password:`. | |
| timeout_secs | No | Seconds to wait for the command to finish. Defaults to 30, maximum 300. | |
| enable_password | No | Privileged mode password (`enable secret` or `enable password`). |
Output Schema
| Name | Required | Description |
|---|---|---|
| output | Yes | |
| status | No | |
| finished | Yes | |
| question | No | The question the command is waiting on, such as `Proceed with reload? [confirm]`. Answer it with another call in `current` mode; an empty command presses Enter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses timeout handling (Ctrl+Shift+6 abort, `finished: false` with partial output), the `status` acceptance field, and the multi-turn question/answer protocol. This is exactly the kind of behavior an agent could not infer from readOnlyHint/destructiveHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the timeout and question-handling behavior in dense, purposeful sentences. Every sentence carries information, though the interactive-prompt paragraph is slightly compressed and takes a second read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be spelled out, yet the description still names the key reply fields (status, finished, question) and covers the tricky interactive loop. Nothing needed to call this correctly appears to be missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds cross-parameter semantics the schema does not: how `command` and mode `current` combine to answer a pending question, and that an empty command sends Enter to confirm a `[confirm]` prompt. That said, it does not clarify the user/enable/global mode distinctions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Type one IOS command at the console of a router or switch and return its output') and scopes it to IOS devices, which cleanly separates it from run_host_command and the configuration-oriented siblings like configure_ios.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains the context of use (single commands, including slow ones like ping/traceroute) and gives an explicit when-to-use rule for the interactive path: answer a pending `question` with another run_cli in mode `current`. It does not name run_host_command as the alternative for non-IOS hosts, so routing between the two 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.
run_host_commandA
Run a command in the Command Prompt of a PC, laptop or server (ping, ipconfig, tracert, nslookup, arp -a) and return its output. Waits until the command finishes; a command still running after timeout_secs (ping -t) is stopped with Ctrl+C and comes back with finished: false and the output so far.
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes | PC, laptop or server name as returned by `list_devices`. | |
| command | Yes | Command Prompt command, for example `ping 192.168.1.1` or `ipconfig /all`. | |
| timeout_secs | No | Seconds to wait for the command to finish. Defaults to 30, maximum 300. |
Output Schema
| Name | Required | Description |
|---|---|---|
| output | Yes | |
| status | No | |
| finished | Yes | |
| question | No | The question the command is waiting on, such as `Proceed with reload? [confirm]`. Answer it with another call in `current` mode; an empty command presses Enter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavior well beyond the annotations: it blocks until completion, defaults to a 30s (max 300s) wait, and an over-running command is stopped with Ctrl+C and returned with `finished: false` plus partial output. This tells the agent exactly what to expect from a long-running or infinite command.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences, front-loaded with the core action and examples, then the completion/timeout semantics. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a potentially long-running, non-read-only execution tool, the description covers purpose, scope, blocking behavior, and timeout outcome, and an output schema exists for return details. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning for `timeout_secs` (the Ctrl+C stop and `finished: false` outcome) that the schema's terse 'maximum 300' does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (run) and resource (a Command Prompt command on a PC/laptop/server), with concrete examples. The 'PC, laptop or server' scoping implicitly separates it from the network-device CLI path, so an agent can distinguish it from siblings like run_cli.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The example commands (ping, ipconfig, tracert, nslookup, arp -a) and the `ping -t` note imply typical use, but there is no explicit when-to-use/when-not guidance and the sibling `run_cli` is never named as an alternative. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_networkA
Save the open network as a .pkt file, without any dialog. Give an absolute path, or omit it to save over the file already open.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Absolute path ending in `.pkt`. Omit it to save over the file already open. |
Output Schema
| Name | Required | Description |
|---|---|---|
| path | Yes | |
| bytes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare that this is not read-only and not open-world. The description adds genuinely useful behavioral context beyond them: the operation runs with no dialog, and omitting the path silently overwrites the currently open file. That overwrite behavior is the key risk an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence with the core action front-loaded and the path rule following immediately. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and a single optional parameter is fully covered. What is missing is only minor: behavior on invalid or relative paths, and the absence of any sibling for saving-as.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single path parameter is fully documented in the schema, including the absolute-path and .pkt requirements. The description restates this rather than adding new meaning such as error behavior on relative paths.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb+resource ('Save the open network as a .pkt file') and clarifies it is dialog-free. It is clearly separable from new_network and open_network by the 'save' scope, though it does not explicitly name a sibling to contrast against.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives guidance on the path argument (absolute path vs. omit to overwrite), which implies usage, but says nothing about when to use this tool versus alternatives such as saving under a new name, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
screenshotARead-only
Capture Packet Tracer as a PNG image: the logical workspace rendered by Packet Tracer (default), the physical workspace (view: physical, which switches views for a moment), or the window as it is with any dialog open (view: window). Optionally also write it to an absolute .png path.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | `logical` (default), `physical` (Intercity), `physical_rack` (main wiring closet), or `window`. All but `logical` capture Packet Tracer's own window through the operating system. | |
| save_to | No | Also write the PNG to this absolute path, for example for a lab report. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds valuable behavioral context beyond annotations: it notes that physical view 'switches views for a moment' and that non-logical views capture the OS window, which are side effects not encoded elsewhere.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence that packs the core action, view options, and optional save behavior without any filler. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only screenshot tool with two optional parameters, full schema coverage, and no output schema, the description provides everything an agent needs: what is captured, how each view differs, the side effect of physical view, and the optional save path.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful nuance beyond the schema: it clarifies the practical effect of `view: physical` (temporary view switch), the default logical rendering, and the purpose of `save_to` (e.g., for a lab report).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Capture') and resource ('Packet Tracer as a PNG image'), and enumerates the three view modes. It does not, however, explicitly contrast itself with sibling tools like show_workspace, so a perfect 5 is withheld.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the context 'for example for a lab report' and the enumeration of views, but there is no explicit guidance on when to choose this tool over alternatives such as show_workspace or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_emailA
Send an email from the account set up with configure_email and wait for the SMTP server's answer. A recipient the server does not know comes back later as a delivery failure in receive_email.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient address, for example `admin@gamc.bo`. | |
| body | Yes | ||
| device | Yes | Device whose Email app sends, set up with `configure_email`. | |
| subject | Yes | ||
| timeout_secs | No | Seconds to wait for the server. Defaults to 30, maximum 300. |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | |
| from | Yes | |
| device | Yes | |
| subject | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare it is a non-read-only, non-destructive call, and the description adds real behavioral context: the call blocks on the SMTP server's answer, and a recipient the server rejects is surfaced later as a delivery failure in receive_email. It does not discuss timeout defaults or rate/connection failure modes, but the added detail goes clearly beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, and the action plus prerequisite are front-loaded before the failure-handling note. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the mutation's safety profile is covered by annotations. The description supplies the prerequisite and the delayed-failure semantics, which is enough for an agent to call it correctly; only timeout/error behavior is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%; 'to', 'device' and 'timeout_secs' are documented in the schema while 'subject' and 'body' are not. The description reinforces the device/account linkage but adds no syntax, format, or constraint detail beyond what the schema already provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Send an email') and pins the sending account to the one created by configure_email. It also names the sibling receive_email as the eventual failure channel, so the agent can place it in the workflow without reading further.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies the prerequisite (account must be set up with configure_email) and explains the asynchronous failure path via receive_email. It doesn't spell out when-not to use it, but it is the only send tool among the siblings, so the routing burden is low.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_backgroundA
Paper a physical location (a city, building, room or rack) with a background image, or the logical workspace when no location is given. Takes one of Packet Tracer's own backgrounds (grid_10x10, grid_25x25, grid_50x50, grid_100x100, city, building, intercity, container) or the absolute path of an image; an empty image clears it.
| Name | Required | Description | Default |
|---|---|---|---|
| image | Yes | One of Packet Tracer's own backgrounds (`grid_10x10`, `grid_25x25`, `grid_50x50`, `grid_100x100`, `city`, `building`, `intercity`, `container`) or the absolute path of an image file. An empty value clears it. | |
| tiled | No | Repeat the image instead of stretching it. | |
| location | No | Path of the physical location to paper, as listed by `list_locations`. Omit to change the logical workspace's background instead. |
Output Schema
| Name | Required | Description |
|---|---|---|
| image | Yes | The path Packet Tracer now has. |
| tiled | Yes | |
| target | Yes | The location that got the background, or `logical workspace`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare the write/safety profile (readOnlyHint=false, destructiveHint=false), and the description adds non-obvious behavioral context: setting an empty image clears the background, and the accepted value set is enumerated. It stops short of saying the prior background is replaced or whether the change is undoable, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and scope, then the value options and the clearing behavior. Efficient and free of filler, though the background-name enumeration slightly duplicates the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. For a three-parameter, non-nested tool, the description covers target, accepted values, and the edge case of clearing – nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 – the enum list and the empty-clears semantics in the description largely restate the schema's own parameter docs. No extra syntax or format detail (e.g., path constraints for the image file) is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Paper a physical location ... with a background image') and precisely scopes the target: a physical location, or the logical workspace when no location is given. An agent can distinguish this from neighbors like list_locations or move_to_location 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the condition that selects the workspace-vs-location behavior ('or the logical workspace when no location is given'). It does not name an alternative tool or state a when-not-to-use case, but no sibling competes for this exact job, so context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_host_firewallA
Use the Firewall and IPv6 Firewall apps of a PC, laptop or server: switch each one on or off, add rules (permit or deny ip, icmp, tcp or udp, by remote address and port) and remove them. Returns both switches and the rules in the order the firewall evaluates them.
| Name | Required | Description | Default |
|---|---|---|---|
| ipv4 | No | Switch the IPv4 inbound firewall on or off. Omit to leave it as it is. | |
| ipv6 | No | Switch the IPv6 inbound firewall on or off. Omit to leave it as it is. | |
| port | No | Network port. Defaults to `FastEthernet0`. | |
| device | Yes | PC, laptop or server name. | |
| add_rules | No | Rules to add, in the order the firewall will evaluate them. | |
| remove_rules | No | Rules to remove; they must match an existing rule exactly. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ipv4 | Yes | |
| ipv6 | Yes | |
| port | Yes | |
| device | Yes | |
| ipv4_rules | Yes | IPv4 rules as the firewall lists them, in order. |
| ipv6_rules | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, so the mutation profile is covered. The description adds that the reply reflects the firewall's evaluation order, but says nothing about permissions needed, reversibility of rule removal, or per-rule atomicity beyond what the schema states, and the return-format sentence is largely redundant with the existing 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, operations front-loaded, no padding. The trailing sentence about return values is somewhat expendable given the output schema, but the size is well matched to the tool's breadth.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with full schema coverage, an output schema, and annotations covering safety, the description supplies an adequate overview of what can be configured. The main gap is operational guidance (rule ordering, removal matching, permission needs), which is minor given the structured metadata.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (including the nested rule object) are already documented, giving a baseline of 3. The description restates protocol/action/address/port in prose but adds no format or constraint detail beyond the schema (e.g., no guidance on ordering semantics or the exact-match requirement for removals).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (the host's IPv4 and IPv6 Firewall apps) and enumerates the concrete operations: toggling each firewall, adding permit/deny rules, and removing rules. No sibling does firewall management, so confusion risk is low, but the description does not explicitly distinguish itself from neighbors like configure_host, keeping it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It tells the agent the tool is for a PC/laptop/server's Firewall apps and describes the classes of operation, so usage is implied. However there are no when-to-use/when-not statements, no mention of which parameter combinations are valid, and no routing to an alternative for firewall inspection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_powerADestructive
Switch a device on or off. Switching a router or switch off and on reloads it: configuration that was not saved with write memory is lost. IOS devices come back ready at the prompt.
| Name | Required | Description | Default |
|---|---|---|---|
| on | Yes | `true` to switch it on, `false` to switch it off. | |
| device | Yes | Device name as returned by `list_devices`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| on | Yes | |
| device | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, and the description earns additional credit by disclosing the concrete destructive consequence: unsaved configuration is lost unless written with 'write memory'. It also states the post-condition that IOS devices return to the prompt, which is behavior neither the annotations nor the schema convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, then escalating to the risk and the recovery state. Every sentence carries distinct information with no padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, output-schema-backed tool, the description covers the action, the hazard, and the resulting state. Return values need not be explained since an output schema exists, leaving no meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the 'on' boolean and the 'device' name are already fully documented. The description adds no further parameter meaning, which is acceptable given the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Switch a device on or off') with unambiguous scope for a single device. It is clearly distinguishable from most siblings, though it never explicitly contrasts itself with power_cycle_all, which is the nearest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the description of what happens when a router or switch is switched off and on, but there is no explicit when-to-use guidance or reference to the sibling power_cycle_all that would select between them. An agent must infer the routing decision itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_preferencesA
Change Packet Tracer preferences by name, for example { "values": { "show_port_labels": true } }. Returns every preference afterwards.
| Name | Required | Description | Default |
|---|---|---|---|
| values | Yes | Preferences to change, for example `{ "show_port_labels": true, "disable_auto_cabling": true }`. `get_preferences` lists every name. |
Output Schema
| Name | Required | Description |
|---|---|---|
| values | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, and openWorldHint=false, so the mutation/safety profile is covered. The description adds one useful behavioral detail ('Returns every preference afterwards'), but says nothing about persistence, session scope, or whether changes are reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action and an inline example up front, then the return behavior. Nothing is wasted and it is easily parsed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with full schema coverage and an output schema, the description is nearly sufficient: action, payload shape, and post-condition are all present. Only the when-to-use framing against get_preferences is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested 'values' object is fully documented in the schema (including the get_preferences pointer for valid names). The description's payload example matches but adds no meaning beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Change Packet Tracer preferences by name') and gives a concrete payload example, so an agent knows exactly what it does. It does not explicitly name get_preferences as the read-facing counterpart, so sibling differentiation comes only from the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'by name' phrasing and the example imply this is the write side of a get/set pair, and the schema points to get_preferences for the list of valid names. However, the description itself offers no explicit when-to-use condition, prerequisites, or exclusion relative to get_preferences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_server_serviceB
Switch one service of a server on or off, as in its Services tab.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | For DHCP: the port the service runs on. Defaults to `FastEthernet0`. | |
| device | Yes | ||
| enabled | Yes | ||
| service | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| enabled | Yes | |
| service | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-read-only, non-destructive, non-open-world mutation, so the safety profile is covered. The description adds that it toggles exactly one service, but it does not disclose permissions, immediacy of effect, or whether the change is persisted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. The Services tab analogy is useful and compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple toggle tool with annotations covering safety and an output schema covering returns, the description is minimally adequate. However, it leaves usage alternatives and the device/port parameter relationships underspecified for a mutation with required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25%, so the description must compensate. It implies the server (device), service, and enabled/on-off parameters, but it does not mention the optional port parameter or clarify the service enum values beyond what the schema already lists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (switch), resource (service), scope (one service of a server), and operation mode (on/off). It is clearly distinguishable from list_server_services and configure_* siblings, but it does not explicitly name or contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance, no prerequisites, and no alternatives. The Services tab reference implies a UI analogue but does not tell an agent when to choose this over list_server_services or configure_dns_server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_exappA
Create the Packet Tracer app registration file (.pta) for pktctl's configured app id and secret, using Packet Tracer's own meta tool, and return the one-time steps to register it. Works while Packet Tracer still rejects pktctl.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| pta | Yes | |
| steps | Yes | |
| app_id | Yes | |
| meta_tool | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering the safety profile (readOnlyHint=false, destructiveHint=false), the description adds useful behavioral context: it creates a specific file, uses Packet Tracer's `meta` tool, returns one-time steps, and works even when Packet Tracer rejects pktctl. It does not detail overwrite behavior or failure modes, but goes beyond what annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose. Every clause earns its place by adding either mechanism, return behavior, or applicability condition. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema for return values, and annotations covering safety, the description is nearly complete. It could mention prerequisites (e.g., that pktctl must already have an app id/secret configured), but for an experienced agent the current text is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline score is 4. There are no parameters to explain, and the description does not need to compensate for any schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: 'Create the Packet Tracer app registration file (.pta)'. It also specifies how (using Packet Tracer's own `meta` tool) and what it returns (one-time registration steps). This uniquely distinguishes it from all sibling tools, which handle simulation configuration rather than app registration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use: it creates the registration file for pktctl's configured app id and secret, and notes 'Works while Packet Tracer still rejects pktctl.' This tells the agent when the tool is applicable, though it does not explicitly name alternatives or exclusions. For a setup-only tool, the implied usage is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_web_pageB
Write a page of a server's HTTP service, for example index.html.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Page name, for example `index.html`. | |
| device | Yes | ||
| contents | Yes | HTML contents. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| bytes | Yes | |
| device | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, destructiveHint=false, openWorldHint=false, so the agent knows the call mutates state but is not flagged destructive. The description adds the useful context that this writes into an HTTP service, but says nothing about overwrite behavior when the page already exists, permissions, or failure modes — the main behavioral question for a file-writing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler and the example placed immediately after the core statement. Efficient, though extremely short given the tool's mutation semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a three-required-parameter write tool, the description leaves the device parameter's meaning and overwrite semantics unstated, which 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: url and contents are documented in the schema, while device has no description. The description implies 'server' is the target of device but does not name or constrain it, so it only marginally compensates for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Write a page of a server's HTTP service', with an example (index.html). An agent can distinguish this from sibling set_server_service, though the description never contrasts the two explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this versus alternatives like set_server_service, browse_web, or host_files. There are no prerequisites, no mention of the device needing to be a server, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_workspaceA
Switch Packet Tracer's main window between the logical and the physical workspace, for example before a screenshot or a class demo.
| Name | Required | Description | Default |
|---|---|---|---|
| view | Yes | Which workspace Packet Tracer should show. |
Output Schema
| Name | Required | Description |
|---|---|---|
| physical | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose readOnlyHint=false, destructiveHint=false and openWorldHint=false, so the agent knows this mutates local UI state without destroying data. The description reinforces that by framing the action as a window/view switch rather than a content change, but says nothing about whether the visible workspace persists into a saved file or what happens if no network is open.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence states the action, the two states, and example triggers with zero filler. Nothing here could be removed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, has an output schema (so return values need no description), and its safety profile is covered by annotations. The only unaddressed items are environmental prerequisites such as requiring an open network, which is a small omission for a view toggle.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 100% and a single required enum parameter documented in the schema, the schema already carries the parameter semantics. The description adds no format, persistence, or default information beyond it, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Switch') and resource ('Packet Tracer's main window'), plus the two target states (logical/physical workspace). An agent immediately knows this is a UI view toggle, not a data operation. It doesn't explicitly contrast with any sibling, but no sibling competes for this behavior, so the minor gap is in explicit differentiation only.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides concrete triggering contexts ('before a screenshot or a class demo'), which is clear when-to-use guidance rather than mere restatement. It stops short of stating any when-not or prerequisites (e.g. needing an open network), so it is not fully exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulation_modeB
Switch between Realtime and Simulation mode. Returns the mode, the simulation clock and how many events are recorded.
| Name | Required | Description | Default |
|---|---|---|---|
| on | Yes | `true` for Simulation mode, `false` for Realtime. |
Output Schema
| Name | Required | Description |
|---|---|---|
| time | Yes | Simulation clock in milliseconds. |
| events | Yes | Events recorded so far. |
| simulation | Yes | |
| current_event | Yes | Index of the event the simulation is at; `back` moves it without deleting events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a non-readonly, non-destructive, closed-world operation, so the safety profile is covered. The description adds the return contents (mode, simulation clock, recorded-event count), but omits meaningful behavior such as whether switching modes resets or preserves the simulation clock and recorded events.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the action front-loaded and the return summary second. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-boolean toggle with a full output schema and annotations, the description is adequate but thin. It does not address side effects of switching modes (clock reset, event retention) or point to the sibling tools used to advance or inspect simulation state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single boolean 'on' parameter, and the schema already documents that true=Simulation and false=Realtime. The description's mention of switching modes adds no syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Switch between Realtime and Simulation mode') and clarifies the return payload. It is clear on its own, though it does not name or contrast with closely related siblings such as simulation_step or fast_forward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to use this tool versus alternatives like simulation_step, fast_forward, or watch_events, nor does it state prerequisites or when not to switch modes. Usage must be inferred entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulation_stepA
Advance the simulation (forward, like Capture/Forward), go back, or reset the event list. Needs Simulation mode.
| Name | Required | Description | Default |
|---|---|---|---|
| times | No | How many steps for `forward` and `back`. Defaults to 1, maximum 200. | |
| action | No | `forward` (Capture/Forward), `back`, or `reset` (clears the event list). |
Output Schema
| Name | Required | Description |
|---|---|---|
| time | Yes | Simulation clock in milliseconds. |
| events | Yes | Events recorded so far. |
| simulation | Yes | |
| current_event | Yes | Index of the event the simulation is at; `back` moves it without deleting events. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read/write and safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=false). The description adds real context beyond that: it discloses that reset clears the event list and that Simulation mode is required. There is mild tension between 'clears the event list' and destructiveHint=false, but since the cleared state is simulation event data rather than persistent user content, this is a nuance 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the three possible actions and their meanings, with the prerequisite appended last. No filler, though the parenthetical 'like Capture/Forward' is only meaningful to a user already familiar with the UI.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the action set and the mode prerequisite adequately for a two-parameter tool. The remaining gap is sibling disambiguation (fast_forward, list_simulation_events), which leaves a small inference burden on the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both the action enum and the `times` parameter (default 1, max 200) are already fully documented in the schema. The description restates the three action meanings but adds nothing about the step count, so the schema is doing the heavy lifting and baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names specific actions (advance forward, go back, reset the event list) against a clear resource (the simulation), and the 'Capture/Forward' analogy pins down the exact domain semantics. It does not, however, differentiate itself from the close sibling fast_forward, so an agent still has to guess which stepping tool to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Needs Simulation mode' gives a genuine prerequisite for use, which is more than most definitions offer. But there is no guidance on when to prefer this over fast_forward, list_simulation_events, or watch_events, so the usage boundary is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusARead-only
Check whether Packet Tracer is reachable and summarize the open network. When it is not reachable, problem explains what to fix.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| addr | No | Where Packet Tracer answered, for example `127.0.0.1:39001` after a restart. |
| links | No | |
| devices | No | |
| problem | No | |
| connected | Yes | |
| pt_version | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the useful detail that it summarizes the open network and that `problem` covers the unreachable case, but says nothing about latency, failure modes, or partial-reachability behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no waste, front-loading the primary action (reachability check) before the fallback routing to `problem`.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description covers both the check and the network summary. Complete enough for a no-arg diagnostic tool, with only minor gaps around failure semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline of 4 applies; there is no parameter semantics to add or omit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: checks Packet Tracer reachability and summarizes the open network. An agent knows exactly what it returns, though it doesn't contrast itself with siblings like network_description or show_workspace that also surface network state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage as a health/reachability probe and points to `problem` for the failure case, but never states when to prefer this over alternatives or any preconditions. Adequate but with clear gaps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlock_activityA
Give a password-protected activity its password (for its author or instructor) so Packet Tracer reports scores and runs checks. activity_status shows password_confirmed: false when this is needed.
| Name | Required | Description | Default |
|---|---|---|---|
| password | Yes | The activity's password, as set by its author. |
Output Schema
| Name | Required | Description |
|---|---|---|
| file | Yes | |
| items | No | Assessment items (the Check Results tree). |
| points | No | Assessment points. |
| is_activity | Yes | |
| seconds_left | No | Seconds left when the activity has a countdown timer. |
| score_percent | No | |
| seconds_elapsed | No | |
| percent_complete | No | |
| instruction_pages | No | |
| password_confirmed | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations establish it is a non-read-only, non-destructive, closed-world action; the description adds real context beyond that by stating the consequence of unlocking (Packet Tracer reports scores and runs checks) and implying an author/instructor authorization scope. No permissions or failure modes are detailed, so not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, with the action and audience front-loaded and the status check placed second. No filler, though the parenthetical audience clause slightly interrupts the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter mutation with an output schema and annotations covering the safety profile, the description supplies the essential trigger and effect. Return values need not be explained given the output schema, but error/password-mismatch behavior is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter is fully described there ('as set by its author'). The description adds no syntax, format, or sourcing detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('give a password-protected activity its password') and its functional payoff (scores reported, checks run). It also references the sibling activity_status, which helps distinguish it, though the phrasing 'give ... its password' is slightly indirect versus a plain 'unlock'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit trigger: use this when activity_status reports password_confirmed: false. That is concrete when-to-use guidance tied to a sibling tool, though it doesn't state when NOT to use it or what happens if the activity is already unlocked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpn_clientA
Use the VPN app of a PC, laptop or server against an Easy VPN server: connect with server, group, group_key, username and password and wait for the tunnel, disconnect, or status. Returns whether the tunnel is up and the address the server assigned.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Connect: the group name, as in `crypto isakmp client configuration group`. | |
| action | No | `status` (default), `connect` or `disconnect`. | status |
| device | Yes | PC, laptop or server whose VPN app to use. | |
| server | No | Connect: Host IP, the Easy VPN server's address. | |
| password | No | Connect: that user's password. | |
| username | No | Connect: user name the server authenticates. | |
| group_key | No | Connect: Group Key, the group's `key`. | |
| timeout_secs | No | Seconds to wait for the tunnel. Defaults to 15, maximum 300. |
Output Schema
| Name | Required | Description |
|---|---|---|
| group | No | |
| device | Yes | |
| server | No | |
| username | No | |
| connected | Yes | |
| tunnel_ip | No | The address the server assigned inside the tunnel. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations mark it as a non-read-only, non-destructive, closed-world operation. The description adds valuable behavioral context beyond the annotations: `connect` blocks and waits for the tunnel, and the result reports whether the tunnel is up plus the assigned address. Per-action side effects are thus disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense but well front-loaded sentence: the general purpose comes first, then the action-specific requirements, then the return value. No wasted sentences, though the parameter list makes it slightly heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description need not expand on returns or permissions. It covers all three actions adequately; only the lack of explicit sibling routing keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema (including the timeout default of 15 and max of 300). The description only groups which params apply to `connect`, matching the schema rather than adding new meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: using a device's VPN app against an Easy VPN server, with the three actions (connect/disconnect/status) named. It is clear what the tool does, though it does not explicitly distinguish itself from the sibling tools literally named `connect` and `disconnect`.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what each action does and that `connect` requires server, group, group_key, username and password, which implies when to call each. However, it gives no explicit guidance on when to choose this tool over siblings like `connect` or `connect_wireless`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_eventsARead-only
Listen to Packet Tracer's live IPC events for a few seconds and return them: devices and links added or removed, console output, simulation steps, ARP and DHCP activity, and 200 more across 73 classes. Start something (for example with another tool call in parallel, or by hand in Packet Tracer) and see what it triggers. describe_ipc with events lists the classes and names.
| Name | Required | Description | Default |
|---|---|---|---|
| class | Yes | Object class raising the events, for example `LogicalWorkspace`, `TerminalLine` or `Simulation`. `describe_ipc` with `events` lists them all. | |
| events | No | Event names, for example `["deviceAdded", "linkCreated"]`. Omit for every event of the class. | |
| object | No | Only events from this object, by uuid (as returned by `call_ipc`). Omit for every object. | |
| seconds | No | How long to listen. Defaults to 10 seconds, maximum 120. | |
| max_events | No | Stop after this many events. Defaults to 100, maximum 1000. |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | Yes | |
| truncated | Yes | True when `max_events` stopped the watch before `seconds` elapsed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
readOnlyHint=true already tells the agent this is a safe, non-mutating read, so the bar is lower. The description adds genuinely useful behavior beyond the annotations: the call blocks for a bounded period, it only reports what is triggered during that window, and it must be run concurrently with an action that produces events. Defaults and caps (10s/120s, 100/1000 events) live in the schema rather than the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with what is returned, then how to drive it, then where to find valid values. The final sentence about describe_ipc partially duplicates the schema text on the class and events fields, which is the only mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description is not obliged to explain return values, and annotations cover the safety profile. It supplies the two things an agent could not infer: the need to trigger activity concurrently and the bounded listening window. The only omission is explicit routing away from the similarly named list_simulation_events.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including class, events, object, seconds and max_events is already documented in the schema. The description only reinforces the class/events examples and points at describe_ipc for valid names, adding little beyond the structured fields. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (listen to / return) and resource (Packet Tracer's live IPC events), with concrete scope: a bounded listening window and a sample of the event families captured (deviceAdded, console output, simulation steps, ARP/DHCP). It stops short of explicitly distinguishing itself from the similar-sounding sibling list_simulation_events, so an agent must still infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating guidance: the tool must be paired with something that generates events, either another tool call in parallel or a manual action in Packet Tracer, and points to describe_ipc for enumerating valid classes/event names. It never states when not to use this versus list_simulation_events or call_ipc, so no exclusion guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wireless_statusBRead-only
Read the wireless settings of an access point, wireless router or client, and for clients which access point they are associated with.
| Name | Required | Description | Default |
|---|---|---|---|
| device | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| role | Yes | `access_point` or `client`. |
| ssid | Yes | |
| device | Yes | |
| security | No | |
| access_point | No | |
| broadcast_ssid | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds useful behavioral context for clients (reporting which access point they are associated with), but it does not discuss permissions, output format, or other operational traits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It efficiently states the action, resource, and target device scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a simple read-only operation with one parameter, an output schema, and annotations that cover safety. The description explains what is read and the device scope, so it is largely complete. The main gap is the lack of parameter identifier format, but output schema richness reduces the overall burden.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It implies the 'device' parameter refers to an access point, wireless router, or client, which gives some semantic meaning. However, it does not specify expected identifier format (name, MAC, etc.) or otherwise fully document the lone parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Read) and resource (wireless settings) and identifies the target devices: access point, wireless router, or client. It also clarifies that for clients it reports the associated access point. It does not explicitly differentiate itself from sibling tools such as configure_access_point or connect_wireless, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what is read but gives no guidance on when to use this tool versus alternatives like configure_access_point or connect_wireless. There is no mention of prerequisites, when-not-to-use, or explicit alternatives, leaving usage context to inference.
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.
72 tool updates
v0.2.2- First observed
activity_instructions - First observed
activity_status - First observed
add_device - First observed
add_location - First observed
add_module - First observed
add_note - First observed
add_pdu - First observed
add_server_user - First observed
arrange_devices - First observed
browse_web - First observed
call_ipc - First observed
check_activity - First observed
configure_access_point - First observed
configure_dhcp_server - First observed
configure_dns_server - First observed
configure_email - First observed
configure_host - First observed
configure_host_ipv6 - First observed
configure_ios - First observed
connect - First observed
connect_wireless - First observed
describe_ipc - First observed
disconnect - First observed
draw - First observed
fast_forward - First observed
get_preferences - First observed
host_files - First observed
list_devices - First observed
list_drawings - First observed
list_links - First observed
list_locations - First observed
list_models - First observed
list_notes - First observed
list_ports - First observed
list_server_services - First observed
list_simulation_events - First observed
list_slots - First observed
move_device - First observed
move_to_location - First observed
network_description - First observed
new_network - First observed
open_network - First observed
power_cycle_all - First observed
receive_email - First observed
remove_device - First observed
remove_drawing - First observed
remove_location - First observed
remove_module - First observed
remove_note - First observed
rename_device - First observed
rename_location - First observed
reset_activity - First observed
run_cli - First observed
run_host_command - First observed
save_network - First observed
screenshot - First observed
send_email - First observed
set_background - First observed
set_host_firewall - First observed
set_power - First observed
set_preferences - First observed
set_server_service - First observed
set_web_page - First observed
setup_exapp - First observed
show_workspace - First observed
simulation_mode - First observed
simulation_step - First observed
status - First observed
unlock_activity - First observed
vpn_client - First observed
watch_events - First observed
wireless_status
TDQS
Scored across 72 tools
Most tools target a clearly distinct resource and action, and descriptions often guide the agent toward the right tool. A few overlaps remain, such as set_server_service versus configure_dhcp_server/configure_dns_server, and add_device versus add_module, which could cause occasional misselection.
The set is predominantly consistent snake_case with verb_noun naming (e.g., add_device, list_ports, configure_ios). Minor deviations like status, screenshot, draw, connect, and disconnect are still readable and predictable, so the pattern holds strongly.
With 72 tools, the server far exceeds the recommended 3–15 range and lands in the rubric's extreme mismatch tier (50+ tools). Even though the domain is broad, this volume creates a heavy selection and maintenance burden for an agent.
The surface covers network creation, device and module lifecycle, cabling, logical and physical workspace, activities, simulation, server services, email, wireless, VPN, firewall, CLI and host commands, files, preferences, screenshots, and IPC escape hatches. Generic tools like call_ipc, run_cli, and run_host_command close remaining gaps, so no major dead ends are apparent.
Maintenance
Related MCP Connectors
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Search, inspect and invoke every public tool on Invokera through one MCP connection.
61 text, security, converter, calculator, and PDF tools -- callable via MCP on one host.
Generate, edit, merge, translate and PDF-convert PowerPoint (.pptx) over MCP. 8 tools.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceConnects Claude with Cisco Packet Tracer 9.x to control network topologies, configure devices with IOS commands, and run diagnostics via natural language.MIT
- AlicenseBqualityDmaintenanceEnables automation of Cisco Packet Tracer simulations by placing devices, connecting links, and generating IOS configurations via MCP, ideal for network coursework and demonstrations.231MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to control Cisco Packet Tracer in real time, allowing natural language-driven creation and configuration of network topologies.5MIT
- AlicenseAqualityBmaintenanceEnables AI clients like Claude Desktop and Cursor to control Cisco Packet Tracer through natural language, including generating network topologies, running device configurations, and managing simulations.23MIT