Skip to main content
Glama
helbertparanhos

easypanel-mcp-server

easypanel-mcp-server

MCP Server for full Easypanel control via Claude Code, Cursor and Claude Desktop.

npm version License: MIT GitHub Stars GitHub Forks GitHub Issues CI Glama Quality

TypeScript Node.js MCP Claude Code Cursor Claude Desktop

Instagram YouTube LinkedIn Buy Me A Coffee Strat Academy


What is this

easypanel-mcp-server connects Claude Code, Cursor and Claude Desktop directly to your Easypanel instance — a modern Docker-based server control panel — through the Model Context Protocol.

Instead of switching between your editor and the Easypanel dashboard, you control everything from inside Claude: deploy from GitHub, update env vars, read live logs, exec into containers, manage domains, databases, volumes and ports, set resource limits, run Docker maintenance and monitor your server — all in natural language.

It maps the Easypanel API to 57 typed tools across 15 categories, plus a single easypanel_raw escape hatch that reaches any of Easypanel's ~375 API operations for everything not covered by a dedicated tool. It speaks all three API generations — the tRPC API of panels ≤ 2.30, the RPC layer of 2.31–2.32, and the public API introduced in Easypanel 2.33 — auto-detecting which one your panel uses. Every destructive action is gated behind an explicit confirmation, every response opens with a context banner so Claude always knows what it is touching, and an optional read-only mode lets you connect safely to a production panel.

📖 API reference: docs/easypanel-api.md — architecture, the API generations, confirmed operations mapped tool-by-tool, and how to discover new ones.


Related MCP server: easypanel-mcp

Compatibility

Easypanel changed its API twice in quick succession:

  • 2.31 replaced the internal tRPC API with an RPC layer (/api/rpc/*). On panels ≥ 2.31, every v1.x call that carries parameters fails with 400 Input validation failed.

  • 2.33 shipped a documented public API (/api/<operation>, GET for reads, POST for writes) and stated that the old internal API "may change without notice and should not be relied upon". v3 targets the public API on those panels.

Your Easypanel version

Use

any (recommended)

easypanel-mcp-server@latest (v3.x) — auto-detects the generation, works on all three

≤ 2.30.x only, pinned

easypanel-mcp-server@legacy (v1.3.x) — frozen tRPC-only line, last validated against v2.30.1

v3 detects the generation with a single probe request on first call (cached) and logs the panel version to stderr. To skip detection, set EASYPANEL_API_FLAVOR to trpc (≤ 2.30), rpc (2.31–2.32) or public (≥ 2.33).

Upgrading from v2? If you pinned EASYPANEL_API_FLAVOR=rpc to work around the 2.32 issues, remove it — otherwise the client stays on the internal API that Easypanel now declares unstable.

This MCP vs. Easypanel's built-in MCP

Easypanel 2.33 also ships its own MCP endpoint (/api/mcp, connection details next to your API key). It's a thin wrapper over the public API. This server is a different trade-off:

Easypanel built-in MCP

easypanel-mcp-server

Runtime container logs

✅ via /ws/serviceLogs (no Loki/licence needed)

Exec inside a container

exec_in_container with destructive-command gate

Live Docker events

get_docker_events

Read-only mode

MCP_ACCESS_MODE=readonly blocks every write at the source

Confirmation gate on destructive ops

confirm: "CONFIRMO"

Secret redaction (list_users)

✅ strips apiToken / twoFactorSecret

Env var read-modify-write

✅ never clobbers other variables

Connection-string building

inspect_database

Coverage of every API operation

✅ via easypanel_raw

Zero install

needs npx/node

Using both at once is fine — they don't conflict.


Prerequisites

  • Easypanel instance running and accessible

  • API token — generate at Easypanel → Settings → API → Generate Token

  • Node.js ≥ 18 and Claude Code, Cursor or Claude Desktop


Quick start

Option A — npx (no install needed)

Add .mcp.json to your project root:

{
  "mcpServers": {
    "easypanel-mcp": {
      "command": "npx",
      "args": ["-y", "easypanel-mcp-server"],
      "env": {
        "EASYPANEL_URL": "https://your-panel.example.com",
        "EASYPANEL_TOKEN": "your-api-token"
      }
    }
  }
}

Option B — local build

git clone https://github.com/helbertparanhos/easypanel-mcp-server
cd easypanel-mcp-server
npm install && npm run build
{
  "mcpServers": {
    "easypanel-mcp": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/easypanel-mcp-server/dist/index.js"],
      "env": {
        "EASYPANEL_URL": "https://your-panel.example.com",
        "EASYPANEL_TOKEN": "your-api-token"
      }
    }
  }
}

Cursor — reuse env vars across projects

In Cursor Settings → Tools & MCPs → Environment Variables, set:

  • EASYPANEL_URL = https://your-panel.example.com

  • EASYPANEL_TOKEN = your-api-token

Then your .cursor/mcp.json uses references that apply automatically to every project:

{
  "mcpServers": {
    "easypanel-mcp": {
      "command": "npx",
      "args": ["-y", "easypanel-mcp-server"],
      "env": {
        "EASYPANEL_URL": "${EASYPANEL_URL}",
        "EASYPANEL_TOKEN": "${EASYPANEL_TOKEN}"
      }
    }
  }
}

Environment variables

Variable

Required

Default

Description

EASYPANEL_URL

Panel URL, no trailing slash (e.g. https://panel.example.com)

EASYPANEL_TOKEN

API token (Easypanel → Settings → API → Generate Token)

MCP_ACCESS_MODE

full

Set to readonly to block all writes (curated tools and easypanel_raw). Reads stay available — ideal for connecting to a production panel for inspection only.

EASYPANEL_API_FLAVOR

(auto)

Force the panel's API generation instead of auto-detecting: trpc (≤ 2.30), rpc (2.31–2.32) or public (≥ 2.33). Aliases: legacy / modern. Leave unset unless you have a reason — a stale rpc pin keeps a 2.33 panel on the internal API.

EASYPANEL_RAW_DISABLED

(enabled)

Set to 1 to fully disable the easypanel_raw escape hatch. Recommended when the MCP is exposed to untrusted content (prompt-injection risk), since easypanel_raw reads can return secrets and are not covered by read-only mode.


Adding context to a project

Place this in your project's CLAUDE.md so Claude knows which Easypanel project and service it should operate on by default:

## Easypanel
Project: `my-project` | Service: `my-api` | Branch: `main`
Repo: `owner/repo`

No folder copying needed — one MCP install serves all your projects.


Use cases

"Deploy my app" — Claude lists projects, inspects the current service, triggers deploy_service, then watches list_actions until it completes.

"Why is my service down?" — Claude calls get_service_error, get_service_logs and get_build_logs, and can exec_in_container to inspect files/env live.

"Add DATABASE_URL to staging" — Claude reads current env vars with get_env_vars, adds only the new key with set_env_var (never wipes others), and reminds you to redeploy.

"Give this service 512MB and half a core" — Claude calls set_service_resources (reads current limits and merges your change) and reminds you to restart.

"Persist /app/data and expose port 5432" — Claude calls create_mount (named volume) and create_port, both applied on the next deploy.

"My disk is full" — Claude runs get_storage_stats, then cleanup_docker_images or prune_docker (with confirmation) to reclaim space.

"Show me the Traefik dashboard config" — for anything without a dedicated tool, Claude uses easypanel_raw to call the procedure directly.


Available tools (57)

Category

Tools

Projects

list_projects, get_project, create_project, delete_project ⚠️

Services

inspect_service, create_service, rename_service ⚠️, destroy_service ⚠️, deploy_service, start_service, stop_service ⚠️, restart_service, get_service_error, get_exposed_ports, get_service_notes, set_service_notes, set_service_resources

Deploy / GitHub

set_source_github, set_source_image, enable_github_deploy, disable_github_deploy, list_actions, get_action

Env Vars

get_env_vars, set_env_var, delete_env_var ⚠️

Logs

get_service_logs, get_build_logs, get_system_stats

Containers

list_containers, exec_in_container ⚠️, get_docker_events

Domains

list_domains, add_domain, remove_domain ⚠️, set_primary_domain

Databases

create_database, inspect_database, destroy_database ⚠️

Volumes / Mounts

list_mounts, create_mount ⚠️

Ports

list_ports, create_port ⚠️

Compose

create_compose, inspect_compose, deploy_compose

Monitoring

get_docker_stats, get_storage_stats, get_service_stats

Maintenance

prune_docker ⚠️, cleanup_docker_images

Server / Infra

list_users, list_certificates, list_nodes, restart_panel ⚠️, reboot_server ⚠️

Raw access

easypanel_raw ⚠️

⚠️ = requires confirm: "CONFIRMO". For exec_in_container, create_mount, create_port and easypanel_raw the confirmation is conditional (only for destructive commands, sensitive host-path bind mounts, privileged ports < 1024, and writes respectively).

Full tool descriptions with parameters are in llms.txt. For the underlying API (all generations), see docs/easypanel-api.md.

easypanel_raw — reach any of the ~375 operations

Covering every Easypanel operation with a typed tool isn't practical, so anything without a dedicated tool is reachable directly:

// read (default) — flat name, as documented in your panel's /api/openapi.json
{ "procedure": "listCertificates" }
{ "procedure": "getPanelDomain" }
{ "procedure": "listVolumeBackups", "input": { "projectName": "app", "serviceName": "api" } }

// the old dot notation still works and is translated
{ "procedure": "certificates.listCertificates" }

// write — requires isMutation:true AND confirm:"CONFIRMO"
{ "procedure": "setLogoSettings", "input": { /* ... */ },
  "isMutation": true, "confirm": "CONFIRMO" }

Areas only reachable via easypanel_raw: Traefik, branding, Cloudflare Tunnel, Box, middlewares, notifications, volume/database backups, WordPress, storage providers, Docker builders, Git keys, cluster and update management. To discover names, read GET <your-panel>/api/openapi.json.

The client classifies each operation against the panel's own OpenAPI spec, fail-closed: a read only executes if the spec says it's a read, so writes can't sneak past readonly mode or the confirmation gate — and the reverse is caught too (calling a read with isMutation:true is refused with a clear message). On 2.33+ that classification is exact, since the public API declares GET for reads and POST for writes. On 2.31 it's the documented HTTP method; on 2.32, where the spec is POST-only and carries no such marker, the client falls back to the panel's naming convention (get/list/inspect/check/query/search = read, anything else = write), restricted to operations present in the spec.

One deliberate exception: on 2.33+ the panel validates query params without type coercion, so ?limit=5 arrives as the string "5" and is rejected. Whenever an input carries a non-string value, the client routes that read through the internal /api/rpc transport (which sends JSON in the body) and logs the reason to stderr. The read/write classification still comes from the spec first, so the guard is unaffected.


Safety features

Context banner

Every response that touches a specific project/service starts with:

[Contexto ativo: projeto="my-project" | serviço="my-api"]

Claude always knows what it is modifying before taking any action.

Confirmation guard

Destructive or production-impacting actions return BLOQUEADO until they receive confirm: "CONFIRMO":

{
  "status": "BLOQUEADO",
  "acao": "stop_service",
  "alvo": "serviço \"api\" (usuários perderão acesso)",
  "instrucao": "Para confirmar, passe o parâmetro: confirm: \"CONFIRMO\"",
  "aviso": "⚠️  Esta ação pode ser IRREVERSÍVEL. Confirme apenas se tiver certeza."
}

This gates project/service deletion, stop/rename, env/domain removal, database destruction, the global server ops (prune_docker, restart_panel, reboot_server), and — conditionally — dangerous container commands, sensitive bind mounts, privileged ports and raw mutations.

Read-only mode

