Herramientas (OpenClaw)
OpenClaw expone herramientas de agente de primera clase para browser, canvas, nodes y cron.
Estas reemplazan los antiguos skills openclaw-*: las herramientas son tipadas, sin necesidad de shell,
y el agente debe usarlas directamente.
Desactivar herramientas
Puedes permitir o denegar herramientas globalmente mediante tools.allow / tools.deny en openclaw.json
(deny tiene prioridad). Esto evita que las herramientas no permitidas se envíen a los proveedores de modelos.
{
tools: { deny: ["browser"] },
}
Notas:
- La coincidencia no distingue mayúsculas de minúsculas.
- Se admiten comodines
*("*"significa todas las herramientas). - Si
tools.allowsolo referencia nombres de herramientas de plugins desconocidos o no cargados, OpenClaw registra una advertencia e ignora la lista blanca para que las herramientas principales sigan disponibles.
Perfiles de herramientas (lista base de permitidos)
tools.profile establece una lista base de herramientas permitidas antes de tools.allow/tools.deny.
Sobreescritura por agente: agents.list[].tools.profile.
Perfiles:
minimal: solosession_statuscoding:group:fs,group:runtime,group:sessions,group:memory,imagemessaging:group:messaging,sessions_list,sessions_history,sessions_send,session_statusfull: sin restricciones (equivalente a no configurar)
Ejemplo (solo mensajería por defecto, permitir también herramientas de Slack + Discord):
{
tools: {
profile: "messaging",
allow: ["slack", "discord"],
},
}
Ejemplo (perfil coding, pero denegar exec/process en todas partes):
{
tools: {
profile: "coding",
deny: ["group:runtime"],
},
}
Ejemplo (perfil coding global, agente de soporte solo mensajería):
{
tools: { profile: "coding" },
agents: {
list: [
{
id: "support",
tools: { profile: "messaging", allow: ["slack"] },
},
],
},
}
Política de herramientas por proveedor
Usa tools.byProvider para restringir aún más las herramientas para proveedores específicos
(o un solo provider/model) sin cambiar tus valores globales predeterminados.
Sobreescritura por agente: agents.list[].tools.byProvider.
Se aplica después del perfil base de herramientas y antes de las listas allow/deny,
por lo que solo puede reducir el conjunto de herramientas.
Las claves de proveedor aceptan tanto provider (ej. google-antigravity) como
provider/model (ej. openai/gpt-5.2).
Ejemplo (mantener perfil coding global, pero herramientas mínimas para Google Antigravity):
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}
Ejemplo (lista de permitidos específica por provider/model para un endpoint inestable):
{
tools: {
allow: ["group:fs", "group:runtime", "sessions_list"],
byProvider: {
"openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
},
},
}
Ejemplo (sobreescritura por agente para un solo proveedor):
{
agents: {
list: [
{
id: "support",
tools: {
byProvider: {
"google-antigravity": { allow: ["message", "sessions_list"] },
},
},
},
],
},
}
Grupos de herramientas (atajos)
Las políticas de herramientas (global, agente, sandbox) admiten entradas group:* que se expanden a múltiples herramientas.
Úsalas en tools.allow / tools.deny.
Grupos disponibles:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: todas las herramientas integradas de OpenClaw (excluye plugins de proveedor)
Ejemplo (permitir solo herramientas de archivos + browser):
{
tools: {
allow: ["group:fs", "browser"],
},
}
Plugins + herramientas
Los plugins pueden registrar herramientas adicionales (y comandos CLI) más allá del conjunto base. Consulta Plugins para instalación y configuración, y Skills para entender cómo las guías de uso de herramientas se inyectan en los prompts. Algunos plugins incluyen sus propios skills junto con las herramientas (por ejemplo, el plugin de llamadas de voz).
Herramientas opcionales de plugins:
- Lobster: runtime tipado de workflows con aprobaciones reanudables (requiere el CLI de Lobster en el host del gateway).
- LLM Task: paso LLM solo JSON para salida estructurada de workflows (validación de esquema opcional).
- Diffs: visor de diffs de solo lectura y renderizador de archivos PNG o PDF para texto antes/después o parches unificados.
Inventario de herramientas
apply_patch
Aplica parches estructurados en uno o más archivos. Úsalo para ediciones con múltiples bloques.
Experimental: actívalo con tools.exec.applyPatch.enabled (solo modelos OpenAI).
tools.exec.applyPatch.workspaceOnly tiene por defecto true (contenido al workspace). Ponlo en false solo si deseas intencionalmente que apply_patch escriba/elimine fuera del directorio del workspace.
exec
Ejecuta comandos de shell en el workspace.
Parámetros principales:
command(obligatorio)yieldMs(pasa a segundo plano automáticamente tras el timeout, por defecto 10000)background(segundo plano inmediato)timeout(segundos; mata el proceso si se excede, por defecto 1800)elevated(bool; ejecuta en el host si el modo elevado está habilitado/permitido; solo cambia el comportamiento cuando el agente está en sandbox)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(id/nombre del nodo parahost=node)- ¿Necesitas un TTY real? Configura
pty: true.
Notas:
- Devuelve
status: "running"con unsessionIdcuando pasa a segundo plano. - Usa
processpara consultar/registrar/escribir/matar/limpiar sesiones en segundo plano. - Si
processno está permitido,execse ejecuta de forma síncrona e ignorayieldMs/background. elevatedestá controlado portools.elevatedmás cualquier sobreescrituraagents.list[].tools.elevated(ambas deben permitirlo) y es un alias parahost=gateway+security=full.elevatedsolo cambia el comportamiento cuando el agente está en sandbox (en caso contrario no tiene efecto).host=nodepuede apuntar a una app companion de macOS o a un host de nodo headless (openclaw node run).- Aprobaciones y listas de permitidos de gateway/node: Aprobaciones de Exec.
process
Gestiona sesiones de exec en segundo plano.
Acciones principales:
list,poll,log,write,kill,clear,remove
Notas:
polldevuelve la nueva salida y el estado de salida cuando se completa.logadmiteoffset/limitbasados en líneas (omiteoffsetpara obtener las últimas N líneas).processtiene alcance por agente; las sesiones de otros agentes no son visibles.
loop-detection (protecciones contra bucles de llamadas a herramientas)
OpenClaw rastrea el historial reciente de llamadas a herramientas y bloquea o advierte cuando detecta bucles repetitivos sin progreso.
Actívalo con tools.loopDetection.enabled: true (por defecto es false).
{
tools: {
loopDetection: {
enabled: true,
warningThreshold: 10,
criticalThreshold: 20,
globalCircuitBreakerThreshold: 30,
historySize: 30,
detectors: {
genericRepeat: true,
knownPollNoProgress: true,
pingPong: true,
},
},
},
}
genericRepeat: patrón repetido de la misma herramienta + mismos parámetros.knownPollNoProgress: herramientas tipo polling repetidas con salidas idénticas.pingPong: patrones alternantesA/B/A/Bsin progreso.- Sobreescritura por agente:
agents.list[].tools.loopDetection.
web_search
Busca en la web usando Perplexity, Brave, Gemini, Grok o Kimi.
Parámetros principales:
query(obligatorio)count(1-10; por defecto desdetools.web.search.maxResults)
Notas:
- Requiere una clave API para el proveedor elegido (recomendado:
openclaw configure --section web). - Actívalo con
tools.web.search.enabled. - Las respuestas se almacenan en caché (15 min por defecto).
- Consulta Herramientas web para la configuración.
web_fetch
Obtiene y extrae contenido legible de una URL (HTML -> markdown/texto).
Parámetros principales:
url(obligatorio)extractMode(markdown|text)maxChars(trunca páginas largas)
Notas:
- Actívalo con
tools.web.fetch.enabled. maxCharsestá limitado portools.web.fetch.maxCharsCap(por defecto 50000).- Las respuestas se almacenan en caché (15 min por defecto).
- Para sitios con mucho JS, prefiere la herramienta browser.
- Consulta Herramientas web para la configuración.
- Consulta Firecrawl para el fallback anti-bot opcional.
browser
Controla el navegador dedicado gestionado por OpenClaw.
Acciones principales:
status,start,stop,tabs,open,focus,closesnapshot(aria/ai)screenshot(devuelve bloque de imagen +MEDIA:<path>)act(acciones de UI: click/type/press/hover/drag/select/fill/resize/wait/evaluate)navigate,console,pdf,upload,dialog
Gestión de perfiles:
profiles— listar todos los perfiles del navegador con estadocreate-profile— crear nuevo perfil con puerto asignado automáticamente (ocdpUrl)delete-profile— detener navegador, eliminar datos de usuario, quitar de la configuración (solo local)reset-profile— matar proceso huérfano en el puerto del perfil (solo local)
Parámetros comunes:
profile(opcional; por defectobrowser.defaultProfile)target(sandbox|host|node)node(opcional; elige un id/nombre de nodo específico) Notas:- Requiere
browser.enabled=true(por defecto estrue; ponlo enfalsepara desactivar). - Todas las acciones aceptan el parámetro opcional
profilepara soporte multi-instancia. - Cuando se omite
profile, usabrowser.defaultProfile(por defecto “chrome”). - Nombres de perfil: solo alfanuméricos en minúsculas + guiones (máx. 64 caracteres).
- Rango de puertos: 18800-18899 (~100 perfiles máx.).
- Los perfiles remotos son solo para conexión (sin start/stop/reset).
- Si hay un nodo con capacidad de navegador conectado, la herramienta puede enrutar automáticamente hacia él (a menos que fijes
target). snapshotusaaipor defecto cuando Playwright está instalado; usaariapara el árbol de accesibilidad.snapshottambién admite opciones de snapshot por rol (interactive,compact,depth,selector) que devuelven refs comoe12.actrequiererefdesnapshot(12numérico de snapshots AI, oe12de snapshots por rol); usaevaluatepara necesidades específicas de selectores CSS.- Evita
act->waitpor defecto; úsalo solo en casos excepcionales (sin estado de UI confiable para esperar). uploadpuede opcionalmente pasar unrefpara hacer auto-click después de activar.uploadtambién admiteinputRef(ref aria) oelement(selector CSS) para establecer<input type="file">directamente.
canvas
Controla el Canvas del nodo (present, eval, snapshot, A2UI).
Acciones principales:
present,hide,navigate,evalsnapshot(devuelve bloque de imagen +MEDIA:<path>)a2ui_push,a2ui_reset
Notas:
- Usa
node.invokedel gateway internamente. - Si no se proporciona
node, la herramienta elige uno por defecto (nodo único conectado o nodo mac local). - A2UI es solo v0.8 (sin
createSurface); el CLI rechaza JSONL v0.9 con errores de línea. - Prueba rápida:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
Descubre y apunta a nodos emparejados; envía notificaciones; captura cámara/pantalla.
Acciones principales:
status,describepending,approve,reject(emparejamiento)notify(macOSsystem.notify)run(macOSsystem.run)camera_list,camera_snap,camera_clip,screen_recordlocation_get,notifications_list,notifications_actiondevice_status,device_info,device_permissions,device_health
Notas:
- Los comandos de cámara/pantalla requieren que la app del nodo esté en primer plano.
- Las imágenes devuelven bloques de imagen +
MEDIA:<path>. - Los videos devuelven
FILE:<path>(mp4). - La ubicación devuelve un payload JSON (lat/lon/accuracy/timestamp).
- Parámetros de
run: arraycommandargv; opcionalescwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
Ejemplo (run):
{
"action": "run",
"node": "office-mac",
"command": ["echo", "Hello"],
"env": ["FOO=bar"],
"commandTimeoutMs": 12000,
"invokeTimeoutMs": 45000,
"needsScreenRecording": false
}
image
Analiza una imagen con el modelo de imagen configurado.
Parámetros principales:
image(ruta o URL obligatoria)prompt(opcional; por defecto “Describe the image.”)model(sobreescritura opcional)maxBytesMb(límite de tamaño opcional)
Notas:
- Solo disponible cuando
agents.defaults.imageModelestá configurado (primario o fallbacks), o cuando se puede inferir un modelo de imagen implícito desde tu modelo predeterminado + autenticación configurada (emparejamiento best-effort). - Usa el modelo de imagen directamente (independiente del modelo de chat principal).
pdf
Analiza uno o más documentos PDF.
Para el comportamiento completo, límites, configuración y ejemplos, consulta Herramienta PDF.
message
Envía mensajes y acciones de canal a través de Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams.
Acciones principales:
send(texto + media opcional; MS Teams también admitecardpara Adaptive Cards)poll(encuestas de WhatsApp/Discord/MS Teams)react/reactions/read/edit/deletepin/unpin/list-pinspermissionsthread-create/thread-list/thread-replysearchstickermember-info/role-infoemoji-list/emoji-upload/sticker-uploadrole-add/role-removechannel-info/channel-listvoice-statusevent-list/event-createtimeout/kick/ban
Notas:
sendenruta WhatsApp a través del Gateway; los demás canales van directo.pollusa el Gateway para WhatsApp y MS Teams; las encuestas de Discord van directo.- Cuando una llamada a la herramienta message está vinculada a una sesión de chat activa, los envíos se restringen al destino de esa sesión para evitar filtraciones entre contextos.
cron
Gestiona trabajos cron del Gateway y despertares.
Acciones principales:
status,listadd,update,remove,run,runswake(encola evento del sistema + latido inmediato opcional)
Notas:
addespera un objeto completo de trabajo cron (mismo esquema quecron.addRPC).updateusa{ jobId, patch }(idaceptado por compatibilidad).
gateway
Reinicia o aplica actualizaciones al proceso del Gateway en ejecución (in-place).
Acciones principales:
restart(autoriza + envíaSIGUSR1para reinicio en proceso;openclaw gatewayreinicio in-place)config.schema.lookup(inspecciona una ruta de configuración a la vez sin cargar el esquema completo en el contexto del prompt)config.getconfig.apply(validar + escribir config + reiniciar + despertar)config.patch(merge de actualización parcial + reiniciar + despertar)update.run(ejecutar actualización + reiniciar + despertar)
Notas:
config.schema.lookupespera una ruta de configuración específica comogateway.authoagents.list.*.heartbeat.- Las rutas pueden incluir ids de plugins delimitados por barra cuando se direccionan
plugins.entries.<id>, por ejemploplugins.entries.pack/one.config. - Usa
delayMs(por defecto 2000) para evitar interrumpir una respuesta en curso. config.schemasigue disponible para flujos internos de la UI de Control y no se expone a través de la herramienta de agentegateway.restartestá habilitado por defecto; configuracommands.restart: falsepara desactivarlo.
sessions_list / sessions_history / sessions_send / sessions_spawn / session_status
Lista sesiones, inspecciona el historial de transcripciones o envía a otra sesión.
Parámetros principales:
sessions_list:kinds?,limit?,activeMinutes?,messageLimit?(0 = ninguno)sessions_history:sessionKey(osessionId),limit?,includeTools?sessions_send:sessionKey(osessionId),message,timeoutSeconds?(0 = fire-and-forget)sessions_spawn:task,label?,runtime?,agentId?,model?,thinking?,cwd?,runTimeoutSeconds?,thread?,mode?,cleanup?,sandbox?,streamTo?,attachments?,attachAs?session_status:sessionKey?(por defecto la actual; aceptasessionId),model?(defaultlimpia la sobreescritura)
Notas:
maines la clave canónica de chat directo; global/unknown están ocultos.messageLimit > 0obtiene los últimos N mensajes por sesión (mensajes de herramientas filtrados).- El direccionamiento de sesiones se controla con
tools.sessions.visibility(por defectotree: sesión actual + sesiones de subagentes generados). Si ejecutas un agente compartido para múltiples usuarios, considera configurartools.sessions.visibility: "self"para evitar navegación entre sesiones. sessions_sendespera la finalización cuandotimeoutSeconds > 0.- La entrega/anuncio ocurre después de la finalización y es best-effort;
status: "ok"confirma que la ejecución del agente terminó, no que el anuncio fue entregado. sessions_spawnadmiteruntime: "subagent" | "acp"(subagentpor defecto). Para el comportamiento del runtime ACP, consulta Agentes ACP.- Para runtime ACP,
streamTo: "parent"enruta los resúmenes de progreso de la ejecución inicial de vuelta a la sesión solicitante como eventos del sistema en lugar de entrega directa al hijo. sessions_spawninicia una ejecución de sub-agente y publica una respuesta de anuncio de vuelta al chat solicitante.- Admite modo one-shot (
mode: "run") y modo persistente vinculado a hilo (mode: "session"conthread: true). - Si
thread: truey se omitemode, el modo por defecto essession. mode: "session"requierethread: true.- Si se omite
runTimeoutSeconds, OpenClaw usaagents.defaults.subagents.runTimeoutSecondscuando está configurado; de lo contrario el timeout por defecto es0(sin timeout). - Los flujos vinculados a hilos de Discord dependen de
session.threadBindings.*ychannels.discord.threadBindings.*. - El formato de respuesta incluye
Status,Resulty estadísticas compactas. Resultes el texto de completado del asistente; si falta, se usa el últimotoolResultcomo fallback.
- Admite modo one-shot (
- Los spawns en modo de completado manual envían directamente primero, con fallback a cola y reintento en fallos transitorios (
status: "ok"significa que la ejecución terminó, no que el anuncio fue entregado). sessions_spawnadmite adjuntos de archivos inline solo para runtime de subagente (ACP los rechaza). Cada adjunto tienename,content, y opcionalmenteencoding(utf8obase64) ymimeType. Los archivos se materializan en el workspace hijo en.openclaw/attachments/<uuid>/con un archivo de metadatos.manifest.json. La herramienta devuelve un recibo concount,totalBytes,sha256por archivo yrelDir. El contenido de los adjuntos se redacta automáticamente de la persistencia de transcripciones.- Configura límites con
tools.sessions_spawn.attachments(enabled,maxTotalBytes,maxFiles,maxFileBytes,retainOnSessionKeep). attachAs.mountPathes una indicación reservada para futuras implementaciones de montaje.
- Configura límites con
sessions_spawnes no bloqueante y devuelvestatus: "accepted"inmediatamente.- Las respuestas ACP
streamTo: "parent"pueden incluirstreamLogPath(*.acp-stream.jsonlcon alcance de sesión) para seguir el historial de progreso. sessions_sendejecuta un ping-pong de respuesta (respondeREPLY_SKIPpara detener; turnos máx. consession.agentToAgent.maxPingPongTurns, 0-5).- Después del ping-pong, el agente destino ejecuta un paso de anuncio; responde
ANNOUNCE_SKIPpara suprimir el anuncio. - Restricción de sandbox: cuando la sesión actual está en sandbox y
agents.defaults.sandbox.sessionToolsVisibility: "spawned", OpenClaw fijatools.sessions.visibilityatree.
agents_list
Lista los ids de agentes que la sesión actual puede apuntar con sessions_spawn.
Notas:
- El resultado está restringido a las listas de permitidos por agente (
agents.list[].subagents.allowAgents). - Cuando se configura
["*"], la herramienta incluye todos los agentes configurados y marcaallowAny: true.
Parámetros (comunes)
Herramientas respaldadas por el Gateway (canvas, nodes, cron):
gatewayUrl(por defectows://127.0.0.1:18789)gatewayToken(si la autenticación está habilitada)timeoutMs
Nota: cuando gatewayUrl está configurado, incluye gatewayToken explícitamente. Las herramientas no heredan
credenciales de configuración o entorno para sobreescrituras, y la falta de credenciales explícitas es un error.
Herramienta browser:
profile(opcional; por defectobrowser.defaultProfile)target(sandbox|host|node)node(opcional; fija un id/nombre de nodo específico)- Guías de resolución de problemas:
- Problemas de inicio/CDP en Linux: Resolución de problemas del navegador (Linux)
- Gateway WSL2 + Chrome remoto de Windows CDP: Resolución de problemas WSL2 + Windows + Chrome remoto CDP
Flujos de agente recomendados
Automatización del navegador:
browser->status/startsnapshot(ai o aria)act(click/type/press)screenshotsi necesitas confirmación visual
Renderizado del canvas:
canvas->presenta2ui_push(opcional)snapshot
Direccionamiento de nodos:
nodes->statusdescribeen el nodo elegidonotify/run/camera_snap/screen_record
Seguridad
- Evita
system.rundirecto; usanodes->runsolo con consentimiento explícito del usuario. - Respeta el consentimiento del usuario para capturas de cámara/pantalla.
- Usa
status/describepara asegurar los permisos antes de invocar comandos multimedia.
Cómo se presentan las herramientas al agente
Las herramientas se exponen en dos canales paralelos:
- Texto del prompt del sistema: una lista legible + guía.
- Esquema de herramientas: las definiciones de funciones estructuradas enviadas a la API del modelo.
Esto significa que el agente ve tanto “qué herramientas existen” como “cómo llamarlas.” Si una herramienta no aparece en el prompt del sistema ni en el esquema, el modelo no puede llamarla.