Simon-Ensp-Mcp-Pro
Click on "Deploy 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., "@Simon-Ensp-Mcp-Pro帮我搭一个含 USG6000V 防火墙和两台 S3700 交换机的 eNSP 拓扑"
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.
grbj-ensp-mcp (enhanced)
第一次来?先看
开始这里.md——三分钟上手指南,只讲怎么用,不讲原理。
华为 eNSP 的 MCP 服务器 · 社区增强版——在官方 v0.2.2 基础上打了本地补丁,让 AI 能程序化生成含 USG6000V 防火墙的 eNSP 拓扑文件,并在设备启动后直接经 Telnet 完成配置下发、校验与诊断。
一句话:你写需求 → AI 生成
.topo→ 你在 eNSP 点启动 → AI 自动下发配置、跑校验。
🧭 我该用哪个功能?(小白从这里开始)
本仓库有三个功能,各管一件事,每个文件夹里都有手把手的使用说明:
你想干什么 | 用哪个功能 | 去哪里 |
不想手动拖设备拉线,让脚本帮我画拓扑 | 功能一:生成拓扑 | |
设备启动后不想逐台敲命令,让 AI 帮我配置 | 功能二:配置下发 | |
不知道装对没有 / 报错了不会看 | 功能三:自检与排错 |
5 分钟上手路线
🤖 AI 用户(最省事的路):在你的 AI 助手(WorkBuddy / Claude Code / Cursor 等)里直接说:
「帮我搭一个 eNSP 拓扑:两台 AR2220 + 一台 S5700 + 两台 PC,R1、R2 下联交换机,PC 接交换机。」
前提二选一(都是一次性的,装完以后永远不用再管):
装技能(推荐,生成拓扑用):把
skill/ensp-topo-generate/文件夹拷到 AI 技能目录(WorkBuddy:~/.workbuddy/skills/;Claude Code:~/.claude/skills/)。技能自带模板和补丁,之后连本仓库都不需要工作区指到仓库:把 AI 工作区设为本仓库文件夹,AI 自动读根目录
AGENTS.md执行手册
⌨️ 首次试用 / 不装任何东西:把整个仓库下载到电脑,对 AI 说「我用了一个项目在 C:\...\Simon-Ensp-Mcp-Pro,帮我用它搭一个拓扑:…」——报路径只是这个一次性场景需要。
⌨️ 手动路线(不借助 AI 时):
第 1 步(1 分钟) python "功能1-生成拓扑/一键体验.py"
→ 得到 体验拓扑.topo,零安装,拖进 eNSP 就能看
第 2 步(1 分钟) 双击 install.bat 装 MCP(WorkBuddy 用户)
其他工具看 功能2 使用说明的手动安装
第 3 步(1 分钟) python scripts/check_health.py → 8 项全 PASS
第 4 步(2 分钟) eNSP 打开拓扑、启动设备,对 AI 说:
"拓扑已启动,文件在 xxx.topo,开始配置"两个功能什么关系:功能一画"图纸"(不需要 MCP),功能二负责"施工"(需要 MCP)。可以只用一个,也可以连着用。
Related MCP server: eNSP Automation MCP
与上游的差异(为什么有这个 fork)
增强项 | 说明 |
USG6000V 拓扑生成支持 | 上游 |
S3700 接口表修正 | 上游默认 24 FE 与实机不符,修正为实测形态 22 Ethernet + 2 GE(GE0/0/23~24) |
install.bat 路径修正 | 上游把 MCP 注册写到 |
一键健康自检 |
|
补丁验证脚本 |
|
按功能重组目录 | 三个功能文件夹各带使用说明(见上表),小白可按需取用 |
补丁本体在 src/grbj_ensp_mcp/topo_builder.py(约 65 行差异)。
⚠️ 来源与许可(请先读)
上游项目 grbj-ensp-mcp v0.2.2 由「广然笔记」发布,作者声明的官方分发渠道为 广然笔记下载站 grbj.cn(原版说明见
docs/README-upstream.md)。本仓库是社区增强 fork,不是官方分发。原版以 MIT License 发布(见
LICENSE),本仓库在同等许可下再分发并保留原版权声明;对本仓库改动的部分,同样以 MIT 提供。请优先支持原作者的官方渠道获取更新;本 fork 的补丁如被上游吸收,建议回归上游。
安装
前置:Windows 10/11、华为 eNSP、Python 3.10+(3.13 实测通过)。
详细的分步说明(含截图级别的手把手)在
功能2-配置下发/使用说明.md,这里是速查版。
方式一:脚本安装(WorkBuddy 用户)
install.bat自动:建 venv → 装本地 wheel(含补丁)→ 注册到 ~/.workbuddy/mcp.json(自动备份)→ 在连接器页点「信任」即启用。
方式二:手动安装(任意环境)
python -m venv .venv
.venv\Scripts\pip install grbj_ensp_mcp-0.2.2-py3-none-any.whl
# 关键一步:用补丁版覆盖
copy /y src\grbj_ensp_mcp\topo_builder.py .venv\Lib\site-packages\grbj_ensp_mcp\topo_builder.py然后在你的 AI 工具 MCP 配置中注册(command 指向 venv 的 python.exe,args 为 ["-m", "grbj_ensp_mcp.server"])。
验证
python scripts/check_health.py # 8 项自检
python tests/verify_usg6000v.py # 补丁专项验证(免安装)拓扑生成(不走 MCP,本地库直调)
MCP 的 31 个工具不含生成能力(只有解析/建连/下发/校验)。生成拓扑直接调库:
from grbj_ensp_mcp.topo_builder import NativeTopoBuilder
b = NativeTopoBuilder()
b.add_device("FW-1", model="USG6000V", com_port=2004)
b.add_device("SW-1", model="S5700", com_port=2006)
b.add_line("FW-1", "SW-1", src_index=1, tar_index=1)
xml = b.render()
# 落盘必须:encoding="UNICODE" 声明 + CRLF + GBK 编码(UTF-8 中文必乱码)零安装快速体验:python "功能1-生成拓扑/一键体验.py"(自动加载仓库 src,无需 pip install)。
生成模板见 功能1-生成拓扑/模板脚本.py;零安装体验见 功能1-生成拓扑/一键体验.py。
型号支持(builder 内置接口表):AR1220/2220/2240、S2700/3700/5700/6700、AC6005、AP6050、USG5500、USG6000V(本 fork 补丁)、PC/STA/Laptop/Server。
两个配套 Skill
Skill | 用途 |
| 配置方法论:先探查再配置、报错走诊断流程、实验报告规范 |
| 拓扑生成 SOP:型号 index 映射表、GBK 落盘三要素、自检要点、常见坑 |
安装到你的 AI 工具技能目录即可(WorkBuddy:~/.workbuddy/skills/;Claude Code:~/.claude/skills/)。
目录结构
├── 功能1-生成拓扑/ ★ 小白入口:一键体验 + 模板 + 示例 + 手把手说明
├── 功能2-配置下发/ ★ 小白入口:MCP 安装与日常用法说明
├── 功能3-自检与排错/ ★ 小白入口:体检脚本用法 + 报错速查表
├── src/ 含补丁的源码(补丁权威源)
├── skill/ 两个配套 Skill(拷给 AI 助手用)
├── scripts/check_health.py 一键自检
├── tests/ 上游测试套件 + verify_usg6000v.py 补丁验证
├── docs/ 上游文档 + 日常使用手册 + 原版 README
├── install.bat / install.sh
├── grbj_ensp_mcp-0.2.2-py3-none-any.whl 原厂 wheel(不含补丁,装完必须覆盖 topo_builder.py)
└── LICENSE MIT(上游)已知限制
eNSP 是 Windows GUI 程序:打开文件与点启动必须人工完成,MCP 只接管启动后的操作
Console 5 分钟空闲超时、接口名必须写全称(
GigabitEthernet0/0/1、LoopBack0).topo含中文设备名必须 GBK 编码落盘(详见功能一使用说明)USG6000V 补丁按 GUI 默认形态(1 管理 + 7 业务口)生成;不支持通过改 XML 给设备加口
许可
MIT License · 上游 © 2026 grbj-ensp-mcp contributors · enhanced fork 的改动同样以 MIT 提供
Available Tools
31 toolsensp_apply_experimentA
一站式下发实验配置:按设备规划的命令序列逐台下发 + 校验 + 报告。
参数:
plan:{ "设备名": ["system-view", "interface GE0/0/0", "ip address ...", ...], ... }verify_targets:可选校验项,元素为{"device": str, "kind": "ospf"|"vlan"|"routes"|"interfaces"|"ping", "args": {...}}auto_save:下发完成后自动 save
工作流:
对 plan 中每台设备调用
ensp_send_commands(自动进 system-view 后再下发)跑 verify_targets
auto_save=True 时全部 save
返回结构化报告 + Markdown
| Name | Required | Description | Default |
|---|---|---|---|
| plan | Yes | ||
| auto_save | No | ||
| verify_targets | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does well: it reveals that system-view is entered automatically before sending, that auto_save triggers a save pass, that it delegates to ensp_send_commands, and that it returns a structured report plus Markdown. It stops short of describing failure/partial-failure behavior, permission needs, or reversibility of the applied config, which matters for a mutating tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by clearly labeled parameter and workflow sections. Every line adds information the agent needs (parameter shapes, step ordering, return format) 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?
For a 3-parameter orchestrator with nested objects and an output schema, the description supplies the parameter shapes, the execution sequence, sibling delegation, and side effects (system-view, save). Since an output schema exists, omitting return-value detail is appropriate; 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 0%, so the description must compensate and it does: plan is shown with concrete shape and example commands, verify_targets is documented with its element structure and the kind enum values (ospf|vlan|routes|interfaces|ping), and auto_save is explained as save-after-deploy. All three parameters gain meaning absent from the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource+scope: a one-stop pipeline that sends per-device command sequences, verifies, and reports. It clearly distinguishes itself from siblings like ensp_send_commands and ensp_save_config by positioning itself as the orchestrator that calls them. An agent can tell what this does and where it sits in the tool family.
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 numbered workflow makes the intended usage context concrete: this is the tool to reach for when you want the whole deploy+verify+save flow rather than individual steps. It names the delegation to ensp_send_commands, guiding the agent away from manually looping that tool. However, it never explicitly states when to prefer this over a sibling like ensp_smart_config, nor any when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_cleanup_idle_sessionsC
清理闲置超过 idle_seconds 秒的会话。
| Name | Required | Description | Default |
|---|---|---|---|
| idle_seconds | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It implies sessions are destroyed (清理), but it does not disclose scope (all devices vs. one), whether sessions are disconnected or merely removed, permissions required, or reversibility of the 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 no filler; the threshold condition is stated immediately. It is terse to the point of under-specification, 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?
An output schema exists, so return values need not be explained. However, for an unannotated destructive session operation, the description omits scope, side effects, and relationship to sibling cleanup/close tools, leaving significant gaps.
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 does explain the parameter's role relationally — sessions idle longer than idle_seconds are cleaned up — which adds meaning beyond the bare name, but gives no unit confirmation, default (300), or accepted range.
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+resource: cleaning up (清理) sessions that have been idle beyond a threshold. It is clearly distinguishable from ensp_close_all_sessions by the idle condition, though it never names or contrasts that 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 guidance on when to use this tool versus the many session-management siblings (ensp_list_sessions, ensp_close_all_sessions, ensp_disconnect_device). The idle-threshold phrasing implies its use case but provides no explicit when/when-not or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_clear_output_bufferC
清空指定会话的输出缓冲。
| Name | Required | Description | Default |
|---|---|---|---|
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 states the action but omits whether clearing is destructive/irreversible, what data is lost, permission requirements, or what happens if the session is invalid.
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. It is appropriately concise for a simple 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?
For a mutation tool with no annotations, a 0%-covered parameter, and only an output schema to lean on, the description is too sparse. It does not supply enough context for an agent to invoke the tool correctly in all 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 description coverage is 0%, and the description only references 'specified session' without explaining the expected format (ID vs name), validation, or meaning of session_id_or_name. It adds almost nothing beyond the parameter name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (清空/clear) and resource (输出缓冲/output buffer of a specified session), so the action is clear. However, it does not distinguish this tool from siblings like ensp_get_recent_output or ensp_list_sessions, 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, nor any prerequisites. The action is implied by the name, but no explicit context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_close_all_sessionsB
关闭所有会话。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 behavioral burden, yet it discloses nothing about the fact that this is a bulk destructive operation that will terminate every active session, including any in-flight command or configuration workflow. For a tool that affects all connections at once, this silence is a meaningful gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with no waste and the core action front-loaded. It is appropriately sized for a zero-parameter tool, though it is terse to the point of omitting any caution.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema that covers return values, the description only needs to convey behavioral impact. It does not, leaving the agent unaware that this closes every session indiscriminately, which is the one thing that matters for this 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 tool takes zero parameters, so there is nothing for the description to clarify beyond what the empty schema already communicates. Baseline 4 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 ('关闭所有会话' / close all sessions), and the 'all' scope hints at the distinction from cleanup_idle_sessions. However, it never names or contrasts the sibling tools (disconnect_device, cleanup_idle_sessions) that an agent would otherwise 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?
There is no indication of when this tool should be used versus per-session disconnection or idle cleanup, and no prerequisites or cautions are given. The agent must infer usage 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.
ensp_connect_deviceA
建立到指定 eNSP 设备的 Telnet 会话。
port 为 eNSP 分配的 Telnet 端口(通常 2000+)。
若 reuse=True 且已存在同 (host, port) 的活跃会话则直接复用。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | ||
| name | No | ||
| port | Yes | ||
| reuse | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It usefully discloses the session-reuse behavior keyed on (host, port), but says nothing about failure/timeout behavior, whether an existing session is replaced or duplicated when reuse=False, or any auth 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?
Three short, front-loaded sentences with zero filler; the core action comes first and the port/reuse caveats follow in priority order.
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. However, for a stateful connection-establishing tool with no annotations and two undocumented parameters, the description is only partially 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 coverage is 0%, so the description must compensate. It explains port ('eNSP-allocated Telnet port, usually 2000+') and the reuse flag's effect, but leaves host and name entirely undocumented, leaving half the parameters ambiguous.
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: 'establish a Telnet session to the specified eNSP device.' This clearly separates it from ensp_disconnect_device, ensp_list_sessions, and ensp_scan_devices, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is the entry point for interacting with a device and explains the reuse condition, but never states when to prefer it over alternatives or what to do if a session already exists without reuse=True. Usage is inferable rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_cross_validate_topologyA
把 .topo 文件解析结果与设备 LLDP 邻居做交叉验证。
这是「拓扑纠错」的核心入口——ensp_parse_topology 只看拓扑文件,
而 ensp_verify_lldp_neighbors 反映物理事实。两者不一致时就是
拓扑图错位 / 线缆未接 / 对端设备未启 / 老拓扑需要更新等问题的信号。
工作流程:
解析
topo_path(XML 或 ZIP 自动识别)接收
lldp_results(每台设备调ensp_verify_lldp_neighbors返回的scan字段或整个返回对象)对每条边做双向比对:
matched:
.topo和 LLDP 都看到的连线(接口端点完全一致)topo_only:
.topo记录了但 LLDP 没看到(线没接 / 对端未启 / LLDP 未使能)lldp_only:物理上接了但
.topo没记(拓扑图过时)mismatched:两端点都对得上,但至少一个接口号错位(拓扑图错位)
输出结构化 JSON + Markdown 报告,便于 LLM 直接理解和用户存档
参数:
topo_path:.topo文件绝对路径lldp_results:列表,元素为ensp_verify_lldp_neighbors的返回 (建议传scan字段;为了容错,传整个返回对象也可)device_aliases:可选,把 LLDP 的system-name映射到.topo里的设备名(如{"AR1": "R1"}),处理 sysname 与拓扑名不一致的情况
典型使用场景:
生成配置前验证接口号:调用本工具确认
.topo的GE0/0/0是否真的接在物理 GE0/0/0 上,避免下发配置时把 IP 配到错误接口拓扑图纠错:发现接口错位后,用
ensp_gather_diagnostic_context收集上下文,让 LLM 给出修改建议(更新 .topo 或重新接线)实验前环境检查:学生实验前用本工具确认 eNSP GUI 接的线与设计一致
| Name | Required | Description | Default |
|---|---|---|---|
| topo_path | Yes | ||
| lldp_results | Yes | ||
| device_aliases | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does most of it: it documents the classification logic (matched/topo_only/lldp_only/mismatched), that input is parsed from an absolute path, that both XML and ZIP are auto-detected, and that output is JSON + Markdown. It never explicitly states the operation is read-only / has no device side effects, which is the one remaining 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?
Well front-loaded with the purpose in the first line, then workflow, edge categories, parameters, and scenarios. The bulleted edge-category breakdown is informative but slightly verbose; a few lines could be tightened without loss.
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 three-parameter analysis tool with an output schema already present, the description covers input handling, the comparison algorithm, output format, sibling routing, and follow-up workflows. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate and does — it explains topo_path is an absolute .topo path, lldp_results is a list of ensp_verify_lldp_neighbors returns (recommending the scan field but tolerating the whole object), and device_aliases maps LLDP system-name to .topo names with a concrete example.
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+resource — cross-validating .topo parse results against LLDP neighbors — and explicitly contrasts itself with siblings (ensp_parse_topology only reads the file; ensp_verify_lldp_neighbors reflects physical reality). An agent can pick this tool 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?
It names concrete when-to-use scenarios (pre-config interface validation, topology correction, pre-lab environment check) and points to the follow-up tool (ensp_gather_diagnostic_context) once mismatches are found. The condition selecting it over the two sibling reads is stated outright.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_diagnose_batchB
对批量命令结果(ensp_send_commands 的 results 列表)进行批量诊断。
返回每个失败命令的诊断结果,并汇总修复建议。
| Name | Required | Description | Default |
|---|---|---|---|
| command_results | Yes | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 behavioral burden. It describes only the returned content (per-command diagnosis plus aggregated fix suggestions) and says nothing about side effects, whether it is read-only, auth requirements, or cost — and the return content is already covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, and the input source is front-loaded. Efficient, though it is arguably too terse for a tool with two undocumented parameters.
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 presence of an output schema removes any need to explain return values, which the description correctly does not belabor. However, with no annotations and 0% parameter coverage, the definition is incomplete: the session parameter and any behavioral profile are undocumented.
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 for both parameters. It adds meaning only for `command_results` (the `results` list from `ensp_send_commands`); `session_id_or_name` is never explained, leaving the caller to guess its valid values and whether it identifies a session by id or name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource: batch diagnosis of batch command results. It also anchors the input to the `results` list produced by `ensp_send_commands`, which pins down exactly what this tool consumes. It does not explicitly contrast itself with `ensp_diagnose_error`, so differentiation from that sibling is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the tool clearly runs after `ensp_send_commands` on its result list. There is no explicit when-not guidance and no named alternative (e.g. `ensp_diagnose_error` for single errors), so the agent must infer the routing itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_diagnose_errorA
对一条命令错误进行智能诊断,返回根因分析与修复建议。
参数:
session_id_or_name:会话 ID 或设备名error_text:设备回显中的错误文本(如ensp_send_command返回的errors)command:触发该错误的命令(可选,用于更精准的诊断)
返回:
category:错误分类标签severity:严重级别(critical/error/warning/info)root_causes:可能的根因列表probe_commands:建议先执行的探查命令fix_suggestions:修复建议列表confidence:诊断置信度(high/medium/low)
使用场景:
当 ensp_send_command 返回 errored=True 时,将 errors 字段
传入本工具获取诊断,而不是直接放弃或盲目重试。
| Name | Required | Description | Default |
|---|---|---|---|
| command | No | ||
| error_text | Yes | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses the output fields including confidence and severity, which helps the agent interpret results, but says nothing about whether the tool executes probe commands itself (it says probe_commands are suggested, which is good context) or about latency/cost. Partial coverage 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?
Structured with labeled sections (参数/返回/使用场景) that make it scannable. Slightly verbose in enumerating returned fields, but each section is front-loaded with purpose first and wastes little.
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 needn't be explained, yet the description restates them anyway, which is redundant but harmless. For a single-error diagnostic tool with no annotations, the trigger condition, parameters, and output fields are all covered; only alternative-tool routing is thin.
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% and the description must compensate, which it does: session_id_or_name, error_text (with a concrete source pointer to ensp_send_command's errors field), and command's optional purpose for more precise diagnosis. That is near-complete coverage of all three params.
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+resource: '对一条命令错误进行智能诊断' (diagnose a command error) with a clear output contract (root cause analysis and fix suggestions). It is distinguishable from siblings like ensp_diagnose_batch by handling a single error and from ensp_send_command which merely produces the error.
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 使用场景 section gives an explicit trigger and an alternative: when ensp_send_command returns errored=True, pass errors here instead of giving up or blindly retrying. It names a sibling and a behavioral exclusion, though it doesn't contrast with ensp_diagnose_batch or ensp_gather_diagnostic_context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_disconnect_deviceC
关闭一个会话并释放其 Telnet 连接。
| Name | Required | Description | Default |
|---|---|---|---|
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose the effect (the session is closed and the Telnet connection freed), but says nothing about reversibility, what happens with an unknown/invalid session, permission needs, or whether the close is graceful. For a disconnect operation with zero annotation coverage this is thin.
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 short sentence with the action front-loaded and zero filler. It is efficient, though arguably under-specified rather than truly concise.
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, but with no annotations and 0% parameter coverage the description leaves the one required argument and all failure/edge behavior undocumented. For a state-mutating disconnect tool this is not 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?
Schema description coverage is 0% for the single required parameter, so the description must compensate and does not. It never mentions that session_id_or_name accepts either an identifier or a name, nor what format is expected.
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 ('关闭一个会话' / close a session) plus the concrete effect (releasing its Telnet connection), which is more than a restatement of the name. It implies single-session scope, implicitly distinguishing it from ensp_close_all_sessions, though it never names the alternative 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 when-to-use guidance, no prerequisites, and no mention of the obvious alternatives (ensp_close_all_sessions, ensp_cleanup_idle_sessions, ensp_connect_device). The agent must infer context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_enable_lldpA
在指定设备上开启 LLDP(用于让设备广播 / 接收邻居信息)。
LLDP(Link Layer Discovery Protocol)是华为 eNSP 设备默认支持的链路层发现协议,
设备互相通告自己的接口和系统名。开启后即可用 ensp_verify_lldp_neighbors
看到哪些接口连到了对端设备的哪个接口。
工作流程:
system-view进入系统视图lldp enable全局使能(华为默认全局开启后所有接口都广播)若指定了
interfaces,进每个接口视图执行lldp enable(仅在接口视图下需要单独使能时才需要;默认情况下全局开即可)
参数:
session_id_or_name:会话 ID 或设备名interfaces:可选,要单独使能 LLDP 的接口列表(如["GigabitEthernet0/0/2"]); 留空表示仅全局使能
返回每步的执行结果(命令 / elapsed / output / errored),失败时停止并标记。
| Name | Required | Description | Default |
|---|---|---|---|
| interfaces | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it explains that global 'lldp enable' already broadcasts on all interfaces so per-interface enablement is usually unnecessary, and it discloses failure behavior (stops on error and marks the step). It does not mention session prerequisites or whether the operation is idempotent.
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?
Well-structured with a purpose line, a numbered workflow, and a parameter section; the key scoping fact is front-loaded. It is slightly verbose in re-explaining what LLDP is, which is tangential to invocation.
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 output schema exists, return values needn't be documented, though the description briefly notes them (command/elapsed/output/errored). Combined with the workflow and full parameter explanation, an agent has what it needs, though auth/permission context 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 0%, so the description must compensate, and it does: it defines session_id_or_name (session ID or device name) and interfaces (optional per-interface enablement list, empty means global only) with an example. This meaningfully exceeds the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (开启 LLDP on 指定设备) and scopes the effect (broadcast/receive neighbor info on Huawei eNSP). It names the sibling counterpart ensp_verify_lldp_neighbors, letting an agent distinguish it from the verification tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: enable LLDP so that ensp_verify_lldp_neighbors can reveal neighbor links, and explains the workflow order. However, it never states when NOT to use this tool or names alternative enablement paths, so it stops short of the explicit when/when-not/alternatives bar of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_enter_system_viewC
把指定会话切换到 system-view。
| Name | Required | Description | Default |
|---|---|---|---|
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does not disclose what happens if the session is already in system-view, whether the session must be connected/active first, or any side effects on session 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?
A single short sentence, front-loaded and free of waste. But its brevity reflects under-specification rather than genuine economy for a mode-switching 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?
An output schema exists, so return values need not be explained. However, with no annotations and no parameter documentation, the definition omits essential context: prerequisites, session-state requirements, and valid identifier forms.
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% for the single parameter session_id_or_name. The description mentions '指定会话' (specified session) but adds no detail on accepted ID vs. name formats or valid values, so it fails to compensate 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 states a specific verb (switch) and target state (system-view) applied to a named session, which is more than a tautology. However, it offers no differentiation from siblings like ensp_send_command, which could also enter system-view, leaving the agent to infer the distinction.
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 sending a raw 'system-view' command via ensp_send_command, nor any prerequisite context. The agent gets an implied action but no selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_gather_diagnostic_contextA
当命令执行失败时,自动收集设备全貌供 LLM 深度推理。
与 ensp_diagnose_error 的区别:
ensp_diagnose_error返回规则引擎的快速匹配结果本工具收集设备真实状态(配置、接口、最近输出),生成结构化推理 prompt, 供 LLM 像网络工程师一样分析根因
本工具会自动执行以下探查命令(无需手动调用):
display version— 设备信息display current-configuration— 运行配置display ip interface brief— 接口状态
返回的 reasoning_prompt 字段可直接用于 LLM 推理,
引导 LLM 按四步分析:错误类型判断 → 根因分析 → 修复方案 → 验证步骤。
典型使用场景:
ensp_smart_config返回has_error=true且规则诊断置信度为 low 时规则引擎未覆盖的未知错误
需要 LLM 结合配置上下文做深度推理的复杂场景
| Name | Required | Description | Default |
|---|---|---|---|
| error_text | Yes | ||
| failed_command | Yes | ||
| session_id_or_name | Yes | ||
| experiment_description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the three probe commands that will be auto-executed, that they require no manual invocation, and that the output includes a reasoning_prompt driving a four-step analysis. It stops short of stating permissions or explicitly that it is read-only/side-effect-free, so a small behavioral gap remains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, then uses labeled sections (difference from sibling, auto-executed commands, returned field, typical scenarios). Slightly long but every block earns its place for a multi-step diagnostic 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?
Given an output schema exists, return values need not be detailed, yet the description still explains the reasoning_prompt and the four-step workflow. The main gap is parameter semantics rather than anything about the tool's behavior or scope, which is well covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across four parameters (session_id_or_name, failed_command, error_text, experiment_description), and the description gives no per-parameter meaning, format, or examples. The only implicit signal is that a failed command and its error text drive the analysis; the session identifier and experiment_description are 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?
States a specific action (gather full device context on command failure) and explicitly contrasts itself with the sibling ensp_diagnose_error, naming what each returns. An agent can distinguish this reasoning-oriented tool from the rule-engine tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use conditions (ensp_smart_config returns has_error=true with low-confidence rule diagnosis, unknown errors, complex reasoning scenarios) and names the alternative tool plus the exact condition that selects it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_get_device_infoA
获取设备元信息(hostname、型号、版本、uptime)。
refresh=True 时重新执行 display version;否则只返回已缓存的值。
| Name | Required | Description | Default |
|---|---|---|---|
| refresh | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does disclose real behavior beyond the schema: results are cached, and refresh=True triggers an actual `display version` execution on the device. It leaves out prerequisites (established session), failure behavior for an unreachable device, and any latency/rate considerations, so it is above average but not complete.
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, no filler; the tool's output fields come first and the refresh/cache semantics follow, so the most important information is 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?
The description need not explain return values since an output schema exists, and it covers the returned fields plus the refresh trade-off. The main gaps are the unexplained required session identifier and the unstated requirement that a device session must already be connected.
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% for two parameters. The description fully explains `refresh` (re-run display version vs. return cache), which is genuinely valuable, but says nothing about `session_id_or_name` — the required identifier — so it only partially 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?
The description states a specific verb and resource (get device metadata) and enumerates the returned fields — hostname, model, version, uptime — which is enough to distinguish it from siblings like ensp_get_running_config. It does not explicitly name or route against a sibling, 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?
The only conditional given is internal to the tool: refresh=True re-runs `display version`, otherwise cached values are returned. That is useful parameter guidance but not when-to-use-this-vs-alternatives guidance; there is no mention of prerequisites such as an active session or when to prefer this over ensp_send_command.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_get_recent_outputC
获取指定会话输出缓冲中最近 lines 行。
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it discloses almost nothing: it does not state that the operation is read-only, whether reading consumes or clears the buffer, whether long buffers are truncated, or that the session must already be connected. Only the notion of 'most recent' lines hints at trailing-window semantics.
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 resource and the limiting parameter appear immediately. It is efficient, but the terseness is partly the reason behavioral and usage context is absent.
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 two-parameter tool with an output schema and zero annotation coverage needs more than one sentence. The description omits preconditions (connected session), buffer behavior, and any routing guidance, leaving the agent to infer how this fits with the dispatch/clear-output siblings.
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 does clarify the `lines` parameter by naming it and framing it as the count of most-recent lines (the schema alone only says 'integer, Lines'), but the required `session_id_or_name` parameter is never explained — thankfully its name is largely self-describing.
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 (获取/get) and resource (会话输出缓冲/session output buffer), with the scope limited to the most recent lines. This is enough to separate it from ensp_get_running_config or ensp_clear_output_buffer, though it never names those alternatives 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 when-to-use or when-not-to-use guidance. Nothing tells the agent whether this is meant to be called after ensp_send_command, whether it should be used instead of a verify_* tool, or what happens relative to ensp_clear_output_buffer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_get_running_configA
获取设备当前运行配置(display current-configuration)。
这是配置前必须做的探查步骤。eNSP 不同镜像 / VRP 版本支持的命令集并不一致,
直接套用记忆中的命令很可能报错(Error: Unrecognized command)。正确做法是:
先用 :func:
ensp_get_device_info拿到型号与 VRP 版本;再用本工具拿到设备 已有的 配置(已存在的接口 IP、VLAN、路由、特性开关等);
基于这两份真实信息生成配置命令,而非凭空猜测;
下发后用 :func:
ensp_send_command的errored回显 / :func:ensp_verify_interfaces等校验,失败则据设备反馈修正。
| Name | Required | Description | Default |
|---|---|---|---|
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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; it discloses the read-only probing role and the key failure mode (inconsistent command sets across images/VRP versions causing 'Error: Unrecognized command'). It doesn't state permissions or rate/response-size behavior, but the read-only semantics are unambiguous and output format is covered by the output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first line, followed by clearly numbered workflow steps. The steps 3–4 drift slightly into general configuration methodology rather than this tool's behavior, which is a minor amount of content beyond what the tool itself 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 explained, and the description supplies purpose, workflow, prerequisites, and failure modes. The only real gap is the unaddressed session identifier parameter, which is left to the schema name alone.
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% and the single parameter (session_id_or_name) is never mentioned in the description. The parameter name is reasonably self-descriptive, but the description adds no meaning (e.g. whether it accepts an id, a name, or both), so it sits at the minimum-viable baseline.
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 ('获取设备当前运行配置') and even names the underlying VRP command (display current-configuration). It is clearly distinguishable from ensp_get_device_info (model/VRP version) and the send/verify siblings by its read-the-existing-config role.
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 frames itself as a mandatory pre-configuration probe and provides a numbered workflow with the alternative steps: use ensp_get_device_info first, then this tool, then ensp_send_command / ensp_verify_interfaces to validate. When-to-use and which siblings to pair with are both spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_health_checkB
对设备进行全面健康检查,自动诊断异常。
检查项:
会话状态(连接是否正常)
设备元信息(VRP 版本、型号)
接口状态(物理/协议状态,自动诊断 down 的接口)
OSPF 邻居状态(可选,需
check_ospf=True)路由表完整性(可选,需
check_routes=True)
返回结构化诊断报告,包含每个检查项的 issues 列表和修复建议。
| Name | Required | Description | Default |
|---|---|---|---|
| check_ospf | No | ||
| check_routes | No | ||
| expected_routes | No | ||
| session_id_or_name | Yes | ||
| expected_up_interfaces | No | ||
| expected_ospf_neighbors | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavior burden and does reasonably well: it establishes this is a diagnostic/read operation, lists exactly which subsystems are inspected, discloses the conditional gating of the optional checks, and describes the output shape ('issues' list per check item plus repair suggestions). It does not state permissions or side effects explicitly, but a health check is inherently read-only, so coverage is good.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose followed by a compact numbered breakdown of check items, which maps naturally onto the tool's behavior. Sentences are tight and the optional flags are flagged inline; the list format is appropriate rather than 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?
Because an output schema exists, return values need not be explained and the description still adds a useful one-line summary of the report. It is adequate for a read-only diagnostic tool but leaves notable gaps: the expected_* comparison parameters and session_id_or_name are unexplained, and there is no indication of when to prefer it over the granular verify_* siblings.
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, and it only partially does. It gives meaningful semantics for two parameters (check_ospf, check_routes) by mapping them to specific check items, but it never mentions session_id_or_name, expected_routes, expected_up_interfaces, or expected_ospf_neighbors — the comparison inputs that drive the diagnosis — nor the expected formats for those values.
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: '对设备进行全面健康检查,自动诊断异常', then enumerates the concrete check items (session, metadata, interfaces, OSPF, routes). This clearly differs in scope from the narrower verify_* siblings, but it never names or contrasts against them (e.g. ensp_verify_interfaces, ensp_diagnose_error), so sibling differentiation is only implicit via the '全面/comprehensive' framing.
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 supplies some usage context by noting OSPF and route checks are optional and gated by check_ospf=True / check_routes=True, which tells the agent how to enable them. However, it gives no guidance on when to choose this comprehensive check versus the individual verify_* tools or ensp_diagnose_error, leaving the agent to infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_list_sessionsB
列出当前所有活跃会话的快照。
| 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?
No annotations are provided, so the description carries the full behavioral burden. It implies a read-only listing but never states there are no side effects, whether it requires an existing connection, or how the snapshot relates to live session state. 'Snapshot' hints at a point-in-time capture but nothing more is 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?
A single compact sentence with no filler and the core action front-loaded. It is efficient, though it is so terse that it leaves obvious questions unanswered rather than being optimally informative.
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 listing tool with an output schema is a simple case, and the description tells the agent enough to invoke it correctly. However, it omits any framing of what a session is, when to call this, or how it relates to the many sibling session/device tools, leaving real gaps for an agent choosing among them.
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, and an empty argument object means there is nothing for the description to disambiguate; the schema coverage is 100%. Baseline 4 applies for a no-parameter tool.
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 active sessions) plus a scope qualifier (snapshot of all currently active). An agent can distinguish it from the mutating siblings ensp_close_all_sessions and ensp_cleanup_idle_sessions by its read-only listing nature. It does not, however, explicitly name an alternative or clarify what counts as an 'active session' versus a connected 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?
There is no when-to-use guidance, no prerequisites, and no mention of related siblings such as ensp_connect_device or ensp_close_all_sessions. Usage is only weakly implied by the verb 'list'. An agent must guess whether this is a discovery step before connecting or a monitoring step after.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_load_topologyA
加载 .topo 拓扑:解析 → 探测每个设备的 com_port → 自动建连 → 输出启动指引。
典型工作流:
调用本工具解析
.topo,获得设备清单与连线;工具对每个
com_port做 TCP 探测(无需 telnet 登录);对可达端口自动调用
ensp_connect_device建连;对不可达端口,把设备列入
pending_devices并附带 eNSP GUI 启动步骤;用户在 eNSP GUI 中启动设备后,再次调用本工具(或
ensp_scan_devices+ensp_connect_device组合)补齐剩余会话。
返回 JSON + Markdown 报告(markdown_report 字段)。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| auto_connect | No | ||
| scan_timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses that probing is TCP-only with no telnet login, that reachable ports trigger automatic session creation via `ensp_connect_device`, and that unreachable devices are diverted to `pending_devices` rather than failing the call. It omits idempotency/error semantics and whether repeated calls create duplicate sessions, 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?
Front-loaded one-line summary followed by a tight numbered workflow that maps to the actual execution stages. Slight redundancy in restating the `ensp_scan_devices` + `ensp_connect_device` fallback, but no filler 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?
For a complex orchestration tool, the description covers the pipeline, the failure path, and the follow-up action, and an output schema exists so return-value detail is unnecessary. Remaining gaps are the meaning of `pending_devices` fields and error behavior when the topology file itself is invalid.
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% for all three parameters, so the description must compensate and largely does not: `auto_connect` and `scan_timeout` are only alluded to indirectly via the probing/auto-connect narrative, with no units for the timeout or mention of the 0.5 default, and `path` has no stated format or constraint.
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+resource and scope: loading a ``.topo`` file and running a four-stage pipeline (parse → probe com_ports → auto-connect → emit startup guidance). This is clearly more than the parse-only siblings, though it never explicitly contrasts itself with `ensp_parse_topology`, leaving that distinction to be inferred from the pipeline steps.
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 an explicit numbered when-to-use workflow, names the fallback combination (`ensp_scan_devices` + `ensp_connect_device`) for the same goal, and states the exact re-invocation condition (after the user starts devices in the eNSP GUI). Nothing about tool selection 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.
ensp_parse_topologyC
解析本地 .topo 文件(XML 或 ZIP 格式)。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden yet only states the accepted file formats. It does not say whether the operation is read-only (implied but unstated), how it behaves on malformed/ZIP-corrupt input, or any side effects (e.g., caching or session 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?
A single compact sentence with the key constraints (local, .topo, XML/ZIP) front-loaded and no filler. It is efficient, though the extreme brevity leaves useful context unstated rather than being a model of completeness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained. However, for a parse tool with no annotations and a sibling that handles base64 input, the description omits sibling differentiation and error/side-effect behavior, leaving meaningful gaps.
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. The word '本地' (local) plus '.topo file' implies the single path parameter is a local filesystem path rather than inline data, which is modest but real added meaning over the bare 'Path' schema entry.
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 (解析/parse) and resource (.topo file), plus the accepted formats (XML or ZIP). It clearly conveys what the tool does, but does not distinguish itself from close siblings such as ensp_parse_topology_b64 or ensp_load_topology, leaving the agent to infer the difference.
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 guidance and no mention of the obvious alternative ensp_parse_topology_b64 for base64 input or ensp_load_topology. The agent must guess which parse/load variant applies to a given situation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_parse_topology_b64A
解析 base64 编码的 .topo 字节(用于 MCP 客户端直接上传)。
输入是标准 base64 字符串。返回与 ensp_parse_topology 一致的结构。
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | uploaded | |
| content_b64 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It does add real context: the input format is a standard base64 string and the output mirrors ensp_parse_topology (a meaningful promise of shape parity). It says nothing about invalid-base64 handling, size limits, or that this is a non-mutating parse, leaving notable behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three very short sentences: purpose first, input format second, return contract third. No filler, no repetition of the name, and the most decision-relevant fact (base64 upload, same result as ensp_parse_topology) is 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?
An output schema exists, so return values need not be described, and the description correctly delegates to ensp_parse_topology for structure. Input format and call context are covered. The omissions worth noting are error behavior for malformed base64 and the untouched 'name' parameter, which keeps it from 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 0%, so the description is the only source of parameter meaning. It explains content_b64 ('输入是标准 base64 字符串') but never mentions the 'name' parameter or its 'uploaded' default, so half the parameters remain undocumented in both schema and 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?
States a specific verb+resource ('解析 base64 编码的 .topo 字节') and explicitly ties itself to the sibling ensp_parse_topology by saying it returns the identical structure. The parenthetical '(用于 MCP 客户端直接上传)' gives the distinguishing scenario. It stops short of a crisp one-line 'this is the base64 input variant of X', which would make it 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 parenthetical 'for MCP clients uploading directly' implies the usage context and indirectly signals the split from ensp_parse_topology (file-path variant). However, there is no explicit when-to-use/when-not statement and no direct naming of the alternative the way a strong definition would route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_pingB
在指定会话上执行 ping -c {count} {target},解析丢包率。
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | ||
| target | Yes | ||
| timeout | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses the exact command executed and that packet loss rate is parsed, but omits session-state requirements, timeout behavior, error handling, and any side effects of running ping.
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 states the action, the command template, and the parsed output in one efficient line.
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, so return values need not be explained, and the core action is clear. Still, with no annotations and 0% schema description coverage, the definition leaves usage conditions, timeout semantics, and session requirements unstated for an agent that must 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 description coverage is 0%, so the description must compensate for four parameters. It references count and target via the command template and implies session_id_or_name with '指定会话', but completely omits timeout and provides no format, default, or session-identifier details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (执行 ping), resource (指定会话), target, and a precise command template, making the purpose clear. However, it does not explicitly differentiate the tool from siblings like ensp_send_command or ensp_send_commands, which could also run commands on a session.
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 the context that the tool runs on a specified session, but provides no when-to-use guidance, no alternatives, and no prerequisites such as requiring an active session. The agent must infer usage 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.
ensp_save_configC
触发 save 流程:先 quit 退到用户视图,再 save 并确认 y。
| Name | Required | Description | Default |
|---|---|---|---|
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 behavioral burden. It discloses the exact interactive sequence (quit, save, confirm y), which is useful for predicting behavior. However, it doesn't mention potential side effects, session requirements, what happens on failure, or that this modifies persistent configuration. With an output schema present, return values are covered 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?
The description is a single, front-loaded sentence that efficiently conveys the sequence of operations. It uses concrete commands (quit, save, y) which are helpful. No waste, but could be slightly more structured with explicit usage conditions.
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 complexity of an eNSP session tool with no annotations and an undocumented parameter, the description is incomplete. It doesn't explain the parameter, session prerequisites, or how this differs from sending commands manually. While the output schema covers returns, the description should do more 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 0%, and the single parameter 'session_id_or_name' is undocumented in both schema and description. The description doesn't explain what this parameter is or how to obtain it. Baseline for 0 params would be 4, but here one parameter exists with no coverage, so description fails to compensate.
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 action: triggering the save flow, with the exact steps (quit to user view, save, confirm y). This is clear about what it does. It doesn't explicitly differentiate from siblings like ensp_send_command or ensp_send_commands, which could also execute these commands manually, but the labeled 'save flow' gives it distinct identity.
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 guidance on when to use this tool versus manually sending commands via ensp_send_command. The description implies it's for saving configurations, but doesn't state prerequisites like being in system view or needing a connected session. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_scan_devicesC
扫描 eNSP 设备的 Telnet 端口(默认 2000-2100)。
返回 {"host": str, "ports": [int, ...]}。
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | ||
| timeout | No | ||
| port_end | No | ||
| port_start | No | ||
| max_workers | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It discloses the return shape but not the scan's behavior — no mention of concurrency via max_workers, timeout behavior, whether it blocks, or the cost of scanning up to 100 ports.
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 short and front-loaded: one sentence for the purpose followed by the return contract. Nothing is wasted, though it is arguably under-specified rather than truly concise.
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 detailed. But with zero annotation coverage, 0% schema description coverage on 5 parameters, and no usage guidance, an agent lacks enough context to invoke this correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters — host, timeout, port_start, port_end, and max_workers are all undocumented in both the schema and the description. The description mentions only the default port range, leaving host resolution, timeout units, and worker-count semantics completely 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?
States a specific verb and resource: scanning Telnet ports of eNSP devices, with a default range (2000-2100). This clearly distinguishes it from connection-oriented siblings like ensp_connect_device or command-execution tools, though it doesn't explicitly name an 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?
No guidance on when to use this scan versus, say, ensp_connect_device or ensp_get_device_info. The natural discovery workflow (scan first, then connect) is left for the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_send_commandB
下发单条命令,返回命令输出、耗时与命令层报错标记。
errored=True 表示设备回显中包含 Error:(如命令不存在 / 参数错误),
此时应据 errors 回显修正命令后重试,而不是继续下发后续配置。
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | ||
| timeout | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose meaningful behavior: the errored flag is defined as the presence of 'Error:' in device echo, and the recovery flow (fix command, retry, do not continue) is spelled out. It stops short of covering session/auth prerequisites, timeout behavior, or side effects on device 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?
Two tight paragraphs: purpose and return values first, error-handling guidance second. Front-loaded and free of filler, though the phrasing is dense enough that a slightly clearer separation of the error semantics would help.
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 re-explained, and the description correctly focuses on interpreting errored/errors. Still missing for a command-execution tool: session targeting semantics, timeout behavior, and routing versus the batch and system-view siblings, so it is adequate but not 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 0% across three parameters, so the description must compensate and largely does not. It never explains session_id_or_name, what the timeout unit/behavior is (default 10), or expected command syntax (config-mode vs exec-mode), leaving all parameter meaning to bare property names.
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 combination ('下发单条命令' / send a single command) and enumerates what it returns (output, elapsed time, error flag). The word '单条' (single) implicitly separates it from the batch sibling ensp_send_commands, but that sibling is not named explicitly, so the differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete operational guidance for the failure path: when errored=True, correct the command from the errors echo and retry rather than proceeding with further configuration. However, it never states when to prefer this tool over ensp_send_commands (batch), ensp_enter_system_view, or the diagnostic siblings, so the choose-this-vs-alternative question is left partly unanswered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_send_commandsA
批量下发命令,每条命令返回独立的 :class:TelnetResult。
stop_on_error=True 时,遇到连接错误 或 设备命令报错(errored)会立刻中断。
auto_diagnose=True 时,对每条失败命令自动调用诊断引擎,返回 diagnosis 字段。
返回中 has_error 汇总是否存在任意一条命令报错。
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | ||
| auto_diagnose | No | ||
| stop_on_error | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does meaningful work: it discloses that stop_on_error aborts on either connection failure or device-level 'errored' results, that auto_diagnose invokes the diagnosis engine per failed command and adds a diagnosis field, and that has_error aggregates error state. It omits auth/session prerequisites and any rate or batching limits.
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 short, front-loaded lines, each covering one distinct concern (purpose, stop_on_error, auto_diagnose, return summary) with 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?
An output schema exists, so return-shape explanation is not required, and the behavioral flags are well covered. The gap is on the input side: nothing explains what session_id_or_name accepts (ID vs name) or how the commands array is interpreted, which matters for a 4-parameter tool at 0% 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 0%, so the description must compensate, and it does explain the semantics of two of the four parameters (auto_diagnose, stop_on_error) beyond their names. The required session_id_or_name and the commands array format (strings, ordering, view context) are not clarified anywhere.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('批量下发命令') and states the per-command return type (TelnetResult), which clearly marks it as the batch counterpart to the singular ensp_send_command sibling. It stops short of explicitly naming that sibling or stating the batch-vs-single selection rule.
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 batch framing and the documented effect of stop_on_error and auto_diagnose, so an agent can infer when to flip those flags. However, there is no explicit statement of when to prefer this over ensp_send_command 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.
ensp_smart_configA
智能配置下发:逐条下发命令,遇到错误时自动诊断并提供修复建议。
与 ensp_send_commands 的区别:
每条命令执行后,若
errored=True自动调用诊断引擎返回中包含每条失败命令的
diagnosis字段stop_on_error=True时首条失败即停止,避免级联错误auto_gather_llm_context=True时,失败后自动收集设备全貌供 LLM 深度推理
参数:
session_id_or_name:会话 ID 或设备名commands:命令列表stop_on_error:遇错即停(推荐 True)auto_diagnose:自动对失败命令执行规则诊断(默认 True)auto_gather_llm_context:失败后自动收集设备全貌生成 LLM 推理上下文(默认 False)experiment_description:用户实验需求描述(用于 LLM 推理上下文)
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | ||
| auto_diagnose | No | ||
| stop_on_error | No | ||
| session_id_or_name | Yes | ||
| experiment_description | No | ||
| auto_gather_llm_context | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: per-command execution, automatic diagnosis engine invocation on errored=True, first-failure termination via stop_on_error, and optional device-context gathering for LLM reasoning. It does not address permission requirements, persistence of pushed config, or rate/throughput limits, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well structured with a summary line, a difference block, and a parameter block; the core purpose is front-loaded. Slightly verbose in repeating parameter names already in the schema, but each line 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 fully spelled out, though the description usefully notes the diagnosis field per failed command. All parameters are explained and the sibling distinction is addressed, so an agent has what it needs to call correctly; auth and side-effect details remain 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 0%, so the description must compensate, and it documents all six parameters with meaning and defaults (auto_diagnose default True, auto_gather_llm_context default False, experiment_description purpose). Descriptions are terse but sufficient; no format examples for commands or session identifier.
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 (智能配置下发 - smart config push of commands) and immediately names the sibling it must not be confused with (ensp_send_commands), enumerating concrete behavioral differences. An agent can distinguish it from the sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The comparison block makes the selection condition clear (use this when you want per-command auto-diagnosis and optional LLM context gathering), and it recommends stop_on_error=True to avoid cascading errors. It stops short of an explicit 'use X instead of Y when' statement, so it's strong context but not fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_verify_interfacesC
在指定会话上执行 display ip interface brief,解析后返回。
| Name | Required | Description | Default |
|---|---|---|---|
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 behavioral burden. It mentions that the command is executed on a session and parsed, but it omits side effects, required session state, possible errors, or formatting of output. This is minimal transparency, leaving the agent to infer 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?
The single sentence is very concise and front-loaded with the core action. However, it is arguably too terse to be helpful, and it wastes no words only because it omits necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is an output schema, the description need not explain return values, but it still lacks context on session prerequisites, command rationale, and how results should be interpreted. For a verification tool in a suite with many alternatives, this leaves significant gaps.
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 parameter (session_id_or_name) and 0% schema coverage, the description must explain what a session is and how to supply it. Instead, it says nothing about the parameter, its format, or how sessions are named, providing no semantic value beyond the schema's field name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the command executed ('display ip interface brief') and the outcome (parsed and returned), so the agent can infer the purpose is interface verification. However, it does not explicitly frame itself as a verification tool or distinguish its function from siblings like ensp_get_device_info or ensp_verify_routes beyond the specific command. Adequate but not strongly differentiated.
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 offers no guidance on when or why to use this tool versus alternatives such as ensp_send_command, ensp_verify_routes, or ensp_get_device_info. There is no mention of context, prerequisites, or expected outcomes that would help an agent select it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_verify_lldp_neighborsA
采集指定设备的 LLDP 邻居信息(真实物理连接)。
与 ensp_verify_interfaces 的区别:
ensp_verify_interfaces只看本设备接口状态,不知道对端是谁本工具通过 LLDP 看到的是「对端设备 + 对端接口」,是物理事实
自动使能 LLDP(默认开启):
先发
display lldp neighbor brief(默认)或display lldp neighbor若回显表明 LLDP 未使能(命令报错,或含
LLDP is not enabled/LLDP功能未使能等关键字),且auto_enable=True,自动走:system-view → lldp enable → quit,等enable_retry_delay秒 让邻居收敛,再发一次采集命令若第二次仍然失败,返回
status="error"并附带 hint
把 auto_enable 设为 False 时,行为退回到「仅采集,未使能则报错」,
便于在已经手工开启 LLDP 的脚本里复用。
输出格式:
neighbors列表:每条含local_interface/remote_device/remote_interface/remote_chassis_id等字段返回的接口名已归一化(
GE0/0/0→GigabitEthernet0/0/0)lldp_was_enabled/auto_enable_attempts字段告诉调用方 本次是否自动使能过 LLDP(避免 LLM 重复操作)
典型用法:
在每台路由器 / 交换机上各调一次,收集到全网 LLDP 邻居后 传给
ensp_cross_validate_topology做交叉验证
核心实现见 :func:grbj_ensp_mcp.lldp_verifier.collect_lldp_neighbors_with_auto_enable。
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | ||
| auto_enable | No | ||
| enable_retry_delay | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so richly: it documents the auto-enable state machine (detect disabled LLDP by keywords → system-view/lldp enable → wait → recollect), the failure path (second failure returns status=error with hint), the flag semantics of lldp_was_enabled/auto_enable_attempts, and interface-name normalization. This is deep behavioral disclosure beyond any structured field.
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 purpose and the sibling distinction, and the auto-enable logic is broken into numbered steps that are easy to follow. It is somewhat long, and the trailing code reference to grbj_ensp_mcp.lldp_verifier adds little for an agent caller.
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 4-parameter verification tool with an output schema, it covers everything needed: selection rationale, the auto-enable workflow, failure semantics, and even a preview of the returned fields. Nothing required 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 0%, so the description must compensate; it explains auto_enable and enable_retry_delay well (including the seconds-wait behavior), and detail is inferable from the 'brief vs full' command branch. However it never names detail or session_id_or_name explicitly, leaving the mapping partly implicit, so it falls just short of full compensation.
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: collecting LLDP neighbor information (真实物理连接) from a named device. It explicitly distinguishes itself from the sibling ensp_verify_interfaces by contrasting what each can see (local interface state vs. remote device+interface). An agent can pick the right tool without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use context (run once per router/switch, then feed results to ensp_cross_validate_topology) and an explicit conditional alternative (auto_enable=False reverts to collect-only for scripts where LLDP is already enabled manually). The ensp_verify_interfaces comparison further routes selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_verify_ospfB
执行 display ospf peer brief + display ospf routing,合并返回。
| Name | Required | Description | Default |
|---|---|---|---|
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose that two read-only `display` commands are run and their outputs are merged. However it says nothing about session requirements, whether the session must already be in system view, error behavior when OSPF is not configured, or how the merge is structured.
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 commands to be executed are stated immediately. It is terse to the point of omitting needed parameter/usage detail, but no sentence 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?
The presence of an output schema means return-value semantics need not be described, and the tool is a simple two-command reader. Still, with zero schema description coverage, no annotations, and no usage guidance, the definition is only minimally complete for an agent to invoke it confidently.
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 is expected to compensate, yet it adds no information about the single `session_id_or_name` parameter. The parameter name is fairly self-explanatory, but whether an ID or a name is accepted and their format is left undocumented in both schema and 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 names a specific action (execute the two OSPF display commands) and the exact resources involved (`display ospf peer brief` and `display ospf routing`), so an agent knows precisely what the tool does. It does not explicitly distinguish itself from the adjacent `ensp_verify_routes` sibling, which is the only missing clarity element.
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 via the tool name and the OSPF-specific commands listed; there is no statement of when to prefer this over `ensp_verify_routes` or the generic `ensp_send_command`/`ensp_verify_interfaces` tools. 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.
ensp_verify_routesC
执行 display ip routing-table,可按 protocol 过滤(如 ospf static)。
| Name | Required | Description | Default |
|---|---|---|---|
| protocol | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It notes the exact IOS command executed, which is useful, but says nothing about requiring an active/connected session, read-only safety, or what happens on an invalid protocol filter.
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 primary action front-loaded and the optional filter trailing. It wastes no words, though the brevity contributes to the transparency gaps.
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. The description is adequate for a simple read command, but omits the session prerequisite and the meaning of the unrequired/nullable protocol default.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains the protocol filter well with concrete examples (``ospf``, ``static``), but leaves session_id_or_name completely unaddressed and does not state default behavior for protocol.
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 (verifying routes by running ``display ip routing-table``) and the resource (routing table). This separates it from siblings like ensp_verify_ospf or ensp_verify_vlan, though it does not explicitly name 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?
There is no guidance on when to use this versus ensp_verify_ospf, ensp_send_command, or ensp_get_running_config. Usage is only implied by the fact that it runs a routing-table display.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ensp_verify_vlanC
执行 display vlan,可按 vlan_id 过滤。
| Name | Required | Description | Default |
|---|---|---|---|
| vlan_id | No | ||
| session_id_or_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 disclosure burden. It implies a read-only show command, but says nothing about auth/session requirements, whether the session must already be connected, what happens when the session is invalid, or any side effects. That is a thin disclosure for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the command and the optional filter come first. It is efficient, though arguably too sparse given the tool's two parameters and lack of annotations.
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 not required. However, with no annotations and a required, undocumented session parameter, the description leaves the agent without enough context about invocation requirements or failure behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for vlan_id (a filter for narrowing results), but says nothing about session_id_or_name, which is the required parameter and central to how the tool is invoked.
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 (executing `display vlan`) and the resource (VLAN table), with the filtering behavior stated. This distinguishes it from the verify_interfaces/verify_routes/verify_ospf siblings by resource, though it never explicitly contrasts 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?
There is no statement of when to use this tool versus the other ensp_verify_* siblings, nor any prerequisites (e.g., an established session). Usage must be inferred entirely from the tool name and its place in the family.
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.
31 tool updates
v0.2.2- First observed
ensp_apply_experiment - First observed
ensp_cleanup_idle_sessions - First observed
ensp_clear_output_buffer - First observed
ensp_close_all_sessions - First observed
ensp_connect_device - First observed
ensp_cross_validate_topology - First observed
ensp_diagnose_batch - First observed
ensp_diagnose_error - First observed
ensp_disconnect_device - First observed
ensp_enable_lldp - First observed
ensp_enter_system_view - First observed
ensp_gather_diagnostic_context - First observed
ensp_get_device_info - First observed
ensp_get_recent_output - First observed
ensp_get_running_config - First observed
ensp_health_check - First observed
ensp_list_sessions - First observed
ensp_load_topology - First observed
ensp_parse_topology - First observed
ensp_parse_topology_b64 - First observed
ensp_ping - First observed
ensp_save_config - First observed
ensp_scan_devices - First observed
ensp_send_command - First observed
ensp_send_commands - First observed
ensp_smart_config - First observed
ensp_verify_interfaces - First observed
ensp_verify_lldp_neighbors - First observed
ensp_verify_ospf - First observed
ensp_verify_routes - First observed
ensp_verify_vlan
TDQS
Scored across 31 tools
The send-command family (ensp_send_command vs ensp_send_commands vs ensp_smart_config vs ensp_apply_experiment) overlaps substantially, and the four diagnosis tools (diagnose_error, diagnose_batch, gather_diagnostic_context, health_check) require careful reading to distinguish. Descriptions do provide enough guidance (single vs batch vs auto-diagnose vs experiment-plan), but boundaries remain fuzzy.
Every tool uses a consistent ensp_ prefix followed by a clear snake_case verb_noun pattern (ensp_scan_devices, ensp_get_running_config, ensp_verify_routes). Variations like verify_* and diagnose_* are used predictably across the set.
At 31 tools the surface is heavy and exceeds the comfortable range, and several command-sending tools could plausibly be consolidated. The domain (session mgmt, command exec, verification, diagnosis, topology) is genuinely broad, so not all of it is bloat.
Coverage spans discovery, connection lifecycle, command execution, config save, multiple verification dimensions (interfaces/routes/OSPF/VLAN/LLDP/ping), diagnosis, and topology cross-validation. The main gap is that lifecycle management is send-command-driven with no explicit rollback/undo or interface-config-removal tool.
Maintenance
Related MCP Connectors
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Run 70+ AI models and 50+ tools on CNAPS Studio in natural language — Claude, n8n, or Zapier.
Design, save, and run outcome-aligned AI workflows and verifiers, with reliable image output.
Deploy, monitor, and manage your OpenClaw AI assistants via natural language.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables AI-powered network engineering by providing natural language control over GNS3 network simulations. Supports creating projects, building network topologies, managing devices, controlling simulations, and analyzing network traffic through conversational AI interactions.4225MIT
- AlicenseBqualityCmaintenanceGenerates eNSP network topologies, deploys Huawei VRP configurations, and provides verification plans for lab scenarios.121MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI clients to manage Huawei eNSP simulated network devices, execute CLI commands, apply configurations, and perform network diagnostics through natural language, with topology upload and visualization via a web UI.3-
- FlicenseNot gradedqualityCmaintenanceBridges AI assistants with EVE-NG network simulation labs, enabling autonomous management of labs, device configuration, and diagnostics through natural language.1-