Skip to main content
Glama
KiaTheRandomGuy

PasarGuard MCP

PasarGuard MCP

PasarGuard MCP 是一个本地 Model Context Protocol 服务器,用于通过其 REST API 管理一个或多个 PasarGuard 面板。它有意仅限于面板操作。它不安装服务器、不管理 Vultr、不 SSH 进入节点、不管理 Cloudflare/Fastly,也不更改提供商基础设施。

该服务器支持读取和写入。写入使用两步计划/应用工作流:MCP 读取当前对象,创建短期确认令牌,并且仅在用户确认后才应用保存的更改。更新计划保留未更改的字段,这一点很重要,因为 PasarGuard 核心和主机更新期望完整的有效对象。

安装

cd projects/pasarguard-mcp
python3 -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'

需要 Python 3.11 或更高版本。

Related MCP server: Proxmox MCP Server

配置面板

静态配置是可选的。MCP 还可以通过聊天驱动的工具调用加载凭据文件;请参阅下一节。

config/panels.example.json 复制到 Git 之外的文件,例如 ~/.config/pasarguard-mcp/panels.json,并在环境变量中设置密码:

export PASARGUARD_MCP_CONFIG="$HOME/.config/pasarguard-mcp/panels.json"
export PASARGUARD_EXAMPLE_PASSWORD='your-panel-password'

配置接受多个命名面板:

{
  "panels": {
    "main": {
      "base_url": "https://panel.example.com",
      "username": "admin",
      "password_env": "PASARGUARD_MAIN_PASSWORD",
      "verify_tls": true,
      "timeout": 30
    },
    "staging": {
      "base_url": "https://staging-panel.example.com",
      "username_env": "PASARGUARD_STAGING_USERNAME",
      "password_env": "PASARGUARD_STAGING_PASSWORD"
    }
  }
}

可以使用 token_env 配置现有的 bearer 令牌,而不是 username/password。不要将面板 URL、凭据、令牌、节点 API 密钥、证书或导出的面板对象提交到此仓库。

本地状态目录以模式 0700/0600 存储确认计划和更改前快照。需要时使用 PASARGUARD_MCP_STATE_DIR 覆盖它。

MCP 客户端配置

对于 stdio MCP 客户端,请使用已安装的可执行文件:

{
  "mcpServers": {
    "pasarguard": {
      "command": "/absolute/path/to/projects/pasarguard-mcp/.venv/bin/pasarguard-mcp",
      "env": {
        "PASARGUARD_MCP_CONFIG": "/absolute/path/to/panels.json",
        "PASARGUARD_MAIN_PASSWORD": "set-this-in-your-local-client-config"
      }
    }
  }
}

如果客户端提供秘密/环境机制,请优先使用它。MCP 服务器永远不会将密码或 bearer 令牌打印到 stdout。

基于聊天的凭据文件

您可以告诉 Codex 现有本地凭据文件的位置,而不是将其放入 MCP 设置中。请它使用 load_panel_credentials 工具,例如:

Use the PasarGuard credentials in
/Users/me/workspace/memory/30-clients/example/credentials.local.md for the
panel named example. Keep them session-only and test the connection.

该工具在本地读取文件并仅提取已识别的字段。支持的格式为 .env.md.markdown;常见键包括 PANEL_URLPASARGUARD_BASE_URLusernamepasswordtoken。密码永远不会由工具返回,并且默认仅保留在 MCP 进程中。

如果 Markdown 文件包含多个命名账户,请明确选择预期的凭据块。例如,包含 flowship_super_admin 块的文件应使用 credential_name=flowship_super_admin 加载。解析器会去除值周围的一对匹配的 Markdown 反引号或引号字符。这对于诸如 Password: \...`之类的条目很重要;将反引号作为密码的一部分发送会导致 PasarGuard 返回 HTTP 401。当存在多个完整的凭据块时,省略credential_name` 现在会安全失败,而不是将一个账户的用户名与另一个账户的密码或 URL 合并。

该工具仅在您明确希望将配置文件写入受保护的本地 JSON 配置时才接受 persist=true。默认值为 persist=false。使用绝对本地路径,并将凭据文件保留在 Git 仓库之外。

URL、凭据、过滤和输出规范化

  • 仪表板 URL 被规范化为 PasarGuard 站点根。例如,https://flowshipnet.com/dashboard/ 在附加 API 路径之前变为 https://flowshipnet.com

  • Markdown ######## 标题是可选择的凭据块,除了命名列表块之外。这支持诸如 ## PasarGuard Panel (production) 之类的部分直接包含 URL、用户名和密码字段的文件。

  • 与返回项字段对应的列表查询键也在本地强制执行精确匹配。当面板静默忽略诸如 inbound_tag 之类的过滤器时,这可以保护调用者。非项字段的分页/控制键仍仅由上游处理。

  • PasarGuard 的 /api/hosts 端点返回一个裸的顶级 JSON 列表,与包装的节点/核心/组/用户端点不同。MCP 将裸列表规范化为以资源为键的对象,例如 {"hosts": [...], "total": N}。否则,FastMCP 会为每个列表项发出一个文本内容块,这使得大型主机清单很容易被下游工具渲染器拆分或截断。规范化对象产生一个连贯的结构化块。

  • 应用响应是紧凑的收据。不返回完整的更新后核心对象,递归编辑涵盖读取结果中的 Reality privateKey/shortIds。验证应在应用后使用读取工具。

