Skip to main content
Glama
elvatis

elvatis-mcp

Official
by elvatis

elvatis-mcp

Servidor MCP para OpenClaw -- expón tu hogar inteligente, memoria, automatización cron y orquestación de subagentes de IA a Claude Desktop, Cursor, Windsurf y cualquier cliente de IA compatible con MCP.

npm License Tests AAHP Verify

¿Qué es esto?

elvatis-mcp conecta Claude (o cualquier cliente MCP) a tu infraestructura:

  • Control del hogar inteligente a través de Home Assistant (luces, termostatos, aspiradora, sensores)

  • Sistema de memoria con registros diarios almacenados en tu servidor OpenClaw

  • Gestión y activación de tareas cron

  • Orquestación multi-LLM a través de 5 backends de IA: Claude, OpenClaw, Google Gemini, OpenAI Codex y LLMs locales

  • División inteligente de prompts que analiza solicitudes complejas, enruta subtareas a la IA adecuada y ejecuta el plan con límite de velocidad (rate limiting)

La idea clave: Claude es el orquestador, pero puede delegar trabajo especializado a otros modelos de IA. Las tareas de codificación van a Codex. La investigación va a Gemini. El formateo simple va a tu LLM local (gratuito y privado). El trading y la automatización van a OpenClaw. prompt_split resuelve el enrutamiento automáticamente, y prompt_split_execute ejecuta el plan con límite de velocidad en agentes en la nube.

Related MCP server: hass-mcp-server

¿Qué es MCP?

Model Context Protocol es un estándar abierto de Anthropic que permite a los clientes de IA conectarse a servidores de herramientas externos. Una vez configurado, Claude puede llamar directamente a tus herramientas sin copiar y pegar.


Arquitectura Multi-LLM

                         You (Claude Desktop / Code / Cursor)
                                      |
                              MCP Protocol (stdio/HTTP)
                                      |
                              elvatis-mcp server
                                      |
              +--------+--------+--------+--------+--------+--------+
              |        |        |        |        |        |        |
          Claude  OpenClaw  Gemini   Codex   Local   llama   Home
          (CLI)   (SSH)     (CLI)    (CLI)   LLM    .cpp    Asst.
              |        |        |        |    (HTTP)  (proc)  (REST)
          Reason  Plugins  1M ctx  Coding    |        |        |
          Write   Trading  Multi-  Files   LM Stu  Turbo-  Lights
          Review  Auto.    modal   Debug   Ollama  Quant   Climate
                  Notify   Rsch    Shell   (free!) cache   Vacuum

Comparación de Subagentes

Herramienta

Backend

Transporte

Autenticación

Mejor para

Costo

claude_run

Claude (Anthropic)

CLI local

Inicio de sesión de Claude Code

Razonamiento complejo, redacción, revisión de código. Para clientes MCP que no son de Claude.

Uso de API

openclaw_run

OpenClaw (plugins)

SSH

Clave SSH

Trading, automatizaciones, flujos de trabajo de varios pasos

Autohospedado

gemini_run

Google Gemini

CLI local

Inicio de sesión de Google

Contexto largo (1M de tokens), multimodal, investigación

Uso de API

codex_run

OpenAI Codex

CLI local

Inicio de sesión de OpenAI

Codificación, depuración, edición de archivos, scripts de shell

Uso de API

local_llm_run

LM Studio / Ollama / llama.cpp

HTTP

Ninguno

Clasificación, formateo, extracción, reescritura

Gratis

Reanudación de Sesión

claude_run, gemini_run y codex_run utilizan la reanudación de sesión CLI para eliminar la sobrecarga de arranque en frío. En la primera llamada se crea una nueva sesión; las llamadas posteriores la reanudan para que el modelo reciba solo el mensaje nuevo en lugar de volver a procesar todo el historial de la conversación.

Métrica

Sin reanudación de sesión

Con reanudación de sesión

Tamaño del prompt por solicitud

18-25 KB

<1 KB (solo mensaje nuevo)

Tiempo de respuesta de Claude Sonnet

80-120 s (50 % de tasa de bloqueo)

5-10 s

Tasa de bloqueo silencioso

~50 %

Casi 0 %

Las sesiones se guardan en ~/.openclaw/cli-bridge/cli-sessions.json y caducan después de 2 horas de inactividad o 50 solicitudes. El session_id se devuelve en cada respuesta para que puedas inspeccionar qué sesión se utilizó.

División Inteligente de Prompts

La herramienta prompt_split analiza prompts complejos y los divide en subtareas:

User: "Search my memory for TurboQuant notes, summarize with Gemini,
       reformat as JSON locally, then save a summary to memory"

prompt_split returns:
  t1: openclaw_memory_search  -- "Search memory for TurboQuant"        (parallel)
  t3: local_llm_run           -- "Reformat raw notes as clean JSON"    (parallel)
  t2: gemini_run              -- "Summarize the key findings"          (after t1)
  t4: openclaw_memory_write   -- "Save summary to today's log"        (after t2, t3)

Usa prompt_split_execute para ejecutar el plan automáticamente, o deja que Claude lo ejecute paso a paso. Las tareas se ejecutan en orden de dependencia con grupos paralelos ejecutados simultáneamente. Hay tres estrategias de análisis:

Estrategia

Velocidad

Calidad

Usos

heuristic

Instantánea

Buena para prompts claros

Coincidencia de palabras clave, sin llamada LLM

local

5-30 s

Mejor razonamiento

Tu LLM local analiza el prompt

gemini

5-15 s

Mejor calidad

Gemini-flash analiza el prompt

auto (predeterminado)

Varía

La mejor disponible

Omite prompts simples y luego prueba gemini -> local -> heuristic


Herramientas Disponibles (34 en total)

Home Assistant (7 herramientas)

Herramienta

Descripción

home_get_state

Leer el estado de cualquier entidad de Home Assistant

home_light

Controlar luces: encendido/apagado/alternar, brillo, temperatura de color, RGB

home_climate

Controlar termostatos Tado: temperatura, modo HVAC

home_scene

Activar escenas de Hue por habitación

home_vacuum

Controlar la aspiradora Roborock: iniciar, detener, base, estado

home_sensors

Leer todos los sensores de temperatura, humedad y CO2

home_automation

Listar, activar, habilitar o deshabilitar automatizaciones de HA

Memoria (3 herramientas)

Herramienta

Descripción

openclaw_memory_write

Escribir una nota en el registro diario de hoy

openclaw_memory_read_today

Leer el registro de memoria de hoy

openclaw_memory_search

Buscar archivos de memoria en los últimos N días

Automatización Cron (7 herramientas)

Herramienta

Descripción

openclaw_cron_list

Listar todos los trabajos cron programados de OpenClaw

openclaw_cron_run

Activar un trabajo cron inmediatamente por ID

openclaw_cron_status

Obtener el estado del programador y el historial de ejecución reciente

openclaw_cron_create

Crear un nuevo trabajo cron (expresión cron, intervalo o de una sola vez)

openclaw_cron_edit

Editar un trabajo cron existente (nombre, mensaje, programación, modelo)

openclaw_cron_delete

Eliminar un trabajo cron por ID

openclaw_cron_history

Mostrar el historial de ejecución reciente de un trabajo cron

Agente OpenClaw (4 herramientas)

Herramienta

Descripción

openclaw_run

Enviar un prompt al agente de IA de OpenClaw (todos los plugins disponibles)

openclaw_status

Comprobar si el demonio de OpenClaw se está ejecutando

openclaw_plugins

Listar todos los plugins instalados

openclaw_notify

Enviar una notificación a través de WhatsApp, Telegram o el último canal utilizado

Subagentes de IA (5 herramientas)

Herramienta

Descripción

claude_run

Enviar un prompt a Claude a través de la CLI local. Para clientes MCP que no son de Claude (Cursor, Windsurf).

gemini_run

Enviar un prompt a Google Gemini a través de la CLI local. Contexto de 1M de tokens.

codex_run

Enviar una tarea de codificación a OpenAI Codex a través de la CLI local.

local_llm_run

Enviar un prompt a un LLM local (LM Studio, Ollama, llama.cpp). Gratuito y privado. Admite transmisión.

llama_server

Iniciar/detener/configurar un servidor llama.cpp con soporte de caché TurboQuant.

Gestión del Sistema (4 herramientas)

Herramienta

Descripción

system_status

Comprobar el estado de todos los servicios a la vez con latencia (HA, SSH, LLM, CLIs)

local_llm_models

Listar, cargar o descargar modelos en LM Studio / Ollama

openclaw_logs

Ver registros de puerta de enlace, agente o sistema del servidor OpenClaw

file_transfer

Subir, descargar o listar archivos en el servidor OpenClaw a través de SSH

Enrutamiento y Orquestación (3 herramientas)

Herramienta

Descripción

mcp_help

Mostrar la guía de enrutamiento. Pasa una tarea para obtener una recomendación de herramienta específica.

prompt_split

Analizar un prompt complejo y dividirlo en subtareas con asignaciones de agente.

prompt_split_execute

Ejecutar un plan dividido: enviar subtareas a los agentes en orden de dependencia con límite de velocidad.

Panel de control

Punto de conexión

Descripción

http://localhost:3334/status

Panel HTML de actualización automática (estado del servicio, modelos cargados)

http://localhost:3334/api/status

API JSON para comprobaciones de estado programáticas


Resultados de las Pruebas