Set MCP_ACCESS_MODE=readonly to block every write at the source (client.mutate), covering both curated tools and easypanel_raw. Reads remain available — perfect for a production panel you only want to inspect.

Raw escape-hatch controls

easypanel_raw validates the operation name (flat or namespace.procedure, no path/query injection), requires the input to be an object (≤ 50KB), and demands CONFIRMO for any mutation. Set EASYPANEL_RAW_DISABLED=1 to turn it off entirely.

Secret redaction

list_users strips apiToken, twoFactorSecret and password fields before returning — only id, email, admin, twoFactorEnabled and createdAt reach the model.

Safe env vars (read-modify-write)

set_env_var and delete_env_var read the current state, apply only the requested change, and write back. The Easypanel API replaces the entire env string on every update — without this protection it is easy to accidentally wipe all variables at once.

Sensitive value masking

get_env_vars masks values whose key matches *SECRET*, *PASSWORD*, *TOKEN*, *KEY* by default. Pass include_values: true to reveal.

Token never leaks

HTTP errors and WebSocket failures are logged to stderr and surfaced to the model as a generic message — the bearer token (sent in the WebSocket query string, as Easypanel requires) never reaches the model context.

Input validation

projectName / serviceName are validated against ^[a-z0-9][a-z0-9_-]*$ before being used to build a Docker service name or WebSocket query (defense-in-depth against target confusion / parameter injection). Ports are validated as integers 1–65535; resource values must be positive numbers.


Companion skill /ep

Install the workflow skill for guided deploy operations in Claude Code:

mkdir -p ~/.claude/skills/ep
cp skill/SKILL.md ~/.claude/skills/ep/SKILL.md

Then use /ep for an interactive deploy workflow without needing to remember tool names.


How it works

The Easypanel panel talks to its backend over tRPC (/api/trpc/<router>.<procedure>), not a public REST API. This server uses the same endpoints:

  • Reads are tRPC queries; writes are tRPC mutations — see docs/easypanel-api.md.

  • Live logs, container exec and Docker events use the panel's WebSocket channels (/ws/serviceLogs, /ws/containerShell, /ws/dockerEvents) — the same ones the UI uses — so they work without the licensed Advanced Logs (Loki).

  • A few input schemas (mounts, ports, resources) were validated against a live Easypanel and are documented in the API reference.


Known limitations

  • WordPress / Box service types — not exposed as dedicated tools; reach them via easypanel_raw (e.g. inspectWordPressService, createBoxService).

  • easypanel_raw reads bypass read-only mode — read-only blocks writes only. A raw read can return sensitive data; use EASYPANEL_RAW_DISABLED=1 in untrusted environments.

  • Cluster toolslist_nodes returns the local node only on single-server setups (no Swarm cluster).

  • Docker events are real-time only (no history) — an idle server may return an empty window.


Testing without Claude

npx @modelcontextprotocol/inspector dist/index.js

Opens a browser UI where you can call any tool manually and inspect the response.


Comparison with similar packages

Feature

easypanel-mcp-server

easypanel-mcp (sitp2k)

Curated tools

57

~15

Raw access to all ~375 API operations

✅ (easypanel_raw)

Auth method

Bearer token

Email + password

Confirmation guard

Read-only mode

Container exec + live logs (WebSocket)

Volumes / ports / compose / resources

Server maintenance (prune / reboot)

Safe env update (read-modify-write)

Secret redaction & value masking

Companion Claude skill

Known limitations documented


🤝 Contributing

Contributions are welcome! See CONTRIBUTING.md for how to add tools, report bugs and open PRs.


👤 Author

Created by Helbert Paranhos from Strat Academy.

Instagram YouTube LinkedIn Buy Me A Coffee

If this project was useful, consider giving it a ⭐ and following Strat Academy for more AI automation content.


📄 License

MIT © Helbert Paranhos / Strat Academy

See LICENSE for details.

Available Tools

57 tools
add_domainB

Adiciona um domínio customizado ao serviço com HTTPS automático via Let's Encrypt.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname do domínio (ex: app.meusite.com)
pathNoCaminho base (default: /)/
portYesPorta interna do serviço (ex: 3000, 8080)
httpsNoAtivar HTTPS com Let's Encrypt (default: true)
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions automatic HTTPS via Let's Encrypt, but does not disclose side effects (e.g., certificate generation, configuration changes), permissions needed, or error conditions. Significant behavioral gaps remain.

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

Conciseness5/5

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

The description is a single, clear sentence that front-loads the key action and unique feature. No unnecessary words or redundancy.

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

Completeness2/5

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

Given the tool has 6 parameters and no output schema, the description omits important context like prerequisites (service must exist), DNS requirements, and post-addition behavior (certificate generation). It is insufficient for an agent to use correctly without additional knowledge.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add any additional meaning beyond the schema; it does not explain parameter relationships or constraints (e.g., host must be a valid domain, port must match an exposed service port).

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

Purpose5/5

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