工具组

读取操作:

  • list_panelsload_panel_credentialstest_panel

  • get_panel_inventory

  • list_panel_resourceget_panel_resource

  • get_node_realtime_statsget_panel_system_status

写入计划操作:

  • 节点:创建、更新、删除、重新连接、同步、重置使用量、更新核心

  • 核心:创建和更新,更新时可选择显式重启节点

  • 主机:创建和更新

  • 组:创建和更新

  • 用户:按数字 ID 创建和更新

  • 所有支持的资源都可以计划删除

写入执行和恢复:

  • apply_change 应用一个仍然有效的确认令牌。

  • inspect_change 显示安全摘要,不包含存储的负载。

  • plan_rollback 从已应用更新的更改前快照创建新的确认计划。

正常顺序是:

  1. 检查面板或资源。

  2. 调用相关的 plan_* 工具。

  3. 显示返回的摘要并询问用户确认。

  4. 使用返回的令牌调用 apply_change

  5. 验证生成的资源和节点状态。

API 兼容性

实现遵循当前公共 PasarGuard 面板 API 布局,包括 POST /api/admin/token/api/nodes/api/cores/api/hosts/api/groups/api/users、节点操作端点以及 /api/user/by-id/{user_id} 下的基于 ID 的用户路由。面板 API 可能会演变,因此端点更改应在 src/pasarguard_mcp/server.py 中更新,并在发布前由测试覆盖。

开发

.venv/bin/python -m pytest
.venv/bin/python -m compileall -q src tests
.venv/bin/ruff check src tests

测试使用内存 HTTP 传输,从不联系真实面板。

受限的直接 API 回退

当托管的 MCP 审批网关不可用时,仓库包含 scripts/apply_reality_expansion.py。它使用相同的 PasarGuardClient,从 Lexo、Flowship 和 VSL247 凭据文件加载会话凭据,检查每个请求的端口/标签是否存在冲突,使用 restart_nodes=false 保存每个核心一次,以便其入站标签存在,更新组,然后使用 restart_nodes=true 保存每个核心一次。没有 --apply 时,它只读取和验证实时状态;--verify-only 读回当前核心/组/节点状态;--restart-cores panel:id,... 在先前请求超时时执行有针对性的启用重启的保存。它从不创建主机。

托管的连接器和本地提升执行均被外部 HTTP 403 审批网关响应阻止,时间为 2026-08-18;在该网关可用之前,不要将计划的端口报告为实时。

对于跨相同四个面板核心的有针对性的 Microsoft REALITY 目标/SNI 修复,请使用 scripts/repair_reality_sni.py。它验证确切的入站标签、端口、传输和旧/新 SNI,然后仅更改 targetserverNames,然后为每个目标发送一个完整的核心 PUT,并带有 restart_nodes=true,并验证读回。不带 --apply 运行以进行试运行,--verify-only 用于当前状态,或 --apply 用于授权的修复。

安全边界

这是一个具有写入权限的操作工具。在本地通过 stdio 运行,尽可能使用最小权限的 PasarGuard 管理员,保持 TLS 验证启用,并在应用每个计划之前进行审查。凭据文件加载仅提取已知字段,不返回密码。MCP 故意不提供通用的任意 URL 请求工具。

Available Tools

22 tools
apply_changeA

Apply one previously planned change after explicit user confirmation.

ParametersJSON Schema
NameRequiredDescriptionDefault
change_idYes
confirmation_tokenYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations present, the description carries the full burden of revealing behavioral traits. It states that it applies a change and requires confirmation, but does not disclose whether the operation is destructive, reversible, or requires special permissions. This leaves significant gaps for a mutation tool.

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

Conciseness5/5

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

The description is a single sentence that conveys the essential purpose and precondition without redundancy. It is appropriately sized for a straightforward tool.

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

Completeness2/5

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

Despite having an output schema and a simple parameter set, the description lacks critical context about side effects, rollback options, and the overall workflow. For a mutating action that follows planning and confirmation, one expects more guidance on how to use it safely and what happens after invocation.

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

Parameters2/5

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 indirectly hints at the roles of change_id (the previously planned change) and confirmation_token (explicit user confirmation), but does not explain their format or relationship in a direct way. This provides minimal added meaning beyond the schema field names.

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

Purpose5/5

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

The description clearly states the action (Apply), the target (one previously planned change), and the precondition (explicit user confirmation). It distinguishes itself from sibling 'plan_*' tools by being the execution step, and from 'inspect_change' by being the apply step.

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

Usage Guidelines4/5

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

The description provides explicit context for when to use the tool: after a change has been planned and explicitly confirmed by the user. It does not name alternatives or exclusions, but the sibling list makes the workflow clear, and the precondition narrows the usage appropriately.

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

get_node_realtime_statsC

Get current realtime statistics for a PasarGuard node.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
node_idYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. The verb 'Get' implies a read-only operation, but the description does not disclose any behavioral details such as whether the statistics are costly to retrieve, require special permissions, or have any side effects. This is minimal disclosure.

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

Conciseness4/5

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

The description is a single, concise sentence that gets straight to the point with no unnecessary words. It is front-loaded and clear, although it could benefit from additional detail without sacrificing conciseness.

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

Completeness1/5

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

