vyos-mcp
This server (mcp-server-vyos) provides an MCP interface to manage and monitor a VyOS router via its HTTPS REST API, covering configuration, diagnostics, system operations, and live documentation lookup.
Configuration & State Reading
vyos_retrieve— Read configuration at any pathvyos_return_values— Get multi-valued config node valuesvyos_exists— Check if a configuration path existsvyos_config_diff— Compare running config vs. saved config or a specific revisionvyos_config_history— List revision history with timestamps, users, and methods
Configuration Changes
vyos_configure— Apply a batch of set/delete operations atomically with commit-confirm (auto-reverts in 5 min unless confirmed)vyos_confirm— Confirm a pending commit-confirm to make changes permanentvyos_validate— Validate config syntax without persistingvyos_save/vyos_load/vyos_merge— Save, load, or merge configuration files
Operational / Show Commands
vyos_info— Get system infovyos_show— Run any operationalshowcommandvyos_traceroute— Traceroute with structured MTR reportvyos_interface_stats— RX/TX counters, errors, and link statevyos_system_resources— CPU, memory, storage, and uptime snapshotvyos_route_table— View routing table filtered by family and protocolvyos_firewall_stats— Firewall and NAT rule hit countersvyos_bgp_summary— BGP neighbor summary (state, uptime, prefixes received)
System Operations
vyos_generate— Generate keys, certificates, etc.vyos_reset— Run reset commands (e.g., reset BGP peers)vyos_reboot/vyos_poweroff— Reboot or power off the router (with warnings)vyos_image_add/vyos_image_delete— Manage system images
Documentation
vyos_docs_search— Search live VyOS documentation by topicvyos_docs_read— Read a specific VyOS documentation page (cached 1 hour)
Safety Features
Read-only mode (
VYOS_READ_ONLY=true) restricts the server to non-mutating toolsConfig changes use commit-confirm by default, auto-reverting if not confirmed within 5 minutes
Destructive operations include explicit warning descriptions
Accepts self-signed TLS certificates by default
Fetches and searches live VyOS documentation from the vyos-documentation repository on GitHub to provide documentation lookup tools.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vyos-mcpshow me the current interfaces and the active routing table"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-server-vyos
MCP server for VyOS router management via the HTTPS REST API. Provides both router management tools and live VyOS documentation lookup.
Installation
pip install mcp-server-vyosRelated MCP server: OPNsense MCP Server
Configuration
Set environment variables:
VYOS_URL— Router API endpoint (e.g.,https://vyos.example.com)VYOS_API_KEY— API key for authenticationVYOS_READ_ONLY— Set totrueto disable all mutating tools (config changes, reboot, poweroff, etc.)
VyOS Router Setup
Enable the HTTPS API on your VyOS router:
configure
set service https api keys id my-mcp-key key <your-api-key>
set service https api rest
commit
saveClaude Code
Add to your MCP client configuration:
{
"mcpServers": {
"vyos": {
"command": "mcp-server-vyos",
"env": {
"VYOS_URL": "https://vyos.example.com",
"VYOS_API_KEY": "your-api-key"
}
}
}
}Read-Only Mode
For safe, query-only access (monitoring, investigation, documentation lookup), enable read-only mode:
{
"mcpServers": {
"vyos": {
"command": "mcp-server-vyos",
"env": {
"VYOS_URL": "https://vyos.example.com",
"VYOS_API_KEY": "your-api-key",
"VYOS_READ_ONLY": "true"
}
}
}
}This registers only non-mutating tools: vyos_info, vyos_retrieve, vyos_return_values, vyos_exists, vyos_config_diff, vyos_config_history, vyos_show, vyos_traceroute, vyos_interface_stats, vyos_system_resources, vyos_route_table, vyos_firewall_stats, vyos_bgp_summary, vyos_docs_search, and vyos_docs_read.
Tools
Router Management
Tool | Description |
| System info (no auth required) |
| Read configuration at a path |
| Get multi-valued config node values |
| Check if a config path exists |
| Show config differences (saved vs running, or by revision) |
| List config revision history (number, timestamp, user, method) |
| Run operational show commands |
| Validate config syntax (temporary apply with auto-rollback) |
| Apply config with commit-confirm (safe default) |
| Confirm a pending commit-confirm |
| Save running config to disk |
| Load a configuration file |
| Merge config file or string into running config |
| Generate keys, certificates, etc. |
| Reset operations |
| Reboot the router |
| Power off the router |
| Add a system image from URL |
| Delete a system image |
Diagnostics
Tool | Description |
| Traceroute to a host (structured mtr report) |
| Interface RX/TX counters, errors, and link state |
| CPU, memory, storage, and uptime snapshot |
| Routing table (RIB) by family/protocol ( |
| Firewall and NAT rule hit counters |
| BGP neighbor summary (state, prefixes received) |
Documentation
Tool | Description |
| Search VyOS docs by topic and page content (returns snippets) |
| Read a specific documentation page |
Documentation is fetched live from the vyos-documentation repository, so it stays in sync with the latest VyOS releases. Results are cached for 1 hour.
Safety
Configuration changes use
commit-confirmby default -- changes auto-revert after 5 minutes unless confirmed withvyos_confirmvyos_configureaccepts a list of operations applied atomically in one commit-confirm -- batch related changes into a single call so they commit or roll back togetherDestructive operations (
vyos_reboot,vyos_poweroff,vyos_image_delete) include warning descriptionsAPI keys are never logged or included in tool outputs
Self-signed TLS certificates are accepted by default (common on VyOS)
Development
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest
ruff check .License
MIT
Available Tools
27 toolsvyos_bgp_summaryA
Show the BGP neighbor summary (show bgp summary).
Neighbor state, uptime, and prefixes received per peer across all
address families. Most useful on routers running BGP; if BGP is not
running, the router returns an error response ("success": false).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool is read-only (command 'show bgp summary'), specifies the output contents, and explicitly describes the error response when BGP is not running. This provides good behavioral transparency beyond a simple command name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the command and purpose, followed by output details and error behavior. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there are no parameters, no output schema, and no annotations, the description covers the essential aspects: purpose, output content, and error condition. It is fairly complete, though it could briefly mention that it shows all BGP peers, but 'per peer' already implies that.
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 no parameters, and the schema coverage is 100% trivially. The description does not need to add parameter information, but it adds value by explaining the tool's purpose and output. Baseline 3 is elevated to 4 because the description effectively compensates for the absence of 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?
The description clearly states it shows BGP neighbor summary with the explicit command equivalent, specifies the output fields (neighbor state, uptime, prefixes received), and distinguishes by noting it covers all address families. It is distinct from sibling tools due to the BGP-specific focus.
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 context that it is most useful on routers running BGP and warns that if BGP is not running, an error is returned. However, it does not explicitly state when not to use this tool or compare it to sibling tools like vyos_show or vyos_interface_stats, nor does it offer alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_config_diffA
Show configuration differences.
Compares running config against saved config by default,
or against a specific revision number. Useful for previewing
changes before committing or reviewing what has drifted.
Args:
rev: Optional revision number to compare against
| Name | Required | Description | Default |
|---|---|---|---|
| rev | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. Clearly states it compares configs (read-only), default and optional revision behavior. Does not mention output format, but no contradictions.
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 sentences plus Arg line: front-loaded summary, then expansion, no fluff. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given single optional parameter, no output schema, and no nested complexity, description is complete: explains default and optional usage, provides use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no parameter descriptions (0% coverage), but description adds: 'Optional revision number to compare against' and implies default behavior. Adds meaningful context beyond bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states 'Show configuration differences' and describes comparing running vs saved config, optionally against a revision. Differentiates from siblings like vyos_show by focusing on diff functionality.
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 clear use cases: 'previewing changes before committing or reviewing what has drifted.' Does not mention alternatives or when not to use, but context is well implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_config_historyA
List configuration revision history.
Returns the numbered config revisions VyOS retains, newest first,
each with its timestamp, the user who committed it, the method
(e.g. cli, vyos-http-api), and an optional comment. Pair with
vyos_config_diff(rev) to inspect what changed in a given revision.
Note: VyOS exposes no rollback endpoint over the HTTP API, so this
server can report revision history but cannot revert to a revision.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses behavior: returns newest-first, lists fields, and importantly states no rollback capability via HTTP API, a critical behavioral trait beyond the basic list 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?
Four concise sentences, front-loaded with purpose, no redundancy, every sentence adds value (intent, return details, companion tool, limitation).
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 tool with output schema, description fully covers what the tool does and returns, including the critical limitation about rollback, making it complete for an agent to use.
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?
No parameters, so baseline of 4 applies. Description adds no param info as none 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?
Clearly states it lists configuration revision history, specifies returned fields (number, timestamp, user, method, comment), and distinguishes from sibling vyos_config_diff by mentioning pairing for inspecting changes.
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 clear usage context for listing history and suggests pairing with vyos_config_diff. Explicitly notes the inability to roll back due to API limitation. Lacks explicit when-not-to-use scenarios but still effective.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_configureA
Apply a list of VyOS config changes atomically with commit-confirm.
Every operation in `commands` is applied in a single commit-confirm
window — the whole batch commits or rolls back together, never
partially. Prefer batching all related set/delete changes into one
call rather than making several sequential calls; this is faster and
keeps related changes atomic.
This is the safe default — changes auto-revert after 5 minutes unless
confirmed with vyos_confirm.
Args:
commands: List of config operations, each with 'op'
('set'/'delete') and 'path' (list of strings). Pass as many
as belong together. Example:
[{"op": "set", "path": ["firewall", "group",
"network-group", "MY_GROUP", "network", "10.0.0.0/8"]},
{"op": "set", "path": ["firewall", "group",
"network-group", "MY_GROUP", "network", "192.168.0.0/16"]}]
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the atomic commit-confirm window, automatic rollback after 5 minutes, and the need for confirmation. It explicitly states changes never partially apply, providing clear behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is thorough but slightly long. However, each sentence adds value: main purpose, atomic behavior, batching advice, and parameter details. It is front-loaded with the core 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?
Given the single parameter, lack of output schema, and no annotations, the description covers usage, behavior, and parameter format well. It does not discuss error handling or return values, but the tool context (atomic config) makes this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'commands' is explained in detail with structure (op, path) and a concrete example. Since schema coverage is 0%, the description compensates fully, adding meaning beyond the vague schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Apply a list of VyOS config changes atomically with commit-confirm.' It specifies the specific verb (apply) and resource (VyOS config changes) and distinguishes from siblings like vyos_confirm and vyos_load by highlighting atomic batch 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?
The description advises batching related changes for atomicity and speed, contrasting with sequential calls. It also mentions the need for vyos_confirm to persist changes, but does not explicitly state when to avoid this tool (e.g., for single changes where confirm is unnecessary).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_confirmA
Confirm a pending commit-confirm, making changes permanent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It states 'making changes permanent' but does not explain what happens if there is no pending commit-confirm 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?
Single sentence that is front-loaded and efficient, containing no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description provides adequate functional context, but lacks information about prerequisites or return 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 has no parameters, and the input schema already reflects that. The description adds no parameter info, but none is needed. Baseline is 4 for zero 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?
Description clearly states the verb 'confirm' and the resource 'pending commit-confirm', distinguishing it from other sys admin tools like vyos_configure or vyos_load.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like vyos_configure or vyos_save. The implied use after a commit-confirm is not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_docs_readA
Read a VyOS documentation page.
Fetches the raw RST content from the VyOS docs repository.
Use vyos_docs_search to find the path for a topic.
Args:
path: Doc path, e.g. "docs/configuration/firewall/groups.rst"
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool fetches raw RST content and is a read-only operation. However, it lacks details on error handling (e.g., if path is invalid), network dependencies, or any potential side effects. The description is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of three short sentences plus an 'Args:' line. Every sentence adds value: purpose, action, usage recommendation, and parameter clarification. There is no fluff 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?
Given the tool's simplicity (one required parameter, output schema exists), the description covers the essential aspects. It mentions the sibling search tool and the expected path format. It does not describe the output format, but since an output schema exists, that is not a critical omission. A note on error scenarios would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no description for the 'path' parameter (0% coverage). The description adds meaning by stating it is a 'Doc path' and provides an example ('docs/configuration/firewall/groups.rst'). This compensates for the schema gap, but more clarity on allowed path formats or constraints would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a VyOS documentation page by fetching raw RST content. It explicitly distinguishes from the sibling vyos_docs_search by directing users to use that tool for path discovery. The verb 'Read' and resource 'VyOS documentation page' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance to use vyos_docs_search to find the path first, establishing a clear workflow. It does not explicitly list when not to use this tool, but the context of sibling tools makes the usage scenario clear. A slight improvement would be to mention scenarios where reading is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_docs_searchA
Search VyOS documentation by topic (path and page content).
Ranks matching doc pages by how many query terms appear in the path
and body. Each result is a dict with 'path', 'title', and 'snippet'
(a context excerpt when the query matches the page body, else None).
Use vyos_docs_read to fetch the full content of a result.
Args:
query: Search terms, e.g. "firewall group" or "nat hairpin"
max_results: Maximum number of results to return (default 10).
Capped internally at ~30 (only fetched pages can rank).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses ranking method, result structure, snippet behavior, and internal cap on max_results. Adds sufficient behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: purpose first, then details, then arguments. No wasted words, though slightly verbose in listing args.
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?
Output schema exists, and description explains return values. Provides enough context for agent to use tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but description explains query with examples and max_results with default and cap, adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it searches VyOS documentation by topic and distinguishes from sibling vyos_docs_read. Specifies ranking by query terms in path and body.
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?
Indicates when to use (search docs) and suggests vyos_docs_read for full content, but does not explicitly state when to avoid this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_existsA
Check if a VyOS configuration path exists.
Returns true/false in the data field.
Args:
path: Configuration path to check,
e.g. ["service", "https", "api"]
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Returns true/false in data field, but no details on error handling, permission requirements, or side effects. With no annotations, description should provide more behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: one line for purpose, one line for return value, one line with args format and example. No extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, return value is explained. However, missing details on what happens for malformed paths or non-existent paths (e.g., returns false). Adequate but not thorough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description adds crucial meaning: explains path is a configuration path as an array of string segments, with example. Clear enough for agent to provide valid input.
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?
Clear verb 'Check', resource 'VyOS configuration path', and action 'exists'. Example provided. Distinguishes from siblings like vyos_show which likely returns actual config values.
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 explanation of when to use this tool versus alternatives such as vyos_show or vyos_validate. No context on prerequisites 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.
vyos_firewall_statsA
Show firewall and NAT rule hit counters.
Returns a dict keyed by 'firewall', 'nat_source', and
'nat_destination', each holding the corresponding `show` output. On
partial failure the affected key holds an error dict with
"success": false and "error" set — check "success" before using
"data"; the commands that succeeded are still returned. Most useful
on routers with complex rulesets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: return dict structure, partial failure handling with error dict and 'success' field, and advice to check 'success' before using 'data'. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the core purpose, followed by necessary detail on return structure and error handling. No superfluous sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description is fairly complete. It explains return format and error handling adequately. Could add an example but 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 tool has no parameters, so schema coverage is 100%. The description does not need to add parameter semantics; baseline 4 is appropriate for zero 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?
The description clearly states the tool shows firewall and NAT rule hit counters, specifying the verb 'Show' and the resource. It differentiates from the generic vyos_show sibling by being specific to firewall stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is most useful on routers with complex rulesets, implying context, but does not explicitly state when not to use or compare with alternatives like vyos_show or other stats tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_generateC
Run a VyOS generate command (keys, certificates, etc.).
Args:
path: Command path, e.g. ["pki", "wireguard", "key-pair"]
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description only says 'run a generate command'. It does not disclose whether it modifies state, what side effects occur, or required permissions. For a generation tool, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear sentences with an example. No wasted words, but could be more structured (e.g., explicit parameter list).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and minimal annotations, the description is insufficient. It does not explain return values, error handling, or the effect of running a generate command. A more complete description would cover these aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has no descriptions (0% coverage), but the description provides an example path (e.g., ['pki', 'wireguard', 'key-pair']), adding meaning beyond the schema. However, it does not explain the expected format or constraints of the path array.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it runs generate commands for keys, certificates, etc., with an example path. It distinguishes from other VyOS tools like show or configure, but does not explicitly differentiate from 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?
No guidance on when to use this tool versus alternatives. Does not specify prerequisites, typical use cases, 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.
vyos_image_addA
Add a VyOS system image from a URL.
Downloads and installs a new system image. This does not
reboot — the new image will be used on next boot.
Args:
url: URL to the VyOS ISO image
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool downloads, installs, and does not reboot. It omits details on authentication, error handling, or whether the operation is destructive (though 'add' implies creation).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a one-line title, a brief paragraph, and an arg description. Every sentence adds value, with no redundancy or 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 simple tool with one parameter and no output schema, the description covers the essential aspects: action, source (URL), and post-install behavior. Missing details like permissions or failure modes are minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'url' has no description in the input schema (0% coverage). The description compensates by stating 'URL to the VyOS ISO image' in the Args block, adding clarity beyond the schema's bare title.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Add a VyOS system image from a URL.' It specifies the action (download and install), the resource (system image), and the absence of reboot, distinguishing it from sibling tools like vyos_image_delete.
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 notes that the new image will be used on next boot and does not reboot, providing some context. However, it does not explicitly state when to use this tool versus alternatives (e.g., vyos_reboot) or mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_image_deleteA
Delete a VyOS system image.
WARNING: Cannot delete the currently running image.
Args:
name: Image name, e.g. "1.4-rolling-202102280559"
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses that deletion of the currently running image is prevented, which is a key behavioral constraint. However, it does not elaborate on other aspects such as whether deletion requires confirmation or is irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a main statement, a warning, and an Args section. It front-loads the purpose and is free of unnecessary 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 simple deletion tool with one parameter and no output schema, the description covers the essential aspects: the action, a critical constraint, and parameter details. It could be more complete by mentioning the irreversible nature of deletion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds an 'Args' section with an example ('1.4-rolling-202102280559') that clarifies the expected format of the 'name' parameter, adding value beyond the schema's minimal type information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Delete' and the resource 'VyOS system image'. It distinguishes from the sibling 'vyos_image_add' and includes a warning about the currently running image, which adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives like vyos_image_add or other operations. However, the warning 'Cannot delete the currently running image' provides implicit guidance on 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.
vyos_infoA
Get VyOS system info (no authentication required).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the key behavioral trait of authentication transparency, but does not detail other aspects like read-only nature or exact output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no wasted words, perfectly front-loaded.
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 zero parameters, no output schema, and simple purpose, the description is complete and sufficient for the agent to understand and invoke the 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?
Zero parameters, so baseline 4 per instructions. No additional semantics 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?
Clearly states verb 'Get' and resource 'VyOS system info', with a notable behavioral note 'no authentication required', distinguishing it from siblings that likely require auth or perform other actions.
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 safe, quick usage due to 'no authentication required', but does not explicitly state when to use vs. alternatives 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.
vyos_interface_statsA
Show interface statistics: RX/TX counters, errors, link state.
With no argument, returns the summary table for all interfaces.
Pass an interface spec as path elements (e.g. ["ethernet", "eth0"])
to get detailed byte/packet/error counters for a single interface.
Args:
interface: Optional interface path elements, e.g. ["ethernet", "eth0"]
| Name | Required | Description | Default |
|---|---|---|---|
| interface | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It implies a read-only operation by saying 'Show', but does not explicitly state it is non-destructive or describe any other behavioral traits like rate limits or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, front-loaded with the core purpose, and uses minimal words. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description sufficiently explains input expectations and output behavior (summary table vs. detailed counters). It is complete for the tool's 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?
The schema coverage is 0%, but the description clearly explains the single parameter 'interface', including its format (array of strings) and the effect of providing it vs. default null. This adds meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool shows interface statistics including RX/TX counters, errors, and link state. It distinguishes itself from sibling tools like vyos_show and vyos_firewall_stats by being specific to interface statistics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool without arguments (summary for all interfaces) and with arguments (detailed for a single interface). However, it does not explicitly mention when not to use this tool or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_loadC
Load a VyOS configuration file.
Args:
file: Path to config file on the router,
e.g. "/config/test.config"
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks information on side effects (e.g., whether loading replaces or merges config), required permissions, or error behavior. The verb 'load' is vague without further context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the core purpose. The parameter explanation is separated clearly. No extraneous 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 single-parameter tool with no output schema and no annotations, the description provides minimal but sufficient context. However, it lacks completeness about the loading process and expected outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds a description and example for the only parameter 'file', which is not present in the input schema. However, with 0% schema coverage, more detail (e.g., file format, specific paths) would improve clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'load' and the resource 'VyOS configuration file', providing a clear purpose. However, it does not differentiate from similar sibling tools like vyos_configure or vyos_merge, which could be ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The example file path is helpful but does not indicate prerequisites or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_mergeA
Merge a configuration into the running config.
Provide either a file path on the router or an inline
config string (VyOS curly-brace format).
Args:
file: Path to config file on the router
string: Inline config in VyOS format, e.g.
'interfaces { ethernet eth1 { description "test" } }'
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | ||
| string | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'merge into running config' without clarifying if it replaces, appends, or requires privileges, or what happens on failure. This lacks sufficient behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose, then explains parameters. It avoids redundancy but could be slightly more structured. 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 lack of annotations, no output schema, and only 2 parameters with low schema coverage, the description covers basic usage but omits return values, error handling, and behavioral nuances. It is minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds significant value by explaining that 'file' is a path on the router and 'string' is inline config in VyOS format, including an example format. This compensates for the schema 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?
The description clearly states the tool's action ('Merge a configuration into the running config') and distinguishes from sibling tools like vyos_configure or vyos_load by specifying 'merge' and providing input methods (file path or inline string).
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 mentions providing either a file path or inline string, implying when to use the tool, but it does not explicitly state when not to use it or compare it to alternatives like vyos_configure or vyos_load.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_poweroffA
Power off the VyOS router immediately.
WARNING: This will shut down the router. The router will
need physical or out-of-band access to power back on.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Clearly states 'shut down the router' and the irreversible nature of the action (needs physical access to restart). No annotations provided, but description fully discloses the destructive 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 sentences: first states the action, second provides critical warning. No unnecessary words, front-loaded with key 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 simple tool with zero parameters and no output schema, the description covers what the tool does and the essential safety warning. Complete and 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?
No parameters exist, so baseline 4 applies. Description does not need to add parameter information.
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?
Explicitly states 'Power off the VyOS router immediately' with a clear verb and resource. Distinguishes from related tools like vyos_reboot (restart) and vyos_reset (reset).
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?
Includes a warning that physical or out-of-band access is needed to power back on, implicitly guiding when to use (only with such access). Could explicitly mention not to use if remote recovery is required, but the warning effectively sets usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_rebootA
Reboot the VyOS router immediately.
WARNING: This will reboot the router. All active sessions
and traffic will be interrupted.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description warns that the reboot is immediate and will interrupt all active sessions and traffic, which is critical behavioral information. With no annotations, this warning provides adequate transparency about the destructive nature, though it does not discuss return behavior or confirmation requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise--two sentences plus a warning--with no unnecessary words. Every part earns its place, and the warning is properly emphasized.
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?
While the description covers the action and key warning, it lacks information about what the tool returns (e.g., success message, status code) and whether it blocks until reboot completes. Given no output schema, this is 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?
There are zero parameters, so the description does not need to add parameter meaning. Per guidelines, baseline is 4. The description does not introduce confusion.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reboots the VyOS router, using a specific verb and resource. However, it does not differentiate from the sibling tool vyos_poweroff, which might perform a similar action but potentially with different semantics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs. alternatives like vyos_poweroff or vyos_reset. There is no context about prerequisites or situations where reboot is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_resetC
Run a VyOS reset command.
Args:
path: Command path, e.g. ["ip", "bgp", "192.0.2.11"]
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior, but it only says 'reset command' without explaining potential destructiveness, side effects, or required permissions. This is insufficient for safe invocation.
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 short and front-loaded with the action, containing no fluff. It could be slightly more structured, but it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a command with potential destructive impact and no output schema, the description is too sparse. It lacks information about return values, confirmation steps, or effects on the system, making it incomplete for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds an example path (['ip', 'bgp', '192.0.2.11']), providing meaning beyond the schema's array type. However, it does not explain the structure or valid values for the path, so the added value is moderate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs a VyOS reset command and provides an example. However, it does not distinguish this from sibling tools like vyos_reboot or vyos_configure, which reduces clarity 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 is given on when to use this tool versus alternatives. The description lacks context about which scenarios are appropriate for a reset command, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_retrieveB
Read VyOS configuration at a given path.
Args:
path: Configuration path as list of strings, e.g. ["firewall", "group"]
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It implies a read-only operation but does not disclose error behavior (e.g., missing path) or any side effects. Minimal additional context beyond the name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the purpose. It uses a docstring format. However, it is slightly too brief, missing return value or error mention, but no extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should cover what the tool returns and error cases. It only explains the input parameter, leaving return format and behavior unspecified, which is inadequate for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates well. It explains the 'path' parameter as a list of strings with a clear example, adding meaning beyond the schema's type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and resource 'VyOS configuration' with scope 'at a given path'. It distinguishes from sibling tools like vyos_show and vyos_config_diff, but lacks explicit 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?
No guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description only states what the tool does, not when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_return_valuesA
Get values of a multi-valued VyOS config node as a list.
Use this instead of vyos_retrieve when a node has multiple
values (e.g. addresses on an interface).
Args:
path: Configuration path, e.g.
["interfaces", "dummy", "dum0", "address"]
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, description only notes it returns a list. Does not disclose read-only nature, error conditions, or permission requirements. Insufficient transparency for a tool with no 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 plus an args section, no wasted words. Front-loaded with main purpose and usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage, and parameter meaning. Lacks output format details beyond 'as a list', but sufficient for a simple getter with one parameter.
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?
Path parameter is explained with an example, adding meaning beyond schema's type-only definition. Compensates for 0% schema description 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?
Description states verb 'Get' and resource 'values of a multi-valued VyOS config node as a list', clearly distinguishing from sibling vyos_retrieve by specifying when to use each.
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 says 'Use this instead of vyos_retrieve when a node has multiple values', providing clear usage context. Lacks mention of when not to use other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_route_tableA
Show the routing table / RIB (show ip route / show ipv6 route).
Raises ValueError (propagated to the caller) if family or protocol is
not one of the documented values.
Args:
family: Address family — "ip" (IPv4, default) or "ipv6".
protocol: Optional source filter — one of bgp, ospf, ospfv3,
static, connected, kernel, rip, isis. Omit for all routes.
| Name | Required | Description | Default |
|---|---|---|---|
| family | No | ip | |
| protocol | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that ValueError is raised for invalid family or protocol, and notes default values. This goes beyond the bare input schema, especially given no annotations. Minor omission of return format or pagination prevents 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?
The description is extremely concise (5 lines), front-loaded with the purpose, and every sentence adds value without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description covers input parameters, error behavior, and defaults adequately. The only omission is a description of the output format, which for a show command is somewhat expected but not 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?
With 0% schema description coverage, the description fully explains both parameters: family (with defaults and options) and protocol (optional filter with explicit list including the ability to omit). This provides critical context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Show the routing table / RIB' with specific CLI commands, clearly differentiating from sibling tools like vyos_bgp_summary or vyos_traceroute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide guidance on when to use this tool versus alternatives like vyos_show or vyos_bgp_summary, nor does it mention 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.
vyos_saveA
Save running VyOS configuration to disk.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description implies a non-destructive save operation but does not detail side effects (e.g., overwriting disk config) or required permissions. Adequate but not rich.
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, no wasted words. Perfectly concise for a simple operation.
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 description is complete enough for a parameterless tool with no output schema. It could mention saving to startup-config or immediate impact, but the core functionality is clear.
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?
No parameters exist in the schema, so the description adds no parameter-specific meaning. Baseline for 0 parameters is 4, and the description is sufficient given the tool's simplicity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Save') and the resource ('running VyOS configuration to disk'), establishing a distinct purpose from sibling tools like vyos_configure or vyos_load.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., vyos_configure, vyos_load). No context on prerequisites or situations where saving is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_showB
Run a VyOS operational show command.
Args:
path: Command path as list of strings, e.g. ["interfaces", "ethernet"]
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states it runs a show command (implying read-only) but does not disclose side effects, auth needs, or output behavior. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Purpose stated first, then argument explanation. Excellent front-loading and efficiency.
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 one parameter and no output schema, the description explains input sufficiently but omits any information about return values or output format. An agent may need to infer the result structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% coverage for the 'path' parameter description. The tool's description adds value by explaining it as a command path list and providing an example, compensating for the schema deficiency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it runs a VyOS operational show command, specifying the verb and resource. It distinguishes from siblings like vyos_configure (configuration) and vyos_exists (checking), but does not emphasize 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 use for show commands ('operational show command') but provides no explicit guidance on when not to use or alternatives. The agent must infer context from the sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_system_resourcesA
Get router system resources: CPU, memory, storage, and uptime.
Returns a dict keyed by resource (cpu, memory, storage, uptime),
each holding the corresponding `show system ...` output. Handy for
a quick health snapshot of the router.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns a dict with output from 'show system' commands, implying it is a read-only operation. However, it does not mention any safety or authorization requirements, rate limits, or potential performance impacts. While the description is honest, it lacks some transparency typical for a well-documented 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?
The description is concise and well-structured: two sentences, each earning its place. It is front-loaded with the purpose and immediately provides detail about return structure. No redundant or unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description is remarkably complete. It conveys what the tool does, what it returns (a dict with keys cpu, memory, storage, uptime), and its typical use case (quick health snapshot). No significant gaps remain.
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 input schema is trivial. According to the guidelines, 0 parameters earns a baseline of 4. The description does not need to add parameter meaning because there are none, and the description's purpose is already covered by the overall tool description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get router system resources: CPU, memory, storage, and uptime.' It uses a specific verb ('Get') and resource ('system resources'), and the context of sibling tools shows this is distinct from other VyOS tools like vyos_bgp_summary or vyos_show.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a 'quick health snapshot of the router,' which provides clear context. However, it does not explicitly state when not to use this tool or mention alternatives, though the purpose is sufficiently clear for an agent to understand its context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_tracerouteA
Traceroute to a host from the router.
Returns the API response with an mtr report (per-hop loss and
latency) in its data field. Useful for diagnosing reachability and
path issues from the router's perspective. The host must be a valid
hostname or IP address.
Args:
host: Destination hostname or IP, e.g. "8.8.8.8"
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. It explains the output (mtr report with per-hop loss and latency) and that the host must be valid. However, it does not explicitly state side effects (none expected for traceroute) or authentication requirements, leaving some ambiguity.
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 highly concise: two sentences plus an args section. It front-loads the core purpose and follows with output details, avoiding any 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?
Given the tool's simplicity (one parameter, no output schema), the description sufficiently covers purpose, output format, and parameter requirements. An agent can confidently use this tool without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds full meaning for the single parameter 'host' with an example ('8.8.8.8') and clarifies it can be a hostname or IP address, which is essential for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a traceroute to a host from the router, specifying verb and resource. It distinguishes from sibling tools by focusing on network path diagnostics rather than configuration or status retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the tool is useful for diagnosing reachability and path issues, providing context for when to use it. It does not explicitly mention when not to use or list alternative tools, but the intended use is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vyos_validateA
Validate VyOS configuration syntax without persisting changes.
Applies commands with a 1-minute commit-confirm window and does NOT
confirm, so the router automatically rolls back. This is not a true
dry-run — the configuration is temporarily applied for up to 1 minute.
A successful response means the syntax is valid. An error means the
commands contain invalid syntax or paths.
Args:
commands: List of config operations, each with 'op'
('set'/'delete') and 'path' (list of strings).
Example: [{"op": "set", "path": ["firewall",
"group", "network-group", "MY_GROUP"]}]
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the temporary application of configuration, auto-rollback after 1 minute, and the meaning of success/error responses. This provides essential behavioral context beyond the bare input 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?
The description is concise, using few sentences to convey the purpose, behavior, and parameter format. It includes a clear Args section and example, making it easy to parse without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description covers all necessary aspects: validation goal, temporary application, error interpretation, and parameter specification. It is fully sufficient for an agent to understand and use the 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?
The input schema only defines the 'commands' parameter as an array of objects with additionalProperties true, providing minimal semantic meaning. The description compensates by specifying the required structure (op and path fields) and giving a concrete example, which is critical for correct invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool validates VyOS configuration syntax without persisting changes, and distinguishes itself from a true dry-run by noting temporary application and auto-rollback. This specificity helps differentiate it from sibling tools like vyos_configure.
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 the validation context and the behavior (1-minute commit-confirm window, auto-rollback), which guides when to use the tool. It does not explicitly list when not to use or compare to alternatives, but the purpose is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
7 tool updates
v0.3.0- Added
vyos_bgp_summary - Added
vyos_config_history - Added
vyos_firewall_stats - Added
vyos_interface_stats - Added
vyos_route_table - Added
vyos_system_resources - Added
vyos_traceroute
20 tool updates
v0.2.0- First observed
vyos_config_diff - First observed
vyos_configure - First observed
vyos_confirm - First observed
vyos_docs_read - First observed
vyos_docs_search - First observed
vyos_exists - First observed
vyos_generate - First observed
vyos_image_add - First observed
vyos_image_delete - First observed
vyos_info - First observed
vyos_load - First observed
vyos_merge - First observed
vyos_poweroff - First observed
vyos_reboot - First observed
vyos_reset - First observed
vyos_retrieve - First observed
vyos_return_values - First observed
vyos_save - First observed
vyos_show - First observed
vyos_validate
TDQS
Each tool has a clearly distinct purpose: operational commands (vyos_bgp_summary, vyos_show, vyos_traceroute) are separate from config operations (vyos_configure, vyos_validate), and monitoring tools (vyos_firewall_stats, vyos_interface_stats) are distinct from system management (vyos_reboot, vyos_image_add). There is no ambiguity between tools.
All tools follow the pattern 'vyos_<descriptive_name>' using snake_case exclusively. Examples: vyos_config_diff, vyos_configure, vyos_docs_search. No mixing of conventions or inconsistent verb usage.
With 27 tools, the set is comprehensive for a VyOS network router management server, covering configuration, monitoring, system operations, and documentation. While this is on the higher side, each tool serves a specific need in a complex domain, so the count is appropriate.
The tool surface covers core CRUD operations for configuration (vyos_retrieve, vyos_configure, vyos_validate), monitoring (vyos_interface_stats, vyos_firewall_stats, vyos_route_table), and system management (vyos_reboot, vyos_image_add). Minor omissions like log monitoring or VPN status exist but do not hinder typical use cases.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for network documentation, generated by doc2mcp.
MCP server for Vonage API documentation, code snippets, tutorials, and troubleshooting.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
FusionAuth Documentation MCP server
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for managing VyOS routers via the VyOS HTTP API, allowing AI assistants to read config, set interfaces, firewall rules, VPNs, and more.172MIT
- AlicenseAqualityBmaintenanceA secure MCP server for managing OPNsense firewalls through AI assistants. Provides 81 tools across system, firewall, network, DNS, DHCP, VPN, HAProxy, services, diagnostics, and security domains.8115MIT
- AlicenseAqualityBmaintenanceA comprehensive MCP server for network device management via SSH/Telnet. Supports multiple vendors such as Cisco IOS and BDCOM, enabling AI assistants to execute commands and manage routers, switches, and firewalls.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables managing VyOS appliances through their HTTP API, providing tools for configuration, operational commands, and interactive troubleshooting.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cacack/mcp-server-vyos'
If you have feedback or need assistance with the MCP directory API, please join our Discord server