The description clearly states the action ('Adiciona' = adds) and the resource ('domínio customizado ao serviço' = custom domain to the service), with a specific feature (automatic HTTPS via Let's Encrypt) that distinguishes it from sibling tools like remove_domain and list_domains.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., service must exist, DNS configuration), and no exclusions. It simply states the operation without context.

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

cleanup_docker_imagesA

Remove do servidor apenas as imagens Docker não utilizadas (dangling/sem container), liberando espaço sem mexer em containers, redes ou volumes. Operação mais leve e segura que prune_docker — imagens podem ser recriadas em um novo deploy. Escopo global do servidor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral burden. It discloses that only dangling images are removed, no effects on containers/networks/volumes, and the operation is safe and reversible via redeployment.

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

Conciseness5/5

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

The description is two concise, front-loaded sentences. Every sentence provides value, with no redundancy or wasted words.

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

Completeness5/5

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

Given no output schema and no annotations, the description is fully adequate. It covers purpose, scope, behavior, and comparison with a sibling tool, leaving no ambiguity.

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

Parameters4/5

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

There are no parameters, and schema description coverage is 100%. The baseline for zero parameters is 4, and the description adds no param-specific information beyond the schema.

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

Purpose5/5

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

The description clearly states the tool removes unused Docker images (dangling/without a container) and distinguishes it from the sibling tool prune_docker by emphasizing it is a lighter and safer operation.

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool (for removing unused images) and when not to use alternatives (it is more lightweight and safer than prune_docker), and notes images can be recreated, providing clear guidance.

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

create_composeA

Cria um serviço do tipo Docker Compose em um projeto. Depois use set_compose_file (via easypanel_raw) ou o painel para definir o docker-compose, e deploy_compose para subir.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço compose

TDQS

A4/5.0
Behavior3/5

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

No annotations are present, so the description carries full burden. It reveals that creation alone does not start the service (needs file set and deploy), but lacks details on side effects, prerequisites (project existence), error conditions, or idempotency.

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

Conciseness5/5

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

Two concise sentences front-load the purpose and follow-up actions with zero waste. Every sentence adds value.

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

Completeness4/5

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

For a simple two-parameter creation tool, the description covers purpose, workflow, and necessary next steps. However, it omits prerequisites and return value, which an agent might need inferred.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions.

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

Purpose5/5

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

The description clearly states the verb 'creates' and the resource 'Docker Compose service in a project', distinguishing it from generic create_service. It also outlines the subsequent workflow steps.

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

Usage Guidelines4/5

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

Implicit guidance is provided by mentioning the next steps (set_compose_file, deploy_compose), but it does not explicitly contrast with alternatives like create_service or specify when not to use this tool.

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

create_databaseA

Cria um serviço de banco de dados (Postgres, MySQL, MariaDB, MongoDB ou Redis) em um projeto.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesTipo do banco de dados
passwordNoSenha do banco (gerada automaticamente se não informada)
projectNameYesNome do projeto
serviceNameYesNome para o serviço de banco (ex: postgres, db-prod)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are present, so the description must bear the full burden. It mentions creation and supported types, but does not disclose behavioral traits like permissions, idempotency, or side effects (e.g., overwriting existing services).

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

Conciseness4/5

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

Single sentence, front-loaded with action and resource. No wasted words, but could be structured more informatively (e.g., separating constraints).

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

Completeness4/5

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

Given no output schema and no annotations, the description adequately covers the essential purpose and required/optional parameters. It is sufficiently complete for a creation tool, though it could mention return behavior.

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

Parameters4/5

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

The input schema has 100% description coverage, so the baseline is 3. The description adds value by noting that password is auto-generated if not provided, which clarifies an otherwise ambiguous optional parameter.

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

Purpose5/5

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

The description clearly states the tool creates a database service with specific types (Postgres, MySQL, etc.) in a project, differentiating it from sibling tools like destroy_database or inspect_database.

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

Usage Guidelines3/5

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

The description implies usage for creating a database, but lacks explicit guidance on when to use this tool versus alternatives (e.g., destroy_database, inspect_database). No exclusions or context are provided.

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

create_mountA

Adiciona um volume/mount a um serviço para persistir dados entre deploys. Use type 'volume' para volume nomeado gerenciado, 'bind' para mapear um caminho do host. Aplica no próximo deploy.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNome do volume (apenas para type=volume)
typeYes'volume' (nomeado, gerenciado pelo Docker) ou 'bind' (caminho do host)
confirmNoObrigatório apenas para bind mounts de caminhos sensíveis do host (/, /etc, docker.sock, etc). Deve ser "CONFIRMO".
hostPathNoCaminho no host (apenas para type=bind)
mountPathYesCaminho dentro do container, ex: /app/data
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4.2/5.0
Behavior4/5

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

Discloses key behaviors: adds mount, applies on next deploy, requires confirmation for sensitive bind paths. Without annotations, description carries burden; could mention whether existing mounts are overwritten or if side effects exist.

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

Conciseness5/5

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

Two concise sentences front-load the core purpose and type distinction, with no wasted words. Every sentence adds value.

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

Completeness4/5

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

Covers essential aspects: purpose, type choices, deployment timing, and sensitive path confirmation. No output schema, but acceptable. Could add details on validation or error handling.

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

Parameters3/5

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

Schema coverage is 100%, so description adds minimal parameter-level insight beyond what schema provides. Baseline of 3 is appropriate; description does not significantly enhance parameter understanding.

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

Purpose5/5

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

Description explicitly states the tool creates a mount for a service to persist data, distinguishes between volume and bind types, and mentions deployment timing. It clearly differentiates from sibling tools focused on other resources like ports or databases.

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

Usage Guidelines4/5

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

Provides clear guidance on when to use volume vs bind based on managed vs host path needs. Lacks explicit exclusions or comparison to alternatives like updating mounts, but the context is sufficient for common use.

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

create_portA

Publica uma porta de um serviço no host (port mapping), expondo-a externamente sem passar pelo proxy/domínio. Útil para TCP/UDP brutos (bancos, jogos, etc). Aplica no próximo deploy. ⚠️ Portas privilegiadas (publishedPort < 1024, ex: 80/443/22) exigem confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoObrigatório apenas para publishedPort < 1024. Deve ser "CONFIRMO".
protocolNoProtocolo (default: tcp)
targetPortYesPorta interna (no container)
projectNameYesNome do projeto
serviceNameYesNome do serviço
publishedPortYesPorta externa (no host)

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that it exposes externally, applies on next deploy, and requires confirmation for privileged ports. However, it lacks information about side effects like overwriting existing mappings or required permissions for the host.

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

Conciseness5/5

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

The description is a single paragraph with two sentences, front-loading the main purpose. It is concise and includes essential notes without unnecessary detail.

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

Completeness4/5

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

Given no output schema, the description covers the tool's purpose, parameters, and important warnings. It could mention success/failure indication or impact on existing port mappings, but overall it is sufficiently complete for a simple creation tool.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds context for the confirm parameter regarding privileged ports and implies protocol default (though not explicitly stated). It does not significantly extend beyond the schema's descriptions.

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

Purpose5/5

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

The description clearly states the tool publishes a port mapping for a service, exposing it externally without proxy/domain. It specifies use cases (TCP/UDP for databases, games) and that it applies on next deploy, distinguishing it from sibling tools like list_ports or get_exposed_ports.

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

Usage Guidelines4/5

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

The description explains when to use (for raw TCP/UDP) and includes a warning about privileged ports requiring the confirm field. However, it does not explicitly state when not to use or suggest alternatives among siblings, which could be improved.

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

create_projectB

Cria um novo projeto no Easypanel.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto — apenas letras minúsculas, números, hífens e underscores

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only says 'creates a new project' without mentioning side effects, permissions, rate limits, or whether it overwrites or fails on duplicates.

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

Conciseness5/5

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

Single sentence with no unnecessary words. Front-loaded with verb and object.

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

Completeness2/5

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

No output schema exists, and the description does not explain return values (e.g., success/failure indications). For a mutation tool, this leaves the agent guessing about the result.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds no extra meaning beyond the schema's inline description of projectName.

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

Purpose5/5

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

The description clearly states the verb (criar) and resource (projeto no Easypanel), distinguishing it from sibling tools like delete_project, get_project, list_projects.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. With many sibling tools, explicit usage context or prerequisites would help the agent decide.

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

create_serviceA

Cria um novo serviço de app em um projeto. Após criar, configure a source com set_source_github ou set_source_image.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço — apenas letras minúsculas, números, hífens e underscores

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry full behavioral disclosure. It does not mention permissions, side effects (e.g., billing impact), idempotency, or error states. The only behavioral hint is that after creation, one must configure a source.

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

Conciseness5/5

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

The description is two sentences long, front-loading the core purpose and providing actionable follow-up guidance. There is no superfluous information.

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

Completeness3/5

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

For a simple creation tool with two parameters and no output schema, the description provides adequate context. However, it lacks information on return values, confirmation of creation, or error handling, which would be helpful for completeness.

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

Parameters3/5

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

Schema coverage is 100% (both parameters described). The description adds no additional semantic meaning beyond the schema's parameter descriptions. The naming convention for serviceName is already in the schema.

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

Purpose5/5

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

The description clearly states it creates a new app service in a project, using the verb 'cria' (creates) and resource 'serviço de app'. It distinguishes itself from sibling tools like create_database or create_mount by specifying the scope and next steps to configure the source.

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

Usage Guidelines3/5

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

The description implies use when creating a new service and then configuring a source, but does not explicitly state when to use this tool versus alternatives like deploy_service or rename_service. No exclusions or prerequisites are mentioned.

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

delete_env_varA

⚠️ Remove UMA variável de ambiente. Lê estado atual antes de escrever. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesNome da variável a remover
confirmYesConfirmação obrigatória. Deve ser exatamente "CONFIRMO"
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that it reads current state before writing ('Lê estado atual antes de escrever') and requires confirmation, which adds behavioral context beyond the schema. However, it doesn't describe what happens if the variable doesn't exist or other edge cases.

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

Conciseness5/5

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

The description is very concise (two short sentences) with a warning symbol at the start. Every sentence adds value with no wasted words.

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

Completeness3/5

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

The description does not explain the return value or result (e.g., success/failure messages) and does not explicitly state what entity the variable is removed from (project/service), though the parameters clarify it. Given no output schema, some additional context would be helpful.

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

Parameters3/5

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

Schema description coverage is 100%, and the description adds minimal parameter information beyond repeating the confirmation value ('CONFIRMO'). Baseline of 3 is appropriate since the schema already documents each parameter.

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

Purpose5/5

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

The description clearly states it removes one environment variable ('Remove UMA variável de ambiente'), using a specific verb and resource. It implicitly distinguishes from sibling tools like set_env_var and get_env_vars.

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

Usage Guidelines3/5

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

The description provides usage-related information such as the required confirmation ('Requer confirm: "CONFIRMO"') and a safety precaution, but it does not explicitly state when to use this tool versus alternative tools like set_env_var or when not to use it.

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

delete_projectA

⚠️ DESTRUTIVO — Remove permanentemente o projeto e TODOS os seus serviços e dados. Irreversível. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesConfirmação obrigatória. Deve ser exatamente a string "CONFIRMO"
projectNameYesNome exato do projeto a deletar

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden. It explicitly discloses the destructive nature, irreversibility, and the confirmation requirement. It clearly states that the project and all its services and data will be removed.

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

Conciseness5/5

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

The description is extremely concise: a single sentence that includes a warning emoji, the action, and the requirement. Every word is necessary and front-loaded.

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

Completeness4/5

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

Given the tool's simplicity and full schema coverage, the description is fairly complete. It covers the irreversible action and confirmation requirement. However, it does not explain what happens upon success or failure, which might be inferred but is not explicit.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description reiterates the confirmation parameter but adds no new information beyond the schema descriptions. It provides emphasis on the destructive nature but does not enhance understanding of the parameters themselves.

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

Purpose5/5

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

The description clearly states the action: permanently delete a project and all its services and data. It uses strong language ('irreversible') and includes the confirmation requirement. This distinguishes it from sibling tools that operate on specific resources like services or databases.

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

Usage Guidelines4/5

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

The description implies when to use (when you want to permanently remove a project) and includes a warning about irreversibility and the required confirmation. However, it does not explicitly state when NOT to use or mention alternative tools (e.g., destroy_service for deleting a single service).

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

deploy_composeC

Dispara o deploy (docker compose up) de um serviço Compose com a configuração atual.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço compose

TDQS

C2.9/5.0
Behavior1/5

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

No annotations provided, and the description only mentions the action without any behavioral details like side effects, error states, or prerequisites. Critical for a deployment tool.

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

Conciseness4/5

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

Single sentence, no redundancy. Concise and front-loaded with the key action. Could include more context but still well-structured.

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

Completeness2/5

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

Given no annotations or output schema, the description is too minimal. It lacks information about idempotency, prerequisites, and behavior on failure, making it incomplete for an agent.

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

Parameters3/5

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

Schema coverage is 100%, with both parameters documented in the schema. The description adds no extra meaning beyond the schema, so baseline score applies.

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

Purpose5/5

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

The description clearly states it triggers 'docker compose up' for a Compose service with current configuration. The verb 'deploy' and specific technology ('Compose') clearly distinguish it from siblings like 'deploy_service' or 'create_compose'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'deploy_service' or 'create_compose'. The description only states what it does, not context for selection.

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

deploy_serviceA

Dispara o deploy do serviço com a configuração atual. Usa o source configurado (GitHub, image, dockerfile). Funciona para serviços app E compose — detecta o tipo e roteia para o namespace certo (não precisa saber de antemão se é compose).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the deployment trigger, source usage, and type detection, but does not mention safety aspects like service restart, potential downtime, or any destructive effects. More transparency on side effects would improve the score.

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

Conciseness5/5

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

The description is two sentences, front-loads the main purpose, and contains no superfluous information. Every sentence adds value.

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

Completeness3/5

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

The description covers the core functionality but omits important context: no output schema, no mention of return values or confirmation, and no guidance on monitoring deployment progress (e.g., using get_action or get_build_logs). For a deployment tool, this information would be valuable.

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

Parameters3/5

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

Schema coverage is 100% with two parameters, but their descriptions in the schema are minimal. The tool description adds no additional meaning beyond the parameter names and types, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool triggers deployment with current configuration and auto-detects service type (app or compose), distinguishing it from the sibling deploy_compose which likely targets only compose services. The verb 'dispara' (triggers) and resource 'deploy do serviço' are specific.

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

Usage Guidelines4/5

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

The description explains it works for both app and compose services and that the tool routes automatically, so users don't need to know the type in advance. However, it does not explicitly state when to use this tool versus deploy_compose, lacking exclusionary guidance.

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

destroy_databaseA

⚠️ DESTRUTIVO — Remove o banco de dados e TODOS os seus dados permanentemente. Irreversível. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesTipo do banco de dados
confirmYesConfirmação obrigatória. Deve ser exatamente "CONFIRMO"
projectNameYesNome do projeto
serviceNameYesNome do serviço de banco

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description fully carries the burden of disclosing behavior. It explicitly states that the action is destructive, permanent, and irreversible, which is essential for an agent to understand the consequences. No additional side effects are mentioned, but the core behavioral trait is well communicated.

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

Conciseness5/5

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

The description is extremely concise, using only two short sentences plus a warning emoji and all-caps for emphasis. Every element serves a purpose: warning, action, permanence, and required confirmation. No unnecessary words.

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

Completeness4/5

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

Given the tool's destructive nature, the description covers the key aspects: what it destroys, that it's irreversible, and the required confirmation. It does not explain return values (no output schema) or potential side effects, but for a simple delete operation, this is sufficient. The sibling tool list includes similar destructive tools, providing context.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by detailing the confirm parameter requirement ('Deve ser exatamente 'CONFIRMO''), which is critical for safe execution. The other parameters are not elaborated, but the schema descriptions are adequate.

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

Purpose5/5

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

The description clearly states the tool's purpose: to remove a database and all its data permanently. It uses strong language ('DESTRUTIVO', 'irreversível') and distinguishes itself from sibling tools like create_database and inspect_database by emphasizing the destructive nature.

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

Usage Guidelines4/5

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

The description specifies that a confirmation string ('CONFIRMO') is required, guiding the agent on a critical usage condition. While it doesn't explicitly state when to use or avoid the tool, the destructive context makes it clear that this is for irreversible deletion, not for safe operations.

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

destroy_serviceA

⚠️ DESTRUTIVO — Remove permanentemente o serviço e seus dados. Irreversível. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesConfirmação obrigatória. Deve ser exatamente "CONFIRMO"
projectNameYesNome do projeto
serviceNameYesNome do serviço a destruir

TDQS

A4.3/5.0
Behavior4/5

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

Without annotations, the description carries full burden. It warns of destructive, irreversible behavior and requires explicit confirmation. This is strong transparency, though it could mention additional effects like cascading deletions or user permissions.

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

Conciseness5/5

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

Two well-structured sentences. The warning emoji draws attention. No wasted words. Every part of the description adds useful information.

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

Completeness5/5

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

Given the tool's destructive nature, the description covers the essential behavioral aspect (irreversibility) and the required safety measure (confirmation). It is complete for its purpose; no output schema or return value details are necessary.

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

Parameters4/5

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

Input schema covers 100% of parameters with descriptions. The description adds value by specifying the exact value required for 'confirm' ('CONFIRMO') and repeating its mandatory nature, which goes beyond schema definition.

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

Purpose5/5

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

Description clearly states the action: 'Remove permanentemente o serviço e seus dados' (permanently removes the service and its data). Verb 'destroy' and resource 'service' are explicit. Distinguishes from siblings by emphasizing irreversible destruction and requiring specific confirmation.

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

Usage Guidelines3/5

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

The description includes the mandatory confirmation string, which is a usage guideline. However, it does not provide guidance on when to use this tool versus alternatives like delete_project or destroy_database. No exclusion criteria or prerequisites mentioned.

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

disable_github_deployA

Desativa o auto-deploy via GitHub. Deploys precisarão ser disparados manualmente.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4.1/5.0
Behavior3/5

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

The description discloses the main behavioral effect (disables auto-deploy, requires manual deploys). However, it does not mention reversal options, permissions, or side effects. Without annotations, this is adequate but minimal.

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

Conciseness5/5

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

Two concise sentences with no redundant information. The main action is front-loaded.

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

Completeness5/5

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

For a simple toggle action with two well-described parameters and a direct sibling tool, the description is complete. No gaps in context.

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

Parameters3/5

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

The input schema provides 100% coverage for both parameters (projectName, serviceName), so the description does not need to add more. No extra semantic context is provided beyond the schema.

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

Purpose5/5

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

The description uses a specific verb ('desativa' disables) and resource ('auto-deploy via GitHub'), clearly distinguishing it from the sibling 'enable_github_deploy'.

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

Usage Guidelines4/5

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

The description implies when to use (when disabling auto-deploy) and states the consequence (deploys must be manual). It does not explicitly exclude other contexts, but the sibling tool provides clear alternatives.

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

easypanel_rawA

Chama diretamente qualquer operação da API do Easypanel (~375) não coberta pelas tools dedicadas. Use para recursos avançados: Traefik, branding, Cloudflare Tunnel, Box, WordPress, backups de volume/banco, notificações, storage providers, etc. Leitura (isMutation=false) é o padrão. ⚠️ Reads podem retornar dados sensíveis (env vars/secrets de qualquer projeto). Para escrita, passe isMutation:true E confirm:"CONFIRMO" — escritas arbitrárias pulam as proteções das tools curadas. Para descobrir os nomes disponíveis, leia GET /api/openapi.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputNoObjeto de parâmetros da procedure (opcional). Ex: { projectName: "meu-app" }.
confirmNoObrigatório quando isMutation=true. Deve ser exatamente "CONFIRMO".
procedureYesNome da operação. Em painéis 2.33+ use o nome achatado da API pública, ex: "listCertificates", "getDashboard", "listVolumeBackups". A notação antiga com namespace ("certificates.listCertificates") também é aceita e traduzida.
isMutationNotrue para operações de escrita, false para leitura (padrão). Escritas exigem confirm. O client valida contra o OpenAPI do painel e recusa escrita chamada como leitura (e vice-versa).

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It clearly discloses that reads may expose sensitive data (env vars/secrets), that writes skip safeguards of curated tools, and that the client validates operations against OpenAPI. The description is thorough but could add more detail about error handling or rate limits.

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

Conciseness4/5

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

The description is well-structured with a short main statement, examples, warnings, and discovery instructions. It packs valuable information into a moderate length. Minor room for tightening, but overall effective.

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

Completeness5/5

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

Given that this is a raw API passthrough with no output schema, the description provides complete context: behavior, safety implications, required confirm step, discovery mechanism, and the relationship to curated tools. It fully equips an agent to decide when and how to invoke this tool safely.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds value beyond the schema by: explaining the 'confirm' parameter semantics (required for writes, must be "CONFIRMO"), clarifying the 'procedure' naming convention (flat name vs old namespace notation) and OpenAPI validation behavior of 'isMutation'. This elevates it to a 4.

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

Purpose4/5

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

The description clearly states the tool's purpose: directly calling any Easypanel API operation (~375) not covered by dedicated tools. It gives specific examples of advanced resources (Traefik, branding, Cloudflare Tunnel, etc.), clearly distinguishing it from the sibling tools that handle common operations.

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

Usage Guidelines5/5

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

The description provides excellent usage guidance: when to use this tool (advanced/uncapped resources), safety warnings (reads can return sensitive data, writes bypass curated protections), explicit instructions for write operations (isMutation:true + confirm), and even how to discover available operation names (GET /api/openapi.json). This comprehensively answers when and how to use it.

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

enable_github_deployA

Ativa o auto-deploy via GitHub: a cada push no branch configurado, um deploy é disparado automaticamente.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It describes the primary behavior but omits details such as whether a branch must be pre-configured, idempotency, side effects, or any constraints. This leaves significant gaps.

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

Conciseness5/5

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

The description is a single sentence that front-loads the purpose and includes the key trigger detail. It is concise with no unnecessary words.

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

Completeness4/5

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

For a simple enable action with two well-documented parameters and no output schema, the description covers the essential behavior. However, it lacks details on error states or prerequisites, which would improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, and the description adds no additional meaning to the parameters beyond the schema definitions. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (enables auto-deploy) and the resource (GitHub auto-deploy), explaining the trigger mechanism (push to configured branch). It is distinct from sibling tools like disable_github_deploy and set_source_github.

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

Usage Guidelines3/5

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

The description implies usage context but does not explicitly state when to use vs alternatives, nor does it mention prerequisites or exclusions. It relies on the sibling context to infer usage.

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

exec_in_containerA

Executa um comando dentro do container de um serviço e retorna a saída (stdout/stderr). Use para debugar em runtime: inspecionar arquivos, checar variáveis, testar conectividade, rodar migrations, etc. Roda no primeiro container do serviço (ou no containerId informado). ⚠️ Executa comandos arbitrários — comandos potencialmente destrutivos (rm -rf, dd, mkfs, shutdown, kill, pipe para shell, etc.) exigem confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesComando shell a executar, ex: 'ls -la /app', 'cat package.json', 'env', 'node -v'
confirmNoObrigatório apenas para comandos destrutivos. Deve ser exatamente "CONFIRMO".
containerIdNoID do container específico (opcional — default: primeiro container do serviço)
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: runs on the first container or specified containerId, returns output, and requires explicit confirmation for destructive commands. It also notes that it executes arbitrary commands, making the risk clear.

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

Conciseness5/5

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

The description is concise (3-4 sentences), front-loaded with the primary action and use cases, uses an emoji for emphasis on the warning, and is well-structured.

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

Completeness5/5

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

Given 5 parameters, 3 required, no output schema, and no annotations, the description adequately covers purpose, parameters, usage context, and safety warnings. It is fully informative for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Despite 100% schema coverage, the description adds significant meaning beyond the schema: provides command examples (ls, cat, env), explains default behavior for containerId, and clarifies the confirm field's purpose and exact required value.

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

Purpose5/5

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

The description clearly states the tool's purpose: execute a command inside a container and return stdout/stderr. It gives specific use cases (debugging, inspecting files, checking variables, etc.) and distinguishes it from sibling tools by its unique action.

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

Usage Guidelines5/5

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

The description explicitly says when to use: for runtime debugging tasks like inspecting files, checking variables, testing connectivity, and running migrations. It also warns when not to use: destructive commands require a confirmation flag. No direct alternative is needed among siblings.

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

get_actionB

Retorna detalhes e logs de uma ação específica (deploy, build, etc).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionIdYesID da ação (obtido via list_actions)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, and description only states it returns details and logs. No disclosure of error handling, required permissions, or read-only nature. Minimal behavioral context.

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

Conciseness4/5

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

Single sentence is concise and front-loaded. No wasted words, but could include more context in the same space.

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

Completeness3/5

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

For a simple retrieval with one required param and no output schema, the description is minimally viable. It covers the core purpose but lacks response details and error handling info.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter, so baseline is 3. Description adds no additional meaning beyond what the schema already provides (action ID obtained via list_actions).

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

Purpose5/5

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

Description clearly states the tool returns details and logs of a specific action, giving examples (deploy, build). It distinguishes from list_actions which lists actions, and from other log tools like get_build_logs.

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

Usage Guidelines3/5

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

Implicitly suggests use after list_actions to get details, but no explicit when-to-use, when-not, or alternatives. The parameter description references list_actions, but the tool description lacks guidance.

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

get_build_logsB

Retorna os logs de build/deploy do último action registrado para o serviço. Use para debugar falhas de build.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states what the tool returns but does not disclose any behavioral traits such as idempotency, side effects, or what happens if no action exists. This is insufficient for safe operation.

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

Conciseness5/5

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

Two sentences, no wasted words. The first sentence states the function, the second gives usage advice. Well-structured and front-loaded.

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

Completeness3/5

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

The description covers the basic function but lacks details about output format or edge cases. Since there is no output schema, the description should at least hint at the return type (e.g., log lines, array). It is minimally adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented. The description adds no additional meaning beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it returns build/deploy logs of the last action for a service, which is a specific verb+resource. However, it does not explicitly differentiate from sibling tools like get_action or get_service_logs, leaving some ambiguity.

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

Usage Guidelines3/5

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

The description includes a usage hint ('Use para debugar falhas de build'), but provides no exclusions or alternatives. It implies when to use (for debugging build failures) but does not guide against using it for other purposes or when to prefer siblings.

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

get_docker_eventsA

Captura eventos Docker do servidor em tempo real durante uma janela curta (~8s) — start, stop, kill, die, exec, health_status, etc. Use para investigar reinícios e falhas. Obs: só mostra eventos que ocorrem durante a captura (não há histórico); um servidor ocioso pode retornar vazio.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNúmero máximo de eventos a coletar (default: 30, max: 100)

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description fully covers behavioral traits: real-time capture, ~8s window, event types, limitation of no historical data, and the possibility of empty results. This is comprehensive for a read-only event monitoring tool.

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

Conciseness4/5

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

The description is concise with three sentences, efficiently communicating the purpose, use case, and limitations. It is front-loaded with the main action and uses bullet-like structure for event types.

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

Completeness3/5

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

The description explains the tool's behavior but does not detail the return format of events (e.g., event structure). Given no output schema, additional completeness about response format would improve it. However, for a simple tool, it is minimally adequate.

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

Parameters3/5

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

Schema coverage is 100% for the single optional 'limit' parameter, which is already described in the schema. The description adds no additional information about the parameter, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool captures Docker events in real-time during a short window (~8s), listing specific event types. It distinguishes from sibling tools like get_docker_stats or get_service_logs by focusing on events for investigating restarts and failures.

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

Usage Guidelines4/5

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

The description advises using the tool to investigate restarts and failures and explicitly warns that it only shows events during capture (no history) and may return empty if the server is idle. It does not name alternative tools, but the context is clear.

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

get_docker_statsA

Retorna o estado das tasks Docker de cada serviço: réplicas em execução (actual) vs desejadas (desired). Use para ver rapidamente o que está no ar, escalado ou caído. Para CPU/memória de um serviço use get_service_stats.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. The description indicates the tool is a read operation (returns state data) with no destructive effects. It does not mention any authentication or permission requirements, nor does it describe the output format or any side effects. For a simple stateless read tool with zero parameters, the basic transparency is adequate but minimal; an agent would benefit from knowing if a response structure is guaranteed or if the tool might fail under certain conditions.

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

Conciseness5/5

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

The description is very concise: two sentences. The first sentence states the purpose and exactly what is returned (actual vs desired replicas). The second sentence gives a use case and sibling direction. Every sentence is meaningful and adds value. No wasted words.

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

Completeness4/5

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

Given that the tool has no parameters and no output schema, the description covers the core behavior (what it returns) and a use case. It also links to the relevant sibling for deeper stats. However, it does not explain the return format (e.g., structure of the response), which could be important for an agent to parse the output. Since there is no output schema, the description could have included a brief note on the return structure (e.g., a list of objects with service name and replica counts). Still, the overall completeness is high for a simple tool.

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

Parameters4/5

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

The input schema has zero parameters with 100% schema description coverage, meaning an empty object. The description does not need to explain parameters since there are none. However, it implicitly clarifies that no input is needed, which is helpful. The description adds value by explaining what the tool returns, which compensates for the lack of parameters.

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

Purpose4/5

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

The description clearly states it returns the state of Docker tasks for each service, comparing actual vs desired replicas. It uses a specific verb ('Retorna' - returns) and resource ('estado das tasks Docker de cada serviço'). While it distinguishes from sibling tool 'get_service_stats' by mentioning that sibling is for CPU/memory, it doesn't explicitly differentiate from 'get_system_stats' or 'get_storage_stats' among the siblings, but the core purpose is well-defined.

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

Usage Guidelines4/5

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

The description explicitly states when to use the tool: 'para ver rapidamente o que está no ar, escalado ou caído' (to quickly see what is up, scaled, or down). It also provides an alternative: 'Para CPU/memória de um serviço use get_service_stats.' This gives clear context for selecting this tool versus a related sibling. However, it doesn't mention when not to use it or any prerequisites, but it is sufficient given the tool's simplicity.

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

get_env_varsA

Lista as variáveis de ambiente do serviço. Valores de variáveis sensíveis (KEY, SECRET, PASSWORD, TOKEN) são mascarados por padrão. Use include_values: true para ver os valores completos.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço
include_valuesNoSe true, exibe valores completos incluindo segredos (use com cautela)

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so the description carries the burden. It discloses the masking behavior for sensitive variables and the effect of include_values. However, it does not explicitly state that the operation is read-only or describe any other behavioral traits like performance, authentication needs, or output format.

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

Conciseness5/5

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

Two short sentences, highly efficient. The main action is first, followed by key behavioral note (masking) and usage hint (include_values). No wasted words.

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

Completeness4/5

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

For a listing tool with no output schema, the description covers the essential behavior and the only non-trivial parameter. Lacks details on output format or pagination, but these are not critical given the tool's simplicity.

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

Parameters4/5

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

Schema coverage is 100% with parameter descriptions. The description adds value by explaining the default masking of sensitive values and clarifying the effect of include_values beyond the schema's note. No further elaboration on projectName or serviceName.

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

Purpose4/5

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

The description clearly states the tool lists environment variables for a service, specifying that sensitive values are masked. It distinguishes from mutation siblings like set_env_var and delete_env_var, but does not explicitly differentiate from other retrieval tools like get_service_logs.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No prerequisites, exclusions, or context for when include_values should be used cautiously. The agent is left without decision support.

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

get_exposed_portsB

Lista as portas expostas (publicadas no host) de um serviço. Use para descobrir em quais portas o serviço está acessível externamente.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It only states the reading action ('Lista') without confirming non-destructiveness or any side effects. The behavior is implied but not explicit.

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

Conciseness4/5

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

The description is brief (two sentences) and focuses on the action and purpose. No unnecessary words, making it easy to parse quickly.

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

Completeness3/5

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

Given the simple nature of the tool and no output schema, the description is adequate. However, it could clarify the output format or distinguish from similar tools more explicitly.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add much. It does not provide additional meaning beyond the parameter names and descriptions in the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: listing exposed ports of a service. It specifies the resource ('portas expostas') and the scope ('de um serviço'), and mentions external accessibility, which helps distinguish it from broader listing tools like list_ports.

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

Usage Guidelines3/5

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

The description provides a use case ('Use para descobrir em quais portas o serviço está acessível externamente'), but does not explicitly state when not to use it or suggest alternatives. This leaves room for interpretation.

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

get_projectA

Retorna detalhes completos de um projeto: lista de serviços, configurações e status atual.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome exato do projeto

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It states the tool returns details, implying a read operation, but doesn't mention permissions, error handling, or limitations. It is honest but lacks depth.

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

Conciseness5/5

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

A single, front-loaded sentence that communicates purpose and output efficiently. No unnecessary words.

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

Completeness4/5

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

For a tool with one parameter and no output schema, the description adequately covers what it does and what it returns. It could mention that an exact existing project name is required, but it's nearly complete.

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

Parameters3/5

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

Schema coverage is 100% (one parameter described). The tool description adds no extra meaning beyond the schema's description of 'projectName' as the exact project name. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('retorna' - returns) and resource ('projeto' - project), and lists what is returned (services, configurations, status), clearly distinguishing it from sibling tools like list_projects (list only) or delete_project (destructive).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as when a user might want a summary versus full details. There are no prerequisites or exclusions mentioned.

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

get_service_errorA

Retorna o último erro registrado do serviço. Use para debugar falhas de deploy ou runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided. Description implies a read-only operation by returning an error, but does not disclose authentication needs, side effects, or whether the error is cleared after retrieval. Minimal behavioral context beyond the obvious.

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

Conciseness5/5

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

Two sentences, no filler. Front-loaded with action and followed by use case. Every word serves a purpose.

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

Completeness3/5

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

No output schema, so description should hint at return format. Only says 'último erro registrado' without specifying if it's a string, object, or includes timestamps. Adequate for a simple tool but could be more explicit.

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

Parameters3/5

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

Schema covers both parameters with descriptions. Description adds no extra meaning beyond the schema's 'Nome do projeto' and 'Nome do serviço'. Baseline 3 due to 100% schema coverage.

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

Purpose5/5

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

Description uses 'Retorna' (returns) and specifies resource 'último erro registrado do serviço'. It clearly distinguishes from sibling tools like get_service_logs or get_build_logs by focusing on the last error.

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

Usage Guidelines4/5

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

Explicitly states 'Use para debugar falhas de deploy ou runtime', providing clear when-to-use context. Does not mention alternatives or exclusions, but the use case is well-defined.

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

get_service_logsB

Busca os logs do container de um serviço. Use para debugar erros em runtime. Retorna as últimas N linhas.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNoNúmero de linhas a retornar (default: 100, max: 500)
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states that logs are returned and gives a line count, but lacks details on access requirements, real-time behavior, or error scenarios. Key behaviors like authentication needs or status when the service is not running are omitted.

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

Conciseness5/5

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

The description is extremely concise with three sentences. It is front-loaded with purpose and uses clear language. Every sentence contributes meaningful information without redundancy.

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

Completeness3/5

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

Given no output schema, the description does not detail the return format or structure. It mentions returning lines but not whether output is raw text or structured. In the context of many sibling tools, it lacks differentiation cues. Adequate for a simple log retrieval but not fully comprehensive.

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

Parameters3/5

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

Schema coverage is 100%, so the parameters are already well-documented. The description's mention of 'last N lines' adds minimal value beyond the schema's default and max constraints. It does not elaborate on parameter format or constraints.

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

Purpose4/5

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

The description clearly states the tool retrieves service container logs for debugging runtime errors. It specifies the resource (logs of a service container) and the purpose (debug runtime errors). However, it does not differentiate from similar sibling tools like get_build_logs or get_service_error.

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

Usage Guidelines3/5

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

The description advises using the tool to debug runtime errors, which is a useful usage hint. It does not provide exclusions or mention alternative tools, leaving the agent to infer when not to use it.

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

get_service_notesA

Lê as notas/anotações salvas no serviço.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behaviors. It only says it reads notes, but does not mention any side effects, permissions, or the format of the returned data. Minimal behavioral context.

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

Conciseness5/5

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

Single clear sentence with no wasted words. It is appropriately sized for a simple read operation.

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

Completeness3/5

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

Given the simplicity of the tool and no output schema, the description is adequate but could be improved by explaining the structure of the returned notes or linking to the sibling tool for setting notes.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter descriptions already define the parameters. The tool description does not add meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool reads notes from a service using the Portuguese verb 'Lê', which is specific and distinguishes it from the sibling tool 'set_service_notes' that writes notes.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives like 'set_service_notes'. The purpose implies reading, but no when-not-to-use or exclusions are provided.

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

get_service_statsB

Retorna métricas de um serviço específico: CPU, memória e rede do container.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It names the returned metrics (CPU, memory, network), which is helpful but doesn't specify data format, units, whether it's real-time or averaged, or if repeated calls are expensive. The tool appears to be read-only, but this is implied rather than explicit.

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

Conciseness3/5

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

The description is a single sentence of reasonable length. It is front-loaded with core information but misses no additional context. While concise, it's not structured with formatting that enhances readability.

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

Completeness3/5

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

Given the tool has only 2 parameters (both required, 100% schema coverage) and no output schema, the description feels adequate but not thorough. It covers the basic function and metrics returned, but for a monitoring tool, it would benefit from clarifying data types, update frequency, or error conditions (e.g., service not found).

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description mentions no parameter details beyond what's in the schema (projectName, serviceName). It doesn't explain naming conventions or constraints (e.g., case sensitivity, allowed characters). The description adds no semantic value beyond the schema.

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

Purpose4/5

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

The description clearly states the tool returns metrics (CPU, memory, network) for a specific service. It uses a specific verb ('Retorna' / Returns) and resource ('métricas de um serviço'), which distinguishes it from siblings like get_system_stats (system-level) and list_projects (project listing). However, it could more explicitly differentiate from get_docker_stats or inspect_service.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For instance, it doesn't clarify when to use get_service_stats vs get_system_stats vs get_docker_stats, or mention any prerequisites (e.g., service must be running). This leaves the agent to infer usage solely from the tool name and sibling context.

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

get_storage_statsB

Retorna uso de armazenamento do servidor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the basic function, omitting whether the operation is read-only, requires permissions, or has any side effects.

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

Conciseness5/5

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

The description is a single sentence with no filler. It is appropriately concise and front-loaded.

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

Completeness3/5

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

Given zero parameters and no output schema, the description lacks details about what 'storage usage' means (e.g., units, specific metrics). It provides minimal but adequate context for a simple tool.

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

Parameters4/5

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

There are no parameters, so the description does not need to add parameter info. Baseline 4 is appropriate; the description adds no extra meaning but is not required to.

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

Purpose4/5

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

The description clearly states it returns server storage usage, specifying the verb and resource. It distinguishes from siblings like get_system_stats and get_docker_stats, though it could be more precise about what 'storage usage' entails.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like get_system_stats. The description does not mention context or exclusions.

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

get_system_statsA

Retorna métricas do servidor: CPU, memória, disco, rede e uptime. Use para verificar saúde do servidor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior2/5

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

With no annotations provided, the description bears full transparency burden. It fails to disclose that the operation is read-only, lacks details on return format or structure, and does not mention any rate limits or authentication requirements.

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

Conciseness5/5

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

The description is concise with two sentences: the first states the function and the second provides a use case. It is front-loaded and contains no superfluous information.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, no output schema, no annotations), the description adequately covers the purpose and use case. However, it could be improved by explicitly stating the operation is read-only and hinting at the output format.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so no parameter documentation is needed. The description appropriately omits parameter details, aligning with the baseline of 4 for zero-parameter tools.

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