With two parameters, no output schema, and no annotations, the description does not explain what the returned 'realtime statistics' are, what the parameters mean, or the context in which this tool should be used. It leaves almost everything to be inferred, making it insufficient for reliable tool selection and invocation.

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

Parameters1/5

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

The input schema has two required parameters (panel, node_id) with 0% description coverage, and the tool description does not mention either parameter. The agent must guess what 'panel' and 'node_id' mean or how they relate to the statistics request. No compensation for the missing schema descriptions.

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

Purpose4/5

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

The description states a clear verb ('Get') and a specific resource ('current realtime statistics for a PasarGuard node'). It is easy to understand what the tool does, but it does not explicitly differentiate from sibling tools like get_panel_system_status or plan_node_action, though the node-specific focus helps distinguish.

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

Usage Guidelines2/5

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

There is no guidance about when to use this tool versus alternatives. The description only states the function without context, prerequisites, or exclusions, leaving the agent to infer when it should be selected.

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

get_panel_inventoryB

Fetch a compact panel inventory: nodes, cores, hosts, groups, users, and system status.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It clearly states it 'fetch[es]' a compact inventory, implying a read-only operation with no side effects. However, it does not mention error conditions, authorization needs, or behavior when the panel does not exist. For a simple read tool, this is acceptable 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.

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the verb and object, lists the contents clearly, and contains no filler or redundant details.

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

Completeness3/5

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

An output schema exists, so return values are already covered. The description gives a clear scope of what the inventory includes, but lacks guidance on the input parameter and when to choose this tool over its siblings. For a single-parameter read tool, this is adequate but not fully complete.

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

Parameters2/5

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

The schema has 0% description coverage for the single 'panel' parameter, and the description does not explain what 'panel' refers to. Despite the tool name implying it is a panel identifier, the description adds no explicit meaning beyond the schema.

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

Purpose4/5

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

The description uses the verb 'Fetch' with a specific resource ('panel inventory') and enumerates its contents (nodes, cores, hosts, groups, users, system status). This clearly indicates the tool's scope and indirectly distinguishes it from siblings like get_panel_system_status or get_panel_resource, though it does not name alternatives.

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

Usage Guidelines3/5

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

No explicit when-to-use or alternative guidance is provided. The word 'compact' implies use for a broad overview, but without naming sibling tools or exclusions, the usage context is only weakly implied.

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

get_panel_resourceC

Get a node, core, host, group, or user by numeric ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
resourceYes
resource_idYes
include_sensitiveNo

TDQS

C2.8/5.0
Behavior2/5

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 only says 'Get', implying a read-only operation, but does not disclose behavior around include_sensitive (whether sensitive fields are returned by default), error handling, or return structure. No additional behavioral traits are revealed.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It quickly conveys the core operation without wasted words, meeting conciseness standards.

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

Completeness2/5

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

Given 4 parameters, no output schema, and no annotations, the description is insufficiently complete. It omits return values, the meaning of include_sensitive, how panel affects the lookup, and any relative usage context among sibling tools. The agent has schema names but lacks deep guidance for correct invocation.

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

Parameters2/5

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

With 0% schema description coverage, the description should compensate. It adds minimal meaning by clarifying resource_id is numeric and listing valid resource types, but these are already evident from the schema. It does not explain 'panel' or 'include_sensitive', leaving critical parameters under-specified.

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

Purpose4/5

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

The description uses a specific verb 'Get' and identifies the resource types (node, core, host, group, user) and access method (numeric ID), making the tool's purpose clear. It does not explicitly differentiate from sibling tools like list_panel_resource, but the singular 'by numeric ID' suggests single-resource retrieval.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as list_panel_resource or get_panel_inventory. It does not mention prerequisites, scenarios, or the purpose of include_sensitive, leaving the agent without context on when this tool is appropriate.

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

get_panel_system_statusC

Get panel system statistics and worker health.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations available, the description carries the full burden of behavioral disclosure. It only states a 'get' operation without mentioning side effects, permissions, data scope, or any specific constraints. The lack of detail about what 'worker health' entails or any operational requirements makes behavior opaque.

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

Conciseness5/5

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

The description is a single, focused sentence that gets straight to the point. It is front-loaded with the action and target, contains no extraneous wording, and is easy to parse.

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

Completeness2/5

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

While the tool has an output schema that documents return values, the description lacks parameter semantics and usage guidelines. Given the low schema description coverage and absence of annotations, the description is not sufficient to fully understand the tool's inputs and context, leaving notable gaps for an agent.

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

Parameters1/5

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

The input schema has one required parameter 'panel' with zero description coverage. The tool description does not explain the meaning or expected format of 'panel', nor does it compensate for the absence of schema-level descriptions. This leaves the agent without sufficient information to populate the parameter correctly.

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

Purpose4/5

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

The description clearly identifies the action ('Get') and resource ('panel system statistics and worker health'), making the tool's purpose understandable. It is distinct from siblings like get_panel_inventory or get_node_realtime_stats, though 'statistics' is somewhat vague and doesn't explicitly differentiate the exact scope.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention any prerequisites, exclusions, or alternative tools for similar scenarios, leaving the agent without contextual decision support.

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

inspect_changeA

Inspect a local plan summary without exposing its stored credentials or full payload.

ParametersJSON Schema
NameRequiredDescriptionDefault
change_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden, and it discloses a key behavioral trait: it redacts credentials and omits the full payload. This is useful context beyond what annotations would provide, though it does not mention other details like read-only status or permissions.

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

Conciseness5/5

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

The description is a single focused sentence that front-loads the primary action and includes an important safety qualifier. Every word adds value with no redundancy.

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

Completeness4/5

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

For a simple inspection tool with one parameter and an output schema present, the description provides enough context to understand its purpose and limiting behavior. It could be improved by explicitly stating the input parameter's meaning, but it remains adequate for the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 0% and there is only one parameter, change_id. The description does not explain this parameter, but the name is self-explanatory in context. However, it adds no meaning beyond the schema, so a baseline score is appropriate.

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

Purpose5/5

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

The description states a specific verb ('inspect') and resource ('local plan summary'), and distinguishes this tool from siblings by highlighting that it does not expose stored credentials or the full payload. This clearly identifies the tool's purpose and differentiates it from other plan-related operations.

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

Usage Guidelines4/5

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

The description implies the tool is used to review a plan change safely, but does not explicitly state when to use it versus alternatives or list exclusions. The context is clear enough for an agent to infer appropriate usage, especially given the sibling set includes plan creation and application tools.

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

list_panel_resourceC

List one PasarGuard panel resource. Query supports the panel's normal filters/pagination.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
queryNo
resourceYes

TDQS

C2.1/5.0
Behavior2/5

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

With no annotations and no output schema, the description must disclose behavioral traits. It only mentions query filters/pagination, but does not state whether the operation is read-only, what the return shape looks like, or whether pagination has limits. The ambiguous 'List one' further obscures expected behavior.

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

Conciseness3/5

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

The description is short (two sentences), but the first sentence essentially restates the tool name and the second is vague. It's concise in word count but lacks substance, so it does not earn full credit for efficient communication.

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

Completeness2/5

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

The tool has three parameters, no output schema, and no annotations, making the description critical for completeness. It fails to explain the query structure, the meaning of each resource type, return values, or how this differs from the similar get_panel_resource sibling. The description is inadequate for an agent to use the tool confidently.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should compensate by explaining parameters. It only hints that 'query' supports filters/pagination; 'panel' and 'resource' are left completely unexplained beyond their types. The resource enum helps marginally, but overall the description adds minimal value to the schema.

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

Purpose2/5

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

The description says 'List one PasarGuard panel resource', but 'one' is ambiguous—it could mean a single resource instance or a single resource type. The mention of filters/pagination suggests it actually lists multiple items of a given resource type, contradicting 'one'. It also fails to differentiate from the sibling get_panel_resource.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_panel_resource or list_panels. The only hint is that the query supports 'normal filters/pagination', but this is not actionable and no exclusions or alternative recommendations are given.

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

list_panelsA

List configured PasarGuard panel profiles without exposing credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It adds one useful insight: 'without exposing credentials', which indicates a security-focused behavior. However, it does not state whether the operation is read-only (though 'list' implies it) or mention any other side effects or access requirements. This provides some value but leaves gaps.

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

Conciseness5/5

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

The description is a single sentence that is direct and front-loaded with the action and resource. Every word contributes meaning, including the security qualifier. This is an example of concise, effective structure.

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

Completeness5/5

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

For a tool with zero parameters and an existing output schema, the description is complete. It fully specifies the function (listing configured panel profiles) and the key constraint (no credential exposure). No additional context is necessary given the tool's simplicity.

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

Parameters4/5

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

The input schema has zero parameters and is fully covered by the schema itself (100% coverage). The description adds no parameter information because none are needed. With zero parameters, the baseline of 4 is appropriate, as there is nothing for the description to clarify.

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

Purpose5/5

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

The description uses the specific verb 'list' and identifies the resource as 'configured PasarGuard panel profiles', making the purpose unambiguous. It also distinguishes this from sibling tools like get_panel_inventory or test_panel by focusing on profile listing without exposing credentials.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. While the name and description imply a basic listing operation, the description does not mention scenarios, prerequisites, or exclusions, leaving the agent without explicit direction on selecting this tool over its siblings.

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

plan_create_coreC

Plan creating a core configuration using the panel's CoreCreate body.

ParametersJSON Schema
NameRequiredDescriptionDefault
coreYes
panelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It says 'Plan creating', which hints at a non-mutating planning activity, but does not explicitly state whether the tool is read-only, what side effects it might have, or whether it validates anything. The agent cannot determine if this action is safe or what the nature of the result is beyond 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.

Conciseness5/5

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

The description is a single concise sentence with no filler. It front-loads the action and object, and every word adds some meaning. No redundant or irrelevant content is present.

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

Completeness2/5

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

Given the nested object parameter and the fact that an output schema exists, the description still lacks critical context. It does not explain how to construct the 'core' object, what the 'panel' string refers to, or what the planning process entails (e.g., whether it returns a diff or a preview). The description is too sparse for a tool involving a flexible nested object, making it incomplete.

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

Parameters3/5

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

The schema provides no descriptions for its two parameters. The description adds a hint that 'core' should be a 'CoreCreate body' from the panel, which gives some semantic direction. However, it does not explain what a 'panel' is or the expected structure of the 'core' object, leaving significant ambiguity for the open-ended additionalProperties object.

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

Purpose4/5

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

The description states the tool plans creation of a core configuration, using a specific 'CoreCreate body'. This is a clear verb+resource combination that distinguishes it from siblings like plan_create_node or plan_create_host by specifying 'core' and its body type. However, it doesn't elaborate on what 'plan' entails, keeping it a step below the highest clarity.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description does not mention its relationship to plan_update_core, apply_change, or inspect_change, nor any prerequisites or exclusions. Usage context must be inferred entirely from the tool name and sibling list.

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

plan_create_groupC

Plan creating a group using the panel's GroupCreate body.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupYes
panelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates this is a planning (non-executing) operation, which is useful, but it doesn't explain what planning entails (validation, dry-run, output format, or side effects). The use of 'panel's GroupCreate body' suggests a specific request format but adds little beyond the schema.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no unnecessary words. It is appropriately concise for a simple tool, but could be slightly more informative without becoming verbose.

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

Completeness2/5

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

The tool involves nested objects and an output schema, yet the description explains nothing about the expected group structure, what the plan output contains, or any related workflow. The minimal description is likely insufficient for an agent to correctly construct the necessary parameters or interpret the result.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must compensate. It hints that 'group' is the GroupCreate body and 'panel' identifies the panel, but it doesn't explain the expected structure of the group object or how the panel parameter is used. The additionalProperties in the schema leave the group object completely open, and the description offers no guidance.

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

Purpose4/5

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

The description clearly states the action (planning to create a group), the specific resource (group using the panel's GroupCreate body), and distinguishes it from sibling tools like plan_update_group or plan_create_node. The phrase 'using the panel's GroupCreate body' adds specificity. However, 'Plan creating' is slightly awkward and the exact scope of 'plan' could be clearer.

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

Usage Guidelines2/5

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

The description gives no explicit guidance on when to use this tool versus alternatives like plan_create_node or apply_change. It does not mention prerequisites, such as whether a panel must exist or how to obtain the GroupCreate body. No use-case context is provided.

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

plan_create_hostC

Plan creating a subscription host using the panel's CreateHost body.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes
panelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only hints that the tool 'plans' rather than executes, but does not explain what planning entails (e.g., whether it validates, generates an output plan, or has side effects). No permissions, rate limits, or additional behavioral context is provided.

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

Conciseness4/5

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

The description is a single, concise sentence with no fluff. It is front-loaded with the action, but it is so brief that it omits important context. Still, every word serves a purpose, so it earns a slightly above-average score.

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

Completeness2/5

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

Despite having an output schema, the description is incomplete for a tool with two required parameters, nested objects, and no annotations. It fails to explain usage context, parameter semantics, or the behavior of planning, leaving significant gaps for an agent to make a correct invocation.

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

Parameters2/5

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

The input schema has 0% description coverage and two required parameters. The description adds only a slight hint that 'host' expects a 'CreateHost body' and mentions 'panel' but does not clarify the structure or meaning of either parameter. This is insufficient given the lack of schema descriptions.

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

Purpose4/5

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

The description states a specific action ('Plan creating a subscription host') and identifies the resource ('subscription host') and method ('using the panel's CreateHost body'). This distinguishes it from siblings like plan_create_core or plan_update_host, though 'plan' itself is not explicitly defined as a non-executing operation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like plan_create_node or apply_change. The description does not mention use cases, prerequisites, or exclusions, leaving the agent without context for selecting this tool.

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

plan_create_nodeB

Plan adding a node. Apply only after asking the user to confirm the returned token.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeYes
panelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses that a token is returned and that user confirmation is required before applying, implying this is a planning step that doesn't immediately apply changes. However, it doesn't explicitly state whether the operation is read-only, what side effects it has, or the nature of the token.

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

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences. The primary action is front-loaded ('Plan adding a node'), and the additional instruction is neatly appended. Every word earns its place, with no redundancy or fluff.

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

Completeness2/5

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

Given the tool's complexity (nested object, multiple siblings), the description is incomplete. It doesn't explain the overall workflow, what the token represents, what subsequent steps (e.g., apply_change) are needed, or what the plan output contains. While an output schema exists, it's not shown here, and the description relies on prior knowledge.

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

Parameters2/5

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

Schema coverage is 0% and the description does not explain the 'panel' or 'node' parameters. The node parameter is an open object with additionalProperties, so its structure is ambiguous. The description adds no value to the parameter semantics, making it hard for an agent to construct correct arguments.

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

Purpose4/5

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

The description states 'Plan adding a node,' which clearly identifies the action (plan) and the resource (node). It distinguishes from sibling tools like plan_update_node or plan_create_core by explicitly targeting node creation. However, it doesn't elaborate on what 'plan' entails, which is somewhat vague.

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

Usage Guidelines4/5

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

The description provides a specific usage instruction: 'Apply only after asking the user to confirm the returned token.' This gives a clear condition for when the tool should be invoked (or when the plan should be applied). It doesn't mention alternatives or exclusions, but the context is useful for sequencing.

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

plan_create_userC

Plan creating a PasarGuard user. The body follows the panel's UserCreate model.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYes
panelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'Plan creating,' which hints at a planning rather than execution role, but it does not explain what 'plan' means, whether it mutates state, requires authentication, or returns a preview. The description is too sparse to convey the tool's behavioral contract.

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

Conciseness4/5

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

The description is one efficient sentence with no wasted words. It front-loads the action and resource and adds a helpful model reference. It is concise but somewhat under-specified, warranting a 4 rather than a 5.

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

Completeness2/5

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

Given the absence of annotations and sparse description, the tool is not fully contextualized. The output schema exists, which reduces the need to explain return values, but an agent still lacks guidance on when to use planning versus execution, what preconditions exist, and how the 'panel' parameter is resolved. The description is too brief for a complete understanding.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must compensate. It adds useful context that the 'user' parameter follows the panel's UserCreate model, which helps an agent understand the expected object shape. However, the 'panel' parameter is only implicitly referenced as 'the panel's' and not explicitly described, leaving part of the parameter semantics unaddressed.

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

Purpose4/5

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

The description states a specific verb and resource: 'Plan creating a PasarGuard user.' The reference to the panel's UserCreate model adds specificity. However, it does not explicitly distinguish itself from the sibling 'plan_update_user' tool, though 'creating' implies a create operation.

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

Usage Guidelines2/5

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

No guidance is provided for when to use this tool versus alternatives like plan_update_user, apply_change, or plan_delete_resource. The description only says what the tool does, not when it should be selected, making it undirected for an agent.

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

plan_delete_resourceB

Plan deleting a panel resource. This is intentionally separate from update tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
resourceYes
resource_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist, so the description carries the full disclosure burden. It only says 'Plan deleting' without clarifying whether this tool actually executes deletion, generates a dry-run plan, requires approval, or has side effects. The 'plan' wording hints at non-destructive planning, but this is not explicit, and no other behavioral traits are disclosed.

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

Conciseness5/5

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

The description is only two short sentences, front-loads the core purpose, and avoids filler. The second sentence adds distinctiveness without unnecessary detail.

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

Completeness2/5

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

Given the tool has 3 required parameters, no annotations, and no schema descriptions, the description is too sparse to fully support safe invocation. The output schema may help with return structure, but the description does not cover operational semantics, prerequisites, or the nature of the 'plan' action, leaving significant gaps.

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

Parameters1/5

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

Schema description coverage is 0%, and the description provides no parameter meaning beyond the names in the schema. The enum for 'resource' is self-explanatory, but the description does not explain how 'panel', 'resource', and 'resource_id' relate or what values are expected. This is a critical gap since the description must compensate for the missing schema descriptions.

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

Purpose5/5

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

The description uses a specific verb ('Plan deleting') and a specific resource ('panel resource'), clearly distinguishing it from the sibling update and create tools. The sentence 'This is intentionally separate from update tools' explicitly differentiates it from plan_update_* and plan_create_* siblings.

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

Usage Guidelines4/5

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

The description clearly states it is for planning deletions and intentionally distinct from update tools, which tells the agent not to use it for updates. However, it does not explicitly say when to choose this over apply_change or other related tools, though the separation from update tools gives a useful exclusion.

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

plan_node_actionC

Plan a node action that may reconnect, sync, reset usage, or update its core.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
actionYes
node_idYes
flush_usersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for disclosing behavior. It does not explain what 'plan' entails (e.g., whether it creates an approval request or directly executes), side effects, or prerequisites. The term 'Plan' is ambiguous and could misleadingly suggest execution rather than a preparatory step.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words, making it concise and easy to parse. However, the brevity comes at the cost of omitting critical details, so it is efficient but not fully effective.

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

Completeness2/5

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

For a tool with four parameters, no annotations, and an output schema, this description is severely under-specified. It does not explain the planning workflow, the effect of flush_users, or how this relates to apply_change. The output schema does not compensate for the missing operational context.

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

Parameters2/5

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 only restates the enum values of 'action' without adding semantics for 'panel', 'node_id', or the non-obvious 'flush_users' boolean (default true). The description adds no value beyond the schema's property names and enum list.

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

Purpose4/5

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

The description clearly identifies the tool as planning a node action, listing specific action types (reconnect, sync, reset usage, update core) that align with the schema enum. This distinguishes it from sibling tools like plan_create_node or plan_update_node by focusing on node action execution rather than node configuration or creation.

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

Usage Guidelines3/5

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

The action list gives implicit guidance on when to use this tool (when needing to reconnect, sync, reset usage, or update core). However, it lacks explicit exclusions or alternatives, such as noting that plan_update_node is for configuration changes, leaving the agent to infer the intended use case from sibling names.

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

plan_rollbackB

Plan restoring a previously applied update from its local before-snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
change_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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 does not disclose whether this tool mutates state, what the planning step actually does, prerequisites (e.g., existence of a before-snapshot), or side effects. The 'plan' prefix suggests non-destructive behavior, but this is not explicitly stated.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded and communicates the core purpose without filler.

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

Completeness2/5

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

Given no annotations, one parameter, and an output schema, the description is incomplete. It does not mention prerequisites (e.g., before-snapshot availability), relationship to sibling tools, or clarify parameter semantics. The output schema may cover return values, but the description lacks necessary context for selection and invocation.

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

Parameters2/5

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

The schema has 0% description coverage for change_id, and the description does not directly explain that change_id is the identifier of the previously applied update. It can be inferred from context, but the description does not compensate for the missing parameter documentation.

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

Purpose4/5

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

The description clearly states the action (plan restoring) and the resource (previously applied update from local before-snapshot). It does not explicitly differentiate from sibling tools like apply_change or other plan_* tools, but the rollback concept is distinct enough.

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

Usage Guidelines3/5

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

The description implies usage context (when you want to plan a rollback of an update) but provides no explicit guidance on when to use this tool versus alternative plan tools or apply_change, and no exclusions are mentioned.

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

plan_update_coreC

Plan a core update. The full current core is merged with patch and restart_nodes is explicit.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
patchYes
core_idYes
restart_nodesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It reveals that the full current core is merged with the patch and that restart_nodes is explicit, but does not state whether this is a read-only planning operation or has side effects, permissions, or concurrency implications. This is a significant gap for a tool with no annotation safety hints.

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

Conciseness4/5

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

The description is only two sentences and stays on topic. However, the second sentence is somewhat awkward ('restart_nodes is explicit') and could be clearer. Overall it is appropriately sized for the information it conveys.

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

Completeness2/5

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

The tool has four parameters and an output schema, but the description is too sparse to be considered complete. It lacks context about the planning workflow, when to use it, and what the expected result is (beyond what an output schema might already provide). Given the tool's complexity and the presence of many sibling plan tools, more context is needed.

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

Parameters2/5

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

The schema has 0% description coverage, so the description must compensate. It mentions 'patch' and 'restart_nodes' but does not explain their roles beyond their names. 'panel' and 'core_id' are entirely unaddressed. The statement 'restart_nodes is explicit' is vague and does not clarify the parameter's meaning or default behavior.

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

Purpose4/5

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

The description identifies the tool as 'Plan a core update', which clearly differentiates it from sibling tools like plan_update_node or plan_rollback. The second sentence adds specific detail about the merge behavior, further clarifying the action. However, 'core' is not defined and the overall intent of 'plan' could be more explicit.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternative plan tools. It does not mention prerequisites, exclusions, or relationships to apply_change or other update tools. The only implicit clue is the name, which is not enough.

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

plan_update_groupC

Plan a partial group update.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
patchYes
group_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It doesn't explicitly state that this tool is non-destructive (only plans, doesn't apply), nor what 'partial' means in terms of side effects or idempotency. The minimal phrasing leaves significant behavioral ambiguity.

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

Conciseness3/5

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

The description is a single, front-loaded sentence with no filler, but it is so terse that it borders on under-specification. It is appropriately sized for a one-liner but lacks the informational richness expected for a tool with three parameters.

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

Completeness2/5

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

Given the presence of a nested, open-ended patch parameter and a suite of sibling tools, this one-sentence description is insufficient. It doesn't explain the output format (despite an output schema, the payload semantics are unclear) or what constitutes a 'partial' update, leaving a substantial context gap.

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

Parameters1/5

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

Schema description coverage is 0%, so the description was expected to compensate, but it provides no information about the required parameters (panel, group_id, patch). It doesn't clarify how 'patch' expresses a partial update or what format is expected, leaving the agent without essential semantic guidance.

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

Purpose4/5

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

The description 'Plan a partial group update' clearly indicates a planning action for a group resource, with 'partial' distinguishing it from a full update. It identifies the specific resource (group) and the action (plan), which distinguishes it from sibling tools like plan_create_group or plan_update_user.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as plan_update_user or plan_create_group. It doesn't mention any prerequisites, exclusions, or contexts beyond the name itself, offering no actionable usage direction.

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

plan_update_hostA

Plan a partial host update while preserving required fields from the current host.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
patchYes
host_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses a key behavioral trait: preserving required fields from the current host, implying a merge-based, non-destructive update. However, it does not explicitly state that this is a planning-only operation with no side effects, nor does it mention any preconditions like read permissions.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the verb and resource. It is concise with no redundant information, every word earning its place.

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

Completeness3/5

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

The tool has a nested object parameter and an output schema, so return values are covered. However, the description does not explain what a 'plan' entails (e.g., dry-run, no changes applied) or how it relates to apply_change. More context around the purpose of planning and the meaning of 'panel' would improve completeness.

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

Parameters2/5

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

The schema has 3 required parameters and 0% description coverage. The phrase 'partial host update' hints that the 'patch' parameter contains the fields to modify, but the description does not explain 'panel' or 'host_id', nor does it clarify the structure or constraints of the nested patch object. The description does not compensate for the sparse schema.

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

Purpose5/5

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

The description uses the specific verb 'Plan' and clearly identifies the resource as a 'partial host update', distinguishing it from sibling tools like plan_create_host (creation) and plan_update_node (different resource). The phrase 'while preserving required fields from the current host' adds valuable scope.

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

Usage Guidelines3/5

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

The description does not explicitly reference alternatives or exclusions. The qualifier 'partial' implies it is intended for incremental updates rather than full replacement, but there is no explicit 'use this when...' or 'avoid when...' guidance.

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

plan_update_nodeA

Plan a partial node update; the MCP fetches and preserves the complete current object.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
patchYes
node_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the disclosure burden. It reveals the key behavior that the MCP fetches and preserves the complete current object, indicating non-destructive planning and partial patch semantics. It does not cover permissions or side effects, but the most important operational detail is stated.

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

Conciseness5/5

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

The description is a single concise sentence that front-loads the primary purpose and adds a meaningful behavioral detail. No redundant information or filler words, making it easy to parse quickly.

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

Completeness3/5

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

While the output schema exists (so return values need not be explained), the description omits parameter-level details and usage guidance. For a tool with three required parameters and zero schema description coverage, more context would be needed to ensure correct invocation, especially given the nested 'patch' object.

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

Parameters2/5

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

The input schema has 0% description coverage, and the description does not explain the meaning of 'panel' or 'node_id', nor the format of 'patch' beyond the partial-update hint. This leaves agents to infer parameter purposes solely from names, which is insufficient for reliable invocation.

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

Purpose5/5

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

The description uses a specific verb ('Plan') and resource ('node update'), clarifying it is a planning step for node modifications. The qualifier 'partial' distinguishes it from full updates and aligns with the fetch-and-preserve behavior, setting it apart from sibling tools like plan_create_node and plan_delete_resource.

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

Usage Guidelines3/5

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

The description implies use for partial node updates but does not explicitly state when to use it versus alternatives like plan_update_core or plan_update_host. No exclusions or alternative tool references are provided, leaving usage context implicit.

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

plan_update_userC

Plan a user update through the current ID-based PasarGuard route.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes
patchYes
user_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden, but it only says 'Plan' without explaining what planning means in this context. It doesn't disclose whether this is a dry-run, whether any data is mutated, what the output schema contains, or what the 'plan' is used for. This leaves significant behavioral ambiguity.

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

Conciseness3/5

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

The description is a single sentence with no wasted words, which is concise. However, it is under-specified; brevity is achieved at the cost of necessary information. It front-loads the purpose but omits critical usage and parameter details, making it less useful despite its compactness.

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

Completeness2/5

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

For a tool with three required parameters (including an open-ended patch object) and no annotations, the description is markedly incomplete. It doesn't explain the role of 'panel', the structure of 'patch', or the significance of 'plan' in the broader PasarGuard workflow. The presence of an output schema doesn't excuse the lack of context, as the description doesn't even mention it.

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

Parameters2/5

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

The input schema has 0% description coverage, and the description adds almost no parameter meaning. The only hint is 'ID-based' which weakly suggests user_id serves as the identifier. The 'patch' object is completely unspecified—its properties, allowed keys, and format are all unclear. The tool fails to compensate for the schema's lack of descriptions.

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

Purpose4/5

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

The description clearly states the action ('plan') and the target resource ('user update'), which distinguishes it from sibling tools like plan_create_user and plan_delete_resource. However, the phrase 'current ID-based PasarGuard route' is ambiguous and doesn't fully explain what 'plan' entails. Still, the core purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention the plan/apply workflow apparently shared with siblings like apply_change, nor does it clarify that this tool only plans an update and doesn't execute it. There are no explicit exclusions or alternative recommendations.

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

test_panelC

Authenticate to a panel and return the current admin identity.

ParametersJSON Schema
NameRequiredDescriptionDefault
panelYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of disclosing behavioral traits. It says 'Authenticate' but does not clarify whether this is a read-only check, a state-changing login, or what permissions are required. It also fails to mention potential side effects or failure modes, leaving the tool's safety profile ambiguous.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no redundancy. It efficiently captures the core purpose, but it is terse to the point of under-specification. While concise, it sacrifices crucial details that would make it more useful.

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

Completeness2/5

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

Given the tool's one required parameter, lack of annotations, and the existence of an output schema, the description is incomplete. It provides only the core purpose and return value but omits usage context, parameter meaning, and behavioral consequences. The sibling tools suggest a broader workflow, but the description offers no integration guidance.

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

Parameters1/5

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

The only parameter, 'panel', has no schema description and the description does not explain what a panel is, how it should be specified, or what valid values exist. With 0% schema coverage, the description needed to compensate but instead adds no semantic value beyond the parameter name.

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

Purpose5/5

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

The description clearly states the action ('Authenticate') and the resource ('panel'), and specifies the outcome ('return the current admin identity'). It distinguishes itself from sibling tools that focus on planning, applying, or listing, making its purpose unambiguous.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, typical usage scenarios, or when not to use it. The sibling context suggests it might be a pre-check before apply operations, but the description gives no such hint.

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

TDQS

B3/5.0
Disambiguation4/5

Most tools target distinct resource-action pairs (e.g., plan_create_node vs. plan_update_core), and read tools are clearly separated from planning tools. Some ambiguity exists between plan_node_action and plan_update_core since plan_node_action can also update a core, and plan_delete_resource is generic, but descriptions mitigate this.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern (e.g., plan_create_node, get_panel_inventory, apply_change). Minor inconsistencies include 'list_panel_resource' (singular generic) and 'plan_rollback' not matching the plan_create/update pattern, but overall the convention is predictable.

Tool Count3/5

With 22 tools, the server is on the heavier side, which can be overwhelming but is justified by the breadth of PasarGuard management. The count is within the 'heavy' range (16-25) rather than extreme, so it earns a middle score.

Completeness4/5

The tool surface covers create, read, update, delete, planning, applying, rollback, and monitoring for core PasarGuard resources. Minor gaps exist, such as no explicit tool to list planned changes or cancel a plan, but these are workarounds via inspect_change and apply_change.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Proxmox VE and Proxmox Datacenter Manager, covering every API endpoint via six consolidated tools for list, describe, and call operations with a read-only safety gate.
    6
    31
    1
    AGPL 3.0
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for safely inspecting and operating a local Caddy admin API. Provides read-only tools and dry-run mutations for config management.
    7
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Local MCP server for inspecting and managing an allowlisted Discord server via Discord's REST API, with safety modes, idempotent JSON blueprints, and destructive-operation safeguards.
    27
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/KiaTheRandomGuy/PasarGuard-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server