PasarGuard MCP
PasarGuard MCP
PasarGuard MCP는 REST API를 통해 하나 이상의 PasarGuard 패널을 관리하기 위한 로컬 Model Context Protocol 서버입니다. 의도적으로 패널 작업으로만 제한됩니다. 서버를 설치하거나, Vultr를 관리하거나, 노드에 SSH로 접속하거나, Cloudflare/Fastly를 관리하거나, 제공자 인프라를 변경하지 않습니다.
이 서버는 읽기와 쓰기를 모두 지원합니다. 쓰기는 2단계 계획/적용 워크플로를 사용합니다. 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"
}
}
}기존 베어러 토큰은 username/password 대신 token_env로 구성할 수 있습니다. 패널 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 서버는 비밀번호나 베어러 토큰을 stdout에 출력하지 않습니다.
채팅 기반 자격 증명 파일
MCP 설정에 넣는 대신 기존 로컬 자격 증명 파일의 위치를 Codex에 알릴 수 있습니다. 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과 병합하는 대신 안전하게 실패합니다.
이 도구는 보호된 로컬 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_panels,load_panel_credentials,test_panelget_panel_inventorylist_panel_resource,get_panel_resourceget_node_realtime_stats,get_panel_system_status
쓰기 계획 작업:
노드: 생성, 업데이트, 삭제, 재연결, 동기화, 사용량 재설정, 코어 업데이트
코어: 생성 및 업데이트, 업데이트 시 명시적 선택적 노드 재시작 포함
호스트: 생성 및 업데이트
그룹: 생성 및 업데이트
사용자: 숫자 ID로 생성 및 업데이트
지원되는 모든 리소스는 삭제를 계획할 수 있습니다.
쓰기 실행 및 복구:
apply_change는 여전히 유효한 확인 토큰 하나를 적용합니다.inspect_change는 저장된 페이로드 없이 안전한 요약을 보여줍니다.plan_rollback은 적용된 업데이트의 이전 스냅샷에서 새 확인 계획을 생성합니다.
일반적인 순서는 다음과 같습니다:
패널 또는 리소스를 검사합니다.
관련
plan_*도구를 호출합니다.반환된 요약을 표시하고 사용자에게 확인을 요청합니다.
반환된 토큰으로
apply_change를 호출합니다.결과 리소스 및 노드 상태를 확인합니다.
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,...는 이전 요청이 시간 초과되었을 때 대상 재시작 활성화 저장을 수행합니다. 호스트를 생성하지 않습니다.
호스팅된 커넥터와 로컬 상승 실행은 2026-08-18에 외부 HTTP 403 승인 게이트웨이 응답으로 차단되었습니다. 해당 게이트를 사용할 수 있을 때까지 계획된 포트를 라이브로 보고하지 마세요.
동일한 네 개의 패널 코어에 대한 대상 Microsoft REALITY 대상/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 toolsapply_changeA
Apply one previously planned change after explicit user confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| change_id | Yes | ||
| confirmation_token | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| node_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| resource | Yes | ||
| resource_id | Yes | ||
| include_sensitive | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| change_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden, and 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| query | No | ||
| resource | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| core | Yes | ||
| panel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | ||
| panel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | ||
| panel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| node | Yes | ||
| panel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| panel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| resource | Yes | ||
| resource_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| action | Yes | ||
| node_id | Yes | ||
| flush_users | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| change_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| patch | Yes | ||
| core_id | Yes | ||
| restart_nodes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| patch | Yes | ||
| group_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| patch | Yes | ||
| host_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| patch | Yes | ||
| node_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes | ||
| patch | Yes | ||
| user_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| panel | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description 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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Read-only MCP server for turva.dev, an agent-readiness audit and advisory service.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Related MCP Servers
- AlicenseDqualityDmaintenanceMCP server for Porkbun domains and DNS, enabling read-only and mutating operations with safety features like dry-run and write mode toggle.40443MIT
- AlicenseAqualityBmaintenanceMCP 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.6311AGPL 3.0
- AlicenseAqualityBmaintenanceMCP server for safely inspecting and operating a local Caddy admin API. Provides read-only tools and dry-run mutations for config management.7MIT
- AlicenseBqualityBmaintenanceLocal 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.271MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KiaTheRandomGuy/PasarGuard-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server