DesktopCommanderPy
Provides tools for connecting to and managing SAP HANA Cloud instances, including executing queries, DDL operations, listing schemas and tables, describing table structure, getting row counts, and retrieving system information.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@DesktopCommanderPyshow me the files in my Documents folder"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DesktopCommanderPy
Servidor MCP propio en Python — alternativa segura, extensible y 100% tuya a Desktop Commander.
¿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, stdioInstalació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 testsConfiguració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_directoriesestá 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 detalladosConfigurar 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 |
| Lee fichero con paginación offset/length |
| Escribe o añade contenido. Crea dirs intermedios. |
| Edición quirúrgica find/replace. Solo el fragmento cambiado. |
| Lista con tamaños. Soporta recursivo con max_depth. |
| Búsqueda por glob (*.py) y/o contenido. fnmatch nativo. |
| Metadatos + preview primeras 10 líneas. |
| mkdir -p sandbox-aware. |
| Mueve/renombra dentro del sandbox. |
| Lee N ficheros en una llamada. |
| Devuelve la configuración runtime activa con tipos ( |
| Actualiza y persiste claves de configuración runtime sin editar YAML a mano. |
Terminal (2 tools)
Tool | Descripción |
| Ejecuta y captura stdout+stderr. Timeout configurable. |
| Recoge línea a línea. Para pip install, builds, etc. |
Gestión de procesos psutil (2 tools)
Tool | Descripción |
| Tabla PID/nombre/CPU%/memoria. Filtrable y ordenable. |
| SIGTERM (graceful) o SIGKILL (forzado). |
Sesiones interactivas (5 tools) ⭐
Tool | Descripción |
| Arranca proceso con stdin PIPE. Devuelve PID + output inicial. |
| Lee buffer acumulado sin bloquear. |
| Envía texto al stdin, espera respuesta. REPLs, shells. |
| Tabla de sesiones: PID, estado, tiempo activo, líneas. |
| 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 |
| Verifica credenciales. Devuelve versión, usuario, schema, SSL. |
| SELECT / DML / CALL con tabla formateada. Límite de filas. |
| CREATE/ALTER/DROP. Requiere |
| Schemas visibles. Marca los de sistema (_SYS*, SYS, PUBLIC). |
| Tablas, vistas, Calc Views con nº columnas y tipo. |
| Estructura: tipo, longitud, nullable, PK, comentario. |
| Filas de N tablas vía M_TABLE_STATISTICS (rápido, sin full scan). |
| 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: 200Copiar la plantilla y rellenar:
copy config\hana_config.yaml.example config\hana_config.yaml
# editar hana_config.yaml con datos realesCómo obtener el host en BTP Free Tier
Entra en BTP Cockpit
Selecciona tu subaccount → Instances and Subscriptions
Busca tu instancia SAP HANA Cloud
Haz clic en los tres puntos → Open in SAP HANA Database Explorer
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: activadoFlujo 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_infomuestra el contadorLa instancia se para sola si no hay actividad en un período —
hana_test_connectionte dirá si está caída con un error de conexión claro
Tests
.venv\Scripts\pytest.exe tests/ -vSalida esperada: 32 passed in ~2-3s
Suite | Tests | Qué cubre |
| 4 | Sandbox de rutas permitidas |
| 3 | Blacklist de comandos peligrosos |
| 7 | read/write/edit/list/search/info |
| 1 | Integridad del canal JSON-RPC (crítico) |
| 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, incluidoClaudeWork)C:/Users/Edu/DesktopC:/Users/Edu/DownloadsC:/Users/Edu/DesktopCommanderPyC:/Users/Edu/VerbaSantC:/Users/Edu/AstroExtractoC:/Users/Edu/AstroCompendiumC:/Users/Edu/MetaAstrumC:/Users/Edu/VTTsC:/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
cwdnormaliza 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.pycore/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:
boolintstrlist[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.pyP6 — 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-*.log→spawn uv ENOENTen buclemain1.log→Request timed out: isGuestConnectedrepetido cada pocos segundosClaude 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 DesktopVerificación:
C:\Users\Edu\.local\bin\uv.exe --version
# uv 0.11.1Bug 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
initializeDetectado 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:
stdoutes un canal binario exclusivo para JSON-RPC. Absolutamente nada más puede escribirse en él. Logs, banners y mensajes van astderr.
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 perfectamenteCualquier 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 → BLOQUEOSolució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.ProcessUn
asyncio.Queuedonde se acumula todo el outputUn
asyncio.Taskque drenastdouten background línea a líneaMetadatos: 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 iteracionesHistorial de commits
Hash | Descripción |
| Scaffold inicial: 10 tools, seguridad, 14 tests |
| Fix: fnmatch para glob en search_files → 15/15 tests |
| Config: rutas reales, fix hatch build target |
| Chore: ignorar scripts auxiliares _.bat / _.py |
| Fix: show_banner=False — banner FastMCP rompía JSON-RPC |
| Fix: stdin=DEVNULL — deadlock heredando stdin MCP |
| Docs: README completo en castellano |
| Feat: sesiones interactivas + mkdir/move/multi-read → 18 tools |
| Docs: README con arquitectura, bugs y roadmap detallado |
| Feat: módulo SAP HANA Cloud — hdbcli, 8 tools → 26 total |
| 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 cadenadd(variables, paths, palabras)Pero también el propio
check_command_allowedde DesktopCommanderPy afectado: comandos legítimos comoblack --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 foundexecute_command("pip install X")→ error similarGet-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 envAplicado 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 toolscreate_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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Ruta absoluta del directorio a crear. Se crean directorios intermedios automáticamente. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the file to edit. | |
| old_string | Yes | Exact text to find in the file (must be unique or use expected_replacements). | |
| new_string | Yes | Replacement text. Use empty string to delete old_string. | |
| expected_replacements | No | Expected number of occurrences to replace. Default 1. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Shell command to execute. Use PowerShell syntax on Windows. | |
| working_directory | No | Working directory for the command. Defaults to user home. | |
| timeout_seconds | No | Timeout in seconds. 0 = use configured default. | |
| environment | No | Additional environment variables as a dict. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Shell command to execute with streaming output. | |
| working_directory | No | Working directory for the command. | |
| timeout_seconds | No | Overall timeout in seconds. 0 = use configured default. | |
| environment | No | Additional environment variables as a dict. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | PID del proceso a matar inmediatamente. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the file or directory. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| table_name | Yes | Nombre de la tabla o vista. | |
| schema | No | Schema. Vacío = schema actual. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | Sentencia DDL (CREATE, ALTER, DROP, GRANT, REVOKE...). | |
| confirm | No | Debes pasar confirm=True explícitamente para ejecutar DDL. Medida de seguridad. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | Sentencia SQL a ejecutar (SELECT, CALL, etc.). Una sola sentencia. | |
| schema | No | Schema a usar. Vacío = usar el configurado por defecto. | |
| max_rows | No | Máximo de filas a devolver. Default 200. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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(*).
| Name | Required | Description | Default |
|---|---|---|---|
| tables | Yes | Tabla o tablas separadas por coma. Ej: ORDERS,ITEMS,CUSTOMERS | |
| schema | No | Schema. Vacío = schema actual. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_name | No | Filtro por nombre de schema (substring). Vacío = todos los visibles. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| schema | Yes | Schema del que listar tablas. Vacío = schema actual del usuario. | |
| filter_name | No | Filtro por nombre de tabla (substring, case-insensitive). | |
| table_type | No | Tipo: TABLE, VIEW, CALC VIEW, o vacío para todos. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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:
start_process('python -i') → PID 1234
interact_with_process(1234, 'import pandas as pd')
interact_with_process(1234, 'df = pd.read_csv("datos.csv")')
interact_with_process(1234, 'print(df.describe())')
kill_process(1234)
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | PID del proceso (obtenido de start_process). | |
| input_text | Yes | Texto a enviar al stdin del proceso. Se añade \n automáticamente si no lo tiene. | |
| timeout_seconds | No | Segundos esperando respuesta tras enviar input. Default 8. | |
| max_lines | No | Máximo de líneas de respuesta a devolver. Default 200. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | PID of the process to terminate. | |
| force | No | If True, use SIGKILL/TerminateProcess. Default False (graceful SIGTERM). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the directory to list. | |
| recursive | No | Set to true to list subdirectories recursively. Default false. | |
| max_depth | No | Maximum recursion depth when recursive=true. Default 3. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_name | No | Filter by process name (case-insensitive substring). Empty = all. | |
| sort_by | No | Sort by: 'name', 'pid', 'cpu', 'memory'. Default 'name'. | name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Ruta absoluta del fichero o directorio origen. | |
| destination | Yes | Ruta absoluta del destino. Si es directorio, mueve dentro de él. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the file to read. | |
| offset | No | Line number to start reading from (0-based). Default 0. | |
| length | No | Maximum number of lines to read. 0 means use configured limit. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| paths | Yes | Lista de rutas absolutas a leer. | |
| max_lines_each | No | Máximo de líneas por fichero. Default 200. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| pid | Yes | PID del proceso (obtenido de start_process). | |
| timeout_seconds | No | Segundos máximos esperando output nuevo. Default 5. | |
| max_lines | No | Máximo de líneas a devolver. Default 200. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | Absolute path to directory to search in. | |
| pattern | Yes | Glob pattern (e.g. '*.py') or substring to match in file names. | |
| content_search | No | Optional text to search inside file contents. Empty = skip content search. | |
| case_sensitive | No | Set to true for case-sensitive matching. Default false. | |
| max_results | No | Maximum number of results to return. Default 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Dot-separated runtime config key to update. | |
| value | Yes | New value to store. Type is validated against the config field. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Comando a ejecutar. Puede ser una shell interactiva (python -i, node -i) o cualquier proceso largo. | |
| working_directory | No | Directorio de trabajo. Por defecto el home del usuario. | |
| timeout_seconds | No | Timeout en segundos para la lectura inicial de output. 0 = usar configuración. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Absolute path to the file to write. | |
| content | Yes | Text content to write to the file. | |
| mode | No | Write mode: 'rewrite' (default) overwrites; 'append' adds at end. | rewrite |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server that enables Claude to control your computer, similar to Anthropic's computer use but easy to set up locally.327356MIT
- FlicenseAqualityDmaintenanceA safe MCP server for sandboxed filesystem operations (list, move, create directories, delete files) via pure Python, designed for Claude Desktop.5
- AlicenseNot gradedqualityDmaintenanceA secure MCP server that allows Claude to read and write local files on your machine with explicit approval gating for each access.MIT
- AlicenseAqualityBmaintenanceRuns 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.7MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/eduardoddddddd/DesktopCommanderPy'
If you have feedback or need assistance with the MCP directory API, please join our Discord server