Todas las pruebas se ejecutan contra servicios en vivo (LM Studio con Deepseek R1 Qwen3 8B, servidor OpenClaw a través de SSH).

  elvatis-mcp integration tests

  Local LLM (local_llm_run)

        Model: deepseek/deepseek-r1-0528-qwen3-8b
        Response: "negative"
        Tokens: 401 (prompt: 39, completion: 362)
  PASS  local_llm_run: simple classification (21000ms)
        Extracted: {"name":"John Smith","age":34}
  PASS  local_llm_run: JSON extraction (24879ms)
        Error: Could not connect to local LLM at http://localhost:19999/v1/chat/completions
  PASS  local_llm_run: connection error handling (4ms)

  Prompt Splitter (prompt_split)

        Strategy: heuristic
        Agent: codex_run
        Summary: Fix the authentication bug in the login handler
  PASS  prompt_split: single-domain coding prompt routes to codex (1ms)
        Strategy: heuristic
        Subtasks: 3
          t1: codex_run -- "Refactor the auth module"
          t2: openclaw_run -- "check my portfolio performance and"
          t3: home_light -- "turn on the living room lights"
        Parallel groups: [["t1","t3"],["t2"]]
        Estimated time: 90s
  PASS  prompt_split: heuristic multi-agent splitting (0ms)
        Subtasks: 4, Agents: openclaw_memory_write, gemini_run, local_llm_run
        Parallel groups: [["t1","t3","t4"],["t2"]]
  PASS  prompt_split: cross-domain with dependencies (1ms)
        Strategy: local->heuristic (fallback)
        Subtasks: 1
  PASS  prompt_split: local LLM strategy (with fallback) (60007ms)

  Routing Guide (mcp_help)

        Guide length: 2418 chars
  PASS  mcp_help: returns guide without task (0ms)
        Recommendation: local_llm_run (formatting task)
  PASS  mcp_help: routes formatting task to local_llm_run (0ms)
        Recommendation: codex_run (coding task)
  PASS  mcp_help: routes coding task to codex_run (0ms)

  Memory Search via SSH (openclaw_memory_search)

        Query: "trading", Results: 5
  PASS  openclaw_memory_search: finds existing notes (208ms)

  -----------------------------------------------------------
  11 passed, 0 failed, 0 skipped
  -----------------------------------------------------------

Ejecuta las pruebas tú mismo:

npx tsx tests/integration.test.ts

Requisitos previos: .env configurado, servidor LLM local en ejecución, servidor OpenClaw accesible por SSH.


Puntos de Referencia

Consulta BENCHMARKS.md para ver el conjunto completo de puntos de referencia, la metodología y la guía de contribución comunitaria.

Hardware de Referencia

Componente

Especificación

CPU

AMD Threadripper 3960X (24 núcleos / 48 subprocesos)

GPU

AMD Radeon RX 9070 XT Elite (16 GB GDDR6)

RAM

128 GB DDR4

SO

Windows 11 Pro

Tiempo de ejecución

LM Studio + Vulkan (llama.cpp-win-x86_64-vulkan-avx2@2.8.0)

Inferencia LLM Local (LM Studio, GPU Vulkan, --gpu max)

Mediana de 3 ejecuciones, max_tokens=512. Tareas: clasificar (sentimiento de 1 palabra), extraer (JSON), razonar (aritmética), codificar (función de Python). Vulkan es el tiempo de ejecución recomendado para AMD RX 9070 XT (gana en 4 de 5 modelos sobre ROCm).

Model

Params

classify

extract

reason

code

avg tok/s

Phi 4 Mini Reasoning

3B

2.6s

1.9s

4.7s

4.8s

106

Deepseek R1 0528 Qwen3

8B

3.0s

6.5s

7.2s

7.4s

70

Qwen 3.5 9B

9B

6.2s

4.0s

8.4s

7.2s

48

Phi 4 Reasoning Plus

15B

0.4s

9.7s

3.5s

9.9s

40

GPT-OSS 20B

20B

0.6s

0.6s

0.6s

1.9s

63

Aceleración de GPU frente a CPU (Deepseek R1 8B, Vulkan): classify 7.2 veces más rápido, extract 3.8 veces más rápido.

Comparación de subagentes (misma tarea, diferentes backends)

Agente

Backend

Latencia media

Coste

Notas

local_llm_run

GPT-OSS 20B (Vulkan GPU)

1.0s

Gratis

4 veces más rápido que Codex, 6 veces más rápido que Claude

codex_run

OpenAI Codex CLI

4.1s

De pago

Ideal para tareas de programación

claude_run

Claude Sonnet 4.6

6.3s (5-10s con reanudación de sesión)

De pago

Ideal para razonamiento complejo

gemini_run

Gemini 2.5 Flash

34.0s

Plan gratuito

Sobrecarga de inicio de CLI, ideal para contexto largo

Latencia del servicio (system_status)

Servicio

Latencia

Notas

Home Assistant (REST API)

48-84 ms

Red local, HTTP directo

OpenClaw SSH

273-299 ms

SSH en LAN + ejecución de comandos

Local LLM (lista de modelos)

19-38 ms

API local de LM Studio

Claude CLI (comprobación de versión)

472-478 ms

Sobrecarga de inicio de CLI

Codex CLI (comprobación de versión)

131-136 ms

Sobrecarga de inicio de CLI

Gemini CLI (comprobación de versión)

4,700-4,900 ms

Inicio de CLI + comprobación de autenticación

Precisión de prompt_split (estrategia heurística)

Métrica

Resultado

Tasa de éxito

10/10 (100 %)

Precisión del recuento de tareas

10/10 (100 %)

Coincidencia media de agente

100 %

Latencia

<1 ms (sin llamada a LLM)

Mejoras en v0.8.0+: coincidencia de expresiones regulares por límites de palabra, división de cláusulas por comas para prompts multiagente, reglas de enrutamiento por herramienta, enrutamiento de openclaw_notify. Consulta BENCHMARKS.md para ver el corpus de pruebas completo.

¿Quieres aportar benchmarks de tu hardware? Consulta BENCHMARKS.md.


Requisitos

  • Node.js 18 o posterior

  • Cliente OpenSSH (integrado en Windows 10+, macOS, Linux)

  • Una instancia de OpenClaw en ejecución accesible por SSH

  • Una instancia de Home Assistant con un token de acceso de larga duración

Opcional (para subagentes):

  • claude_run: npm install -g @anthropic-ai/claude-code y ejecuta claude una vez para autenticarte

  • gemini_run: npm install -g @google/gemini-cli y gemini auth login

  • codex_run: npm install -g @openai/codex y codex login

  • local_llm_run: cualquier servidor local compatible con OpenAI:

    • LM Studio (recomendado, con interfaz gráfica, puerto predeterminado 1234)

    • Ollama (ollama serve, puerto 11434)

    • llama.cpp (llama-server, cualquier puerto)


Instalación

Instalación global:

npm install -g @elvatis_com/elvatis-mcp

O úsalo directamente con npx (sin necesidad de instalación):

npx @elvatis_com/elvatis-mcp

Cada versión se compila y publica con GitHub Actions a partir de una etiqueta v* enviada, desde el commit exacto que nombra esa etiqueta. SECURITY.md explica qué garantiza y qué no garantiza ese proceso, y cómo verificar una versión instalada. CHANGELOG.md documenta el contenido de cada versión.


¿Dónde puedo usarlo?

elvatis-mcp funciona en cualquier cliente compatible con MCP. Cada cliente usa su propio archivo de configuración.

Cliente

Transporte

Archivo de configuración

Claude Desktop / Cowork (Windows MSIX)

stdio

%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json

Claude Desktop / Cowork (macOS)

stdio

~/Library/Application Support/Claude/claude_desktop_config.json

Claude Code (global, todos los proyectos)

stdio

~/.claude.json

Claude Code (solo este proyecto)

stdio

.mcp.json en la raíz del repositorio (ya incluido)

Cursor / Windsurf / otros

stdio o HTTP

Consulta la documentación de la aplicación

Claude Desktop y Cowork comparten el mismo archivo de configuración. Claude Code es un sistema separado.


Configuración

1. Crea tu archivo .env

cp .env.example .env
# Required
HA_URL=http://your-home-assistant:8123
HA_TOKEN=your_long_lived_ha_token
SSH_HOST=your-openclaw-server-ip
SSH_USER=your-ssh-username
SSH_KEY_PATH=~/.ssh/your_key

# Optional: Local LLM
LOCAL_LLM_ENDPOINT=http://localhost:1234/v1    # LM Studio default
LOCAL_LLM_MODEL=deepseek-r1-0528-qwen3-8b     # or omit to use loaded model

# Optional: Sub-agent models
GEMINI_MODEL=gemini-2.5-flash
CODEX_MODEL=o3

2. Configura tu cliente MCP

Claude Desktop (macOS)

Edita ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "elvatis-mcp": {
      "command": "npx",
      "args": ["-y", "@elvatis_com/elvatis-mcp"],
      "env": {
        "HA_URL": "http://your-home-assistant:8123",
        "HA_TOKEN": "your_token",
        "SSH_HOST": "your-openclaw-server-ip",
        "SSH_USER": "your-username",
        "SSH_KEY_PATH": "/Users/your-username/.ssh/your_key"
      }
    }
  }
}

Claude Desktop (Windows MSIX)

Abre este archivo (créealo si es necesario):

%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "elvatis-mcp": {
      "command": "C:\\Program Files\\nodejs\\node.exe",
      "args": ["C:\\path\\to\\elvatis-mcp\\dist\\index.js"],
      "env": {
        "HA_URL": "http://your-home-assistant:8123",
        "HA_TOKEN": "your_token",
        "SSH_HOST": "your-openclaw-server-ip",
        "SSH_USER": "your-username",
        "SSH_KEY_PATH": "C:\\Users\\your-username\\.ssh\\your_key"
      }
    }
  }
}

En Windows, usa siempre rutas absolutas completas. El entorno limitado de MSIX no resuelve ~ ni rutas relativas.

Claude Code (este proyecto)

Copia .mcp.json.example a .mcp.json (ignorado por git, nunca se confirma) y completa tus rutas y datos SSH. Luego copia .env.example a .env para la configuración restante.

Claude Code (global)

claude mcp add --scope user elvatis-mcp -- node /path/to/elvatis-mcp/dist/index.js

Transporte HTTP (clientes remotos)

MCP_TRANSPORT=http MCP_HTTP_PORT=3333 npx @elvatis_com/elvatis-mcp

Conecta tu cliente a http://your-server:3333/mcp.


Variables de entorno

Obligatorias

Variable

Descripción

HA_URL

URL base de Home Assistant, p. ej. http://192.168.x.x:8123

SSH_HOST

Nombre de host o IP del servidor OpenClaw

Opcionales

Variable

Por defecto

Descripción

HA_TOKEN

--

Token de acceso de larga duración de Home Assistant

SSH_PORT

22

Puerto SSH

SSH_USER

chef-linux

Nombre de usuario SSH

SSH_KEY_PATH

~/.ssh/openclaw_tunnel

Ruta a la clave privada SSH

OPENCLAW_GATEWAY_URL

http://localhost:18789

URL de OpenClaw Gateway

OPENCLAW_GATEWAY_TOKEN

--

Token de API de Gateway opcional

OPENCLAW_DEFAULT_AGENT

--

Agente con nombre para openclaw_run

GEMINI_MODEL

gemini-2.5-flash

Modelo por defecto para gemini_run

CODEX_MODEL

