Skip to main content
Glama
eduardoddddddd

DesktopCommanderPy

DesktopCommanderPy

Servidor MCP propio en Python — alternativa segura, extensible y 100% tuya a Desktop Commander.

Python 3.11+ MCP FastMCP Tests Tools Licencia: MIT


¿Qué es esto?

DesktopCommanderPy es un servidor Model Context Protocol (MCP) escrito completamente en Python que da a Claude (o cualquier IA compatible con MCP) acceso controlado a tu máquina local y a tus sistemas externos.

Módulos actuales:

  • Filesystem — lectura, escritura, búsqueda, edición quirúrgica

  • Terminal — ejecución de comandos bloqueantes y streaming

  • Procesos — gestión con psutil y sesiones interactivas (REPLs)

  • SAP HANA Cloud — conexión, consultas, administración vía hdbcli

Construido como alternativa personal a Desktop Commander:

  • Control total — cada línea de código es tuya, sin cajas negras

  • Seguridad desde el principio — sandbox de rutas, blacklist de comandos, credenciales por variables de entorno

  • Extensible — añadir un módulo nuevo es copiar un fichero y registrar las tools en server.py

  • Multiplataforma — Windows (PowerShell) primario, Linux/macOS con detección automática


Related MCP server: filesystem_sandbox

Estado actual

Componente

Estado

Tests

✅ 32/32 passing

Integración Claude Desktop

✅ Conectado y verificado (2026-03-26)

Protocolo MCP negociado

2025-11-25

FastMCP

3.1.1

Python

3.12.10

hdbcli (HANA)

2.28.17

Tools disponibles

28


Estructura del proyecto

DesktopCommanderPy/
├── main.py                          # Entry point: stdio o HTTP/SSE
├── pyproject.toml                   # Dependencias, build con hatchling
├── config/
│   ├── security_config.yaml         # Sandbox: dirs, blacklist, límites
│   ├── hana_config.yaml             # Credenciales HANA (NO en git, ver .gitignore)
│   └── hana_config.yaml.example     # Plantilla de configuración HANA
├── core/
│   ├── server.py                    # FastMCP + registro de las 28 tools
│   └── tools/
│       ├── filesystem.py            # 9 tools de sistema de archivos
│       ├── terminal.py              # 2 tools de terminal
│       ├── process.py               # 2 tools de procesos (psutil)
│       ├── process_sessions.py      # 5 tools de sesiones interactivas
│       ├── session_manager.py       # SessionManager con asyncio.Queue
│       ├── hana.py                  # 8 tools SAP HANA Cloud
│       └── utils.py                 # Seguridad, config, plataforma
└── tests/
    └── test_basic.py                # 15 tests: seguridad, filesystem, stdio

Instalación

cd C:\Users\Edu\DesktopCommanderPy
py -3.12 -m venv .venv
.venv\Scripts\activate
pip install -e .
pip install hdbcli              # módulo SAP HANA Cloud
pip install pytest pytest-asyncio   # solo para tests

Configuración de seguridad

config/security_config.yaml:

security:
  allowed_directories:
    - "C:/Users/Edu/Documents"
    - "C:/Users/Edu/Desktop"
    - "C:/Users/Edu/DesktopCommanderPy"
    - "C:/Users/Edu/VerbaSant"
    # añadir más según necesidad

  blocked_commands:
    - "format"
    - "diskpart"
    - "net user"
    - "reg add"
    - "reg delete"
    - "shutdown"

  write_blocked_extensions: [".exe", ".dll", ".sys"]
  max_file_size_bytes: 10485760
  max_read_lines: 2000

terminal:
  default_timeout_seconds: 30
  max_output_chars: 500000

⚠️ Si allowed_directories está vacío, el sandbox está desactivado.


Arrancar el servidor

py main.py                        # stdio — Claude Desktop
py main.py --http --port 8080     # HTTP/SSE — clientes remotos
py main.py --log-level DEBUG      # con logs detallados

Configurar en Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "DesktopCommanderPy": {
      "command": "C:\\Users\\Edu\\DesktopCommanderPy\\.venv\\Scripts\\python.exe",
      "args": ["C:\\Users\\Edu\\DesktopCommanderPy\\main.py"],
      "env": {
        "PYTHONUTF8": "1",
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

Para añadir las credenciales HANA directamente aquí (opción recomendada):

"env": {
  "PYTHONUTF8": "1",
  "PYTHONIOENCODING": "utf-8",
  "HANA_HOST": "tu-instancia.hanacloud.ondemand.com",
  "HANA_PORT": "443",
  "HANA_USER": "DBADMIN",
  "HANA_PASSWORD": "tu_password",
  "HANA_SCHEMA": ""
}

Las 28 tools MCP disponibles

Filesystem + Config (11 tools)

Tool

Descripción

read_file

Lee fichero con paginación offset/length

write_file

Escribe o añade contenido. Crea dirs intermedios.

edit_file_diff

Edición quirúrgica find/replace. Solo el fragmento cambiado.

list_directory

Lista con tamaños. Soporta recursivo con max_depth.

search_files

Búsqueda por glob (*.py) y/o contenido. fnmatch nativo.

get_file_info

Metadatos + preview primeras 10 líneas.

create_directory

mkdir -p sandbox-aware.

move_file

Mueve/renombra dentro del sandbox.

read_multiple_files

Lee N ficheros en una llamada.

get_config

Devuelve la configuración runtime activa con tipos (string, number, boolean, array).

set_config_value

Actualiza y persiste claves de configuración runtime sin editar YAML a mano.

Terminal (2 tools)

Tool

Descripción

execute_command

Ejecuta y captura stdout+stderr. Timeout configurable.

execute_command_streaming

Recoge línea a línea. Para pip install, builds, etc.

Gestión de procesos psutil (2 tools)

Tool

Descripción

list_processes

Tabla PID/nombre/CPU%/memoria. Filtrable y ordenable.

kill_process

SIGTERM (graceful) o SIGKILL (forzado).

Sesiones interactivas (5 tools) ⭐

Tool

Descripción

start_process

Arranca proceso con stdin PIPE. Devuelve PID + output inicial.

read_process_output

Lee buffer acumulado sin bloquear.

interact_with_process

Envía texto al stdin, espera respuesta. REPLs, shells.

list_sessions

Tabla de sesiones: PID, estado, tiempo activo, líneas.

force_terminate

SIGKILL + limpia sesión del registro.

Flujo ejemplo — REPL Python interactivo:

start_process("python -i")
  → [PID 4521] Process started (running)

interact_with_process(4521, "import pyswisseph as swe")
interact_with_process(4521, "print(swe.calc_ut(2460000, 0))")
  → ((189.43, 1.0, 0.0, ...), 0)

interact_with_process(4521, "exit()")

SAP HANA Cloud — hdbcli (8 tools) 🔷

Tool

Descripción

hana_test_connection

Verifica credenciales. Devuelve versión, usuario, schema, SSL.

hana_execute_query

SELECT / DML / CALL con tabla formateada. Límite de filas.

hana_execute_ddl

CREATE/ALTER/DROP. Requiere confirm=True explícito.

hana_list_schemas

Schemas visibles. Marca los de sistema (_SYS*, SYS, PUBLIC).

hana_list_tables

Tablas, vistas, Calc Views con nº columnas y tipo.

hana_describe_table

Estructura: tipo, longitud, nullable, PK, comentario.

hana_get_row_count

Filas de N tablas vía M_TABLE_STATISTICS (rápido, sin full scan).

hana_get_system_info

Memoria usada/límite, conexiones activas, alertas del sistema.


Configurar credenciales SAP HANA Cloud

Las credenciales nunca se hardcodean en código y config/hana_config.yaml está en .gitignore para que nunca lleguen a GitHub.

Opción A — Variables de entorno en claude_desktop_config.json (recomendada)

Ventajas: no hay fichero de credenciales en disco, fácil de cambiar por entorno.

"env": {
  "HANA_HOST": "xxxxxxxx-xxxx.hana.trial-us10.hanacloud.ondemand.com",
  "HANA_PORT": "443",
  "HANA_USER": "DBADMIN",
  "HANA_PASSWORD": "tu_password_aqui",
  "HANA_SCHEMA": ""
}

Opción B — Fichero local config/hana_config.yaml

hana:
  host: "xxxxxxxx-xxxx.hana.trial-us10.hanacloud.ondemand.com"
  port: 443
  user: "DBADMIN"
  password: "tu_password_aqui"
  schema: ""
  encrypt: true
  sslValidateCertificate: true
  max_rows: 200

Copiar la plantilla y rellenar:

copy config\hana_config.yaml.example config\hana_config.yaml
# editar hana_config.yaml con datos reales

Cómo obtener el host en BTP Free Tier

  1. Entra en BTP Cockpit

  2. Selecciona tu subaccount → Instances and Subscriptions

  3. Busca tu instancia SAP HANA Cloud

  4. Haz clic en los tres puntos → Open in SAP HANA Database Explorer

  5. El host está en la barra de conexión: xxxxxxxx-xxxx.hana.trial-us10.hanacloud.ondemand.com (el puerto siempre es 443 en HANA Cloud)

Verificar la conexión tras configurar

Reinicia Claude Desktop y ejecuta:

hana_test_connection()

Respuesta esperada:

✓ Conexión exitosa a SAP HANA Cloud
  Host:           tu-instancia.hanacloud.ondemand.com:443
  Usuario:        DBADMIN
  Schema actual:  DBADMIN
  Versión HANA:   4.00.000.00.1234567890
  Conexiones propias activas: 1
  SSL/TLS:        activado

Flujo típico de exploración

hana_test_connection()                           → verifica credenciales
hana_get_system_info()                           → estado del Free Tier
hana_list_schemas()                              → schemas disponibles
hana_list_tables("DBADMIN")                      → tablas del schema
hana_describe_table("MI_TABLA", "DBADMIN")       → estructura de la tabla
hana_get_row_count("ORDERS,ITEMS,CUSTOMERS")     → filas sin full scan
hana_execute_query("SELECT TOP 10 * FROM ORDERS") → datos
hana_execute_ddl("CREATE TABLE TEST (ID INT)", confirm=True)

Límites del Free Tier a tener en cuenta

  • Memoria: 30 GB RAM total (monitorizeable con hana_get_system_info)

  • Almacenamiento: 120 GB disco

  • Conexiones simultáneas: limitadas — hana_get_system_info muestra el contador

  • La instancia se para sola si no hay actividad en un período — hana_test_connection te dirá si está caída con un error de conexión claro


Tests

.venv\Scripts\pytest.exe tests/ -v

Salida esperada: 32 passed in ~2-3s

Suite

Tests

Qué cubre

TestPathSecurity

4

Sandbox de rutas permitidas

TestCommandSecurity

3

Blacklist de comandos peligrosos

TestFilesystemTools

7

read/write/edit/list/search/info

TestStdioTransport

1

Integridad del canal JSON-RPC (crítico)

TestConfigTools

2

Config runtime tipada y persistencia


Guía operacional — patrones y limitaciones conocidas

Sección de referencia rápida para uso desde Claude Desktop.


P1 — execute_command no encuentra python, python3 ni cmd

Síntoma: python: command not found o similar al ejecutar comandos Python.

Causa: Claude Desktop arranca con un PATH minimal de escritorio, no el PATH completo de la sesión de usuario. execute_command hereda ese PATH restringido.

Solución A (fix permanente, ya integrado): build_subprocess_env() en utils.py enriquece automáticamente el PATH del subprocess con los directorios del venv activo, el Python base y el launcher py.exe. Desde la versión actual esto es transparente.

Solución B (si A falla): usar Desktop Commander:start_process con py explícito:

Desktop Commander:start_process { command: "py script.py", timeout_ms: 25000 }

P2 — C:/temp/ bloqueado para escritura

Causa: security_config.yaml tiene una lista explícita de allowed_directories. C:\temp no está en ella, no es un bug.

Directorios permitidos en este sistema:

  • C:/Users/Edu/Documents (y subdirectorios, incluido ClaudeWork)

  • C:/Users/Edu/Desktop

  • C:/Users/Edu/Downloads

  • C:/Users/Edu/DesktopCommanderPy

  • C:/Users/Edu/VerbaSant

  • C:/Users/Edu/AstroExtracto

  • C:/Users/Edu/AstroCompendium

  • C:/Users/Edu/MetaAstrum

  • C:/Users/Edu/VTTs

  • C:/Users/Edu/astro_cartas

Destino por defecto recomendado: C:/Users/Edu/Documents/


P2b — Paths relativos, ~ y Windows mezclan mal separadores

Estado actual: resuelto en la capa runtime nueva.

Ahora todas las tools principales pasan por un helper común que:

  • expande ~

  • resuelve rutas relativas contra el cwd

  • normaliza separadores y casing en Windows

  • usa resolve(strict=False) antes de validar sandbox

Eso evita muchos falsos negativos típicos de Windows cuando una ruta entra como: ~/algo.txt, .\archivo.py, C:/Users/Edu/... o C:\Users\Edu\...

Implementación: core/tools/utils.py → resolve_and_validate_path()


P2c — Config stringly-typed: true/false, números y arrays acababan mal

Estado actual: resuelto con configuración runtime central.

Antes, cada módulo podía releer YAML y varias flags acababan tratándose como texto. Ahora existe una única fuente de verdad:

  • core/runtime_config.py

  • core/tools/config_tools.py

Y se exponen dos tools MCP nuevas:

get_config()
set_config_value(key, value)

Los tipos se preservan como tipos Python reales:

  • bool

  • int

  • str

  • list[str]

Esto hace el servidor mucho más predecible y evita bugs por valores tipo "false" o "45" tratados como strings.


P3 — Desktop Commander:write_file (Node.js) bloquea la palabra dd

Causa: El servidor Node.js Desktop Commander tiene su propio blacklist de comandos de shell. La cadena dd coincide como substring, bloqueando cualquier fichero cuyo contenido incluya esa secuencia (nombres de variable, paths, texto).

Solución: usar DesktopCommanderPy:write_file para escribir ficheros con contenido arbitrario — no tiene ese filtro. Reservar Desktop Commander:write_file solo si DesktopCommanderPy no responde por permisos de path.


P4 — Encoding: UnicodeEncodeError con caracteres especiales en Windows

Causa: La consola de Windows usa cp1252 por defecto. Caracteres como , °, causan UnicodeEncodeError si el script no fuerza UTF-8.

Solución A (preferida, ya integrada): build_subprocess_env() fija PYTHONUTF8=1 y PYTHONIOENCODING=utf-8 en todos los subprocesos.

Solución B: lanzar con py -X utf8 script.py.

Solución C: añadir al inicio del script:

import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')

Solución D (fallback): evitar caracteres especiales en el output: usar d en vez de °, <= en vez de , -> en vez de .


P5 — REPL interactivo frágil: no pegar funciones multilínea

Síntoma: errores de indentación o sintaxis al enviar bloques de código al REPL (py -i + interact_with_process).

Causa: el protocolo de sesiones interactivas no maneja bien los bloques multilínea — el REPL ve las líneas de forma fragmentada.

Solución: siempre escribir el script completo a fichero y ejecutarlo de una sola vez. Nunca intentar pegar funciones o clases enteras en el REPL.

Patrón correcto:

DesktopCommanderPy:write_file  → C:/Users/Edu/Documents/script.py
Desktop Commander:start_process → py -X utf8 C:/Users/Edu/Documents/script.py

P6 — present_files solo funciona con rutas /mnt/... del contenedor Claude

Causa: present_files genera enlaces de descarga solo para el filesystem interno del contenedor Claude (/mnt/user-data/outputs/). No puede crear enlaces para C:\Users\Edu\....

Solución: indicar al usuario la ruta local donde está guardado el fichero. No hay workaround disponible desde el servidor MCP.


🐛 Bugs críticos resueltos — diario de guerra

Bug 1 — spawn uv ENOENT: Claude Desktop no arrancaba

Período: 8 de marzo al 26 de marzo de 2026.

Síntomas:

  • %APPDATA%\Claude\logs\mcp-server-*.logspawn uv ENOENT en bucle

  • main1.logRequest timed out: isGuestConnected repetido cada pocos segundos

  • Claude Desktop colgado en la pantalla de carga

  • Más de 10 procesos de Claude bloqueados en segundo plano (detectados por Gemini CLI)

Causa raíz: El MCP oficial Desktop Commander usa uv para gestionar su entorno Python. uv no estaba instalado o no estaba en el PATH que hereda Claude Desktop al arrancar como aplicación de escritorio — que es diferente al PATH de la terminal.

Solución:

# 1. Instalar uv (script oficial Astral)
# → binario en C:\Users\Edu\.local\bin\uv.exe

# 2. Añadir al PATH de usuario del SISTEMA (no solo de la sesión)
[System.Environment]::SetEnvironmentVariable(
    "PATH",
    "C:\Users\Edu\.local\bin;" + [System.Environment]::GetEnvironmentVariable("PATH","User"),
    "User"
)

# 3. Verificar
[System.Environment]::GetEnvironmentVariable("PATH","User")
# debe empezar por: C:\Users\Edu\.local\bin;...

# 4. Reiniciar Claude Desktop

Verificación:

C:\Users\Edu\.local\bin\uv.exe --version
# uv 0.11.1

Bug 2 — Banner ASCII de FastMCP: Claude Desktop se colgaba al conectar

Síntomas:

  • Claude Desktop arrancaba pero nunca terminaba de inicializar el MCP propio

  • El servidor arrancaba (visible en logs) pero Claude nunca recibía respuesta de initialize

  • Detectado y diagnosticado por Gemini CLI analizando los logs

Causa raíz: FastMCP imprime por defecto un banner ASCII decorativo por stdout al arrancar. Claude Desktop usa JSON-RPC estricto sobre stdout: cualquier byte no-JSON rompe el protocolo y deja a Claude esperando indefinidamente sin mensaje de error.

╭────────────────────────────╮
│   FastMCP Server v3.x      │   ← esto va a stdout y destruye el canal JSON-RPC
╰────────────────────────────╯

La regla fundamental del transporte stdio MCP:

stdout es un canal binario exclusivo para JSON-RPC. Absolutamente nada más puede escribirse en él. Logs, banners y mensajes van a stderr.

Solución:

# main.py — CRÍTICO: nunca eliminar este flag
mcp.run(transport="stdio", show_banner=False)

Test de regresión: TestStdioTransport::test_server_stdout_is_clean_on_startup lanza el proceso real y verifica que el primer byte de stdout sea {. Si una actualización futura de FastMCP cambia el comportamiento, el test falla antes de llegar a Claude Desktop.


Bug 3 — Deadlock stdin: Python/pytest devolvían output vacío

Síntomas:

  • Get-Date, where.exe, dir → funcionaban perfectamente

  • Cualquier proceso Python (incluido pytest) → output vacío, timeout o cuelgue total

  • El proceso Python aparecía en el gestor de tareas corriendo pero sin terminar

Causa raíz: Al lanzar subprocesos sin especificar stdin, el hijo hereda el stdin del padre — que en este caso es el canal JSON-RPC de Claude Desktop. Python y otros intérpretes leen stdin al arrancar para detectar modo interactivo. Al hacerlo, bloquean esperando input que nunca llega → deadlock en cascada:

Claude Desktop → [JSON-RPC stdin] → Servidor MCP
                                         ↓
                                    asyncio.create_subprocess_exec
                                         ↓ (sin stdin=DEVNULL)
                                    Python hijo hereda stdin MCP
                                         ↓
                                    Python lee stdin → BLOQUEO ETERNO
                                         ↓
                                    Servidor MCP espera al hijo → BLOQUEO
                                         ↓
                                    Claude Desktop espera al servidor → BLOQUEO

Solución:

proc = await asyncio.create_subprocess_exec(
    *shell_args, command,
    stdin=asyncio.subprocess.DEVNULL,   # ← el hijo ve /dev/null, no el canal MCP
    stdout=asyncio.subprocess.PIPE,
    stderr=asyncio.subprocess.STDOUT,
    cwd=cwd,
    env=env,
)

Aplicado en execute_command y execute_command_streaming.

Nota: Las sesiones interactivas (start_process) usan stdin=PIPE deliberadamente — es lo que permite enviarles input con interact_with_process. La diferencia es que ahí el stdin lo gestiona el servidor, no lo hereda del canal MCP.


Arquitectura — Gestor de sesiones

session_manager.py implementa un SessionManager singleton con un dict {pid: ProcessSession} por proceso activo.

Cada ProcessSession contiene:

  • El objeto asyncio.subprocess.Process

  • Un asyncio.Queue donde se acumula todo el output

  • Un asyncio.Task que drena stdout en background línea a línea

  • Metadatos: comando, timestamp de inicio, líneas emitidas, estado

start_process("python -i")
    ├── create_subprocess_exec(stdin=PIPE, stdout=PIPE)
    ├── ProcessSession(pid, queue=Queue())
    ├── asyncio.create_task(drain_output(session))   ← background forever
    └── sessions.register(session)

drain_output [Task en background]:
    async for line in process.stdout:
        await queue.put(line)
    await queue.put(None)   ← señal de fin de stream

interact_with_process(pid, "print('hola')"):
    ├── process.stdin.write(b"print('hola')\n")
    ├── await process.stdin.drain()
    └── read_output(session, timeout=8s)
            └── asyncio.wait_for(queue.get(), 0.5s) × N iteraciones

Historial de commits

Hash

Descripción

6b36288

Scaffold inicial: 10 tools, seguridad, 14 tests

a0b278e

Fix: fnmatch para glob en search_files → 15/15 tests

69414d0

Config: rutas reales, fix hatch build target

4172d29

Chore: ignorar scripts auxiliares _.bat / _.py

b0914b0

Fix: show_banner=False — banner FastMCP rompía JSON-RPC

2e3e609

Fix: stdin=DEVNULL — deadlock heredando stdin MCP

b2ba6a2

Docs: README completo en castellano

4c5691a

Feat: sesiones interactivas + mkdir/move/multi-read → 18 tools

6dbbdf3

Docs: README con arquitectura, bugs y roadmap detallado

ecf9c2e

Feat: módulo SAP HANA Cloud — hdbcli, 8 tools → 26 total

(actual)

Runtime config central + tools get/set config + path/env robustos → 32/32 tests


Bug 4 — Matching de substring en blacklist: dd bloqueaba address, adding, hidden

Detectado: 28 de marzo de 2026.

Síntomas:

  • Desktop Commander:write_file (Node.js) bloqueaba ficheros con contenido normal que contenía la cadena dd (variables, paths, palabras)

  • Pero también el propio check_command_allowed de DesktopCommanderPy afectado: comandos legítimos como black --reformat . eran bloqueados si contenían subcadenas coincidentes con tokens de la blacklist

Causa raíz: El matching era blocked.lower() in cmd_lower — búsqueda de substring pura. El token "dd" en blocked_commands coincidía en cualquier posición:

# Antes del fix — INCORRECTO
"dd" in "address"   # True → bloqueaba 'address'
"dd" in "adding"    # True → bloqueaba 'adding'
"format" in "reformat"  # True → bloqueaba '--reformat'

Solución:

# Después del fix — word-boundary regex
pattern = r"\b" + re.escape(blocked.lower()) + r"\b"
re.search(pattern, "address")   # None → permitido ✓
re.search(pattern, "dd if=...")  # Match → bloqueado ✓
re.search(r"\bformat\b", "--reformat")  # None → permitido ✓
re.search(r"\bformat\b", "format C:")   # Match → bloqueado ✓

Los patrones multi-palabra como "net user" siguen funcionando exactamente igual.


Bug 5 — PATH minimal: subprocesos no encontraban python, python3, pip

Detectado: 28 de marzo de 2026.

Síntomas:

  • execute_command("python script.py")python: command not found

  • execute_command("pip install X") → error similar

  • Get-Date, dir, where.exe → funcionaban sin problema

Causa raíz: Claude Desktop se lanza como aplicación de escritorio de Windows, no desde una terminal de usuario. El PATH que hereda es el PATH del sistema, sin las entradas que el instalador de Python añade al PATH del usuario:

PATH de terminal usuario:  C:\Users\Edu\AppData\Local\Programs\Python\Python312\Scripts;...
PATH heredado por Claude:  C:\Windows\System32;C:\Windows;...  (sin Python)

Solución — build_subprocess_env() en utils.py:

def build_subprocess_env(extra=None):
    env = os.environ.copy()
    env["PYTHONUTF8"] = "1"
    env["PYTHONIOENCODING"] = "utf-8"
    # Prepend: venv Scripts, base Python Scripts, C:\Windows (py.exe), LOCALAPPDATA Python
    ...
    return env

Aplicado en execute_command y execute_command_streaming. Los subprocesos ahora reciben el PATH completo independientemente de cómo arrancó Claude Desktop.


Roadmap| Feature | Prioridad |

|---------|-----------| | Tests para módulo HANA (mock de hdbcli) | 🔴 Alta | | get_config / set_config_value en runtime | 🟡 Media | | Audit log con rotación | 🟡 Media | | copy_file | 🟡 Media | | start_search asíncrono con paginación | 🟡 Media | | Restricciones allowed_dirs por tool | 🟢 Baja | | Modo multi-IA: HTTP + auth token | 🟢 Baja | | Tools astrología (pyswisseph, VTTs) | 🟢 Baja | | Tools SAP adicionales (pyrfc, RFC ping) | 🟢 Baja |


Licencia

MIT — haz lo que quieras, conserva la nota de copyright.

Available Tools

28 tools
create_directoryA

Crea un directorio (y todos los intermedios necesarios).

Equivale a mkdir -p. Si el directorio ya existe, no falla. La ruta debe estar dentro de los directorios permitidos.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRuta absoluta del directorio a crear. Se crean directorios intermedios automáticamente.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, description covers idempotency (no failure if exists), automatic intermediate directories, and path constraints. Missing return value/response details, but output schema exists.

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 concise sentences, each adding value. First sentence states action, second explains behavior, third states constraint. No fluff.

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?

Tool is simple with one parameter; description covers core behavior. Could mention return format (e.g., success indicator) but not critical for selection/invocation.

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?

Schema already describes path, but description adds critical context: absolute path required and automatic creation of intermediate directories, which is not evident from schema alone.

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 creates a directory, including all necessary intermediates, and equates it to mkdir -p. It distinguishes from sibling file operations like move_file and write_file.

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?

Describes the mkdir -p equivalence and path constraint (must be within allowed directories). Lacks explicit when not to use or alternatives, but purpose is clear.

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

edit_file_diffA

Edit a file by replacing an exact text snippet with new content.

This is the preferred editing approach: send only the changed part instead of rewriting the whole file. The old_string must match exactly (whitespace, indentation) and should include enough context to be unique.

Raises ValueError if old_string is not found or found more/fewer times than expected_replacements.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the file to edit.
old_stringYesExact text to find in the file (must be unique or use expected_replacements).
new_stringYesReplacement text. Use empty string to delete old_string.
expected_replacementsNoExpected number of occurrences to replace. Default 1.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the burden. It discloses error behavior (ValueError if old_string not found) and matching requirements, but does not describe success output, atomicity, or file existence requirements. The output schema exists but is not referenced.

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 three sentences, front-loading the primary action. Every sentence provides useful information; no redundancy or fluff.

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 complexity (4 params, no annotations, output schema exists), the description covers the edit mechanism, matching requirements, and error conditions. It lacks specifics on return value and preconditions (e.g., file must exist), but the output schema likely covers return details. Overall 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?

Schema coverage is 100%, so baseline is 3. The description adds valuable nuance: emphasizing exact matching for whitespace/indentation, uniqueness, and the role of `expected_replacements`. This goes 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 tool's action (edit a file by replacing text), specifies the mechanism (exact snippet replacement), and distinguishes it from `write_file` by noting it only sends the changed part. The verb and resource are 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?

The description indicates this is the preferred editing approach and advises on proper use (matching whitespace, providing context). However, it does not explicitly state when not to use it or mention alternatives like `write_file` for creating new files.

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

execute_commandA

Execute a shell command and return its combined stdout+stderr output.

Uses PowerShell on Windows, bash/zsh on Linux/macOS. The command is checked against the security blacklist before execution. Output is captured and returned as a string (truncated if too large).

Returns the combined output. On non-zero exit code, output includes the exit code so the caller can detect failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesShell command to execute. Use PowerShell syntax on Windows.
working_directoryNoWorking directory for the command. Defaults to user home.
timeout_secondsNoTimeout in seconds. 0 = use configured default.
environmentNoAdditional environment variables as a dict.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Discloses shell detection, blacklist check, output truncation, combined stderr, and exit code reporting. With no annotations, this covers key behaviors. Lacks details on blacklist rejection behavior (e.g., error vs silent) and timeout handling beyond parameter.

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?

Extremely concise: 7 sentences, each adding unique value. Front-loaded with core purpose, then platform details, security, output handling, and error detection. No fluff.

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 an output schema exists, the description adequately covers input, execution, and output. Could mention synchronous nature and blacklist error handling, but overall sufficient for a moderately complex 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 description adds marginal value over schema. Briefly mentions shell detection relevant to 'command' parameter, but no additional parameter meaning beyond schema descriptions.

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

Purpose5/5

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

The description clearly states it executes a shell command and returns combined stdout+stderr output. It distinguishes from sibling 'execute_command_streaming' by implying batch output, and from 'start_process' by focusing on output capture. The verb 'execute' and resource 'command' are precise.

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?

Provides basic context like shell detection and security blacklist, but does not explicitly guide when to use this vs streaming or process management siblings. No 'when not to use' or alternatives listed.

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

execute_command_streamingA

Execute a long-running command and return output incrementally.

Intended for commands that produce output over time (builds, tests, long scripts). Output is collected line by line and returned as a single string; for true streaming, the MCP client would use SSE.

The command is blocked if it matches the security blacklist.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesShell command to execute with streaming output.
working_directoryNoWorking directory for the command.
timeout_secondsNoOverall timeout in seconds. 0 = use configured default.
environmentNoAdditional environment variables as a dict.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses that output is collected line by line and returned as a single string, and that the command is blocked if it matches a security blacklist. However, it does not clarify side effects, blocking behavior, or whether the command runs in a sandbox, leaving gaps for an AI agent.

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 three sentences and one additional note. It front-loads the purpose, follows with intended usage, and adds a behavioral constraint. Every sentence is necessary and well-structured without 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?

Given the presence of an output schema and context signals, the description adequately covers the tool's purpose and key constraints. It could be more explicit about when to use this over sibling tools like 'execute_command', but it provides enough context for most use cases.

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 explain each parameter. The tool description adds little beyond schema; it merely reinforces what the schema says (e.g., 'Shell command to execute'). Hence, the description meets the baseline but does not provide additional 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 executes a long-running command with incremental output, distinguishing it from the sibling tool 'execute_command' which presumably returns output all at once. It specifies the resource (command) and the outcome (incremental output).

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?

It explicitly says it's intended for commands that produce output over time (builds, tests, long scripts) and mentions that true streaming requires SSE, which provides context. However, it does not explicitly state when not to use it or directly name alternative tools, leaving some ambiguity.

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

force_terminateA

Mata un proceso inmediatamente sin esperar a que termine limpiamente.

Equivale a SIGKILL en Linux o TerminateProcess en Windows. Usa kill_process con force=False para un cierre más limpio (SIGTERM). Limpia la sesión del registro tras terminar.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesPID del proceso a matar inmediatamente.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/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 tool performs an immediate kill without waiting for clean termination, equates to SIGKILL, and cleans the session log after termination. It does not mention potential data loss or open file consequences, but given the nature of SIGKILL, the behavior is sufficiently 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 very concise with three short sentences and a bullet-like structure. Every sentence adds value: purpose, equivalence, and usage alternative. No unnecessary 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?

With one parameter and an output schema present (though not shown), the description covers the core behavior and even mentions session cleanup. It lacks explicit return value details, but the output schema likely covers that. The description is complete for a simple kill 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?

The input schema covers 100% of parameters (only 'pid') with a description. The tool description does not add new parameter semantics beyond what the schema already provides. 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 kills a process immediately without waiting for clean termination, using verbs like 'Mata' and referencing Unix/Windows signals. It distinguishes itself from the sibling tool 'kill_process' by noting that the latter can perform a cleaner shutdown with force=False.

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 tells when to use this tool (immediate kill equity to SIGKILL/TerminateProcess) and when to use the alternative (kill_process with force=False for cleaner termination). This provides clear usage guidance.

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

get_configA

Return the active runtime configuration with type metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so the description must carry the burden. It states it returns configuration but does not disclose side effects, idempotency, or safety. Read-only 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.

Conciseness5/5

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

One concise sentence with no fluff. Front-loaded and 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 zero parameters and an output schema, the description is adequate. It could mention that the call is safe and repeatable, but overall it covers the essential return value detail.

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?

There are zero parameters, so the description compensates by specifying the output includes 'type metadata', adding value beyond the empty 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 'return' and the resource 'active runtime configuration with type metadata'. It is specific and distinct from sibling tools like 'set_config_value'.

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 (e.g., set_config_value). Missing context on typical use cases or prerequisites.

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

get_file_infoA

Return metadata about a file or directory.

Includes: type, size, creation time, modification time, permissions, and a content preview for text files (first 10 lines).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the file or directory.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses the return types (metadata + preview for text files) but does not mention limitations for binary files, permissions needed, or error handling. With no annotations, more detail would be beneficial.

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, efficient and clear 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?

Given the presence of an output schema and the tool's simplicity, the description covers the key aspects: what metadata is returned and the behavior for text files. Minor omission on directory behavior and edge cases, but overall 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% and adds meaning by describing the path as absolute. The description repeats this but does not add further detail 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 returns metadata about a file or directory, listing specific metadata fields and a content preview. It distinguishes from sibling tools like read_file and list_directory.

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. The description implies use for metadata and preview, but lacks explicit when-not-to-use or alternative suggestions.

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

hana_describe_tableA

Describe la estructura de una tabla en SAP HANA Cloud.

Devuelve columnas con tipo de dato, longitud, nullable, clave primaria y comentario de columna si existe. Equivale a DESC table en SQL*Plus.

ParametersJSON Schema
NameRequiredDescriptionDefault
table_nameYesNombre de la tabla o vista.
schemaNoSchema. Vacío = schema actual.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description bears the responsibility for behavioral disclosure. It states that the tool returns column metadata (data type, length, nullable, primary key, comment) and does not indicate any side effects, destructive actions, or authorization needs. While the behavior is clear as a read-only operation, the description does not explicitly state it is non-destructive or safe to call. Given the lack of annotations, a score of 3 is appropriate; it adds some context but not comprehensive transparency.

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 consists of two concise sentences. The first sentence states the purpose and the second lists the return fields and provides an SQL equivalence. Every sentence adds value without redundancy or fluff. The structure is front-loaded with the primary action, making it efficient for an agent to parse quickly.

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 an output schema (present but not shown), low complexity (2 parameters, required one), and no nested objects, the description adequately covers the tool's purpose and return values. It mentions that the tool works on tables (and the input schema says 'tabla o vista'), and specifies that the column comment is returned if it exists. It could be slightly improved by noting the default ordering of columns, but it is sufficiently complete for a simple describe 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?

The input schema covers both parameters (table_name and schema) with descriptions. The schema description coverage is 100%, so the baseline is 3. The tool description adds minimal extra information beyond the schema: it mentions the return of column comments ('si existe') which is not in the schema, but does not provide parameter syntax or format details. Overall, the description adds modest value over the schema, warranting a score 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 clearly states the tool's purpose: 'Describe la estructura de una tabla en SAP HANA Cloud.' It specifies the verb (describe) and resource (table structure), and lists what is returned (columns, data type, length, nullable, primary key, column comment). This distinguishes it from sibling tools like hana_list_tables (which lists table names) and hana_execute_query (general querying).

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 mentions 'Equivale a DESC table en SQL*Plus', which implies usage for obtaining table structure, similar to SQL*Plus. However, it does not provide explicit guidance on when to use this tool versus alternatives (e.g., hana_execute_query for similar informtion) or when not to use it. The usage context is implied but lacks exclusions or alternative recommendations.

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

hana_execute_ddlA

Ejecuta una sentencia DDL en SAP HANA Cloud (CREATE, ALTER, DROP, GRANT...).

REQUIERE confirm=True explícito — protección contra ejecuciones accidentales. DROP y TRUNCATE son irreversibles. Úsalo con cuidado.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSentencia DDL (CREATE, ALTER, DROP, GRANT, REVOKE...).
confirmNoDebes pasar confirm=True explícitamente para ejecutar DDL. Medida de seguridad.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full burden. It discloses the destructive nature of DROP/TRUNCATE and the confirmation safety measure. However, it does not discuss other behavioral traits such as required permissions, autocommit behavior, or error handling. The warning is good but incomplete.

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: two sentences and a warning line. It is front-loaded with the main action and uses bullet points for key precautions. Every sentence adds value without 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 purpose, safety, and parameters. Since there is an output schema (as indicated by context signals), the absence of return value details is acceptable. For a DDL tool, it adequately explains the core behavior, though it could mention post-execution effects like schema changes.

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 has 100% coverage with descriptions for both parameters. The description reinforces the confirm parameter's purpose but does not add significant new meaning beyond what the schema provides. Baseline is 3, and the description matches that.

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 executes DDL statements (CREATE, ALTER, DROP, GRANT) in SAP HANA Cloud. It uses a specific verb ('Ejecuta') and defines the resource ('sentencia DDL'). This distinguishes it from sibling tools like hana_execute_query (which executes queries) and hana_describe_table (which describes tables).

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 requires explicit confirm=True to prevent accidental execution and warns about irreversible DROP/TRUNCATE. This provides clear context for safe usage. However, it does not explicitly mention when to use this tool versus alternatives (e.g., hana_execute_query for queries), but the sibling tool names imply differentiation.

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

hana_execute_queryA

Ejecuta una sentencia SQL en SAP HANA Cloud y devuelve los resultados.

Para consultas SELECT devuelve una tabla formateada con los resultados. Para INSERT/UPDATE/DELETE devuelve las filas afectadas. Para CALL (stored procedures) devuelve el resultado del procedure.

El número de filas está limitado para evitar volcar tablas enteras. Usa max_rows para ajustar el límite.

ParametersJSON Schema
NameRequiredDescriptionDefault
sqlYesSentencia SQL a ejecutar (SELECT, CALL, etc.). Una sola sentencia.
schemaNoSchema a usar. Vacío = usar el configurado por defecto.
max_rowsNoMáximo de filas a devolver. Default 200.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

Describes row limit and per-SQL-type behavior. No annotations provided, so description carries burden; lacks details on error handling or read-only nature but sufficient for basic understanding.

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?

Six sentences, well-structured, front-loaded with action, no redundant 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?

Covers output expectations for different SQL types and row limit. Lacks error handling or timeout info, but adequate given sibling tools and output schema existence.

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 covers all three params with descriptions. Description adds nuance about row limiting to avoid dumping tables, providing value beyond 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?

Clearly states it executes SQL in SAP HANA Cloud, distinguishes SELECT, DML, and CALL behaviors. Distinct from siblings like hana_describe_table and hana_execute_ddl.

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?

Explains row limit and max_rows usage for controlling output. Does not explicitly contrast with sibling tools or state when not to use, 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.

hana_get_row_countA

Devuelve el número de filas de una o varias tablas.

Rápido para monitorización — usa M_TABLE_STATISTICS en lugar de COUNT(*).

ParametersJSON Schema
NameRequiredDescriptionDefault
tablesYesTabla o tablas separadas por coma. Ej: ORDERS,ITEMS,CUSTOMERS
schemaNoSchema. Vacío = schema actual.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full burden. It discloses the use of M_TABLE_STATISTICS instead of COUNT(*), which is a key behavioral trait. However, it does not mention potential performance implications, whether counts are approximate, or any required permissions.

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

Conciseness5/5

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

The description is extremely concise with two sentences. The first sentence states the purpose, and the second adds behavioral context. No extraneous 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 simplicity of the tool (2 parameters, output schema exists), the description covers the essential purpose and key behavioral aspect. It could mention limitations of M_TABLE_STATISTICS (e.g., potential staleness), but overall it is 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% with clear descriptions of both parameters. The tool description adds no additional parameter-specific information, 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 clearly states it returns row counts for one or multiple tables. It distinguishes itself from COUNT(*) by mentioning the use of M_TABLE_STATISTICS, setting it apart from general query tools like hana_execute_query.

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 use for monitoring with 'rápido para monitorización' and contrasts with COUNT(*), providing context. However, it does not explicitly state when not to use this tool or list alternatives among siblings, leaving some ambiguity.

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

hana_get_system_infoA

Devuelve información del sistema SAP HANA Cloud: memoria, CPU, alertas activas.

Útil para monitorización básica del Free Tier (que tiene límites de recursos).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/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 responsibility for behavioral disclosure. It merely states the tool returns data without revealing safety, authentication needs, or potential side effects. As a read-only operation, this is minimal transparency.

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: two sentences that efficiently convey purpose and use case. No unnecessary words, and key information is front-loaded. Every sentence earns its place.

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 and an output schema is present (handling return values), the description is complete for basic monitoring. It could optionally mention that data is real-time or cached, but overall it sufficiently covers the tool's interface.

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, so the schema coverage is effectively 100%. Per the rubric, 0 parameters yields a baseline of 4. The description does not need to add parameter details as there are none, and it correctly provides no misleading information.

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 SAP HANA Cloud system information including memory, CPU, and active alerts. It distinguishes itself from sibling HANA tools like hana_execute_query or hana_list_tables by focusing on system monitoring.

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 clear usage context: 'Útil para monitorización básica del Free Tier' (useful for basic Free Tier monitoring). While it does not explicitly exclude other scenarios or mention alternatives, the context is clear and sufficient for basic decision-making.

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

hana_list_schemasA

Lista los schemas visibles para el usuario actual en SAP HANA Cloud.

Muestra nombre del schema, propietario y si es un schema de sistema.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_nameNoFiltro por nombre de schema (substring). Vacío = todos los visibles.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 bears full responsibility for behavioral disclosure. It does not state that the tool is read-only, safe, or requires specific permissions. As a listing operation, the risk is low, but the description should explicitly confirm non-destructive 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 that immediately convey the tool's purpose and output. No unnecessary words or 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?

Given the presence of an output schema, the description adequately covers what the tool returns (name, owner, system schema). It does not mention the filter parameter, but that is documented in the input schema. Slight gap in not emphasizing filtering capability.

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 input schema fully documents the filter_name parameter. The tool description adds no further meaning beyond that already in the schema. 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 lists visible schemas for the current user and specifies the fields shown (name, owner, system schema). It distinguishes from sibling tools like hana_list_tables and hana_describe_table.

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 listing schemas but provides no explicit guidance on when to use this tool over alternatives or any preconditions. The context from sibling tools makes the purpose obvious, but explicit guidelines are absent.

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

hana_list_tablesA

Lista tablas, vistas y Calculation Views de un schema en SAP HANA Cloud.

Muestra nombre, tipo, número de columnas y comentario si existe.

ParametersJSON Schema
NameRequiredDescriptionDefault
schemaYesSchema del que listar tablas. Vacío = schema actual del usuario.
filter_nameNoFiltro por nombre de tabla (substring, case-insensitive).
table_typeNoTipo: TABLE, VIEW, CALC VIEW, o vacío para todos.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description must disclose behavior. It indicates a read-only operation ('Muestra...') and lists output fields. It does not mention permissions or large schema performance, but the tool is simple and non-destructive.

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 that front-load the core action and output details. No unnecessary 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?

For a simple listing tool with an output schema, the description covers what it lists, the schema parameter, and output details. It is complete enough for an agent to use 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?

All parameters are fully described in the input schema (100% coverage). The description adds minor context (e.g., 'TABLE, VIEW, CALC VIEW, o vacío') but does not significantly enhance understanding 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?

Description clearly states it lists tables, views, and Calculation Views of a schema in SAP HANA Cloud, and shows name, type, column count, and comment. This distinguishes it from sibling tools like hana_describe_table (single table) and hana_execute_query (arbitrary queries).

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 usage for listing schema objects but does not explicitly state when not to use or mention alternative tools. However, the purpose is straightforward and context signals clarify it is a read-only listing.

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

hana_test_connectionA

Prueba la conexión a SAP HANA Cloud y devuelve información del servidor.

Verifica credenciales, versión de HANA, usuario conectado y schema actual. No devuelve nunca la contraseña ni datos sensibles.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Despite no annotations, the description discloses that the tool never returns passwords or sensitive data, and that it returns server information. It could be more explicit about being read-only and safe to call multiple times, but it covers key 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?

Three sentences, each adding value: purpose, details of verification, and safety guarantee. Front-loaded with the main action, no redundant or filler text.

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 connection test with no parameters and an existing output schema, the description adequately explains what the tool does and what information it returns (version, user, schema), including a safety guarantee. It is complete enough for an agent to understand its function.

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 no parameters, so schema coverage is 100%. According to guidelines, this earns a baseline of 4. The description does not need to add parameter info, and it does not attempt to mislead.

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 tests the connection to SAP HANA Cloud and returns server information including version, connected user, and current schema. This distinguishes it from sibling HANA tools like hana_execute_query or hana_describe_table, which serve different purposes.

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 verifying connectivity and credentials, but does not explicitly state when to use this tool versus alternatives like hana_get_system_info. No exclusions or when-not-to-use guidance is provided.

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

interact_with_processA

Envía input a un proceso activo y devuelve su respuesta.

Ideal para REPLs interactivos: Python (-i), Node.js (-i), shells, etc. El input se escribe en el stdin del proceso y se espera output nuevo.

Ejemplo de flujo:

  1. start_process('python -i') → PID 1234

  2. interact_with_process(1234, 'import pandas as pd')

  3. interact_with_process(1234, 'df = pd.read_csv("datos.csv")')

  4. interact_with_process(1234, 'print(df.describe())')

  5. kill_process(1234)

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesPID del proceso (obtenido de start_process).
input_textYesTexto a enviar al stdin del proceso. Se añade \n automáticamente si no lo tiene.
timeout_secondsNoSegundos esperando respuesta tras enviar input. Default 8.
max_linesNoMáximo de líneas de respuesta a devolver. Default 200.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 discloses key behaviors: it writes input to stdin, waits for new output, includes a timeout, and appends a newline automatically. However, it does not explain what happens if no output is produced or if the process terminates.

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 a front-loaded purpose sentence, followed by usage context and a clear, multi-step example. 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 tool with 4 parameters and an output schema, the description covers the essential workflow and includes practical example steps. It could mention error handling or edge cases, but overall it is sufficiently complete.

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% (baseline 3), and the description adds value by noting the automatic newline appending and providing defaults for timeout and max_lines, which are not fully explained 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 verb ('Envía input') and resource ('proceso activo'), and the example flow distinguishes it from siblings like read_process_output and execute_command by emphasizing interactive REPLs.

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 says 'Ideal para REPLs interactivos' and provides a step-by-step example showing when to use it with start_process and kill_process, but does not explicitly state when not to use it or list alternative tools.

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

kill_processA

Terminate a running process by PID.

By default sends SIGTERM (graceful shutdown). Set force=True to immediately kill the process (SIGKILL on Linux, TerminateProcess on Windows).

Returns confirmation or error message.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesPID of the process to terminate.
forceNoIf True, use SIGKILL/TerminateProcess. Default False (graceful SIGTERM).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully discloses the signals used (SIGTERM, SIGKILL/TerminateProcess) and the return behavior, leaving no ambiguity about what the tool does.

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 with no waste. The core purpose is front-loaded, and each sentence adds value without 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 the essential behavior for a process-killing tool, including signal details and return value summary. With an output schema present, it need not detail return values further. Missing prerequisites like permissions are acceptable omissions.

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 'graceful shutdown' and 'immediately kill' context beyond the schema, but does not provide additional parameter meaning beyond what the schema already specifies.

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 terminates a running process by PID, using a specific verb and resource. It distinguishes from siblings like start_process and list_processes.

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 the default SIGTERM and force option for SIGKILL, providing clear usage context for normal vs. immediate termination. However, it does not differentiate from the sibling force_terminate.

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

list_directoryA

List the contents of a directory with file sizes and types.

Returns a formatted tree showing [DIR] and [FILE] entries with sizes. Respects the allowed_directories sandbox.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the directory to list.
recursiveNoSet to true to list subdirectories recursively. Default false.
max_depthNoMaximum recursion depth when recursive=true. Default 3.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description carries burden. It explains output format and sandbox respect, but omits error handling or side effects. Adequate for a simple 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 with no redundancy; front-loaded with key action and output details.

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 core functionality, output format, and sandbox constraint. Output schema likely provides further details on return values, making this sufficient for the tool's simplicity.

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

Parameters3/5

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

Schema already describes all parameters fully (100% coverage). Description adds no extra meaning beyond what schema states, so baseline 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 directory contents with file sizes and types, distinguishing it from siblings like get_file_info (single file) and search_files (search by pattern).

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 like search_files or read_file; lacks when-to-use and when-not-to-use context.

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

list_processesA

List running processes with PID, name, CPU%, and memory usage.

Uses psutil for cross-platform compatibility (Windows, Linux, macOS). Results are filtered and sorted as requested.

Returns a formatted table of processes.

ParametersJSON Schema
NameRequiredDescriptionDefault
filter_nameNoFilter by process name (case-insensitive substring). Empty = all.
sort_byNoSort by: 'name', 'pid', 'cpu', 'memory'. Default 'name'.name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Without annotations, the description is the only source. It mentions cross-platform compatibility and that results are filtered/sorted. However, it doesn't disclose potential system impact, permission requirements, or performance characteristics. Adequate but could be richer.

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, each adding value: what it lists, cross-platform support, and behavior. Front-loaded with the core purpose. 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 the main functionality and mentions output format (formatted table). With an output schema present, return value details are not required. However, it omits default behavior (lists all processes) and scope (e.g., only user processes or all). Very close to complete for a simple 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?

Input schema already fully describes both parameters (filter_name and sort_by). The description adds no new parameter information beyond 'filtered and sorted as requested'. Baseline 3 is appropriate given 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?

The description clearly states the tool lists running processes with specific fields (PID, name, CPU%, memory usage). It distinguishes itself from sibling tools like kill_process or start_process by being a read-only listing tool.

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 like kill_process or execute_command. Does not specify when the output might be useful or any prerequisites.

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

list_sessionsA

Lista todas las sesiones de proceso activas (start_process).

Muestra PID, comando, estado, tiempo activo y líneas emitidas. Las sesiones terminadas se limpian automáticamente al listarlas.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses the key behavioral trait: completed sessions are automatically cleaned up when listed. No annotations exist, so the description carries the full burden. It adds value by noting this side effect, though it could mention if the operation is safe or has 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.

Conciseness5/5

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

Two sentences with front-loaded purpose and no unnecessary words. Every sentence provides essential information about the tool's function and side effects.

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 zero-parameter tool with an output schema, the description covers the core purpose, displayed fields, and cleanup behavior. It is complete enough, though additional details about ordering or limits are not necessary given the 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?

No parameters exist (schema coverage 100%), so baseline is 4. The description adds meaning by explaining what is displayed and the cleanup behavior, which enriches the empty 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 lists active process sessions ('Lista todas las sesiones de proceso activas') and shows specific fields (PID, command, status, etc.). It implicitly distinguishes from sibling tools like list_processes by focusing on 'sessions' from start_process.

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?

While the description mentions sessions from start_process, it does not explicitly state when to use this tool versus alternatives like list_processes or read_process_output. Usage context is implied but not directly guided.

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

move_fileA

Mueve o renombra un fichero o directorio.

Funciona entre rutas dentro de los directorios permitidos. Si el destino es un directorio existente, mueve el origen dentro de él. Si el destino no existe, renombra el origen a ese nombre.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceYesRuta absoluta del fichero o directorio origen.
destinationYesRuta absoluta del destino. Si es directorio, mueve dentro de él.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries the burden. It discloses move vs rename logic and directory constraints. Could mention permissions or error handling, but overall transparent for a file 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?

Three concise sentences, no redundancy, front-loaded with core action. Every sentence adds essential behavior 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?

Simple tool with high schema coverage and output schema present. Description covers main behavior and constraints. Could mention return value or error conditions, but sufficient for typical usage.

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 has 100% coverage, but description adds value by specifying absolute paths and explaining how destination existence affects behavior, which is not in the schema descriptions.

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

Purpose5/5

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

The description clearly states it moves or renames a file or directory, specifying behavior based on destination existence. This distinguishes it from sibling tools like read_file or write_file.

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 within allowed directories and provides clear behavioral rules. However, it does not explicitly mention when not to use or alternatives, though no sibling duplicates this function.

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

read_fileA

Read a text file and return its contents, with optional pagination.

Pagination via offset and length allows reading large files in chunks without loading everything into the LLM context. The security sandbox is enforced: the path must be inside an allowed directory.

Returns the file text. Raises PermissionError or FileNotFoundError on error.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the file to read.
offsetNoLine number to start reading from (0-based). Default 0.
lengthNoMaximum number of lines to read. 0 means use configured limit.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the transparency burden. It mentions security sandbox enforcement and error types, but does not disclose idempotency, rate limits, or other 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?

Four front-loaded sentences, each serving a distinct purpose: purpose, pagination use case, security, and errors. 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?

Covers purpose, pagination, security, and errors. Lacks explicit mention of file encoding or that it only handles text files, but given the output schema exists, it is sufficiently 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?

Input schema has 100% coverage, so baseline is 3. The description reinforces the pagination purpose for offset and length, but adds minimal new 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 'Read a text file and return its contents' with a specific verb and resource. The name 'read_file' and mention of pagination distinguish it from siblings like 'read_multiple_files' and 'get_file_info'.

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 large files via pagination but does not explicitly state when to use this tool versus alternatives or provide any exclusions.

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

read_multiple_filesA

Lee varios ficheros de texto en una sola llamada.

Útil para comparar ficheros o cargar múltiples módulos de una vez. Devuelve el contenido de cada fichero separado por cabeceras claras.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYesLista de rutas absolutas a leer.
max_lines_eachNoMáximo de líneas por fichero. Default 200.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It mentions output format (content separated by clear headers) but omits behavioral details like truncation at max_lines_each, permissions, or encoding. The schema partially covers max_lines_each, but the description should restate this.

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 three sentences. It front-loads the main action, then provides use case and output behavior. No redundant 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 presence of an output schema and complete input schema, the description adds value by specifying the output format. It is almost complete but lacks mention of error conditions or file type restrictions beyond 'text files'.

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. The description does not add extra meaning beyond the schema (e.g., format of paths, or implications of max_lines_each). Baseline 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 'Lee' (reads) and the resource 'varios ficheros de texto' (multiple text files). It distinguishes itself from sibling 'read_file' by emphasizing multiple files in a single call.

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 usage context: 'Útil para comparar ficheros o cargar múltiples módulos de una vez.' It suggests when to use but does not explicitly mention when not to use or list alternatives like 'read_file'.

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

read_process_outputA

Lee el output acumulado de un proceso activo.

Espera hasta timeout_seconds por output nuevo. Si el proceso ha terminado, devuelve todo el output pendiente en el buffer. Llama a esta tool repetidamente para leer output de forma incremental.

Devuelve el output y el estado del proceso (running/finished).

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYesPID del proceso (obtenido de start_process).
timeout_secondsNoSegundos máximos esperando output nuevo. Default 5.
max_linesNoMáximo de líneas a devolver. Default 200.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description discloses waiting behavior, status return, and incremental reading. However, it doesn't clarify whether output is consumed upon reading or if there are side effects, which is a minor gap.

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 brief and well-structured: first sentence states purpose, second explains behavior, third gives usage advice. No unnecessary 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?

For a simple read tool with no annotations but an output schema, the description covers behavior, return values, and usage pattern. It is complete enough for the agent to use 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% with parameter descriptions. The tool description reinforces timeout_seconds but adds no new 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 the tool reads accumulated output of an active process. It uses a specific verb ('Lee') and resource, and distinguishes itself from siblings like start_process, kill_process, and interact_with_process.

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 calling the tool repeatedly for incremental output and explains behavior when process finishes. While it doesn't explicitly mention when not to use it, the context is clear compared to sibling tools.

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

search_filesA

Search for files by name pattern and/or content substring.

  • pattern is matched against file names using glob syntax OR substring match.

  • content_search scans file contents (text files only, skips binary).

  • Returns a list of matching absolute paths with optional match context.

ParametersJSON Schema
NameRequiredDescriptionDefault
rootYesAbsolute path to directory to search in.
patternYesGlob pattern (e.g. '*.py') or substring to match in file names.
content_searchNoOptional text to search inside file contents. Empty = skip content search.
case_sensitiveNoSet to true for case-sensitive matching. Default false.
max_resultsNoMaximum number of results to return. Default 100.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description adds valuable behavioral context: it specifies that content_search only scans text files (skips binary), and returns matching absolute paths with optional match context. Since no annotations are provided, this description carries the full burden and does so well, although it could mention that the tool is read-only and non-destructive.

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 (5 lines) with bullet points. It is front-loaded with the core purpose, then details in a structured list. Every sentence serves a clear purpose, no fluff.

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 existence of an output schema (details of return values), the description provides adequate context: it mentions both name and content search, parameter roles, and the result format. It could benefit from a brief note on performance or limits beyond max_results, but overall it is complete for a search 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?

The input schema covers all 5 parameters with descriptions (100% coverage). The tool description adds some nuance (e.g., 'pattern' uses glob or substring, content_search is text-only) but mostly repeats schema information. The clarification about binary skipping in content_search adds marginal value, keeping this at baseline 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 states 'Search for files by name pattern and/or content substring' which is a specific verb+resource+scope. It clearly separates two search modes (name pattern and content substring) and mentions the return format (absolute paths with optional context). This distinguishes it from siblings like list_directory (simple listing) and read_file (reading full content).

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?

While the description effectively explains what the tool does, it does not provide explicit guidance on when to use this tool over alternatives. It implies usage for file searching but does not mention exclusions (e.g., when to use other tools like execute_command with grep) or context-specific recommendations.

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

set_config_valueA

Update a runtime config value and persist it to YAML.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesDot-separated runtime config key to update.
valueYesNew value to store. Type is validated against the config field.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are present, so the description must carry full behavioral disclosure. It indicates that updating is a mutating operation and that changes are persisted to YAML. However, it omits details such as whether the config must already exist, side effects on running processes, or error conditions. The description is adequate but not comprehensive.

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 sentence that front-loads the verb and resource, with no redundant words. Every part earns its place.

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 tool with an output schema, the description covers the primary action. It lacks context about the config location, persistence guarantee, and return value, but these are partially addressed by the schema and output schema. Additional details 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% with descriptions for both parameters. The description adds no additional meaning beyond what the schema provides for the 'key' and 'value' fields. It does not explain the dot-separated format or validation rules further.

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 'Update', the resource 'runtime config value', and the outcome 'persist it to YAML'. It distinguishes itself from sibling tools like 'get_config' (reading) and file operations, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies usage context (runtime config), but does not explicitly state when to use this tool versus alternatives like 'write_file' or how to structure the key. No guidance on prerequisites or exclusions is provided.

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

start_processA

Arranca un proceso en segundo plano y devuelve su PID.

A diferencia de execute_command, el proceso queda vivo y con su stdout/stderr siendo capturados en un buffer interno. Usa read_process_output para leer el output acumulado e interact_with_process para enviar input (ideal para REPLs).

Devuelve el PID y el output inicial (primeros segundos de arranque).

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesComando a ejecutar. Puede ser una shell interactiva (python -i, node -i) o cualquier proceso largo.
working_directoryNoDirectorio de trabajo. Por defecto el home del usuario.
timeout_secondsNoTimeout en segundos para la lectura inicial de output. 0 = usar configuración.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains that the process stays alive, stdout/stderr are captured, and it returns PID and initial output. Could mention termination or resource implications, but 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?

Three sentences, front-loaded with purpose, no fluff. Every sentence adds value and is 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 moderate complexity and presence of output schema, description covers purpose, usage, behavior, and references sibling tools. Minor gap: doesn't explicitly mention that it's for long-running processes, but still 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%, so baseline 3. The description does not add meaning beyond the schema; it merely restates the command parameter as 'Comando a ejecutar'.

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 starts a background process and returns its PID. It distinguishes from 'execute_command' by emphasizing that the process remains alive and output is buffered.

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?

It explicitly contrasts with 'execute_command' and advises using 'read_process_output' and 'interact_with_process' for REPLs, providing clear when-to-use guidance.

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

write_fileA

Write or append text content to a file.

The parent directory is created automatically if it doesn't exist. The path must be inside an allowed directory and the extension must not be in the blocked list.

Returns a success message with the number of lines written.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesAbsolute path to the file to write.
contentYesText content to write to the file.
modeNoWrite mode: 'rewrite' (default) overwrites; 'append' adds at end.rewrite

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided; description carries full burden. Discloses automatic parent directory creation, extension validation, and return format. Lacks details on side effects like encoding or size limits, but adequate for a basic file write tool.

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

Conciseness5/5

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

Three focused sentences: purpose, constraints, output. No redundant information, every sentence earns its place.

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 presence of an output schema and the tool's simplicity, the description covers all essential aspects: purpose, constraints, and return value. No gaps for a file write operation.

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?

Schema covers all parameters with descriptions. Description adds value beyond schema by mentioning automatic directory creation, which is not in 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?

Clearly states the verb (write/append) and resource (file), distinguishes from siblings like read_file and move_file. Includes specific constraints about directory creation and extension blocking.

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 constraints (allowed directory, blocked extensions) but lacks explicit guidance on when to use this tool versus alternatives like edit_file_diff for partial edits or create_directory for directory creation.

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

TDQS

A3.8/5.0
Disambiguation4/5

Most tools have distinct purposes, e.g., file vs. process vs. database. Minor overlap between kill_process and force_terminate, and execute_command vs. execute_command_streaming, but descriptions clarify the differences.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., create_directory, execute_command, hana_describe_table). No mixing of styles or unexpected variations.

Tool Count3/5

With 28 tools, the count is high but still manageable. It spans file operations, process management, SAP HANA, and config, which may justify the count, but it feels slightly heavy for a single MCP server.

Completeness2/5

The file tools cover create, read, write, edit, move, list, search, but notably lack delete and copy operations, which are obvious gaps for a desktop commander. Process and HANA tools are more complete.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server that enables Claude to control your computer, similar to Anthropic's computer use but easy to set up locally.
    327
    356
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A secure MCP server that allows Claude to read and write local files on your machine with explicit approval gating for each access.
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Runs as an MCP server providing file system operations, shell execution, and system information tools, allowing Claude or any MCP client to edit files and control the machine.
    7
    MIT

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eduardoddddddd/DesktopCommanderPy'

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