PasarGuard MCP
PasarGuard MCP
PasarGuard MCP ist ein lokaler Model Context Protocol Server zur Verwaltung eines oder mehrerer PasarGuard-Panels über deren REST-APIs. Er ist bewusst auf Panel-Operationen beschränkt. Er installiert keine Server, verwaltet kein Vultr, führt kein SSH auf Knoten aus, verwaltet kein Cloudflare/Fastly und ändert keine Provider-Infrastruktur.
Der Server unterstützt sowohl Lesen als auch Schreiben. Schreibvorgänge verwenden einen zweistufigen Plan/Anwenden-Workflow: Der MCP liest das aktuelle Objekt, erstellt ein kurzlebiges Bestätigungstoken und wendet die gespeicherte Änderung erst an, nachdem der Benutzer sie bestätigt hat. Aktualisierungspläne bewahren Felder, die nicht geändert wurden, was wichtig ist, da PasarGuard-Core- und Host-Aktualisierungen vollständige gültige Objekte erwarten.
Installation
cd projects/pasarguard-mcp
python3 -m venv .venv
.venv/bin/python -m pip install -e '.[dev]'Python 3.11 oder neuer ist erforderlich.
Related MCP server: Proxmox MCP Server
Panels konfigurieren
Die statische Konfiguration ist optional. Der MCP kann auch eine Anmeldedatendatei über einen chatgesteuerten Tool-Aufruf laden; siehe nächster Abschnitt.
Kopieren Sie config/panels.example.json in eine Datei außerhalb von Git, zum Beispiel ~/.config/pasarguard-mcp/panels.json, und setzen Sie das Passwort in einer Umgebungsvariable:
export PASARGUARD_MCP_CONFIG="$HOME/.config/pasarguard-mcp/panels.json"
export PASARGUARD_EXAMPLE_PASSWORD='your-panel-password'Die Konfiguration akzeptiert mehrere benannte Panels:
{
"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"
}
}
}Ein vorhandenes Bearer-Token kann mit token_env anstelle von username/password konfiguriert werden. Committen Sie keine Panel-URLs, Anmeldedaten, Tokens, Knoten-API-Schlüssel, Zertifikate oder exportierte Panel-Objekte in dieses Repository.
Das lokale Zustandsverzeichnis speichert Bestätigungspläne und Vorher-Snapshots mit Modus 0700/0600. Überschreiben Sie es bei Bedarf mit PASARGUARD_MCP_STATE_DIR.
MCP-Client-Konfiguration
Verwenden Sie für einen stdio-MCP-Client die installierte ausführbare Datei:
{
"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"
}
}
}
}Bevorzugen Sie den Secret-/Umgebungsmechanismus des Clients, falls einer vorhanden ist. Der MCP-Server gibt niemals Passwörter oder Bearer-Tokens auf stdout aus.
Chatbasierte Anmeldedatendateien
Sie können Codex mitteilen, wo eine vorhandene lokale Anmeldedatendatei liegt, anstatt sie in die MCP-Einrichtung einzufügen. Bitten Sie es, das Tool load_panel_credentials zu verwenden, zum Beispiel:
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.Das Tool liest die Datei lokal und extrahiert nur erkannte Felder. Unterstützte Formate sind .env, .md und .markdown; gängige Schlüssel sind PANEL_URL, PASARGUARD_BASE_URL, username, password und token. Das Passwort wird vom Tool nie zurückgegeben und standardmäßig nur im MCP-Prozess aufbewahrt.
Wenn eine Markdown-Datei mehrere benannte Konten enthält, wählen Sie den gewünschten Anmeldedatenblock explizit aus. Zum Beispiel sollte eine Datei mit einem flowship_super_admin-Block mit credential_name=flowship_super_admin geladen werden. Der Parser entfernt ein passendes Paar von Markdown-Backticks oder Anführungszeichen um Werte. Dies ist wichtig für Einträge wie Password: \...`; das Senden der Backticks als Teil des Passworts führt dazu, dass PasarGuard HTTP 401 zurückgibt. Wenn mehrere vollständige Anmeldedatenblöcke vorhanden sind, schlägt das Weglassen von credential_name` jetzt sicher fehl, anstatt den Benutzernamen eines Kontos mit dem Passwort oder der URL eines anderen zu kombinieren.
Das Tool akzeptiert persist=true nur, wenn Sie explizit möchten, dass das Profil in die geschützte lokale JSON-Konfiguration geschrieben wird. Der Standardwert ist persist=false. Verwenden Sie absolute lokale Pfade und bewahren Sie Anmeldedatendateien außerhalb von Git-Repositories auf.
URL-, Anmeldedaten-, Filter- und Ausgabenormalisierung
Dashboard-URLs werden auf die PasarGuard-Site-Root normalisiert. Zum Beispiel wird
https://flowshipnet.com/dashboard/zuhttps://flowshipnet.com, bevor API-Pfade angehängt werden.Markdown-Überschriften von
##bis######sind auswählbare Anmeldedatenblöcke zusätzlich zu benannten Listenblöcken. Dies unterstützt Dateien, in denen ein Abschnitt wie## PasarGuard Panel (production)direkt URL, Benutzername und Passwortfelder enthält.Listenabfrageschlüssel, die zurückgegebenen Elementfeldern entsprechen, werden auch lokal mit exakter Übereinstimmung erzwungen. Dies schützt Aufrufer, wenn ein Panel einen Filter wie
inbound_tagstillschweigend ignoriert. Paginierungs-/Steuerschlüssel, die keine Elementfelder sind, bleiben nur upstream.Der Endpunkt
/api/hostsvon PasarGuard gibt eine nackte Top-Level-JSON-Liste zurück, anders als die umschlossenen Knoten-/Core-/Gruppen-/Benutzer-Endpunkte. Der MCP normalisiert nackte Listen zu einem Objekt, das nach der Ressource benannt ist, wie{"hosts": [...], "total": N}. Andernfalls gibt FastMCP einen Textinhaltsblock pro Listenelement aus, was eine große Host-Inventarliste für nachgelagerte Tool-Renderer leicht aufteilbar oder abschneidbar macht. Das normalisierte Objekt erzeugt einen kohärenten strukturierten Block.Anwenden-Antworten sind kompakte Belege. Vollständige aktualisierte Core-Objekte werden nicht zurückgegeben, und rekursive Schwärzung deckt Reality
privateKey/shortIdsin Leseergebnissen ab. Die Überprüfung sollte nach dem Anwenden die Lesetools verwenden.
Tool-Gruppen
Leseoperationen:
list_panels,load_panel_credentials,test_panelget_panel_inventorylist_panel_resource,get_panel_resourceget_node_realtime_stats,get_panel_system_status
Schreibplanungsoperationen:
Nodes: erstellen, aktualisieren, löschen, neu verbinden, synchronisieren, Nutzung zurücksetzen, Core aktualisieren
Cores: erstellen und aktualisieren, mit explizitem optionalem Knotenneustart bei Aktualisierungen
Hosts: erstellen und aktualisieren
Groups: erstellen und aktualisieren
Users: erstellen und aktualisieren anhand numerischer ID
Alle unterstützten Ressourcen können für die Löschung geplant werden.
Schreibausführung und -wiederherstellung:
apply_changewendet ein noch gültiges Bestätigungstoken an.inspect_changezeigt eine sichere Zusammenfassung ohne die gespeicherten Nutzdaten.plan_rollbackerstellt einen neuen Bestätigungsplan aus dem Vorher-Snapshot einer angewendeten Aktualisierung.
Der normale Ablauf ist:
Untersuchen Sie das Panel oder die Ressource.
Rufen Sie das entsprechende
plan_*-Werkzeug auf.Zeigen Sie die zurückgegebene Zusammenfassung und fragen Sie den Benutzer um Bestätigung.
Rufen Sie
apply_changemit dem zurückgegebenen Token auf.Überprüfen Sie die resultierende Ressource und den Knotenstatus.
API-Kompatibilität
Die Implementierung folgt dem aktuellen öffentlichen PasarGuard-Panel-API-Layout, einschließlich POST /api/admin/token, /api/nodes, /api/cores, /api/hosts, /api/groups, /api/users, Knotenaktions-Endpunkten und ID-basierten Benutzerrouten unter /api/user/by-id/{user_id}. Die Panel-API kann sich weiterentwickeln, daher sollten Endpunktänderungen in src/pasarguard_mcp/server.py aktualisiert und vor der Veröffentlichung durch Tests abgedeckt werden.
Entwicklung
.venv/bin/python -m pytest
.venv/bin/python -m compileall -q src tests
.venv/bin/ruff check src testsTests verwenden einen In-Memory-HTTP-Transport und kontaktieren niemals ein echtes Panel.
Eingeschränkter direkter API-Fallback
Wenn das gehostete MCP-Genehmigungs-Gateway nicht verfügbar ist, enthält das Repository scripts/apply_reality_expansion.py. Es verwendet denselben PasarGuardClient, lädt Sitzungsanmeldedaten aus den Lexo-, Flowship- und VSL247-Anmeldedatendateien, prüft jeden angeforderten Port/Tag auf Kollisionen, speichert jeden Core einmal mit restart_nodes=false, damit seine Inbound-Tags existieren, aktualisiert die Gruppen und speichert dann jeden Core einmal mit restart_nodes=true. Ohne --apply liest und validiert es nur den Live-Zustand; --verify-only liest den aktuellen Core-/Gruppen-/Knotenzustand zurück; --restart-cores panel:id,... führt gezielte Neustart-fähige Speicherungen durch, wenn eine vorherige Anfrage ein Timeout hatte. Es erstellt niemals Hosts.
Der gehostete Connector und die lokale erhöhte Ausführung wurden beide am 2026-08-18 durch eine externe HTTP-403-Genehmigungs-Gateway-Antwort blockiert; bis dieses Gateway verfügbar ist, melden Sie die geplanten Ports nicht als live.
Für eine gezielte Microsoft-REALITY-Ziel/SNI-Reparatur über dieselben vier Panel-Cores verwenden Sie scripts/repair_reality_sni.py. Es validiert das genaue Inbound-Tag, den Port, den Transport und das alte/neue SNI, bevor es nur target und serverNames ändert, sendet dann ein vollständiges Core-PUT mit restart_nodes=true pro Ziel und verifiziert das Zurücklesen. Führen Sie es ohne --apply für einen Probelauf, mit --verify-only für den aktuellen Zustand oder mit --apply für die autorisierte Reparatur aus.
Sicherheitsgrenze
Dies ist ein Operationstool mit Schreibzugriff. Führen Sie es lokal über stdio aus, verwenden Sie nach Möglichkeit einen PasarGuard-Administrator mit geringsten Rechten, halten Sie die TLS-Verifizierung aktiviert und überprüfen Sie jeden Plan, bevor Sie ihn anwenden. Das Laden von Anmeldedatendateien extrahiert nur bekannte Felder und gibt keine Passwörter zurück. Der MCP stellt bewusst kein generisches Tool für beliebige URL-Anfragen bereit.
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