--

Modelo por defecto para codex_run

LOCAL_LLM_ENDPOINT

http://localhost:1234/v1

URL del servidor LLM local (por defecto LM Studio)

LOCAL_LLM_MODEL

--

Modelo local por defecto (omítelo para usar el modelo cargado en el servidor)

MCP_TRANSPORT

stdio

Modo de transporte: stdio o http

MCP_HTTP_PORT

3333

Puerto HTTP

SSH_DEBUG

--

Establécelo en 1 para obtener salida SSH detallada

ELVATIS_DATA_DIR

~/.elvatis-mcp

Directorio para datos de uso persistentes (limitador de tasa)

RATE_LIMITS

--

Cadena JSON con anulaciones de límite de tasa por agente


Configuración de LLM local

elvatis-mcp funciona con cualquier servidor local compatible con OpenAI. Tres opciones populares:

LM Studio (recomendado para escritorio)

  1. Descárgalo de lmstudio.ai

  2. Carga un modelo (p. ej. Deepseek R1 Qwen3 8B, Phi 4 Mini)

  3. Haz clic en "Local Server" en la barra lateral y actívalo

  4. El servidor se ejecuta en http://localhost:1234/v1 (el predeterminado)

Ollama

ollama serve                    # starts server on port 11434
ollama run llama3.2             # downloads and loads model

Establece LOCAL_LLM_ENDPOINT=http://localhost:11434/v1 en tu .env.

llama.cpp

llama-server -m model.gguf --port 8080

Establece LOCAL_LLM_ENDPOINT=http://localhost:8080/v1 en tu .env.

Modelos recomendados por tarea

Modelo

Tamaño

Ideal para

Phi 4 Mini

3B

Clasificación, formato y extracción rápidos

Deepseek R1 Qwen3

8B

Razonamiento, análisis y división de prompts

Phi 4 Reasoning Plus

15B

Razonamiento complejo con calidad

GPT-OSS

20B

Propósito general, respuestas más largas

Los modelos de razonamiento (Deepseek R1, Phi 4 Reasoning) envuelven su cadena de pensamiento en etiquetas thinking. elvatis-mcp las elimina automáticamente para darte respuestas limpias.


Configuración de SSH

Las herramientas cron, memory y OpenClaw se comunican con tu servidor a través de SSH.

# Verify connectivity
ssh -i ~/.ssh/your_key your-username@your-server "openclaw --version"

# Optional: SSH tunnel for OpenClaw WebSocket gateway
ssh -i ~/.ssh/your_key -L 18789:127.0.0.1:18789 -N your-username@your-server

En Windows, elvatis-mcp resuelve automáticamente el binario SSH a C:\Windows\System32\OpenSSH\ssh.exe y reintenta en fallos de conexión transitorios. Establece SSH_DEBUG=1 para obtener una salida detallada.


Comando de barra /mcp-help

En Claude Code, el comando de barra /mcp-help muestra la guía completa de enrutamiento de 34 herramientas como salida formateada:

/mcp-help                           # full guide
/mcp-help openclaw_status           # help for a specific tool
/mcp-help analyze this trading strategy for risk  # routing recommendation

Límite de tasa

Los subagentes en la nube (claude_run, codex_run, gemini_run) tienen límite de tasa para evitar costes descontrolados. Límites predeterminados:

Agente

/min

/h

/día

Coste est./llamada

claude_run

5

30

200

$0.03

codex_run

5

30

200

$0.02

gemini_run

10

60

500

$0.01

Los agentes locales (local_llm_run, home_*, openclaw_*) son ilimitados.

Los datos de uso se guardan en ~/.elvatis-mcp/usage.json. Anula los límites mediante la variable de entorno RATE_LIMITS:

RATE_LIMITS='{"claude_run":{"perMinute":3,"perDay":100}}'

Desarrollo

git clone https://github.com/elvatis/elvatis-mcp
cd elvatis-mcp
npm install          # builds automatically via prepare script
cp .env.example .env # fill in your values
node dist/index.js   # starts in stdio mode, waits for MCP client

Compila en modo observador:

npm run dev

Ejecuta las pruebas de integración:

npx tsx tests/integration.test.ts

Estructura del proyecto

src/
  index.ts              MCP server entry, tool registration, transport, dashboard
  config.ts             Environment variable configuration
  dashboard.ts          Status dashboard HTML renderer
  ssh.ts                SSH exec helper (Windows/macOS/Linux)
  spawn.ts              Local process spawner for CLI sub-agents (supports stdin piping)
  session-registry.ts   CLI session registry: persist/resume Claude, Gemini, Codex sessions
  tools/
    home.ts             Home Assistant: light, climate, scene, vacuum, sensors
    home-automation.ts  HA automations: list, trigger, enable, disable
    memory.ts           Daily memory log: write, read, search (SSH)
    cron.ts             OpenClaw cron: list, run, status (SSH)
    cron-manage.ts      OpenClaw cron: create, edit, delete, history (SSH)
    openclaw.ts         OpenClaw agent orchestration (SSH)
    openclaw-logs.ts    OpenClaw server log viewer (SSH)
    notify.ts           WhatsApp/Telegram notifications via OpenClaw
    claude.ts           Claude sub-agent (local CLI, for non-Claude clients)
    gemini.ts           Google Gemini sub-agent (local CLI)
    codex.ts            OpenAI Codex sub-agent (local CLI)
    local-llm.ts        Local LLM sub-agent (OpenAI-compatible HTTP)
    local-llm-models.ts LM Studio model management (list/load/unload)
    llama-server.ts     llama.cpp server manager (start/stop/configure)
    file-transfer.ts    File upload/download via SSH
    system-status.ts    Unified health check across all services
    splitter.ts         Smart prompt splitter (multi-strategy)
    split-execute.ts    Plan executor with agent dispatch and rate limiting
    help.ts             Routing guide and task recommender
    routing-rules.ts    Shared routing rules and keyword matching
  rate-limiter.ts       Rate limiting + cost tracking for cloud sub-agents
tests/
  unit.test.ts          42 unit tests (no external services needed)
  integration.test.ts   Live integration tests

Licencia

Apache-2.0 -- Copyright 2026 Elvatis

Available Tools

37 tools
claude_runA

Send a prompt to Claude via the local Claude Code CLI. Use this when the MCP client is NOT Claude (e.g. Cursor, Windsurf, Zed) or for cross-checking results from other AI backends. Uses cached Anthropic auth.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoClaude model to use, e.g. "claude-sonnet-4-6", "claude-opus-4-6", "claude-haiku-4-5". Omit to use the default model.
promptYesPrompt or question to send to Claude.
timeout_secondsNoMax seconds to wait for a response.
working_directoryNoIgnored for Claude (always runs from homedir to prevent agentic mode). Kept for API compatibility.

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses caching of Anthropic auth and notes that working_directory is ignored for safety. However, it does not describe output format, error handling, or rate limits, which are gaps for a tool with no annotations.

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

Conciseness5/5

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

Three sentences, no redundancy. First sentence states purpose, second gives usage context, third mentions auth. Every sentence earns its place. Front-loaded with the most critical information.

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

Completeness3/5

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

The description adequately covers purpose, usage context, auth, and one parameter note, but given no output schema and no annotations, it is missing output format, error handling, and model availability details. Adequate but not fully complete.

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

Parameters4/5

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

All 4 parameters have schema descriptions (100% coverage). The description adds value beyond the schema by explaining the authentication caching, the default timeout (60s), and that working_directory is ignored for Claude. This extra context helps the agent use parameters correctly.

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

Purpose5/5

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

The description clearly states the verb 'Send' and resource 'prompt to Claude via local Claude Code CLI'. It explicitly distinguishes from sibling tools like codex_run, gemini_run, and local_llm_run by specifying when to use: when the MCP client is not Claude or for cross-checking results.

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

Usage Guidelines4/5

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

The description provides explicit usage guidance: 'Use this when the MCP client is NOT Claude (e.g. Cursor, Windsurf, Zed) or for cross-checking results from other AI backends.' It lacks explicit when-not-to-use but the positive cases are clear and imply alternatives.

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

codex_runA

Send a task to OpenAI Codex via the local codex CLI. Specializes in coding tasks, file operations, and technical analysis. Uses cached OpenAI auth - no API key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoOpenAI model to use, e.g. "o3", "gpt-5-codex". Omit to use the configured default (CODEX_MODEL env var or Codex default).
promptYesTask or question to send to the Codex AI agent. Works best for coding tasks, file operations, and technical analysis.
sandboxNo"full-auto": workspace-write sandbox, no approval prompts (default, recommended). "dangerous": bypass all approvals and sandbox - only use in isolated environments.full-auto
timeout_secondsNoMax seconds to wait. Codex tasks can take longer than Gemini - 120s default.
working_directoryNoWorking directory for the Codex process. Set this to the project root so Codex can read and write local files. Defaults to the user home directory.

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool uses cached OpenAI auth and requires no API key, which is a useful behavioral detail. It also mentions that tasks can take longer than Gemini, setting expectations. However, it does not discuss side effects such as file modifications (sandbox behavior) or potential irreversible actions, but the sandbox parameter partially covers that. Since the sandbox parameter mentions approvals and workspace-write, the description provides decent transparency without contradicting anything.

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

Conciseness4/5

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

The description is efficient and front-loaded: it opens with the core purpose, then adds key differentiators (specialization and auth) in a compact form. The sentence about cached auth is useful, but the description could be slightly more structured by separating general purpose from usage notes. Overall, it is concise and clearly structured without wasted words.

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

Completeness4/5

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

The tool has moderate complexity (5 params, one enum, no output schema), and the description plus schema provide enough for an agent to call it correctly. It covers the key operational aspects: what it does, how to specify the model, sandbox options, timeout, and working directory. There is no explicit mention of return format, but given no output schema, that is a minor gap. The description is sufficiently complete for a coding-task tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly, including the sandbox enum and the timeout's purpose. The description adds a bit of context by mentioning that Codex tasks can take longer than Gemini, which explains the timeout default, and that working_directory should be set to the project root so Codex can read/write files. This adds marginal value beyond the schema, so a baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Send' and the resource 'task to OpenAI Codex via the local codex CLI', and specifies the specialization in coding tasks, file operations, and technical analysis. It distinguishes from siblings like gemini_run, claude_run, and local_llm_run by naming the specific platform (Codex) and the local CLI mechanism.

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

Usage Guidelines3/5

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