Purpose5/5

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

The description clearly states the tool returns server metrics (CPU, memory, disk, network, uptime) and explicitly sets the context for checking server health, distinguishing it from sibling tools like get_docker_stats or get_storage_stats.

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

Usage Guidelines4/5

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

The description explicitly recommends using the tool to check server health, providing clear usage context. However, it does not mention when to avoid this tool or suggest alternative tools for more specific metrics.

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

inspect_composeA

Retorna a configuração de um serviço Docker Compose: arquivo compose, env, source e estado. Use antes de qualquer alteração.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço compose

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavior. It indicates the tool returns configuration data but does not explicitly state it is read-only or describe potential errors. The description gives moderate transparency but lacks full disclosure of behavioral traits.

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

Conciseness5/5

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

Two sentences, each serving a distinct purpose: the first describes what the tool returns, the second tells when to use it. No unnecessary words, effectively front-loaded.

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

Completeness4/5

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

For a simple read tool with two string parameters and no output schema, the description is sufficiently complete. It lists the return components and provides usage guidance. Minor improvement would be to hint at the structure of the response, but not necessary.

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

Parameters3/5

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

Schema coverage is 100% and descriptions in the schema are clear ('Nome do projeto', 'Nome do serviço compose'). The tool description does not add any extra meaning beyond what the schema already provides, meeting the baseline for high coverage.

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

