Skip to main content
Glama
KiaTheRandomGuy

PasarGuard MCP

PasarGuard MCP

PasarGuard MCP — это локальный сервер Model Context Protocol для управления одной или несколькими панелями PasarGuard через их REST API. Он намеренно ограничен операциями с панелями. Он не устанавливает серверы, не управляет Vultr, не подключается по SSH к узлам, не управляет Cloudflare/Fastly и не изменяет инфраструктуру провайдера.

Сервер поддерживает как чтение, так и запись. Записи используют двухэтапный рабочий процесс plan/apply: 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"
    }
  }
}

Существующий bearer-токен можно настроить с помощью token_env вместо 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_URL, PASARGUARD_BASE_URL, username, password и token. Пароль никогда не возвращается инструментом и по умолчанию хранится только в процессе MCP.

Если файл Markdown содержит несколько именованных учетных записей, явно выберите нужный блок учетных данных. Например, файл с блоком flowship_super_admin следует загружать с credential_name=flowship_super_admin. Парсер удаляет одну подходящую пару обратных кавычек Markdown или символов кавычек вокруг значений. Это важно для таких записей, как Password: \...`; отправка обратных кавычек как части пароля приводит к тому, что PasarGuard возвращает HTTP 401. Когда существует несколько полных блоков учетных данных, пропуск credential_name` теперь безопасно завершается ошибкой вместо объединения имени пользователя из одной учетной записи с паролем или URL из другой.

Инструмент принимает persist=true только тогда, когда вы явно хотите записать профиль в защищенный локальный JSON-конфиг. По умолчанию используется persist=false. Используйте абсолютные локальные пути и храните файлы учетных данных вне репозиториев Git.

Нормализация URL, учетных данных, фильтрации и вывода

  • URL-адреса панелей нормализуются до корня сайта PasarGuard. Например, https://flowshipnet.com/dashboard/ становится https://flowshipnet.com перед добавлением путей API.

  • Заголовки Markdown от ## до ###### являются выбираемыми блоками учетных данных в дополнение к именованным блокам списков. Это поддерживает файлы, где раздел, такой как ## PasarGuard Panel (production), напрямую содержит поля URL, имени пользователя и пароля.

  • Ключи запросов списков, соответствующие возвращаемым полям элементов, также проверяются локально с точным совпадением. Это защищает вызывающих, когда панель молча игнорирует фильтр, такой как inbound_tag. Ключи пагинации/управления, не являющиеся полями элементов, остаются только на стороне сервера.

  • Конечная точка PasarGuard /api/hosts возвращает простой список JSON верхнего уровня, в отличие от обернутых конечных точек узлов/ядер/групп/пользователей. MCP нормализует простые списки в объект, ключом которого является ресурс, например, {"hosts": [...], "total": N}. В противном случае FastMCP выдает один блок текстового содержимого на каждый элемент списка, что упрощает разделение или усечение большого инвентаря хостов для downstream-рендереров инструментов. Нормализованный объект создает один связный структурированный блок.

  • Ответы apply — это компактные квитанции. Полные обновленные объекты ядра не возвращаются, а рекурсивное редактирование охватывает privateKey/shortIds Reality в результатах чтения. Проверку следует выполнять с помощью инструментов чтения после apply.

Группы инструментов

Операции чтения:

  • list_panels, load_panel_credentials, test_panel

  • get_panel_inventory

  • list_panel_resource, get_panel_resource

  • get_node_realtime_stats, get_panel_system_status

Операции планирования записи:

  • Узлы: создание, обновление, удаление, переподключение, синхронизация, сброс использования, обновление ядра

  • Ядра: создание и обновление, с явным необязательным перезапуском узла при обновлениях

  • Хосты: создание и обновление

  • Группы: создание и обновление

  • Пользователи: создание и обновление по числовому идентификатору

  • Все поддерживаемые ресурсы можно планировать для удаления

Выполнение записи и восстановление:

  • apply_change применяет один все еще действительный токен подтверждения.

  • inspect_change показывает безопасную сводку без сохраненной полезной нагрузки.

  • plan_rollback создает новый план подтверждения из снимка до применения обновления.

Обычная последовательность:

  1. Проверьте панель или ресурс.

  2. Вызовите соответствующий инструмент plan_*.

  3. Покажите возвращенную сводку и запросите подтверждение у пользователя.

  4. Вызовите apply_change с возвращенным токеном.

  5. Проверьте полученный ресурс и статус узла.

Совместимость с API

Реализация следует текущей публичной структуре API панели PasarGuard, включая POST /api/admin/token, /api/nodes, /api/cores, /api/hosts, /api/groups, /api/users, конечные точки действий узлов и маршруты пользователей на основе ID под /api/user/by-id/{user_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 target/SNI на тех же четырех ядрах панели используйте scripts/repair_reality_sni.py. Он проверяет точный входящий тег, порт, транспорт и старый/новый SNI перед изменением только target и serverNames, затем отправляет один 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