The description implies that this tool is for coding tasks and specifically mentions it can take longer than Gemini, which hints at when to use it relative to siblings with faster models. However, there is no explicit guidance on when NOT to use it (e.g., for non-coding tasks) or direct comparison with alternatives like gemini_run or claude_run. The specializations are mentioned but not framed as usage conditions.

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

file_transferA

Upload, download, or list files on the OpenClaw server via SSH. Supports text and binary files up to 10MB. "download" without local_path returns file content directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes"upload": local -> server, "download": server -> local, "list": list files in a server directory.
local_pathNoPath on the local machine. Required for upload (source) and download (destination). For download, if omitted, file content is returned in the response instead of saved to disk.
remote_pathYesPath on the OpenClaw server (e.g. "~/scripts/backup.sh" or "~/.openclaw/workspace/trading/").

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description must carry the full behavioral transparency burden. It discloses supported file types, size limit, and special download behavior, but does not mention authentication requirements, error handling, or what happens if a file already exists. More detail would improve transparency.

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

Conciseness5/5

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

The description is concise: two sentences efficiently cover purpose, constraints, and a special use case. Every word adds value with no redundancy or fluff.

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

Completeness4/5

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

Given the tool's complexity (3 parameters, simple enum action, no output schema), the description is fairly complete. It covers actions, remote path, local path optionality, file types, and size. It could mention that 'list' returns a directory listing, but that is implied by the enum.

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

Parameters4/5

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

The input schema already describes all three parameters with 100% coverage. The description adds value by explaining the special case for download without local_path (returns content) and the size limit, which are not in the schema. This enhances understanding beyond the schema alone.

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

Purpose5/5

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

The description clearly states the tool's purpose: to upload, download, or list files on an OpenClaw server via SSH. It specifies supported file types (text and binary), size limit (10MB), and a special behavior for download without local_path. This clearly distinguishes it from sibling tools which are mostly for running code or home automation.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (SSH file transfers) and gives a specific guideline for 'download' without local_path. However, it does not explicitly mention when not to use it or suggest alternative tools, though the sibling tools are quite different.

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

gemini_runA

Send a prompt to Google Gemini via the local gemini CLI. Fast, direct LLM call with no OpenClaw overhead. Uses cached Google auth - no API key required.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoGemini model to use, e.g. "gemini-2.5-pro" or "gemini-2.5-flash". Omit to use the configured default (GEMINI_MODEL env var).
promptYesPrompt or question to send to the Gemini AI model.
timeout_secondsNoMax seconds to wait for a response.
working_directoryNoWorking directory for the Gemini process. Set this to the project root so Gemini can read local files. Defaults to the user home directory.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the execution mechanism ('local gemini CLI'), authentication behavior ('cached Google auth'), and the lack of an API key requirement. But it does not mention failure modes, the dependency on the CLI being installed, potential side effects from working_directory, or what the response contains.

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

Conciseness4/5

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

Three short sentences with the core action front-loaded and each additional sentence conveying a distinct non-obvious fact (speed/no overhead, cached auth/no API key). It is slightly redundant because 'Fast, direct LLM call with no OpenClaw overhead' partially repeats the implications of 'via the local gemini CLI,' but overall it is tight and efficient.

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

Completeness3/5

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

For a simple 4-parameter tool with full schema coverage, the description covers provider, execution method, and auth context. However, because there is no output schema, the description should have mentioned what the tool returns or how errors surface, and it remains silent on exit/error behavior. This is adequate but not complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all four parameters with sufficient detail. The description adds no parameter-specific meaning beyond restating that a prompt is sent, so the baseline score of 3 applies.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Send a prompt to Google Gemini via the local gemini CLI,' which clearly differentiates it from sibling LLM tools like codex_run, claude_run, and local_llm_run. The extra traits, 'no OpenClaw overhead' and 'no API key required,' further distinguish this as a lightweight, direct Gemini call.

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

Usage Guidelines3/5

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

The description implies usage context with 'Fast, direct LLM call with no OpenClaw overhead' and 'Uses cached Google auth - no API key required,' suggesting it is for minimal-overhead Gemini calls or when API keys are not available. However, it does not explicitly state when to use this tool instead of siblings like local_llm_run or codex_run, nor does it mention any exclusions.

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

home_automationB

List, trigger, enable, or disable Home Assistant automations. "list" shows all automations with their state and last trigger time.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAction: "list" shows all automations, "trigger" fires one immediately, "enable"/"disable" toggles an automation on or off.
entity_idNoAutomation entity ID (e.g. "automation.lights_off_at_night"). Required for trigger/enable/disable.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description must disclose side effects and constraints. It only details the output of 'list' (state and last trigger time). For trigger, enable, disable, it does not state whether actions are immediate, reversible, or require specific permissions. This lack of transparency for mutation operations is a significant gap.

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

Conciseness4/5

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

The description is two sentences, front-loaded with the tool's purpose. The second sentence could be integrated into the first, but overall it is efficient. No unnecessary words.

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

Completeness2/5

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

Given the tool's multi-action nature, no output schema, and two parameters, the description is incomplete. It does not describe the effect or output of trigger, enable, disable, nor any prerequisites or error conditions. The agent lacks full context for effective invocation.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaning for the 'action' parameter by explaining the 'list' output. However, it does not elaborate on 'entity_id' beyond its schema description, nor does it clarify how the action affects entity_id for non-list operations.

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

Purpose4/5

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

The description clearly identifies the tool as managing Home Assistant automations with actions: list, trigger, enable, disable. It distinguishes from sibling tools like home_light or home_climate by focusing on automations. However, it only elaborates on the 'list' action, leaving other actions partially defined.

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

Usage Guidelines3/5

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

The description implies the tool is for automation management but provides no explicit guidance on when to use it vs alternatives like home_get_state or home_scene. No exclusions or conditions are stated, so usage context is implied but not explicit.

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

home_climateA

Control Tado thermostats: set target temperature or HVAC mode (heat/auto/off)

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesClimate entity, e.g. climate.wohnzimmer
hvac_modeNoHVAC mode
temperatureNoTarget temperature in °C

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool controls (mutates) settings but does not mention side effects, permanence, authentication needs, or other behavioral traits.

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

Conciseness5/5

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

The description is a single concise sentence (13 words) that is front-loaded with key information. Every word adds value; no unnecessary content.

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

Completeness3/5

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

Given the simple tool (3 parameters, no output schema), the description is adequate for basic usage. However, it omits context like whether authentication is required, what happens on failure, or how the tool integrates with the broader home environment.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description reinforces the purpose of parameters (e.g., 'target temperature') but adds limited new meaning. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Control', the specific resource 'Tado thermostats', and the actions 'set target temperature or HVAC mode (heat/auto/off)'. It effectively distinguishes from sibling tools like home_light or home_vacuum.

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

Usage Guidelines3/5

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

The description implies usage for thermostat control but provides no explicit guidance on when to use this tool versus alternatives like home_automation, nor does it mention any prerequisites or exclusions.

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

home_get_stateA