Purpose5/5

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

The description clearly states the tool returns the configuration of a Docker Compose service, specifying the components (compose file, env, source, state). It distinguishes itself from sibling tools like inspect_service or get_env_vars through the specific focus on Docker Compose services.

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

Usage Guidelines4/5

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

Explicitly advises using the tool before any changes ('Use antes de qualquer alteração.'), providing clear usage context. However, it does not mention when to avoid using it or suggest alternatives for specific information needs.

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

inspect_databaseA

Retorna detalhes do banco de dados: credenciais, porta exposta, connection string e status.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesTipo do banco de dados
projectNameYesNome do projeto
serviceNameYesNome do serviço de banco

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It indicates that the tool returns sensitive data (credentials, connection string) and exposes the port, which implies a read operation. However, it does not explicitly state read-only behavior, authentication requirements, or any side effects. It adds some context but is not fully transparent.

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

Conciseness5/5

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

The description is a single sentence that directly states what the tool does without extraneous information. It is concise and front-loaded with the key action and result.

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

Completeness5/5

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

The tool has three required parameters with clear descriptions, and the description enumerates the return values (credentials, exposed port, connection string, status). Despite the lack of an output schema, the description sufficiently informs the agent of what to expect. All necessary information for a simple inspection tool is present.

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

Parameters3/5

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

Schema coverage is 100%: all three parameters (projectName, serviceName, type) are described in the input schema. The description does not add any additional meaning beyond what the schema provides, so it meets the baseline of 3.

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

Purpose5/5

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

The description 'Retorna detalhes do banco de dados: credenciais, porta exposta, connection string e status' clearly states the verb (retorna) and resource (detalhes do banco de dados), specifying what kind of details are returned. It distinguishes itself from sibling tools like 'inspect_service' and 'inspect_compose' by focusing specifically on database details including sensitive information.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'inspect_service' or 'get_service_logs'. The description does not mention prerequisites, context, or exclusions, leaving the agent to infer usage from the name alone.

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

inspect_serviceA

Retorna configuração completa de um serviço: source, env vars, deploy config, mounts, ports, domínios, recursos. Use SEMPRE antes de qualquer update para preservar o estado.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. Clearly states it returns configuration (read operation) and implies safety by advising use before updates. Lacks details on auth, rate limits, or response size, but for a read tool this is sufficient.

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

Conciseness5/5

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

Two sentences, front-loaded with output description, then clear usage instruction. No extraneous information, highly efficient.

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

Completeness4/5

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

Given the tool's comprehensive nature and many sibling tools, the description is adequate: it explains what is returned and when to use. Could mention it's the counterpart to update tools, but overall complete for a read tool without output schema.

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

Parameters3/5

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

Schema coverage is 100% for two simple params (projectName, serviceName) with descriptions. Description adds no extra meaning beyond what schema provides, which is acceptable baseline.

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

Purpose4/5

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

Description clearly states it returns complete configuration and lists specific aspects (source, env vars, etc.). Verb 'retorna' + resource 'serviço' is specific. However, it does not explicitly distinguish from sibling tools like get_env_vars or get_exposed_ports, but the comprehensive nature is implied.

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

Usage Guidelines4/5

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

Explicitly instructs to use before any update to preserve state ('Use SEMPRE antes de qualquer update para preservar o estado.'). Provides clear context and when to use, but no mention of when not to use or alternatives.

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

list_actionsA

Lista as ações/jobs em execução ou recentes (deploys, builds, restarts). A lista global guarda apenas uma janela curta — passe projectName/serviceName para filtrar no servidor e não perder ações de um serviço específico.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFiltrar por tipo de ação, ex: deployment (opcional)
limitNoNúmero máximo de ações a retornar (default: 50)
projectNameNoFiltrar por projeto (opcional)
serviceNameNoFiltrar por serviço (opcional)

TDQS

A4.2/5.0
Behavior3/5

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

The description discloses that the global list keeps only a short window of recent actions, which is a key behavioral trait. However, with no annotations provided, it lacks details on authentication, rate limits, or read-only nature. It partially compensates but is not fully transparent.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main purpose, and contains no filler. Every sentence earns its place, efficiently conveying key information.

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

Completeness4/5

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

Given no output schema, the description covers the tool's purpose and usage context well. It could be more complete by hinting at the return format (e.g., list of action objects), but for a simple listing tool with good parameter hints, it is mostly sufficient.

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

Parameters4/5

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

All parameters have schema descriptions (100% coverage). The description adds value by explaining why to use projectName/serviceName filters ('não perder ações'), providing context beyond the schema's basic field descriptions.

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

Purpose5/5

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

The description clearly states the verb 'Lista' and resource 'ações/jobs' with examples (deploys, builds, restarts). It distinguishes the tool from siblings like 'get_action' by implying a list operation, and adds scope context (global vs filtered).

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

Usage Guidelines4/5

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

The description advises using filters to avoid losing actions of a specific service due to the global list's short window. This provides clear when-to-use guidance, though it does not explicitly mention when not to use or alternative tools.

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

list_certificatesA

Lista os certificados SSL/TLS gerenciados pelo Easypanel (domínios cobertos, emissor, validade). Use para auditar HTTPS e renovações.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description implies a read-only operation by nature of 'lista', but does not explicitly confirm safety or side effects. It adequately describes the output content.

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

Conciseness5/5

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

Two concise sentences, front-loaded with core purpose and usage, no redundancy.

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

Completeness4/5

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

The description covers key return fields and use case, sufficient for a list tool with no output schema and no parameters.

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

Parameters4/5

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

No parameters exist; the description is not required to add parameter details. Baseline score of 4 is appropriate per guidelines.

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

Purpose5/5

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

The description clearly states the tool lists SSL/TLS certificates with specific attributes (covered domains, issuer, validity), distinguishing it from sibling tools like list_domains.

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

Usage Guidelines4/5

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

The description provides a direct use case ('auditar HTTPS e renovações'), guiding when to use, though it does not explicitly state when not to use or mention alternatives.

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

list_containersA

Lista os containers Docker em execução de um serviço (ID, nome, imagem, comando, status, portas). Use para descobrir o container antes de exec_in_container ou para checar se o serviço está rodando.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It implies a read-only operation by listing containers, but does not explicitly state that it has no side effects. However, the nature of listing is clear.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and output fields, followed by usage guidance. Every sentence earns its place with no wasted words.

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

Completeness4/5

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

For a list tool with no output schema, the description adequately specifies the return fields and usage context. It could be improved by mentioning typical status values or the format of returned data, but is sufficient for an AI agent.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters (projectName, serviceName). The description does not add additional parameter-level details beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool lists running Docker containers for a service, specifies which fields are returned (ID, nome, imagem, comando, status, portas), and contrasts with sibling tools like exec_in_container.

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

Usage Guidelines5/5

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

Explicitly states when to use: before exec_in_container or to check if service is running. Provides clear usage context and alternatives.

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

list_domainsB

Lista todos os domínios configurados em um serviço.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It only states 'lists' implying a read operation, but fails to mention any additional traits such as required permissions, pagination, error conditions, or whether the operation is safe (though likely read-only).

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

Conciseness5/5

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

The description is a single concise sentence that is front-loaded and contains no unnecessary words. Every word adds value.

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

Completeness3/5

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

The description is minimally adequate for a simple list tool with two required parameters, but it lacks information about the return format (e.g., what fields are returned for each domain). Since there is no output schema, the description should compensate, but it does not.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description does not add any meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states it 'lists all domains configured in a service' using a specific verb and resource. It distinguishes from sibling tools like add_domain or remove_domain, but could more explicitly indicate it is scoped to a particular service.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. With sibling tools like add_domain, remove_domain, and set_primary_domain, the description lacks any context about appropriate use cases or when to avoid it.

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

list_mountsA

Lista os volumes/mounts de um serviço (volumes nomeados, bind mounts e arquivos montados). Use para ver onde os dados persistentes do serviço estão.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It states the tool lists volumes, but does not disclose authentication needs, side effects, or rate limits. Adequate but minimal for a read operation.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the main action, no wasted words.

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

Completeness4/5

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

The description covers the tool's purpose and types of mounts, but given no output schema, it lacks details on the return format. Mostly complete for a simple list operation.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described ('Nome do projeto', 'Nome do serviço'). The description adds no extra meaning beyond the schema, so baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states it 'lists volumes/mounts of a service' with types (named volumes, bind mounts, mounted files), distinguishing it from siblings like 'create_mount' and 'list_containers'.

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

Usage Guidelines4/5

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

The description says 'Use para ver onde os dados persistentes do serviço estão', providing context but not explicitly excluding alternatives or stating when not to use it.

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

list_nodesA

Lista os nós do cluster Docker Swarm gerenciado pelo Easypanel (manager/worker, status, disponibilidade). Em servidor único retorna apenas o nó local.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided; description adds useful behavior trait (single-server returns only local node). No destructive effects implied.

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

Conciseness5/5

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

Two concise sentences with front-loaded purpose. No extraneous information.

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

Completeness5/5

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

For a simple no-parameter tool without output schema, description covers purpose and edge case (single server). Complete for its complexity.

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

Parameters4/5

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

No parameters exist; baseline score of 4 applies. Description adds no parameter info, which is appropriate.

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

Purpose5/5

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

Clearly states it lists nodes of the Docker Swarm cluster, specifying the information included (manager/worker, status, availability) and behavior on single server. Distinct from sibling list_* tools.

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

Usage Guidelines4/5

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

Implies usage when node information is needed. Not explicitly contrasted with siblings, but context is clear.

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

list_portsA

Lista os mapeamentos de porta de um serviço (porta publicada no host → porta do container). Complementa get_exposed_ports com a configuração completa de portas. Use para ver o que está exposto e em qual protocolo.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It implies read-only behavior (listing), but does not explicitly state non-destructiveness or any required permissions. Adequate but not fully transparent.

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

Conciseness5/5

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

Two concise sentences with no waste. Front-loaded with the core action and resource, then provides additional context.

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

Completeness4/5

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

For a simple listing tool with two clear parameters and no output schema, the description covers the main points. It could mention the output format (e.g., list of mappings) but is largely complete.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions. The description adds no additional parameter-level meaning beyond the schema, baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb (Lista) and resource (port mappings of a service), and explicitly distinguishes it from the sibling tool get_exposed_ports by noting it provides complete port configuration.

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

Usage Guidelines4/5

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

The description explains when to use the tool ('to see what is exposed and in which protocol') and positions it as a complement to get_exposed_ports. It lacks explicit 'when not to use' guidance but provides sufficient context.

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

list_projectsA

Lista todos os projetos do Easypanel com seus serviços e status. Use para descobrir o que existe no painel antes de operar.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must carry the full burden. It states the tool lists projects with services and status, implying a read-only operation, but does not disclose potential limitations (e.g., pagination, response format) or confirm idempotency. Basic information is present but lacks depth.

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

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences. Every word adds value, and the purpose is front-loaded. No wasted text.

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

Completeness4/5

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

For a simple list tool with no parameters and no output schema, the description provides adequate context: what it lists and why to use it. It mentions services and status, giving a reasonable expectation of the return object. Minor gaps exist (e.g., no mention of ordering or limits), but overall it is sufficient for its complexity.

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

Parameters4/5

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

The input schema has 0 parameters, so no parameter descriptions are needed. The description does not need to add meaning beyond what the schema provides, and it appropriately avoids discussing parameters. Baseline score for no parameters is 4.

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

Purpose5/5

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

The description clearly states the tool lists all projects with their services and status, using the specific verb 'Lista' and resource 'projetos'. It distinguishes from siblings like 'get_project' which retrieves a single project.

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

Usage Guidelines4/5

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

The description explicitly advises using this tool to discover what exists in the panel before operating, giving clear usage context. However, it does not explicitly mention when not to use it or compare to alternatives, leaving some room for improvement.

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

list_usersA

Lista os usuários do painel Easypanel (admin, e-mails, papéis).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It states it is a listing operation, which implies read-only behavior. However, it does not disclose any further behavioral traits such as authentication requirements, rate limits, or return format. For a simple list with no parameters, this is adequate but not rich.

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

Conciseness5/5

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

The description is a single concise sentence that immediately conveys the tool's purpose. It is front-loaded with the main action and resource, with no extraneous words.

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

Completeness4/5

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

Given the tool has no parameters, output schema, or annotations, the description sufficiently explains the tool's function. It could be enhanced by mentioning typical use cases or what the returned data includes, but it is adequate for the scope.

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

Parameters3/5

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

There are no parameters, so schema coverage is 100%. The description adds no parameter-level detail, which is appropriate given the absence of parameters. Baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool lists users of the Easypanel panel and specifies the types (admin, emails, roles). It effectively distinguishes from sibling list tools like list_projects or list_containers.

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

Usage Guidelines3/5

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

The description implies usage context by naming the resource, but it does not explicitly state when to use or avoid this tool versus alternatives. No exclusions or additional guidance provided.

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

prune_dockerA

Executa um "docker system prune" no servidor inteiro via Easypanel: remove containers parados, redes sem uso, cache de build e imagens não referenciadas para liberar espaço em disco. ⚠️ Ação destrutiva e de escopo GLOBAL (afeta todos os projetos do servidor, não um serviço específico) — exige confirm: "CONFIRMO". Use cleanup_docker_images para uma limpeza mais leve (só imagens não usadas).

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoObrigatório. Deve ser exatamente "CONFIRMO" para confirmar a limpeza global.

TDQS

A4.5/5.0
Behavior5/5

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

No annotations are provided, so the description carries full burden. It thoroughly discloses the destructive nature (`Ação destrutiva`), global scope (`escopo GLOBAL`), and the confirmation requirement. No contradictions with structured data.

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

Conciseness4/5

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

The description is a single paragraph, front-loaded with the action and purpose, includes a warning emoji, and provides the alternative. It is slightly verbose due to Portuguese phrasing, but overall efficient and well-structured.

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

Completeness4/5

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

Given no annotations, no output schema, and only one parameter, the description covers purpose, scope, safety, required input, and alternative. It does not explain return values, but that is not critical for a prune tool. The description is adequately complete for an agent to invoke it correctly.

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

Parameters3/5

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

Schema coverage is 100% and already describes the `confirm` parameter as obligatory with exact value 'CONFIRMO'. The description adds context about why it is needed (destructive action), but this is marginal added value. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly specifies the verb (executes `docker system prune`), the resource (entire server via Easypanel), and the effect (removes stopped containers, unused networks, build cache, unreferenced images). It also distinguishes from the sibling `cleanup_docker_images` by noting it is a global, heavier cleanup.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (for global cleanup) and when to use the alternative (`cleanup_docker_images` for lighter cleanup). Also provides a clear warning about destructive scope and the required confirmation string.

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

reboot_serverA

⚠️ CRÍTICO — Reinicia o SERVIDOR inteiro (máquina host). TODOS os serviços e o painel ficam fora do ar até o boot completar. Use apenas em manutenção planejada. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoObrigatório. Deve ser exatamente "CONFIRMO".

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It discloses the critical, destructive nature with a warning emoji, states that all services and the panel go down until boot completes, and requires a confirmation string. This is excellent transparency for a high-impact action.

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

Conciseness5/5

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

Two sentences with a leading warning emoji. Every word serves a purpose: what it does, impact, when to use, and required confirmation. No fluff. Front-loaded with critical information.

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

Completeness5/5

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

For a simple tool with one parameter, the description covers all necessary aspects: purpose, impact, usage context, and parameter requirement. No output schema needed; the outcome is implicit. Complete for safe decision-making.

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

Parameters4/5

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

Schema coverage is 100% as the confirm parameter has a description in the schema. The description reinforces that the parameter must be exactly 'CONFIRMO' and implies it is mandatory despite the schema's required array being empty. This adds critical context about enforcement.

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

Purpose5/5

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

The description clearly states it reboots the entire host machine, distinguishing it from sibling tools like restart_panel and restart_service. The wording 'Reinicia o SERVIDOR inteiro' and the warning about all services going down make the purpose explicit.

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

Usage Guidelines4/5

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

Provides explicit guidance: 'Use apenas em manutenção planejada' (only for planned maintenance). It implies when not to use by highlighting the drastic impact. Could be improved by explicitly naming alternative tools for less severe restarts, but the context makes the guidance clear.

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

remove_domainA

⚠️ Remove permanentemente um domínio. O tráfego para esse host parará de funcionar. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesConfirmação obrigatória. Deve ser exatamente "CONFIRMO"
domainIdYesID do domínio a remover (obtido via list_domains)
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4.2/5.0
Behavior4/5

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

Despite no annotations, the description warns of permanence and traffic stoppage, and mandates a specific confirmation. It does not detail side effects on related resources, but is clear for a destructive action.

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

Conciseness5/5

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

The description is a single sentence with an emoji warning, extremely concise and front-loaded with the most critical information (permanence, effect, confirmation).

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

Completeness4/5

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

For a destructive tool with no output schema and no annotations, the description covers purpose, consequence, and confirmation requirement. It could mention how to obtain domainId (though schema references list_domains), but is reasonably complete.

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

Parameters3/5

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

Schema coverage is 100% with per-parameter descriptions; the tool description adds overall context but only marginally improves parameter understanding beyond the schema's own explanations.

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

Purpose5/5

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

The description clearly states the action is to permanently remove a domain, with explicit consequence ('traffic will stop'), and distinguishes from siblings like add_domain and list_domains.

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

Usage Guidelines4/5

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

The description provides clear context (usable when permanent removal is needed) and specifies the required confirmation string, though it does not explicitly list when not to use or suggest alternatives.

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

rename_serviceA

⚠️ Renomeia ou move um serviço. Webhooks, DNS e referências internas que usam o nome antigo deixarão de funcionar. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesConfirmação obrigatória. Deve ser exatamente "CONFIRMO"
projectNameYesProjeto atual do serviço
serviceNameYesNome atual do serviço
newProjectNameYesNovo projeto (pode ser o mesmo)
newServiceNameYesNovo nome do serviço

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description adequately discloses that renaming will break webhooks, DNS, and internal references, and that confirmation is required. It does not mention reversibility or impact on running processes, but the warning is substantial.

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

Conciseness5/5

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

The description is a single, well-structured sentence with a front-loaded warning and the confirmation requirement. Every word earns its place; no wasted text.

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

Completeness4/5

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

Given the tool has 5 required parameters, no output schema, and no annotations, the description covers the core purpose, key behavioral impact, and a clear usage requirement. It could mention if the operation is asynchronous or return status, but it is largely complete.

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

Parameters3/5

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

Schema coverage is 100% and the schema provides descriptions for all 5 parameters. The description adds minimal extra meaning beyond schema, mainly repeating the confirmation requirement. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool renames or moves a service ('Renomeia ou move um serviço'), which is a specific verb and resource. It is distinct from sibling tools like create_service, destroy_service, or restart_service.

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

Usage Guidelines3/5

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

The description warns about breaking webhooks, DNS, and internal references, and requires confirmation. However, it does not explicitly state when to use versus alternatives or when not to use.

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

restart_panelA

⚠️ Reinicia o próprio Easypanel. O painel/API ficam brevemente indisponíveis; os serviços hospedados continuam rodando. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNoObrigatório. Deve ser exatamente "CONFIRMO".

TDQS

A4.2/5.0
Behavior4/5

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

Discloses that panel and API become briefly unavailable while services remain running, and requires confirmation. Without annotations, the description effectively communicates the tool's impact, though duration and permissions are not specified.

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

Conciseness5/5

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

Two concise sentences: first states the action and impact, second specifies the requirement. No unnecessary words, perfectly front-loaded.

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

Completeness4/5

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

For a simple restart tool with one parameter and no output schema, the description provides purpose, impact, and a clear usage requirement. It adequately covers the expected context without gaps.

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

Parameters3/5

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

Schema has 100% coverage and already describes the confirm parameter as mandatory with exact value. The description does not add new meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states the verb 'Reinicia' and resource 'Easypanel', specifying that the panel/API become briefly unavailable but services continue, which distinguishes it from service-level restart tools like restart_service.

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

Usage Guidelines4/5

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

Explicitly requires the confirmation string 'CONFIRMO', giving a clear usage prerequisite. Implicitly indicates when to use (restart the panel) but does not explicitly exclude alternative scenarios.

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

restart_serviceA

Reinicia o serviço. Causa breve indisponibilidade. Funciona para app E compose — em compose, reinicia via redeploy (docker compose up recria os containers).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the restart causes brief unavailability and explains the compose redeploy mechanism. This adds valuable behavioral context 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.

Conciseness5/5

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

The description is two sentences long, front-loaded with the action and effect, and followed by a clarifying detail about compose mode. No extraneous words, every sentence serves a purpose.

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

Completeness4/5

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

The description covers the primary behavior (restart) and its side effect (brief unavailability), and adapts for compose vs app. It does not describe return values (no output schema), but for a simple restart tool this is adequate. Missing details like permissions or prerequisites, but overall complete enough.

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

Parameters3/5

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

Schema description coverage is 100%, with both parameters having descriptions in the schema. The tool description does not add additional meaning or context for the parameters, so it meets the baseline.

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

Purpose5/5

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

The description clearly states the verb 'Reinicia' (restarts) and the resource 'serviço' (service). It distinguishes from sibling tools like start_service and stop_service by explicitly mentioning restart behavior, and further differentiates between app and compose modes.

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

Usage Guidelines4/5

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

The description indicates that this tool should be used to restart a service, causing brief unavailability. It acknowledges different behaviors for app and compose deployments, but does not provide explicit when-not-to-use or alternatives compared to start/stop services.

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

set_env_varA

Adiciona ou atualiza UMA variável de ambiente. Lê o estado atual antes de escrever — não apaga outras variáveis.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesNome da variável (ex: DATABASE_URL)
valueYesValor da variável
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool reads current state before writing and does not delete other variables, which are key behavioral traits. However, it doesn't mention idempotency, success/failure behavior, or permission requirements.

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

Conciseness5/5

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

Two sentences, no wasted words. Essential information is front-loaded. Perfectly concise for the tool's simplicity.

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

Completeness4/5

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

Given no output schema and simple mutation, the description is complete enough. It covers the core behavioral and safety aspects. Could mention return value or error cases for full completeness, but adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents each parameter. The description adds no parameter-specific details beyond what the schema provides. Baseline 3 is appropriate since the description does not enhance parameter understanding.

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

Purpose5/5

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

Description clearly states the tool adds or updates exactly ONE environment variable. It uses specific verb+resource ('Adiciona ou atualiza UMA variável de ambiente') and distinguishes from sibling tools like delete_env_var and get_env_vars.

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

Usage Guidelines3/5

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

Description implies usage for setting a single environment variable incrementally, but lacks explicit guidance on when to use this vs alternatives like batch operations or when not to use. The context about reading current state helps, but no exclusions or alternatives mentioned.

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

set_primary_domainA

Define qual domínio é o primário (usado como URL principal do serviço).

ParametersJSON Schema
NameRequiredDescriptionDefault
domainIdYesID do domínio a tornar primário (obtido via list_domains)
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description lacks behavioral details such as whether the action is destructive (overwrites previous primary), requires specific permissions, or has side effects. The description only states the action without additional context.

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

Conciseness5/5

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

The description is a single sentence that is highly concise and front-loaded with the core action. Every word is essential; no extraneous content.

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

Completeness2/5

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

Given the tool has 3 required parameters, no output schema, and no annotations, the description is too minimal. It does not explain what happens to the old primary domain, error cases, or return behavior. For a mutation tool, this lacks completeness.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by noting that domainId is obtained via list_domains (implied reference to sibling tool), which provides helpful context beyond the schema description. However, it does not detail other parameter formats or constraints.

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

