Tools (Clawdbot)
Clawdbot exposes first-class agent tools for browser, canvas, nodes, and cron. These replace the oldclawdbot-* skills: the tools are typed, no shelling,
and the agent should rely on them directly.
Disabling tools
You can globally allow/deny tools viaagent.tools in clawdbot.json
(deny wins). This prevents disallowed tools from being sent to providers.
Tool inventory
bash
Run shell commands in the workspace.
Core parameters:
command(required)yieldMs(auto-background after timeout, default 10000)background(immediate background)timeout(seconds; kills the process if exceeded, default 1800)elevated(bool; run on host if elevated mode is enabled/allowed; only changes behavior when the agent is sandboxed)- Need a real TTY? Use the tmux skill.
- Returns
status: "running"with asessionIdwhen backgrounded. - Use
processto poll/log/write/kill/clear background sessions. - If
processis disallowed,bashruns synchronously and ignoresyieldMs/background. elevatedis gated byagent.elevated(global sender allowlist) and runs on the host.elevatedonly changes behavior when the agent is sandboxed (otherwise it’s a no-op).
process
Manage background bash sessions.
Core actions:
list,poll,log,write,kill,clear,remove
pollreturns new output and exit status when complete.logsupports line-basedoffset/limit(omitoffsetto grab the last N lines).processis scoped per agent; sessions from other agents are not visible.
browser
Control the dedicated clawd browser.
Core actions:
status,start,stop,tabs,open,focus,closesnapshot(aria/ai)screenshot(returns image block +MEDIA:<path>)act(UI actions: click/type/press/hover/drag/select/fill/resize/wait/evaluate)navigate,console,pdf,upload,dialog
profiles— list all browser profiles with statuscreate-profile— create new profile with auto-allocated port (orcdpUrl)delete-profile— stop browser, delete user data, remove from config (local only)reset-profile— kill orphan process on profile’s port (local only)
controlUrl(defaults from config)profile(optional; defaults tobrowser.defaultProfile) Notes:- Requires
browser.enabled=true(default istrue; setfalseto disable). - Uses
browser.controlUrlunlesscontrolUrlis passed explicitly. - All actions accept optional
profileparameter for multi-instance support. - When
profileis omitted, usesbrowser.defaultProfile(defaults to “clawd”). - Profile names: lowercase alphanumeric + hyphens only (max 64 chars).
- Port range: 18800-18899 (~100 profiles max).
- Remote profiles are attach-only (no start/stop/reset).
snapshotdefaults toai; useariafor the accessibility tree.actrequiresreffromsnapshot --format ai; useevaluatefor rare CSS selector needs.- Avoid
act→waitby default; use it only in exceptional cases (no reliable UI state to wait on). uploadcan optionally pass arefto auto-click after arming.uploadalso supportsinputRef(aria ref) orelement(CSS selector) to set<input type="file">directly.
canvas
Drive the node Canvas (present, eval, snapshot, A2UI).
Core actions:
present,hide,navigate,evalsnapshot(returns image block +MEDIA:<path>)a2ui_push,a2ui_reset
- Uses gateway
node.invokeunder the hood. - If no
nodeis provided, the tool picks a default (single connected node or local mac node). - A2UI is v0.8 only (no
createSurface); the CLI rejects v0.9 JSONL with line errors. - Quick smoke:
clawdbot nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
Discover and target paired nodes; send notifications; capture camera/screen.
Core actions:
status,describepending,approve,reject(pairing)notify(macOSsystem.notify)run(macOSsystem.run)camera_snap,camera_clip,screen_recordlocation_get
- Camera/screen commands require the node app to be foregrounded.
- Images return image blocks +
MEDIA:<path>. - Videos return
FILE:<path>(mp4). - Location returns a JSON payload (lat/lon/accuracy/timestamp).
runparams:commandargv array; optionalcwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
run):
image
Analyze an image with the configured image model.
Core parameters:
image(required path or URL)prompt(optional; defaults to “Describe the image.”)model(optional override)maxBytesMb(optional size cap)
- Only available when
agent.imageModelis configured (primary or fallbacks). - Uses the image model directly (independent of the main chat model).
cron
Manage Gateway cron jobs and wakeups.
Core actions:
status,listadd,update,remove,run,runswake(enqueue system event + optional immediate heartbeat)
addexpects a full cron job object (same schema ascron.addRPC).updateuses{ id, patch }.
gateway
Restart or apply updates to the running Gateway process (in-place).
Core actions:
restart(sendsSIGUSR1to the current process;clawdbot gatewayrestart in-place)config.get/config.schemaconfig.apply(validate + write config + restart + wake)update.run(run update + restart + wake)
- Use
delayMs(defaults to 2000) to avoid interrupting an in-flight reply.
sessions_list / sessions_history / sessions_send / sessions_spawn
List sessions, inspect transcript history, or send to another session.
Core parameters:
sessions_list:kinds?,limit?,activeMinutes?,messageLimit?(0 = none)sessions_history:sessionKey,limit?,includeTools?sessions_send:sessionKey,message,timeoutSeconds?(0 = fire-and-forget)sessions_spawn:task,label?,agentId?,model?,runTimeoutSeconds?,cleanup?
mainis the canonical direct-chat key; global/unknown are hidden.messageLimit > 0fetches last N messages per session (tool messages filtered).sessions_sendwaits for final completion whentimeoutSeconds > 0.sessions_spawnstarts a sub-agent run and posts an announce reply back to the requester chat.sessions_spawnis non-blocking and returnsstatus: "accepted"immediately.sessions_sendruns a reply‑back ping‑pong (replyREPLY_SKIPto stop; max turns viasession.agentToAgent.maxPingPongTurns, 0–5).- After the ping‑pong, the target agent runs an announce step; reply
ANNOUNCE_SKIPto suppress the announcement.
agents_list
List agent ids that the current session may target with sessions_spawn.
Notes:
- Result is restricted to per-agent allowlists (
routing.agents.<agentId>.subagents.allowAgents). - When
["*"]is configured, the tool includes all configured agents and marksallowAny: true.
discord
Send Discord reactions, stickers, or polls.
Core actions:
react(channelId,messageId,emoji)reactions(channelId,messageId, optionallimit)sticker(to,stickerIds, optionalcontent)poll(to,question,answers, optionalallowMultiselect,durationHours,content)permissions(channelId)readMessages(channelId, optionallimit/before/after/around)sendMessage(to,content, optionalmediaUrl,replyTo)editMessage(channelId,messageId,content)deleteMessage(channelId,messageId)threadCreate(channelId,name, optionalmessageId,autoArchiveMinutes)threadList(guildId, optionalchannelId,includeArchived,before,limit)threadReply(channelId,content, optionalmediaUrl,replyTo)pinMessage/unpinMessage(channelId,messageId)listPins(channelId)searchMessages(guildId,content, optionalchannelId/channelIds,authorId/authorIds,limit)memberInfo(guildId,userId)roleInfo(guildId)emojiList(guildId)roleAdd/roleRemove(guildId,userId,roleId)channelInfo(channelId)channelList(guildId)voiceStatus(guildId,userId)eventList(guildId)eventCreate(guildId,name,startTime, optionalendTime,description,channelId,entityType,location)timeout(guildId,userId, optionaldurationMinutes,until,reason)kick(guildId,userId, optionalreason)ban(guildId,userId, optionalreason,deleteMessageDays)
toacceptschannel:<id>oruser:<id>.- Polls require 2–10 answers and default to 24 hours.
reactionsreturns per-emoji user lists (limited to 100 per reaction).- Reaction removal semantics: see /tools/reactions.
discord.actions.*gates Discord tool actions;roles+moderationdefault tofalse.searchMessagesfollows the Discord preview feature constraints (limit max 25, channel/author filters accept arrays).- The tool is only exposed when the current provider is Discord.
whatsapp
Send WhatsApp reactions.
Core actions:
react(chatJid,messageId,emoji, optionalremove,participant,fromMe,accountId)
- Reaction removal semantics: see /tools/reactions.
whatsapp.actions.*gates WhatsApp tool actions.- The tool is only exposed when the current provider is WhatsApp.
telegram
Send Telegram messages or reactions.
Core actions:
sendMessage(to,content, optionalmediaUrl,replyToMessageId,messageThreadId)react(chatId,messageId,emoji, optionalremove)
- Reaction removal semantics: see /tools/reactions.
telegram.actions.*gates Telegram tool actions.- The tool is only exposed when the current provider is Telegram.
Parameters (common)
Gateway-backed tools (canvas, nodes, cron):
gatewayUrl(defaultws://127.0.0.1:18789)gatewayToken(if auth enabled)timeoutMs
controlUrl(defaults from config)
Recommended agent flows
Browser automation:browser→status/startsnapshot(ai or aria)act(click/type/press)screenshotif you need visual confirmation
canvas→presenta2ui_push(optional)snapshot
nodes→statusdescribeon the chosen nodenotify/run/camera_snap/screen_record
Safety
- Avoid direct
system.run; usenodes→runonly with explicit user consent. - Respect user consent for camera/screen capture.
- Use
status/describeto ensure permissions before invoking media commands.
How tools are presented to the agent
Tools are exposed in two parallel channels:- System prompt text: a human-readable list + guidance.
- Tool schema: the structured function definitions sent to the model API.