Get the current state of a Home Assistant entity (light, climate, sensor, switch, vacuum, media_player, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYesEntity ID, e.g. light.wohnzimmer or climate.wohnzimmer

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It indicates a read-only operation but does not disclose any additional behavioral traits such as authentication needs, error handling, or side effects.

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

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded and contains no unnecessary words. Every part adds value.

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

Completeness4/5

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

For a simple read operation with one parameter and no output schema, the description is reasonably complete. It lists entity types, but could hint at the return format (JSON state object).

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

Parameters3/5

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

Schema coverage is 100% with the entity_id parameter clearly described. The description does not add significant meaning beyond what the schema already provides, thus baseline score of 3.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'current state of a Home Assistant entity', with a list of example entity types. This distinguishes it from sibling tools like home_light or home_climate which are entity-specific.

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

Usage Guidelines3/5

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

The description implies this tool is for generic state retrieval, but it does not explicitly state when to use it versus the specific sibling tools (e.g., home_light). No exclusions or alternatives are mentioned.

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

home_lightB

Control a light: turn on/off/toggle, set brightness (0-100%), color temperature, or RGB color

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes
entity_idYesLight entity ID, e.g. light.wohnzimmer
rgb_colorNoRGB color as [r, g, b]
brightness_pctNoBrightness in percent (0-100)
color_temp_kelvinNoColor temperature in Kelvin (2000-6500)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It indicates mutation by 'control' but omits side effects, error handling (e.g., setting conflicting parameters like RGB and color temperature), idempotency, or prerequisites (device availability, permissions).

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

Conciseness5/5

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

A single concise sentence front-loads the core purpose and enumerates key capabilities. No redundancy or unnecessary words.

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

Completeness2/5

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

Despite good parameter coverage, the description fails to mention the required entity_id parameter or explain return behavior (no output schema). It does not address combinations of parameters or device-specific constraints, leaving gaps for an agent.

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

Parameters3/5

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

Schema coverage is 80% (4 of 5 params described). The description maps actions and parameters (e.g., 'color temperature' to color_temp_kelvin) but adds minimal meaning beyond the schema's own descriptions. The entity_id parameter is not mentioned in the description, relying on the schema.

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

Purpose5/5

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

The description clearly states the tool controls a light with specific operations (on/off/toggle, brightness, color temperature, RGB). It differentiates from sibling tools like home_climate or home_vacuum by naming the exact capability.

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

Usage Guidelines3/5

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

The description lists operations but does not explicitly state when to use this tool over alternatives like home_get_state (reading state) or home_scene (preset scenes). The context of sibling tools implies light-specific control, but no exclusionary guidance is provided.

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

home_sceneA

Activate a Hue scene in a room (wohnzimmer, flur, kuche, schlafzimmer, home)

ParametersJSON Schema
NameRequiredDescriptionDefault
roomYesRoom name
sceneYesScene name, e.g. entspannen, konzentrieren, lesen, nachtlicht, hell, gedimmt

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only states 'Activate' which implies mutation, but it does not disclose side effects, reversibility, or any prerequisites (e.g., Hue bridge). Lacks sufficient detail for a mutating tool.

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

Conciseness5/5

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

Single sentence with no wasted words. Room list is parenthetically appended, making it efficient while providing essential context.

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

Completeness3/5

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

For a simple tool with two parameters and no output schema, the description covers basic functionality. However, it lacks usage guidelines and behavioral transparency, leaving the agent with incomplete context for correct invocation among siblings.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description repeats the room enum values and gives scene examples that are also in the schema description. It adds marginal value beyond the schema, meriting the baseline score of 3.

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

Purpose5/5

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

Description clearly states verb 'Activate' and resource 'Hue scene in a room', and explicitly lists the valid room names (enum values), distinguishing it from sibling tools like home_light which target individual lights.

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

Usage Guidelines3/5

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

Usage is implied (activate a scene), but there is no explicit guidance on when to use this tool versus alternatives such as home_light or home_get_state. No exclusions or prerequisites are mentioned.

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

home_sensorsA

Read all environmental sensors: temperature, humidity, CO2 for all rooms plus outside temperature

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read frequency, caching, permission requirements, or side effects. For a data-reading tool, basic transparency is missing.

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

Conciseness5/5

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

Single sentence, no redundant words, front-loaded with verb and resource. Efficient and to the point.

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

Completeness4/5

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

No output schema exists, but the description adequately lists what sensors are read. Could mention if data is current or historic, but for a simple read-all tool it is sufficient.

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

Parameters4/5

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

Schema has no parameters (100% coverage by default). The description adds meaning by listing the sensor types included, which is useful context beyond the empty schema.

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

Purpose5/5

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

The description clearly states the verb 'Read' and specifies the resource 'all environmental sensors' with explicit sensor types (temperature, humidity, CO2, outside temperature). It distinguishes from sibling tools like home_climate and home_get_state.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Sibling tools like home_climate or home_automation might overlap, but the description provides no context for choosing this tool.

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

home_vacuumA

Control the Roborock vacuum: start full clean, stop, return to dock, or get status

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description alone must disclose behavioral traits. It only lists actions without explaining side effects, prerequisites, or state implications (e.g., what happens if already cleaning).

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

Conciseness5/5

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

The description is a single sentence that front-loads the purpose and efficiently lists all actions, with no extraneous words.

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

Completeness4/5

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

For a simple 1-parameter tool with no output schema, the description covers the main purpose and each action sufficiently, though it omits any state or prerequisite details.

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

Parameters4/5

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

The description adds meaning beyond the enum by clarifying 'start' as 'start full clean' and naming the other actions, which helps an agent understand each option's purpose despite 0% schema description coverage.

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

Purpose5/5

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

The description clearly states the tool controls a Roborock vacuum and lists specific actions (start, stop, return to dock, get status), which distinguishes it from sibling tools like home_light or home_climate.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives; it simply describes what the tool does without any when-to-use or 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.

llama_serverA

Manage a local llama.cpp server: start with specific model, cache type (turbo2/turbo3/turbo4 for TurboQuant), GPU layers, and context size. Runs alongside LM Studio on a different port. Use "status" to check, "stop" to kill. Once started, use local_llm_run with the endpoint to query it.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoPort to run the server on (default: 8082, avoids conflict with LM Studio on 1234).
actionYes"start" launches a llama-server process, "stop" kills it, "status" shows if running.
extra_argsNoAdditional CLI arguments to pass to llama-server (e.g. ["--threads", "8"]).
gpu_layersNoNumber of layers to offload to GPU (0 = CPU only). Use -1 for all layers.
model_pathNoPath to GGUF model file. Required for "start".
cache_type_kNoKV cache type for keys. Options: q8_0, q4_0, f16, turbo2, turbo3, turbo4 (TurboQuant fork). Default: f16.
cache_type_vNoKV cache type for values. Same options as cache_type_k. Asymmetric config (e.g. q8_0 keys + turbo4 values) often gives best results.
context_sizeNoContext window size in tokens (default: 4096).
flash_attentionNoEnable flash attention (-fa). Recommended for long contexts.

TDQS

A4.2/5.0
Behavior3/5

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

Without annotations, the description discloses basic behaviors: starting a server, using status/stop, and cache types. However, it does not detail side effects, error handling, or prerequisites for starting, which would improve transparency.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the core purpose, and each sentence provides essential information without redundancy.

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

Completeness4/5

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

The description covers the main workflow (start, stop, status) and key parameters, and references sibling tools. However, it lacks details on error scenarios or prerequisites like requiring model_path for start, but overall it is fairly complete for the tool's complexity.

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

Parameters4/5

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

Schema description coverage is 100%, providing a baseline of 3. The description adds value by explaining cache types in the context of TurboQuant and advising that asymmetric configuration often yields best results for cache_type_v.

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

Purpose5/5

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

The description clearly states the tool manages a local llama.cpp server with start, stop, and status actions. It distinguishes from siblings like local_llm_run by indicating that once started, local_llm_run is used for querying.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool (start with specific model, cache type, etc.) and mentions that it runs alongside LM Studio on a different port. It also directs to local_llm_run for queries, but lacks explicit when-not-to-use or alternative options.

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

local_llm_modelsA

List, load, or unload models on the local LLM server. "list" shows available models. "load"/"unload" switches models in LM Studio without opening the GUI (LM Studio only).

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel identifier for load/unload (e.g. "microsoft/phi-4-mini-reasoning"). Required for load/unload.
actionNoAction: "list" shows available models, "load" loads a model, "unload" unloads a model. Load/unload requires LM Studio (not supported by all servers).list
endpointNoOverride the local LLM endpoint URL. Omit to use LOCAL_LLM_ENDPOINT env var or default.

TDQS

A4.1/5.0
Behavior3/5

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

The description discloses that load/unload only works with LM Studio and switches models without GUI, which is useful behavioral context. However, it lacks details on side effects (e.g., memory, time to load), error handling, or whether unloading affects running inference. As annotations are absent, the description carries the full burden and is incomplete.

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

Conciseness5/5

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

The description is only two sentences, front-loading the core purpose and then clarifying the LM Studio constraint. Every sentence contributes necessary information without redundancy or fluff. Very efficient.

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

Completeness3/5

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

The description covers the main actions but leaves gaps: it does not describe the return format for 'list' (e.g., JSON array), nor what happens on success/failure for load/unload. With no output schema and three actions, more detail on return values and state changes would improve completeness.

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

Parameters4/5

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

All three parameters are described in the schema (100% coverage). The description adds value by explaining the action enum values ('list' shows models, 'load' loads a model) and providing an example model identifier ('microsoft/phi-4-mini-reasoning'). This supplements the schema beyond redundancy.

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

Purpose5/5

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

The description clearly states the verb 'List, load, or unload' and the resource 'models on the local LLM server.' It distinguishes the tool from siblings like 'local_llm_run' (which handles inference) and 'llama_server' by specifying model management. The three actions are explicitly listed, making the purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context for each action: list shows available models, load/unload switches models. It also notes that load/unload requires LM Studio, implying when not to use these actions. However, it does not explicitly compare to alternatives or give when-not-to-use advice beyond the LM Studio limitation.

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

local_llm_runA

Send a prompt to a local LLM (LM Studio, Ollama, llama.cpp, or any OpenAI-compatible server). Free, private, no API key needed. Best for simple tasks: classify, format, extract, rewrite, proofread. Set stream=true for token-by-token progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel identifier as shown in LM Studio / Ollama (e.g. "deepseek-r1-0528-qwen3-8b", "phi-4-mini"). Omit to use the server's currently loaded model or LOCAL_LLM_MODEL env var.
promptYesPrompt or question to send to the local LLM.
streamNoStream response token-by-token via MCP progress notifications. The client sees partial content in real time. Final result is still returned as a complete response.
systemNoOptional system message to set the LLM's behavior.
endpointNoOverride the local LLM endpoint URL (e.g. "http://localhost:11434/v1" for Ollama). Omit to use LOCAL_LLM_ENDPOINT env var or default (http://localhost:1234/v1 for LM Studio).
max_tokensNoMaximum tokens to generate. Default: server default.
temperatureNoSampling temperature (0 = deterministic, higher = more creative). Default: server default.
timeout_secondsNoMax seconds to wait for a response.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: the tool is free, private, requires no API key, and supports streaming via 'stream=true'. It does not mention potential side effects or prerequisites, but for a read-like operation this is adequate.

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

Conciseness5/5

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

The description is extremely concise—two sentences achieving high information density. The first sentence states purpose and key attributes; the second clarifies when to use and a streaming option. No wasted words.

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

Completeness4/5

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

Given the tool's medium complexity (8 parameters, no output schema), the description covers purpose, usage scope, and a key optional feature (streaming). It provides enough context for an agent to decide and invoke correctly, though lacking details on error handling or response format.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds little beyond the schema, only reiterating the streaming hint and the default behavior for model/endpoint. No additional parameter context or examples are provided.

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

Purpose5/5

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

The description clearly states the tool sends a prompt to a local LLM, explicitly listing supported backends (LM Studio, Ollama, etc.) and use cases (classify, format, extract, rewrite, proofread). It differentiates from siblings like claude_run, gemini_run, and llama_server by emphasizing 'Free, private, no API key needed' and 'Best for simple tasks.'

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

Usage Guidelines4/5

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

The description tells the agent this tool is 'Best for simple tasks' and lists specific task types, giving clear guidance on when to use it. However, it does not explicitly state when NOT to use it or suggest alternative tools for complex tasks, which would improve the score further.

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

mcp_helpA

List all available elvatis-mcp tools with a routing guide. Optionally provide a task description to get a specific recommendation for which sub-agent (openclaw_run, gemini_run, codex_run, local_llm_run) or tool to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskNoOptional: describe your task or question. If provided, returns a specific routing recommendation for which tool(s) to use.

TDQS

A4.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It does not disclose whether the tool is read-only, any side effects, or how the recommendation is generated (e.g., LLM call). For a help tool, these are typically safe, but the description lacks explicit transparency.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose. No redundant words, efficient and clear.

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

Completeness5/5

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

Given a single optional parameter and no output schema, the description fully covers both modes of operation (list and recommend). No additional context is needed.

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

Parameters4/5

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

Schema coverage is 100% with a clear description for the 'task' parameter. The description adds context by mentioning sub-agent names (openclaw_run, gemini_run, etc.), which enriches the schema.

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

Purpose5/5

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

The description clearly states the tool lists available tools and optionally provides a routing recommendation based on a task description. It differentiates itself from sibling tools which are specific execution agents.

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

Usage Guidelines4/5

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

The description implies usage: list tools or get a recommendation by providing a task. It does not explicitly state when not to use or alternatives, but the context makes it clear this is an introspection tool.

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

openclaw_cron_createA

Create a new cron job on the OpenClaw server. Supports cron expressions ("0 9 * * *"), intervals ("every 30m"), and one-shot ("at 2026-04-01T14:00" or "+20m"). Optionally deliver results via WhatsApp/Telegram.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesJob name (e.g. "daily-portfolio-check")
modelNoModel override (e.g. "openai-codex/gpt-5.2", "google-gemini-cli/gemini-2.5-flash"). Omit to use the server default.
targetNoDelivery target (phone number or chat ID). Only used with channel.
channelNoDelivery channel for results: "whatsapp", "telegram", "last". Omit for no delivery.
messageYesThe prompt/message the agent will execute on each run.
disabledNoCreate the job in disabled state (default: false, job starts immediately).
scheduleYesWhen to run. Accepts: cron expression: "0 9 * * *" (daily at 9am) interval: "every 30m", "every 6h" one-shot: "at 2026-04-01T14:00:00" or "+20m" (in 20 minutes)
timezoneNoIANA timezone for cron expressions (e.g. "Europe/Berlin"). Omit for server default.

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses schedule varieties, optional delivery, and the disabled state parameter. However, it does not mention side effects (e.g., overwriting existing jobs), authentication needs, or whether creation is synchronous. Adequate but not thorough.

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

Conciseness5/5

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

The description is extremely concise: two sentences covering core functionality, schedule types, and delivery option. No extraneous words. Efficient and front-loaded.

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

Completeness3/5

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

Given no output schema, the description should hint at return values (e.g., job ID) or confirmation. It does not. Also omits behavior on duplicate names. But it covers key aspects: parameters, schedule syntax, and delivery. Adequate but with gaps for a creation tool.

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

Parameters3/5

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

Schema coverage is 100% with each parameter described. The description adds context on schedule formats and delivery channels, but this largely echoes the parameter descriptions. Does not add meaning beyond schema; baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb (create) and resource (cron job on OpenClaw server). It distinguishes from sibling cron tools (edit, delete, list) by focusing on creation. Mentions supported schedule types and optional delivery, leaving no ambiguity about the tool's function.

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

Usage Guidelines3/5

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

The description implies when to use (scheduling tasks) but does not explicitly contrast with siblings like openclaw_cron_edit or openclaw_cron_delete. No guidance on when NOT to use or prerequisites (e.g., server access). Context is clear but incomplete for a new agent.

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

openclaw_cron_deleteB

Delete a cron job by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob ID (UUID) to delete.

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are present. The description does not disclose any behavioral traits (e.g., permanence, authorization needs) beyond the basic fact of deletion.

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

Conciseness5/5

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

A single sentence of 7 words, perfectly concise with no extraneous information.

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

Completeness2/5

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

Given the simple interface (1 param, no output schema), the description minimally states the function but offers no context about effects, errors, or irreversibility.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no new meaning beyond what is already in the parameter description ('Job ID (UUID) to delete').

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

Purpose5/5

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

The description clearly states the verb 'Delete' and the resource 'cron job by its ID', effectively distinguishing it from sibling tools like create, edit, and list.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or exclusions.

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

openclaw_cron_editB

Edit an existing cron job. Change its name, message, schedule, or model.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob ID (UUID) to edit.
nameNoNew job name.
modelNoNew model override.
messageNoNew agent message.
scheduleNoNew schedule (cron expression, interval, or one-shot).

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry full burden. It fails to disclose whether editing is a full replacement or partial merge, what happens to unspecified fields, required permissions, or side effects. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, efficient sentence with zero wasted words. It is front-loaded and easy to parse.

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

Completeness3/5

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

Given 5 parameters and no output schema, the description is somewhat incomplete. It doesn't explain the editing semantics (merge vs replace), schedule format validation, or confirm if the id must exist. Still minimally adequate.

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

Parameters3/5

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

Schema coverage is 100%, so the schema fully documents each parameter. The description mentions the editable fields but adds no extra meaning (e.g., format constraints, default behavior). Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool edits an existing cron job and lists the editable fields (name, message, schedule, model). It uses a specific verb (edit) and resource (cron job), and implicitly distinguishes from sibling tools like openclaw_cron_create and openclaw_cron_delete.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, no when-not scenarios. It only states what the tool does, leaving the agent without decision support.

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

openclaw_cron_historyB

Show recent execution history for cron jobs. Optionally filter by job ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesJob ID (UUID) to show history for. Use openclaw_cron_list to find IDs.
linesNoNumber of recent runs to show.

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It says 'recent execution history' but does not clarify what 'recent' means, nor does it mention ordering, pagination, or limitations. The lines parameter max is 100 but not stated. Partial transparency is provided.

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

Conciseness4/5

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

The description is a single short sentence, which is concise. However, it could be slightly more informative without being wasteful. It is well-structured and front-loaded.

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

Completeness2/5

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

Given no output schema and no annotations, the description should explain the return format (e.g., list of runs with timestamps). It does not. Also lacks permission or scope details. Incomplete for a history tool.

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

Parameters3/5

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

The input schema covers 100% of parameters with descriptions. The tool description adds no additional meaning beyond what is already in the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Show' and the resource 'recent execution history for cron jobs'. It mentions optional filtering by job ID, and the tool is distinct from sibling tools like openclaw_cron_status and openclaw_cron_list.

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

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. The parameter description for id suggests using openclaw_cron_list to find IDs, but there is no discussion of when not to use or other context.

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

openclaw_cron_listB

List all scheduled OpenClaw cron jobs

ParametersJSON Schema
NameRequiredDescriptionDefault
include_disabledNoInclude disabled jobs

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only says 'list all' but doesn't disclose return format, default behavior (e.g., whether disabled jobs are included by default), or any side effects.

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

Conciseness4/5

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

Extremely concise single sentence, front-loaded with action and resource. Could be slightly more informative without sacrificing brevity.

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

Completeness2/5

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

No output schema, yet description doesn't describe what the list returns (e.g., job names, schedules). With many sibling cron tools, more context on scope (e.g., this lists only, not status) would help.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, so the description doesn't need to add much. However, it doesn't reference 'include_disabled' at all, missing an opportunity to clarify default behavior beyond schema.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'scheduled OpenClaw cron jobs', distinguishing it from siblings like openclaw_cron_create or openclaw_cron_delete.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., openclaw_cron_status or openclaw_cron_history), nor any prerequisites or context given.

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

openclaw_cron_runA

Trigger an OpenClaw cron job immediately by its ID

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesCron job ID (UUID)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states 'trigger immediately' but provides no details about return values, side effects, error handling, permissions, or idempotency. This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. Every word contributes meaning.

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

Completeness3/5

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

For a simple tool with one parameter and no output schema, the description is minimal but lacks behavioral or error context. It is adequate but not comprehensive.

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

Parameters3/5

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

Schema description coverage is 100% (job_id described as 'Cron job ID (UUID)'), and the description adds no additional meaning beyond 'by its ID'. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('trigger immediately') and the resource ('OpenClaw cron job'), effectively distinguishing it from sibling tools like list, status, history, and create.

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

Usage Guidelines3/5

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

The description implies use for immediate execution, but offers no explicit guidance on when to use this tool versus alternatives like openclaw_cron_create or openclaw_cron_list, nor does it mention any prerequisites or exclusions.

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

openclaw_cron_statusB

Get OpenClaw cron scheduler status and overview

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. While 'Get' implies a read operation, it does not explicitly state side effects, required permissions, or what 'status and overview' entails. The transparency is minimal.

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

Conciseness4/5

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

The description is a single sentence, concise and front-loaded. It is efficient but could be slightly expanded to include more detail without becoming verbose.

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

Completeness2/5

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

Given the lack of output schema and annotations, the description is incomplete. It does not specify what information the status overview contains (e.g., scheduler health, running jobs, last run times), which is essential for an agent to understand the response.

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

Parameters4/5

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

The input schema has zero parameters with 100% schema coverage. Per guidelines, no parameters means a baseline of 4. The description does not add parameter info, which is acceptable since there are none.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'OpenClaw cron scheduler status and overview'. Among sibling tools like openclaw_cron_create, delete, and list, this tool is distinct as it provides a status overview, not specific operations.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like openclaw_cron_list or openclaw_cron_history. The description does not specify the context or prerequisites for invocation.

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

openclaw_deployA

Trigger deploy or rollback scripts on the OpenClaw server, or check the last deploy log. Scripts must exist at OPENCLAW_DEPLOY_SCRIPT_DIR (default: ~/deploy).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesdeploy: run deploy script, rollback: run rollback script, status: show last deploy log
serviceYesService name to deploy, e.g. "api", "worker", "frontend"

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that scripts are triggered and a log check is possible, and provides a prerequisite. However, it lacks details on behavior like whether deployment is synchronous, error handling, or rollback safety. Adequate but not thorough.

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

Conciseness5/5

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

Two sentences efficiently convey purpose and a key prerequisite. Every word earns its place, no verbosity.

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

Completeness3/5

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

For a tool with two parameters and no output schema, the description covers basic purpose and a prerequisite. However, for a deployment tool, additional context (e.g., idempotency, concurrency) would be helpful to ensure correct usage. Adequate given simplicity.

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

Parameters3/5

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

Schema coverage is 100% and descriptions of parameters are clear. The description adds context about the script directory, but does not enhance understanding of individual parameter values beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Trigger' and resource 'OpenClaw server' with specific actions (deploy, rollback, status). It distinguishes itself from sibling tools like openclaw_cron_* or openclaw_logs by focusing on deploy scripts and log checking.

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

Usage Guidelines3/5

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

The description implies usage through the action enum and mentions a prerequisite (scripts must exist), but does not explicitly state when to use this tool vs alternatives like openclaw_run or openclaw_logs. No guidance on when not to use or how to choose between actions.

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

openclaw_logsA

View recent logs from the OpenClaw server: gateway logs, agent execution logs, or system journal. Supports line count and keyword filtering.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoCustom log file path on the server (only used when source="custom").
linesNoNumber of log lines to return (default: 50).
filterNoFilter log lines by keyword (grep -i). Only lines matching this pattern are returned.
sourceNoLog source: "gateway" (OpenClaw gateway), "agent" (last agent run), "system" (systemd journal), "custom" (specify path).gateway

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but description fully discloses behavior: it supports line count and keyword filtering, and lists all source options (gateway, agent, system, custom). It does not mention any destructive side effects, which is appropriate for a read-only log viewer.

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

Conciseness5/5

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

Single sentence that is concise, front-loaded with the main action, and contains no unnecessary words. Every part of the description adds value.

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

Completeness4/5

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

Description is complete given the tool's complexity: it explains the purpose, supported sources, and filtering options. It lacks detail on output format but that is acceptable since there is no output schema. Overall, provides enough context for an AI agent to select and use the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100% with all parameters described. The description reiterates the line count and keyword filtering capability but does not add significant new meaning beyond what is already in the schema.

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

Purpose5/5

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

Description clearly states the verb 'View' and the resource 'logs' from the OpenClaw server, listing specific log types (gateway, agent execution, system journal). It distinguishes from sibling tools like openclaw_status by focusing specifically on log viewing.

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

Usage Guidelines4/5

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

Description implicitly tells when to use (to view logs from OpenClaw server) but does not explicitly state when not to use or provide alternatives. The clear context of log viewing is sufficient for most scenarios.

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

openclaw_memory_read_todayA

Read today's memory log from the OpenClaw server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states 'read' (non-destructive) but gives no details on output format, error handling, or what happens if no log exists for today. This is insufficient for full transparency.

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

Conciseness5/5

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

Single sentence, directly to the point with no filler. Perfectly concise and front-loaded with the core action.

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

Completeness2/5

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

The tool has zero parameters and no output schema, so the description should compensate by explaining what the returned memory log looks like. It fails to do so, leaving the agent unclear on the format or content of the output.

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

Parameters4/5

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

There are no parameters, so the baseline is 4. The description correctly implies no input needed. No additional parameter information is required.

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

Purpose5/5

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

Description clearly states the action (read), the resource (today's memory log), and the server (OpenClaw). It distinguishes itself from sibling tools like openclaw_memory_search and openclaw_memory_write by specifying a fixed temporal scope.

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

Usage Guidelines3/5

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

The description implies usage for retrieving today's log but does not explicitly mention when to use alternatives like openclaw_memory_search for historical queries. With no parameters, the usage is simple, but lack of explicit guidance slightly limits score.

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

openclaw_memory_writeA

Write a note to today's daily memory log on the OpenClaw server. Use for capturing important context, decisions, or things to remember.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteYesThe note to save
categoryNoOptional category/tag, e.g. "decision", "todo", "context"

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It states it writes to a daily log but does not specify whether it appends or overwrites, note length limits, or persistence details. For a write operation, this lack of transparency is a significant gap.

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

Conciseness5/5

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

The description is extremely concise with two sentences, no redundancy, and the core action is front-loaded. Every word adds value, making it efficient for AI parsing.

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

Completeness3/5

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

For a simple write tool with 2 parameters and no output schema, the description covers the main purpose and usage. However, it omits critical details like append vs. overwrite behavior and any limits, which are important for completeness. It is adequate but not fully comprehensive.

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

Parameters3/5

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

Schema coverage is 100%, achieving baseline score. The description does not add any meaning beyond the schema's parameter descriptions (e.g., 'The note to save' and 'Optional category/tag'). No additional semantic value is provided.

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

Purpose5/5

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

The description clearly specifies the verb 'Write a note' and the resource 'today's daily memory log on the OpenClaw server'. It distinguishes from sibling tools like openclaw_memory_read_today and openclaw_memory_search, leaving no ambiguity about its function.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use the tool: 'for capturing important context, decisions, or things to remember'. While it doesn't list alternatives, sibling tool names imply read/search tools exist, making the usage context clear.

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

openclaw_notifyA

Send a notification via WhatsApp, Telegram, or the last-used channel. Uses OpenClaw message delivery.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoDelivery target: phone number (E.164 format, e.g. "+491234567890") for WhatsApp, chat ID for Telegram. Omit to send to the default/last conversation.
channelNoChannel to send through: "whatsapp", "telegram", or "last" (most recently used channel).last
messageYesThe message to send.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It omits any mention of side effects, return values, error conditions, or whether the operation is synchronous. The simple statement 'Uses OpenClaw message delivery' adds minimal context.

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

Conciseness5/5

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

The description consists of two concise sentences with no wasted words. It front-loads the core action and resource, making it immediately scannable.

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

Completeness3/5

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

Given the tool's simplicity (3 parameters, no output schema, no nested objects), the description is mostly adequate but lacks information about the return format or confirmation of delivery. This omission reduces completeness slightly.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well-documented in the schema. The description does not add further meaning or context beyond what the schema provides, which meets the baseline.

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

Purpose5/5

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

The description clearly states the verb 'Send' and the resource 'notification', specifying the channels (WhatsApp, Telegram, last-used). It effectively distinguishes from sibling tools, none of which are notification tools.

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

Usage Guidelines3/5

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

The description implies usage for sending messages via supported channels, but lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusions or prerequisites are mentioned.

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

openclaw_pluginsA

List all plugins installed on the OpenClaw server

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. It only says 'list all plugins', with no mention of side effects, authorization, rate limits, or response format.

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

Conciseness5/5

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

Single sentence, front-loaded with key verb and resource, zero waste.

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

Completeness4/5

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

For a simple zero-param list tool, description is adequate but would benefit from mentioning output format (e.g., plugin names or objects). Without an output schema, a hint would improve completeness.

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

Parameters4/5

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

No parameters exist; schema coverage is 100% by virtue of being empty. Baseline for 0 params is 4; description adds nothing extra because nothing is needed.

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

Purpose5/5

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

Description uses specific verb 'List' and resource 'all plugins installed on the OpenClaw server', clearly distinguishing from sibling tools like openclaw_status or openclaw_logs.

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

Usage Guidelines3/5

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

Implied usage is when one needs to see installed plugins, but no explicit guidance on when to use vs. alternatives or when not to use.

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

openclaw_runA

Send a task or prompt to the OpenClaw AI agent via SSH. The agent has access to all installed plugins (trading, home automation, etc.) and multiple LLM backends. Use this to delegate complex tasks that OpenClaw already knows how to handle.

ParametersJSON Schema
NameRequiredDescriptionDefault
agentNoOptional: name of a specific OpenClaw agent to use (e.g. "ops", "trading"). Omit to use the default agent.
promptYesTask or question to send to the OpenClaw AI agent. It has access to all installed plugins (trading, home, memory, etc.).
timeout_secondsNoMax seconds to wait for the agent response

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It mentions SSH access and agent capabilities but does not disclose behavior like synchronous waiting, error handling, or side effects. The timeout_seconds parameter implies a wait but is not explained.

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

Conciseness5/5

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

The description is concise, front-loaded, and information-dense. Three sentences deliver purpose, capability, and usage guidance without unnecessary details.

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

Completeness3/5

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

Given no output schema, no annotations, and many sibling tools, the description is somewhat thin. It lacks details on return format, error scenarios, and explicit comparisons to alternatives like openclaw_cron_run. Adequate but not comprehensive.

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

Parameters3/5

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

Schema description coverage is 100% (all parameters documented). The description adds no additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Send'), the resource ('OpenClaw AI agent'), and the method ('via SSH'). It distinguishes from sibling tools like claude_run, codex_run, gemini_run, and local_llm_run by specifying that this delegates complex tasks that OpenClaw already knows how to handle.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this to delegate complex tasks that OpenClaw already knows how to handle', providing a clear usage context. However, it does not explicitly state when not to use or mention alternatives among the many sibling run tools.

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

openclaw_statusA

Check if the OpenClaw daemon is running on the server and get version info

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It correctly implies a read-only operation, but does not explicitly confirm no side effects or mention permissions needed. For a status check, this is minimally acceptable.

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

Conciseness5/5

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

A single sentence of 15 words that is front-loaded and direct. Every word earns its place with no redundancy.

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

Completeness4/5

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

Given no output schema and no parameters, the description covers the essential purpose. It could mention what the response looks like (e.g., boolean and version string) but remains adequate for a simple tool.

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

Parameters4/5

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

The tool has zero parameters, so schema coverage is trivial. Baseline for 0 params is 4. The description adds no parameter info as none are needed, which is appropriate.

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

Purpose5/5

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

The description clearly states the tool checks if the OpenClaw daemon is running and retrieves version info. The verb 'check' and resource 'OpenClaw daemon' are specific, and it distinguishes from sibling tools like openclaw_cron_status or openclaw_run.

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

Usage Guidelines3/5

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

No explicit when to use or alternatives are provided. While the purpose is self-evident for a status tool, guidelines could mention situations like verifying daemon health before running commands. Lack of exclusions or context makes it adequate but not exemplary.

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

prompt_splitA

Analyze a complex prompt and split it into sub-tasks with agent assignments. Returns a structured plan showing which sub-agent (gemini, codex, openclaw, local LLM) handles each part, dependency ordering, and the actual prompts to send. Each subtask includes a suggested model that the user can override before execution. IMPORTANT: Always present the plan to the user for review before executing. Strategy: "auto" (default), "gemini", "local", or "heuristic".

ParametersJSON Schema
NameRequiredDescriptionDefault
promptYesThe complex prompt to analyze and split into sub-tasks.
strategyNoHow to analyze the prompt: "auto" (default): tries gemini, then local LLM, then heuristic "gemini": use Gemini CLI for smart analysis "local": use local LLM (LM Studio/Ollama) for analysis "heuristic": pure keyword splitting (no LLM, instant)auto

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the output (structured plan with agent assignments, dependency ordering, prompts), the strategy parameter's behavior, and the required user review. It does not cover authorization needs or error handling, but the core behavior is transparent.

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

Conciseness5/5

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

The description is concise (4 sentences, ~108 words), front-loads the main purpose, and each sentence adds value. No redundant or vague phrasing.

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

Completeness4/5

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

Given the tool's complexity (2 parameters, no output schema), the description covers the return structure, strategy options, and usage note. It could mention potential limitations (e.g., prompt length constraints), but overall it is sufficiently complete 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.

Parameters4/5

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

Both parameters are described in the schema (100% coverage). The description adds extra meaning for the 'strategy' parameter by explaining each enum value's behavior in detail, which goes beyond the schema's minimal descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Analyze a complex prompt and split it into sub-tasks with agent assignments.' It specifies the resources involved (sub-agents like gemini, codex, openclaw, local LLM) and distinguishes from sibling tools that are execution-focused (e.g., gemini_run, codex_run).

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

Usage Guidelines3/5

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

The description implies usage for decomposing complex prompts, and includes an important guideline to 'always present the plan to the user for review before executing.' However, it does not explicitly state when to use this tool versus alternatives (e.g., directly using a run tool) or provide exclusion criteria.

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

prompt_split_executeA

Execute a prompt_split plan: runs subtasks in dependency order, dispatches to the correct sub-agent, passes results between dependent tasks, and enforces rate limits on cloud agents. Provide a "plan" from prompt_split, or just a "prompt" to generate and execute in one step. Use "overrides" to change agent/model/prompt per task or skip tasks. Set dry_run=true to preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
planNoA SplitPlan object (from prompt_split). If omitted, provide "prompt" to generate one.
promptNoIf no plan is provided, run prompt_split with this prompt first (heuristic strategy).
dry_runNoIf true, return the plan with rate limit checks but do not execute.
overridesNoOptional per-task overrides: change agent, model, prompt, or skip a task.

TDQS

A3.8/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool runs subtasks in dependency order, dispatches to sub-agents, passes results between tasks, and enforces rate limits. It also mentions dry_run for preview. However, it doesn't explicitly state potential side effects or whether this tool is destructive.

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

Conciseness5/5

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

The description is three sentences, efficiently front-loading the primary purpose and then covering optional inputs and dry_run. Every sentence adds unique value with no redundancy or fluff.

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

Completeness3/5

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

Given the tool's complexity (multi-step execution, dependencies, rate limits) and absence of an output schema, the description omits crucial details about return values, error handling, or execution results. While dry_run output is hinted, the actual execution output format is not described, leaving a gap for agents.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds meaningful context beyond the schema: it explains the conditional relationship between 'plan' and 'prompt' (if no plan, prompt is used to generate one), and elaborates on overrides (change agent/model/prompt per task or skip). This helps the agent understand parameter usage beyond formal definitions.

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

Purpose4/5

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

The description clearly states the tool's purpose: executing a prompt_split plan, running subtasks in dependency order, dispatching to sub-agents, and enforcing rate limits. It distinguishes from sibling tools like prompt_split (which generates plans) and direct run tools, but could be more explicit about when to use this versus individual run tools.

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

Usage Guidelines3/5

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

The description explains when to use the tool: provide a 'plan' or a 'prompt', and optionally use 'overrides' to modify per-task settings. However, it does not specify when not to use this tool (e.g., for single-step tasks) or explicitly mention alternatives among sibling tools like claude_run.

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

remote_dockerB

Manage Docker containers on the remote Linux server via SSH. Actions: list, logs, start, stop, restart, stats, exec. No Docker API or open port needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNoNumber of log lines to tail (for logs action, default: 50)
actionYesAction to perform
commandNoShell command to run inside the container (required for exec)
containerNoContainer name or ID (required for all actions except list)

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must fully disclose behavior. It mentions SSH and actions but omits side effects (e.g., service disruption from stop/restart) and prerequisites like SSH key authentication.

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

Conciseness5/5

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

Two short, front-loaded sentences with no fluff. Every word adds value, covering purpose, mechanism, actions, and a key advantage.

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

Completeness2/5

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

The tool has no output schema, yet the description does not hint at return values (e.g., container lists, log lines). For a multi-action tool with conditional parameters, this omission reduces completeness.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema, merely listing action names without explaining parameter relationships or output.

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

Purpose4/5

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

The description clearly states it manages Docker containers via SSH, listing specific actions. However, it does not explicitly differentiate from sibling tools like remote_shell or remote_service, leaving implicit contrast.

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

Usage Guidelines3/5

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

It notes 'No Docker API or open port needed,' indicating suitable when SSH is available. However, it lacks explicit when-not-to-use guidance or comparison with alternatives.

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

remote_serviceA

Manage systemd services on the remote Linux server via SSH. Actions: status, start, stop, restart, enable, disable, list.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYessystemctl action to perform
serviceNoService name, e.g. "nginx" or "postgresql" (required for all actions except list)

TDQS

A3.7/5.0
Behavior3/5

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

Discloses that the tool operates over SSH, indicating network and authentication needs. However, it does not mention required permissions (e.g., root), side effects of actions, or error handling behavior. Basic transparency but incomplete for a mutating tool.

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

Conciseness5/5

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

Two sentences with no redundant information. The front-loaded purpose and action list are efficiently packed, earning every sentence's keep.

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

Completeness3/5

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

Covers core functionality (systemd management via SSH) and param semantics, but omits return value format for actions like status, and does not specify error behavior. For a tool with no output schema, some description of output would be helpful.

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

Parameters3/5

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

Schema descriptions cover 100% of parameters with clear enum and service name examples. The description adds no significant extra meaning beyond listing actions, which is already in the schema. Baseline score applies due to full schema coverage.

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

Purpose5/5

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

Clearly states it manages systemd services on a remote Linux server via SSH, listing all specific actions. This distinguishes it from sibling tools like remote_shell or remote_docker, making the purpose unambiguous.

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

Usage Guidelines3/5

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

Implies usage for systemd service management on a remote server, but does not provide explicit when-to-use vs when-not-to-use guidance or mention alternatives. The context is clear but lacks exclusions or comparisons.

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

remote_shellA

Run a shell command on the configured remote Linux server (REMOTE_HOST). Use for deployments, log checks, service restarts, or any ad-hoc command on a remote machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesShell command to run on the remote server
timeout_secondsNoTimeout in seconds (default: 30, max: 300)

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses the tool runs commands on a remote server, but lacks details on security, error handling, or what happens on timeout. Adequate but not comprehensive.

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

Conciseness5/5

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

Two sentences with no redundant information. The first sentence states the primary action, the second provides usage context. Efficient and front-loaded.

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

Completeness4/5

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

Given the simple tool (2 parameters, no output schema), the description adequately explains purpose, use cases, and defaults. Missing return value details, but this is minor for a shell command tool.

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

Parameters3/5

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

Schema coverage is 100% and parameter descriptions are clear. The description does not add significant meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states 'Run a shell command on the configured remote Linux server' and provides specific use cases (deployments, log checks, service restarts). It distinguishes from siblings like remote_docker and remote_service by focusing on arbitrary shell commands.

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

Usage Guidelines4/5

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

Explicitly lists when to use (deployments, log checks, service restarts, ad-hoc commands) but does not mention when not to use or alternative tools. The context is clear and helpful.

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

system_statusA

Check health of all connected services at once: Home Assistant, OpenClaw (SSH), local LLM, Gemini CLI, Codex CLI. Returns a unified status overview with latency for each service.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must disclose all behavioral traits. It describes the return as status and latency, implying a read-only operation, but does not confirm safety or mention any authorization needs or side effects. It is adequate but minimal.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the primary action and lists services. Every word earns its place, with no redundancy.

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

Completeness4/5

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

Given no output schema, the description adequately explains the return value. It covers the main purpose but could benefit from mentioning that it is non-destructive or how to interpret latency. Overall, it is complete for a simple health check tool.

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

Parameters4/5

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

There are no parameters, so the schema covers everything. The description adds value by explaining the output structure (unified status with latency), which is sufficient for this simple tool. Baseline 4 since 0 parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose: checking health of all connected services (Home Assistant, OpenClaw, local LLM, Gemini CLI, Codex CLI) at once, returning a unified status overview with latency. It uses a specific verb and resource, and distinguishes itself from sibling tools like openclaw_status which likely focus on individual services.

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

Usage Guidelines3/5

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

The description implicitly suggests using this tool for a broad overview of all services, but does not provide explicit guidance on when not to use it or mention alternatives. No exclusions or context for choosing this over sibling monitoring tools.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.3.0
    • Changedcodex_run2 fields changed
      • changedInput schema / properties / sandbox / description
        Previous value: -"\"full-auto\": workspace-write sandbox, no approval prompts (default, recommended). \"dangerous\": bypass all approvals and sandbox — only use in isolated environments."New value: +"\"full-auto\": workspace-write sandbox, no approval prompts (default, recommended). \"dangerous\": bypass all approvals and sandbox - only use in isolated environments."
      • changedInput schema / properties / timeout_seconds / description
        Previous value: -"Max seconds to wait. Codex tasks can take longer than Gemini — 120s default."New value: +"Max seconds to wait. Codex tasks can take longer than Gemini - 120s default."
  2. 37 tool updatesv1.2.4
    • First observedclaude_run
    • First observedcodex_run
    • First observedfile_transfer
    • First observedgemini_run
    • First observedhome_automation
    • First observedhome_climate
    • First observedhome_get_state
    • First observedhome_light
    • First observedhome_scene
    • First observedhome_sensors
    • First observedhome_vacuum
    • First observedllama_server
    • First observedlocal_llm_models
    • First observedlocal_llm_run
    • First observedmcp_help
    • First observedopenclaw_cron_create
    • First observedopenclaw_cron_delete
    • First observedopenclaw_cron_edit
    • First observedopenclaw_cron_history
    • First observedopenclaw_cron_list
    • First observedopenclaw_cron_run
    • First observedopenclaw_cron_status
    • First observedopenclaw_deploy
    • First observedopenclaw_logs
    • First observedopenclaw_memory_read_today
    • First observedopenclaw_memory_search
    • First observedopenclaw_memory_write
    • First observedopenclaw_notify
    • First observedopenclaw_plugins
    • First observedopenclaw_run
    • First observedopenclaw_status
    • First observedprompt_split
    • First observedprompt_split_execute
    • First observedremote_docker
    • First observedremote_service
    • First observedremote_shell
    • First observedsystem_status

TDQS

B3.4/5.0

Scored across 37 tools

Disambiguation3/5

Most tools target distinct resources, but there are overlapping groups: five AI prompt-run tools, multiple status/list/history tools, and home_sensors vs home_get_state. The descriptions help differentiate them, but an agent must read carefully to avoid misselection.

Naming Consistency3/5

Naming is readable and mostly snake_case, with domain prefixes like home_, openclaw_, and remote_. However, the pattern shifts between noun-only names (home_scene, local_llm_models), verb-object names (openclaw_cron_create), agent-verb names (gemini_run), and bare nouns (llama_server), so it is not fully predictable.

Tool Count2/5

37 tools is too many for a single MCP surface, exceeding the 25+ threshold even though the server spans home automation, AI backends, remote operations, and OpenClaw management. The breadth is real, but the sheer count makes routing and selection costly.

Completeness4/5

Core workflows are well covered: cron has full create/edit/delete/list/run/history, memory has write/read/search, AI backends have run/model management, and Docker/systemd/file operations are covered. Minor gaps exist around generic Home Assistant entity control, scene listing, and delete/update operations for files or memory, but these can be worked around via remote_shell or openclaw_run.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers