forked from Selig/openclaw-skill
6 custom skills (assign-task, dispatch-webhook, daily-briefing, task-capture, qmd-brain, tts-voice) with technical documentation. Compatible with Claude Code, OpenClaw, Codex CLI, and OpenCode.
162 lines
26 KiB
JSON
Executable File
162 lines
26 KiB
JSON
Executable File
{
|
||
"title": "Tools (OpenClaw)",
|
||
"content": "OpenClaw exposes **first-class agent tools** for browser, canvas, nodes, and cron.\nThese replace the old `openclaw-*` skills: the tools are typed, no shelling,\nand the agent should rely on them directly.\n\nYou can globally allow/deny tools via `tools.allow` / `tools.deny` in `openclaw.json`\n(deny wins). This prevents disallowed tools from being sent to model providers.\n\n* Matching is case-insensitive.\n* `*` wildcards are supported (`\"*\"` means all tools).\n* If `tools.allow` only references unknown or unloaded plugin tool names, OpenClaw logs a warning and ignores the allowlist so core tools stay available.\n\n## Tool profiles (base allowlist)\n\n`tools.profile` sets a **base tool allowlist** before `tools.allow`/`tools.deny`.\nPer-agent override: `agents.list[].tools.profile`.\n\n* `minimal`: `session_status` only\n* `coding`: `group:fs`, `group:runtime`, `group:sessions`, `group:memory`, `image`\n* `messaging`: `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status`\n* `full`: no restriction (same as unset)\n\nExample (messaging-only by default, allow Slack + Discord tools too):\n\nExample (coding profile, but deny exec/process everywhere):\n\nExample (global coding profile, messaging-only support agent):\n\n## Provider-specific tool policy\n\nUse `tools.byProvider` to **further restrict** tools for specific providers\n(or a single `provider/model`) without changing your global defaults.\nPer-agent override: `agents.list[].tools.byProvider`.\n\nThis is applied **after** the base tool profile and **before** allow/deny lists,\nso it can only narrow the tool set.\nProvider keys accept either `provider` (e.g. `google-antigravity`) or\n`provider/model` (e.g. `openai/gpt-5.2`).\n\nExample (keep global coding profile, but minimal tools for Google Antigravity):\n\nExample (provider/model-specific allowlist for a flaky endpoint):\n\nExample (agent-specific override for a single provider):\n\n## Tool groups (shorthands)\n\nTool policies (global, agent, sandbox) support `group:*` entries that expand to multiple tools.\nUse these in `tools.allow` / `tools.deny`.\n\n* `group:runtime`: `exec`, `bash`, `process`\n* `group:fs`: `read`, `write`, `edit`, `apply_patch`\n* `group:sessions`: `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `session_status`\n* `group:memory`: `memory_search`, `memory_get`\n* `group:web`: `web_search`, `web_fetch`\n* `group:ui`: `browser`, `canvas`\n* `group:automation`: `cron`, `gateway`\n* `group:messaging`: `message`\n* `group:nodes`: `nodes`\n* `group:openclaw`: all built-in OpenClaw tools (excludes provider plugins)\n\nExample (allow only file tools + browser):\n\nPlugins can register **additional tools** (and CLI commands) beyond the core set.\nSee [Plugins](/plugin) for install + config, and [Skills](/tools/skills) for how\ntool usage guidance is injected into prompts. Some plugins ship their own skills\nalongside tools (for example, the voice-call plugin).\n\nOptional plugin tools:\n\n* [Lobster](/tools/lobster): typed workflow runtime with resumable approvals (requires the Lobster CLI on the gateway host).\n* [LLM Task](/tools/llm-task): JSON-only LLM step for structured workflow output (optional schema validation).\n\nApply structured patches across one or more files. Use for multi-hunk edits.\nExperimental: enable via `tools.exec.applyPatch.enabled` (OpenAI models only).\n\nRun shell commands in the workspace.\n\n* `command` (required)\n* `yieldMs` (auto-background after timeout, default 10000)\n* `background` (immediate background)\n* `timeout` (seconds; kills the process if exceeded, default 1800)\n* `elevated` (bool; run on host if elevated mode is enabled/allowed; only changes behavior when the agent is sandboxed)\n* `host` (`sandbox | gateway | node`)\n* `security` (`deny | allowlist | full`)\n* `ask` (`off | on-miss | always`)\n* `node` (node id/name for `host=node`)\n* Need a real TTY? Set `pty: true`.\n\n* Returns `status: \"running\"` with a `sessionId` when backgrounded.\n* Use `process` to poll/log/write/kill/clear background sessions.\n* If `process` is disallowed, `exec` runs synchronously and ignores `yieldMs`/`background`.\n* `elevated` is gated by `tools.elevated` plus any `agents.list[].tools.elevated` override (both must allow) and is an alias for `host=gateway` + `security=full`.\n* `elevated` only changes behavior when the agent is sandboxed (otherwise it’s a no-op).\n* `host=node` can target a macOS companion app or a headless node host (`openclaw node run`).\n* gateway/node approvals and allowlists: [Exec approvals](/tools/exec-approvals).\n\nManage background exec sessions.\n\n* `list`, `poll`, `log`, `write`, `kill`, `clear`, `remove`\n\n* `poll` returns new output and exit status when complete.\n* `log` supports line-based `offset`/`limit` (omit `offset` to grab the last N lines).\n* `process` is scoped per agent; sessions from other agents are not visible.\n\nSearch the web using Brave Search API.\n\n* `query` (required)\n* `count` (1–10; default from `tools.web.search.maxResults`)\n\n* Requires a Brave API key (recommended: `openclaw configure --section web`, or set `BRAVE_API_KEY`).\n* Enable via `tools.web.search.enabled`.\n* Responses are cached (default 15 min).\n* See [Web tools](/tools/web) for setup.\n\nFetch and extract readable content from a URL (HTML → markdown/text).\n\n* `url` (required)\n* `extractMode` (`markdown` | `text`)\n* `maxChars` (truncate long pages)\n\n* Enable via `tools.web.fetch.enabled`.\n* `maxChars` is clamped by `tools.web.fetch.maxCharsCap` (default 50000).\n* Responses are cached (default 15 min).\n* For JS-heavy sites, prefer the browser tool.\n* See [Web tools](/tools/web) for setup.\n* See [Firecrawl](/tools/firecrawl) for the optional anti-bot fallback.\n\nControl the dedicated OpenClaw-managed browser.\n\n* `status`, `start`, `stop`, `tabs`, `open`, `focus`, `close`\n* `snapshot` (aria/ai)\n* `screenshot` (returns image block + `MEDIA:<path>`)\n* `act` (UI actions: click/type/press/hover/drag/select/fill/resize/wait/evaluate)\n* `navigate`, `console`, `pdf`, `upload`, `dialog`\n\n* `profiles` — list all browser profiles with status\n* `create-profile` — create new profile with auto-allocated port (or `cdpUrl`)\n* `delete-profile` — stop browser, delete user data, remove from config (local only)\n* `reset-profile` — kill orphan process on profile's port (local only)\n\n* `profile` (optional; defaults to `browser.defaultProfile`)\n* `target` (`sandbox` | `host` | `node`)\n* `node` (optional; picks a specific node id/name)\n Notes:\n* Requires `browser.enabled=true` (default is `true`; set `false` to disable).\n* All actions accept optional `profile` parameter for multi-instance support.\n* When `profile` is omitted, uses `browser.defaultProfile` (defaults to \"chrome\").\n* Profile names: lowercase alphanumeric + hyphens only (max 64 chars).\n* Port range: 18800-18899 (\\~100 profiles max).\n* Remote profiles are attach-only (no start/stop/reset).\n* If a browser-capable node is connected, the tool may auto-route to it (unless you pin `target`).\n* `snapshot` defaults to `ai` when Playwright is installed; use `aria` for the accessibility tree.\n* `snapshot` also supports role-snapshot options (`interactive`, `compact`, `depth`, `selector`) which return refs like `e12`.\n* `act` requires `ref` from `snapshot` (numeric `12` from AI snapshots, or `e12` from role snapshots); use `evaluate` for rare CSS selector needs.\n* Avoid `act` → `wait` by default; use it only in exceptional cases (no reliable UI state to wait on).\n* `upload` can optionally pass a `ref` to auto-click after arming.\n* `upload` also supports `inputRef` (aria ref) or `element` (CSS selector) to set `<input type=\"file\">` directly.\n\nDrive the node Canvas (present, eval, snapshot, A2UI).\n\n* `present`, `hide`, `navigate`, `eval`\n* `snapshot` (returns image block + `MEDIA:<path>`)\n* `a2ui_push`, `a2ui_reset`\n\n* Uses gateway `node.invoke` under the hood.\n* If no `node` is provided, the tool picks a default (single connected node or local mac node).\n* A2UI is v0.8 only (no `createSurface`); the CLI rejects v0.9 JSONL with line errors.\n* Quick smoke: `openclaw nodes canvas a2ui push --node <id> --text \"Hello from A2UI\"`.\n\nDiscover and target paired nodes; send notifications; capture camera/screen.\n\n* `status`, `describe`\n* `pending`, `approve`, `reject` (pairing)\n* `notify` (macOS `system.notify`)\n* `run` (macOS `system.run`)\n* `camera_snap`, `camera_clip`, `screen_record`\n* `location_get`\n\n* Camera/screen commands require the node app to be foregrounded.\n* Images return image blocks + `MEDIA:<path>`.\n* Videos return `FILE:<path>` (mp4).\n* Location returns a JSON payload (lat/lon/accuracy/timestamp).\n* `run` params: `command` argv array; optional `cwd`, `env` (`KEY=VAL`), `commandTimeoutMs`, `invokeTimeoutMs`, `needsScreenRecording`.\n\nAnalyze an image with the configured image model.\n\n* `image` (required path or URL)\n* `prompt` (optional; defaults to \"Describe the image.\")\n* `model` (optional override)\n* `maxBytesMb` (optional size cap)\n\n* Only available when `agents.defaults.imageModel` is configured (primary or fallbacks), or when an implicit image model can be inferred from your default model + configured auth (best-effort pairing).\n* Uses the image model directly (independent of the main chat model).\n\nSend messages and channel actions across Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams.\n\n* `send` (text + optional media; MS Teams also supports `card` for Adaptive Cards)\n* `poll` (WhatsApp/Discord/MS Teams polls)\n* `react` / `reactions` / `read` / `edit` / `delete`\n* `pin` / `unpin` / `list-pins`\n* `permissions`\n* `thread-create` / `thread-list` / `thread-reply`\n* `search`\n* `sticker`\n* `member-info` / `role-info`\n* `emoji-list` / `emoji-upload` / `sticker-upload`\n* `role-add` / `role-remove`\n* `channel-info` / `channel-list`\n* `voice-status`\n* `event-list` / `event-create`\n* `timeout` / `kick` / `ban`\n\n* `send` routes WhatsApp via the Gateway; other channels go direct.\n* `poll` uses the Gateway for WhatsApp and MS Teams; Discord polls go direct.\n* When a message tool call is bound to an active chat session, sends are constrained to that session’s target to avoid cross-context leaks.\n\nManage Gateway cron jobs and wakeups.\n\n* `status`, `list`\n* `add`, `update`, `remove`, `run`, `runs`\n* `wake` (enqueue system event + optional immediate heartbeat)\n\n* `add` expects a full cron job object (same schema as `cron.add` RPC).\n* `update` uses `{ id, patch }`.\n\nRestart or apply updates to the running Gateway process (in-place).\n\n* `restart` (authorizes + sends `SIGUSR1` for in-process restart; `openclaw gateway` restart in-place)\n* `config.get` / `config.schema`\n* `config.apply` (validate + write config + restart + wake)\n* `config.patch` (merge partial update + restart + wake)\n* `update.run` (run update + restart + wake)\n\n* Use `delayMs` (defaults to 2000) to avoid interrupting an in-flight reply.\n* `restart` is disabled by default; enable with `commands.restart: true`.\n\n### `sessions_list` / `sessions_history` / `sessions_send` / `sessions_spawn` / `session_status`\n\nList sessions, inspect transcript history, or send to another session.\n\n* `sessions_list`: `kinds?`, `limit?`, `activeMinutes?`, `messageLimit?` (0 = none)\n* `sessions_history`: `sessionKey` (or `sessionId`), `limit?`, `includeTools?`\n* `sessions_send`: `sessionKey` (or `sessionId`), `message`, `timeoutSeconds?` (0 = fire-and-forget)\n* `sessions_spawn`: `task`, `label?`, `agentId?`, `model?`, `runTimeoutSeconds?`, `cleanup?`\n* `session_status`: `sessionKey?` (default current; accepts `sessionId`), `model?` (`default` clears override)\n\n* `main` is the canonical direct-chat key; global/unknown are hidden.\n* `messageLimit > 0` fetches last N messages per session (tool messages filtered).\n* `sessions_send` waits for final completion when `timeoutSeconds > 0`.\n* Delivery/announce happens after completion and is best-effort; `status: \"ok\"` confirms the agent run finished, not that the announce was delivered.\n* `sessions_spawn` starts a sub-agent run and posts an announce reply back to the requester chat.\n* `sessions_spawn` is non-blocking and returns `status: \"accepted\"` immediately.\n* `sessions_send` runs a reply‑back ping‑pong (reply `REPLY_SKIP` to stop; max turns via `session.agentToAgent.maxPingPongTurns`, 0–5).\n* After the ping‑pong, the target agent runs an **announce step**; reply `ANNOUNCE_SKIP` to suppress the announcement.\n\nList agent ids that the current session may target with `sessions_spawn`.\n\n* Result is restricted to per-agent allowlists (`agents.list[].subagents.allowAgents`).\n* When `[\"*\"]` is configured, the tool includes all configured agents and marks `allowAny: true`.\n\n## Parameters (common)\n\nGateway-backed tools (`canvas`, `nodes`, `cron`):\n\n* `gatewayUrl` (default `ws://127.0.0.1:18789`)\n* `gatewayToken` (if auth enabled)\n* `timeoutMs`\n\nNote: when `gatewayUrl` is set, include `gatewayToken` explicitly. Tools do not inherit config\nor environment credentials for overrides, and missing explicit credentials is an error.\n\n* `profile` (optional; defaults to `browser.defaultProfile`)\n* `target` (`sandbox` | `host` | `node`)\n* `node` (optional; pin a specific node id/name)\n\n## Recommended agent flows\n\n1. `browser` → `status` / `start`\n2. `snapshot` (ai or aria)\n3. `act` (click/type/press)\n4. `screenshot` if you need visual confirmation\n\n1. `canvas` → `present`\n2. `a2ui_push` (optional)\n3. `snapshot`\n\n1. `nodes` → `status`\n2. `describe` on the chosen node\n3. `notify` / `run` / `camera_snap` / `screen_record`\n\n* Avoid direct `system.run`; use `nodes` → `run` only with explicit user consent.\n* Respect user consent for camera/screen capture.\n* Use `status/describe` to ensure permissions before invoking media commands.\n\n## How tools are presented to the agent\n\nTools are exposed in two parallel channels:\n\n1. **System prompt text**: a human-readable list + guidance.\n2. **Tool schema**: the structured function definitions sent to the model API.\n\nThat means the agent sees both “what tools exist” and “how to call them.” If a tool\ndoesn’t appear in the system prompt or the schema, the model cannot call it.",
|
||
"code_samples": [
|
||
{
|
||
"code": "Notes:\n\n* Matching is case-insensitive.\n* `*` wildcards are supported (`\"*\"` means all tools).\n* If `tools.allow` only references unknown or unloaded plugin tool names, OpenClaw logs a warning and ignores the allowlist so core tools stay available.\n\n## Tool profiles (base allowlist)\n\n`tools.profile` sets a **base tool allowlist** before `tools.allow`/`tools.deny`.\nPer-agent override: `agents.list[].tools.profile`.\n\nProfiles:\n\n* `minimal`: `session_status` only\n* `coding`: `group:fs`, `group:runtime`, `group:sessions`, `group:memory`, `image`\n* `messaging`: `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status`\n* `full`: no restriction (same as unset)\n\nExample (messaging-only by default, allow Slack + Discord tools too):",
|
||
"language": "unknown"
|
||
},
|
||
{
|
||
"code": "Example (coding profile, but deny exec/process everywhere):",
|
||
"language": "unknown"
|
||
},
|
||
{
|
||
"code": "Example (global coding profile, messaging-only support agent):",
|
||
"language": "unknown"
|
||
},
|
||
{
|
||
"code": "## Provider-specific tool policy\n\nUse `tools.byProvider` to **further restrict** tools for specific providers\n(or a single `provider/model`) without changing your global defaults.\nPer-agent override: `agents.list[].tools.byProvider`.\n\nThis is applied **after** the base tool profile and **before** allow/deny lists,\nso it can only narrow the tool set.\nProvider keys accept either `provider` (e.g. `google-antigravity`) or\n`provider/model` (e.g. `openai/gpt-5.2`).\n\nExample (keep global coding profile, but minimal tools for Google Antigravity):",
|
||
"language": "unknown"
|
||
},
|
||
{
|
||
"code": "Example (provider/model-specific allowlist for a flaky endpoint):",
|
||
"language": "unknown"
|
||
},
|
||
{
|
||
"code": "Example (agent-specific override for a single provider):",
|
||
"language": "unknown"
|
||
},
|
||
{
|
||
"code": "## Tool groups (shorthands)\n\nTool policies (global, agent, sandbox) support `group:*` entries that expand to multiple tools.\nUse these in `tools.allow` / `tools.deny`.\n\nAvailable groups:\n\n* `group:runtime`: `exec`, `bash`, `process`\n* `group:fs`: `read`, `write`, `edit`, `apply_patch`\n* `group:sessions`: `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `session_status`\n* `group:memory`: `memory_search`, `memory_get`\n* `group:web`: `web_search`, `web_fetch`\n* `group:ui`: `browser`, `canvas`\n* `group:automation`: `cron`, `gateway`\n* `group:messaging`: `message`\n* `group:nodes`: `nodes`\n* `group:openclaw`: all built-in OpenClaw tools (excludes provider plugins)\n\nExample (allow only file tools + browser):",
|
||
"language": "unknown"
|
||
},
|
||
{
|
||
"code": "## Plugins + tools\n\nPlugins can register **additional tools** (and CLI commands) beyond the core set.\nSee [Plugins](/plugin) for install + config, and [Skills](/tools/skills) for how\ntool usage guidance is injected into prompts. Some plugins ship their own skills\nalongside tools (for example, the voice-call plugin).\n\nOptional plugin tools:\n\n* [Lobster](/tools/lobster): typed workflow runtime with resumable approvals (requires the Lobster CLI on the gateway host).\n* [LLM Task](/tools/llm-task): JSON-only LLM step for structured workflow output (optional schema validation).\n\n## Tool inventory\n\n### `apply_patch`\n\nApply structured patches across one or more files. Use for multi-hunk edits.\nExperimental: enable via `tools.exec.applyPatch.enabled` (OpenAI models only).\n\n### `exec`\n\nRun shell commands in the workspace.\n\nCore parameters:\n\n* `command` (required)\n* `yieldMs` (auto-background after timeout, default 10000)\n* `background` (immediate background)\n* `timeout` (seconds; kills the process if exceeded, default 1800)\n* `elevated` (bool; run on host if elevated mode is enabled/allowed; only changes behavior when the agent is sandboxed)\n* `host` (`sandbox | gateway | node`)\n* `security` (`deny | allowlist | full`)\n* `ask` (`off | on-miss | always`)\n* `node` (node id/name for `host=node`)\n* Need a real TTY? Set `pty: true`.\n\nNotes:\n\n* Returns `status: \"running\"` with a `sessionId` when backgrounded.\n* Use `process` to poll/log/write/kill/clear background sessions.\n* If `process` is disallowed, `exec` runs synchronously and ignores `yieldMs`/`background`.\n* `elevated` is gated by `tools.elevated` plus any `agents.list[].tools.elevated` override (both must allow) and is an alias for `host=gateway` + `security=full`.\n* `elevated` only changes behavior when the agent is sandboxed (otherwise it’s a no-op).\n* `host=node` can target a macOS companion app or a headless node host (`openclaw node run`).\n* gateway/node approvals and allowlists: [Exec approvals](/tools/exec-approvals).\n\n### `process`\n\nManage background exec sessions.\n\nCore actions:\n\n* `list`, `poll`, `log`, `write`, `kill`, `clear`, `remove`\n\nNotes:\n\n* `poll` returns new output and exit status when complete.\n* `log` supports line-based `offset`/`limit` (omit `offset` to grab the last N lines).\n* `process` is scoped per agent; sessions from other agents are not visible.\n\n### `web_search`\n\nSearch the web using Brave Search API.\n\nCore parameters:\n\n* `query` (required)\n* `count` (1–10; default from `tools.web.search.maxResults`)\n\nNotes:\n\n* Requires a Brave API key (recommended: `openclaw configure --section web`, or set `BRAVE_API_KEY`).\n* Enable via `tools.web.search.enabled`.\n* Responses are cached (default 15 min).\n* See [Web tools](/tools/web) for setup.\n\n### `web_fetch`\n\nFetch and extract readable content from a URL (HTML → markdown/text).\n\nCore parameters:\n\n* `url` (required)\n* `extractMode` (`markdown` | `text`)\n* `maxChars` (truncate long pages)\n\nNotes:\n\n* Enable via `tools.web.fetch.enabled`.\n* `maxChars` is clamped by `tools.web.fetch.maxCharsCap` (default 50000).\n* Responses are cached (default 15 min).\n* For JS-heavy sites, prefer the browser tool.\n* See [Web tools](/tools/web) for setup.\n* See [Firecrawl](/tools/firecrawl) for the optional anti-bot fallback.\n\n### `browser`\n\nControl the dedicated OpenClaw-managed browser.\n\nCore actions:\n\n* `status`, `start`, `stop`, `tabs`, `open`, `focus`, `close`\n* `snapshot` (aria/ai)\n* `screenshot` (returns image block + `MEDIA:<path>`)\n* `act` (UI actions: click/type/press/hover/drag/select/fill/resize/wait/evaluate)\n* `navigate`, `console`, `pdf`, `upload`, `dialog`\n\nProfile management:\n\n* `profiles` — list all browser profiles with status\n* `create-profile` — create new profile with auto-allocated port (or `cdpUrl`)\n* `delete-profile` — stop browser, delete user data, remove from config (local only)\n* `reset-profile` — kill orphan process on profile's port (local only)\n\nCommon parameters:\n\n* `profile` (optional; defaults to `browser.defaultProfile`)\n* `target` (`sandbox` | `host` | `node`)\n* `node` (optional; picks a specific node id/name)\n Notes:\n* Requires `browser.enabled=true` (default is `true`; set `false` to disable).\n* All actions accept optional `profile` parameter for multi-instance support.\n* When `profile` is omitted, uses `browser.defaultProfile` (defaults to \"chrome\").\n* Profile names: lowercase alphanumeric + hyphens only (max 64 chars).\n* Port range: 18800-18899 (\\~100 profiles max).\n* Remote profiles are attach-only (no start/stop/reset).\n* If a browser-capable node is connected, the tool may auto-route to it (unless you pin `target`).\n* `snapshot` defaults to `ai` when Playwright is installed; use `aria` for the accessibility tree.\n* `snapshot` also supports role-snapshot options (`interactive`, `compact`, `depth`, `selector`) which return refs like `e12`.\n* `act` requires `ref` from `snapshot` (numeric `12` from AI snapshots, or `e12` from role snapshots); use `evaluate` for rare CSS selector needs.\n* Avoid `act` → `wait` by default; use it only in exceptional cases (no reliable UI state to wait on).\n* `upload` can optionally pass a `ref` to auto-click after arming.\n* `upload` also supports `inputRef` (aria ref) or `element` (CSS selector) to set `<input type=\"file\">` directly.\n\n### `canvas`\n\nDrive the node Canvas (present, eval, snapshot, A2UI).\n\nCore actions:\n\n* `present`, `hide`, `navigate`, `eval`\n* `snapshot` (returns image block + `MEDIA:<path>`)\n* `a2ui_push`, `a2ui_reset`\n\nNotes:\n\n* Uses gateway `node.invoke` under the hood.\n* If no `node` is provided, the tool picks a default (single connected node or local mac node).\n* A2UI is v0.8 only (no `createSurface`); the CLI rejects v0.9 JSONL with line errors.\n* Quick smoke: `openclaw nodes canvas a2ui push --node <id> --text \"Hello from A2UI\"`.\n\n### `nodes`\n\nDiscover and target paired nodes; send notifications; capture camera/screen.\n\nCore actions:\n\n* `status`, `describe`\n* `pending`, `approve`, `reject` (pairing)\n* `notify` (macOS `system.notify`)\n* `run` (macOS `system.run`)\n* `camera_snap`, `camera_clip`, `screen_record`\n* `location_get`\n\nNotes:\n\n* Camera/screen commands require the node app to be foregrounded.\n* Images return image blocks + `MEDIA:<path>`.\n* Videos return `FILE:<path>` (mp4).\n* Location returns a JSON payload (lat/lon/accuracy/timestamp).\n* `run` params: `command` argv array; optional `cwd`, `env` (`KEY=VAL`), `commandTimeoutMs`, `invokeTimeoutMs`, `needsScreenRecording`.\n\nExample (`run`):",
|
||
"language": "unknown"
|
||
}
|
||
],
|
||
"headings": [
|
||
{
|
||
"level": "h2",
|
||
"text": "Disabling tools",
|
||
"id": "disabling-tools"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "Tool profiles (base allowlist)",
|
||
"id": "tool-profiles-(base-allowlist)"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "Provider-specific tool policy",
|
||
"id": "provider-specific-tool-policy"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "Tool groups (shorthands)",
|
||
"id": "tool-groups-(shorthands)"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "Plugins + tools",
|
||
"id": "plugins-+-tools"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "Tool inventory",
|
||
"id": "tool-inventory"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`apply_patch`",
|
||
"id": "`apply_patch`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`exec`",
|
||
"id": "`exec`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`process`",
|
||
"id": "`process`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`web_search`",
|
||
"id": "`web_search`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`web_fetch`",
|
||
"id": "`web_fetch`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`browser`",
|
||
"id": "`browser`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`canvas`",
|
||
"id": "`canvas`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`nodes`",
|
||
"id": "`nodes`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`image`",
|
||
"id": "`image`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`message`",
|
||
"id": "`message`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`cron`",
|
||
"id": "`cron`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`gateway`",
|
||
"id": "`gateway`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`sessions_list` / `sessions_history` / `sessions_send` / `sessions_spawn` / `session_status`",
|
||
"id": "`sessions_list`-/-`sessions_history`-/-`sessions_send`-/-`sessions_spawn`-/-`session_status`"
|
||
},
|
||
{
|
||
"level": "h3",
|
||
"text": "`agents_list`",
|
||
"id": "`agents_list`"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "Parameters (common)",
|
||
"id": "parameters-(common)"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "Recommended agent flows",
|
||
"id": "recommended-agent-flows"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "Safety",
|
||
"id": "safety"
|
||
},
|
||
{
|
||
"level": "h2",
|
||
"text": "How tools are presented to the agent",
|
||
"id": "how-tools-are-presented-to-the-agent"
|
||
}
|
||
],
|
||
"url": "llms-txt#tools-(openclaw)",
|
||
"links": []
|
||
} |