Purpose5/5

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

The description clearly states the tool's purpose: defining which domain is primary (the main URL of the service). It uses a specific verb 'Define' and resource 'domínio primário', distinguishing it from sibling tools like add_domain, remove_domain, and list_domains.

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

Usage Guidelines3/5

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

The description implies usage after adding domains but does not explicitly state when to use this tool versus alternatives. No exclusions or prerequisites are mentioned; guidance is minimal.

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

set_service_notesB

Salva notas/anotações no serviço (markdown suportado).

ParametersJSON Schema
NameRequiredDescriptionDefault
notesYesConteúdo das notas (markdown)
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the action and markdown support, but does not disclose behavioral traits such as whether notes are appended or overwritten, authorization needs, size limits, or side effects.

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

Conciseness4/5

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

Extremely concise single sentence with no wasted words. However, it could be slightly more structured by including usage hints.

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

Completeness3/5

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

For a simple write tool with three parameters and no output schema, the description is mostly adequate but lacks behavioral context and usage guidance, making it a minimum viable completeness.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for all three parameters. The description adds the markdown detail, which is already in the schema's notes parameter description, so minimal additional meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the verb ('Salva') and resource ('notas/anotações no serviço'), and supports markdown. It is specific and distinguishes from the sibling tool 'get_service_notes' by being the write counterpart.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. It does not mention that 'get_service_notes' reads notes, nor does it provide context on overwrites vs appends or prerequisites.

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

set_service_resourcesA

Define limites e reservas de CPU e memória do serviço. Envie só os campos que quer alterar — os omitidos mantêm o valor atual (0 = sem limite). Memória em MB, CPU em núcleos (0.5 = meio núcleo). Aplica no próximo deploy/restart.

ParametersJSON Schema
NameRequiredDescriptionDefault
cpuLimitNoLimite de CPU (1 = 1 núcleo)
memoryLimitNoLimite de memória em MB (hard cap)
projectNameYesNome do projeto
serviceNameYesNome do serviço
cpuReservationNoReserva de CPU (1 = 1 núcleo)
memoryReservationNoReserva de memória em MB (soft)

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It discloses that changes apply on next deploy/restart and that 0 means no limit. It does not cover permissions or reversibility, but the disclosed behavior is adequate.

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

Conciseness5/5

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

Three sentences, no fluff. Purpose is front-loaded, followed by usage instruction and behavioral effect.

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

Completeness5/5

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

All 6 parameters are documented in schema. Description covers purpose, usage pattern, units, and timing. No output schema needed. Complete for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds minor clarification on units and examples (0.5 = half core) but does not significantly add beyond the schema.

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

Purpose5/5

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

The description clearly states the verb (define) and resource (service resources). It distinguishes from sibling tools by specifying it sets CPU and memory limits, which is unique among the listed tools.

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

Usage Guidelines4/5

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

The description gives explicit guidance on partial updates (send only fields to change) and the effect timing (applies on next deploy/restart). However, it does not mention when not to use or provide explicit alternatives.

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

set_source_githubB

Configura a source do serviço para um repositório GitHub. O repo deve estar conectado no Easypanel (Settings > GitHub).

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesBranch ou tag (ex: main, master, v1.0.0)
pathNoCaminho dentro do repo onde está o app (use '/' para raiz)/
repoYesNome do repositório
ownerYesDono do repositório (usuário ou org no GitHub)
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the basic action and a prerequisite, omitting details about side effects (e.g., triggering redeploy, reverting) or error behavior.

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

Conciseness5/5

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

The description is two concise sentences with no extraneous information, effectively front-loading the core purpose and a key prerequisite.

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

Completeness2/5

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

Despite having 6 parameters and being a configuration action, the description lacks context about the operation's impact (e.g., effect on existing source, deploy trigger, return value). Without an output schema, more explanation is needed.

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

Parameters3/5

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

All 6 parameters are documented in the input schema (100% coverage), meeting the baseline. The description adds no additional semantic value or guidance beyond the schema.

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

Purpose4/5

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

The description clearly specifies the action ('configura a source') and resource ('repositório GitHub'), distinguishing it from other source-setting tools like set_source_image. However, it does not explicitly name sibling tools for differentiation.

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

Usage Guidelines3/5

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

The description includes a prerequisite ('repo must be connected in Easypanel'), providing a usage condition. But it lacks explicit when-not-to-use guidance or alternatives (e.g., when to use set_source_image instead).

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

set_source_imageC

Configura a source do serviço para uma imagem Docker.

ParametersJSON Schema
NameRequiredDescriptionDefault
imageYesImagem Docker (ex: nginx:latest, ghcr.io/user/app:tag)
passwordNoSenha do registry (para imagens privadas)
usernameNoUsuário do registry (para imagens privadas)
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

C2.8/5.0
Behavior2/5

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

No annotations exist, and the description does not disclose side effects (e.g., whether it restarts the service, requires authorization, or overwrites existing configuration). It only states the action without behavioral context.

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

Conciseness3/5

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

The description is a single concise sentence but is too sparse to be maximally helpful. It is front-loaded but lacks substantive detail.

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

Completeness2/5

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

With 5 parameters, no annotations, and no output schema, the brief description leaves gaps (e.g., what happens on execution, success output, or error scenarios). It is incomplete for an agent to use reliably.

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

Parameters3/5

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

Schema coverage is 100% with parameter descriptions already present. The description adds no additional meaning beyond what the schema provides, meeting the baseline but not exceeding it.

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

Purpose4/5

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

The description clearly states the verb 'configures' and the resource 'service source for a Docker image'. It distinguishes from siblings like 'set_source_github' by specifying the image source type.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites, no exclusions provided.

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

start_serviceA

Inicia um serviço que está parado. Funciona para app e compose (em compose, equivale a um redeploy/compose up).

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that for compose it is equivalent to a redeploy/compose up, which adds important behavioral context beyond just 'start'. It does not, however, mention potential failure conditions or side effects.

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

Conciseness5/5

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

The description is a single sentence with a parenthetical clarification, no redundant words. Front-loaded with the core action.

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

Completeness4/5

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

For a simple tool with two string parameters and no output schema, the description adequately explains the behavior. It could mention return values or error states, but the current level is sufficient for most agents.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters ('Nome do projeto' and 'Nome do serviço'). The tool description adds no additional meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'starts a stopped service' and distinguishes behavior for app and compose types, differentiating it from sibling tools like stop_service, restart_service, and deploy_service.

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

Usage Guidelines3/5

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

The description implies use only for stopped services but does not explicitly state when not to use or mention alternatives among sibling tools. No guidance on prerequisites or context.

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

stop_serviceA

⚠️ PARA o serviço em produção. Usuários não conseguirão acessar enquanto parado. Requer confirm: "CONFIRMO".

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesConfirmação obrigatória. Deve ser exatamente "CONFIRMO"
projectNameYesNome do projeto
serviceNameYesNome do serviço

TDQS

A3.8/5.0
Behavior4/5

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

Since no annotations are provided, the description carries full weight. It warns of user access loss and requires confirmation, disclosing key behavioral traits for a destructive action.

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

Conciseness5/5

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

The description is a single sentence with an emoji warning, efficiently conveying purpose and the confirmation constraint with no wasted words.

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

Completeness4/5

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

For a simple destructive action with 3 required parameters and no output schema, the description is sufficiently complete, covering purpose, impact, and confirmation.

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

Parameters3/5

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

All 3 parameters are fully described in the schema (100% coverage). The description adds no new meaning beyond the schema for projectName and serviceName, but reinforces the confirm requirement.

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

Purpose5/5

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

The description uses a specific verb 'STOPS' (PARA) and identifies the resource 'production service', clearly distinguishing it from siblings like start_service and restart_service.

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

Usage Guidelines2/5

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

The description does not specify when to use or avoid this tool, nor does it mention alternatives. It only implies usage for stopping a production service.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv3.0.0
    • Addedeasypanel_raw
    • Removedtrpc_raw
  2. 1 tool updatev2.0.0
    • Changedtrpc_raw1 field changed
      • changedInput schema / properties / isMutation / description
        Previous value: -"true para operações de escrita (POST), false para leitura (GET, padrão). Mutations exigem confirm."New value: +"true para operações de escrita, false para leitura (padrão). Mutations exigem confirm. Em painéis 2.31+ o client valida contra o OpenAPI do painel e recusa mutations chamadas como leitura."
  3. 57 tool updatesv0.1.0
    • First observedadd_domain
    • First observedcleanup_docker_images
    • First observedcreate_compose
    • First observedcreate_database
    • First observedcreate_mount
    • First observedcreate_port
    • First observedcreate_project
    • First observedcreate_service
    • First observeddelete_env_var
    • First observeddelete_project
    • First observeddeploy_compose
    • First observeddeploy_service
    • First observeddestroy_database
    • First observeddestroy_service
    • First observeddisable_github_deploy
    • First observedenable_github_deploy
    • First observedexec_in_container
    • First observedget_action
    • First observedget_build_logs
    • First observedget_docker_events
    • First observedget_docker_stats
    • First observedget_env_vars
    • First observedget_exposed_ports
    • First observedget_project
    • First observedget_service_error
    • First observedget_service_logs
    • First observedget_service_notes
    • First observedget_service_stats
    • First observedget_storage_stats
    • First observedget_system_stats
    • First observedinspect_compose
    • First observedinspect_database
    • First observedinspect_service
    • First observedlist_actions
    • First observedlist_certificates
    • First observedlist_containers
    • First observedlist_domains
    • First observedlist_mounts
    • First observedlist_nodes
    • First observedlist_ports
    • First observedlist_projects
    • First observedlist_users
    • First observedprune_docker
    • First observedreboot_server
    • First observedremove_domain
    • First observedrename_service
    • First observedrestart_panel
    • First observedrestart_service
    • First observedset_env_var
    • First observedset_primary_domain
    • First observedset_service_notes
    • First observedset_service_resources
    • First observedset_source_github
    • First observedset_source_image
    • First observedstart_service
    • First observedstop_service
    • First observedtrpc_raw

TDQS

B3.4/5.0

Scored across 57 tools

Disambiguation3/5

Most tools are clearly scoped by resource and action, but there are real overlaps: deploy_service already handles compose while deploy_compose also exists, and stats/port/log cleanup tools have close boundaries. The descriptions help, but an agent could still pick the wrong tool in several situations.

Naming Consistency4/5

Names overwhelmingly follow a snake_case verb_noun pattern with consistent list/get/create/set/delete/destroy prefixes. Minor deviations include easypanel_raw being noun-first and the mix of get_project, inspect_service, and inspect_compose, but the overall style is predictable.

Tool Count2/5

57 tools is far above the comfortable agent-facing range and makes selection and context usage heavy. Although the Easypanel domain is broad and most tools are individually purposeful, several could be consolidated or left to easypanel_raw to reduce surface area.

Completeness3/5

Core workflows like project/service lifecycle, env vars, domains, logs, and deploys are well covered. However, there is no dedicated set_compose_file tool, mounts and ports cannot be removed directly, and most admin operations are read-only, so agents must fall back to easypanel_raw for notable gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    MCP server that builds itself by creating new tools as needed based on user requests (Requires restart of Claude Desktop to use newly created tools).
    4
    25
    -
  • A
    license
    B
    quality
    C
    maintenance
    MCP server for EasyPanel that enables AI agents to manage servers, projects, services, databases, and domains via 40 curated tools or raw tRPC access to all 347 API procedures.
    42
    10 npm
    4
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    MCP server for Cloudways enabling server management, app deployment, backups, SSL, environment variables, and monitoring via Claude Code.
    12
    -