Tools, Skills, and Plugins: Capabilities Overview

An overview of OpenClaw tools, skills, and plugins: what agents can call and how to extend them. It routes you to the right surface and the detailed policy docs.

Read this when

  • You want to understand what tools OpenClaw provides
  • You are deciding between built-in tools, skills, and plugins
  • You need the right docs entry point for tool policy, automation, or agent coordination

This page helps you pick the right Capabilities surface. Tools are actions an agent can call, skills show agents how to do work, and plugins supply runtime capabilities, including tools, providers, channels, hooks, and packaged skills.

This is an overview and routing page. For complete tool policy, defaults, group membership, provider restrictions, and configuration fields, see Tools and custom providers.

Start here

For most agents, begin with the built-in tool categories. Adjust policy only when the agent should see fewer tools or requires explicit host access.

If you need to...Use this firstThen read
Let an agent act with existing capabilitiesBuilt-in toolsTool categories
Control what an agent can callTool policyTools and custom providers
Teach an agent a workflowSkillsSkills, Creating skills, Skill Workshop, and Self-learning
Add a new integration or runtime surfacePluginsPlugins and Build plugins
Run work later or in the backgroundAutomationAutomation overview
Coordinate multiple agents or harnessesSub-agentsACP agents and Agent send
Orchestrate concurrent agents from codeSwarmCode Mode and Sub-agents
Search a large OpenClaw tool catalogTool SearchTool Search
Combine several tools in one compact programCode ModeCode Mode

Choose tools, skills, or plugins

Use a tool when the agent needs to act

A tool is a typed function that an agent can call, for example exec, browser, web_search, message, or image_generate. Reach for tools when the agent must read data, modify files, send messages, call a provider, or drive another system. Tools that are visible get passed to the model as structured function definitions.

Only tools that pass the active profile, allow/deny policy, provider restrictions, sandbox state, channel permissions, and plugin availability are seen by the model.

Use a skill when the agent needs instructions

A skill is a SKILL.md instruction pack that gets loaded into the agent prompt. Choose a skill when the agent already holds the tools it needs but requires a repeatable workflow, review rubric, command sequence, or operating constraint.

Skills may reside in a workspace, a shared skill directory, a managed OpenClaw skill root, or a plugin package.

Skills | Skill Workshop | Self-learning | Creating skills | Skills config

Use a plugin when OpenClaw needs a new capability

Through a plugin you can add tools, skills, channels, model providers, speech, realtime voice, media generation, web search, web fetch, hooks, and other runtime capabilities. Pick a plugin when the capability involves code, credentials, lifecycle hooks, manifest metadata, or installable packaging. Plugins that already exist can be installed from ClawHub, npm, git, local directories, or archives.

Install and configure plugins | Build plugins | Plugin SDK

Built-in tool categories

The table shows representative tools so you can recognize the surface. It is not the complete policy reference. For exact groups, defaults, and allow/deny semantics, see Tools and custom providers.

CategoryUse when the agent needs to...Representative toolsRead next
RuntimeExecute commands, control processes, share operator terminals, or run Python supplied by a providerexec, process, terminal, code_executionExec, Control UI terminal, Code execution
FilesView workspace files and modify themread, write, edit, apply_patchApply patch
Human inputStop and wait for a structured choice that the user owns, or receive a credential without exposing itask_user, secretsAsk user, Secrets
WebQuery the web, query X posts, or retrieve page content in readable formweb_search, x_search, web_fetchWeb tools, Web fetch
BrowserDrive a browser sessionbrowserBrowser
Operator UILay out Control UI panes and panels, or pick and define appearance themesscreen, themeScreen, Theme
Session progressRefresh the durable progress card of the parent session; sub-agents cannot use itprogress_cardProgress card
Messaging and channelsDeliver replies or perform channel actionsmessageAgent send
Sessions and agentsExamine sessions, hand off work, coordinate collectors, guide a different run, or report statussessions_*, agents_wait, subagents, agents_list, session_status, get_goal, create_goal, update_goalGoal, Swarm, Sub-agents, Session tool
AutomationSet up scheduled work or react to background eventsautomations (cron alias)Automation
Gateway and nodesCheck Gateway state or paired target devicesgateway, nodesGateway configuration, Nodes
Plugin lifecycleView, install, enable, disable, remove, or reload pluginspluginsAgent plugin management
MediaExamine, produce, or vocalize mediaview_image, image_generate, music_generate, video_generate, ttsMedia overview
Large OpenClaw catalogsLook up, invoke, and chain numerous eligible tools without shipping every schema to the modelexec, wait, tool_search, tool_describe, dispatch_actionCode Mode, Tool Search

Session tools and sessions_spawn take an optional user (the verified requester_profile.id of an admitted participant) and act under that person's authority. Leave it out and the execution keeps its original requester, even after collaborative steering. Being selected does not mean the person asked for or approved the action. See Session tools and Sub-agent tool reference.

On Gateways serving multiple users, personal_instructions reads and updates the authenticated requester's personal USER.md via the Gateway, even when the chat runs in a project worktree. The coding and messaging profiles include it; it does not broaden general file-tool access. See User model.

Targeted formatting changes are supported by the edit tool, such as stripping trailing spaces or swapping Unicode quotes, dashes, and spaces. Such changes are applied even when fuzzy normalization would make the old and new text compare equal. Requests that replace text with identical text, and edits whose content ends up unchanged, still report no changes.

Note

Code Mode and Tool Search are experimental OpenClaw agent surfaces. Codex harness runs rely on Codex-native code mode, native tool search, deferred dynamic tools, and nested tool calls rather than tools.codeMode or tools.toolSearch.

Plugin-provided tools

Additional tools can be registered by plugins. Plugin authors wire tools through api.registerTool(...) and the manifest's contracts.tools; the contract details live in Plugin SDK and Plugin manifest.

Tools that plugins commonly provide include:

  • Diffs for rendering file and markdown diffs
  • Show widget for self-contained inline SVG and HTML in supported chat clients
  • Screen for arranging a connected Control UI
  • LLM Task for JSON-only workflow steps
  • Lobster for typed workflows with resumable approvals
  • Tokenjuice for compacting noisy exec and bash tool output
  • Tool Search for discovering and calling large tool catalogs without putting every schema in the prompt
  • Canvas for the macOS widget-panel presenter

Configure access and approvals

Tool policy is applied before the model call. When policy strips a tool, that tool's schema is not sent to the model for the turn. A run may lose tools owing to global config, per-agent config, channel policy, provider restrictions, sandbox rules, channel/runtime policy, or plugin availability.

The action list and parameters of the message tool are also narrowed to the current channel plus the channels in the agent's route bindings. Agents spanning multiple channels keep the union of those channels' declared actions and capabilities. Local sessions with no channel bindings, and scheduled runs, still get configured-channel discovery. No new setting is needed to cut prompt overhead: bindings determine what the schema advertises, while execution remains governed by normal delivery permissions. When bindings and capabilities do not change, the schema bytes stay stable no matter what order plugins register in.

Completion and settle turns holding a source-bound message grant can send text, media, or attachments, including media-only replies, the optional caption, and file metadata (filename, contentType, or mimeType). MEDIA: directives and remote Markdown images follow the normal outbound media policy. Local files passed through media, attachments, or MEDIA: must sit inside the allowed mediaAccess.localRoots; local Markdown image paths remain literal text. The action is still send; channel, account, destination, and thread remain locked to the current conversation. replyTo may name the current message or thread but cannot pick a different reply target. On this restricted grant, inline reply and audio_as_voice directives stay unavailable.

In Control UI/Webchat, publish a local HTML report to the current conversation by calling message(action=send, media=<path>) and leaving out the target. OpenClaw verifies the current file-read and delivery permissions, validates the HTML, and stores an attachment snapshot. A parent agent may publish the final revision of a child agent's report using its own read permission. Keep the HTML self-contained; relative assets are not bundled. This explicit send does not confer generated-file provenance: automatic MEDIA: replies keep their existing HTML restrictions, and the preview retains its existing sandbox and script controls.

One semantic image inspection capability, named view_image, is exposed by OpenClaw. Where the active harness provides its own loader, OpenClaw suppresses its duplicate. In all other cases, the OpenClaw-provided implementation takes path for a single local image path or permitted URL, or paths for multiple; maxImages caps the combined list at a default of 20. Codex's native implementation takes one local filesystem path. Callers must follow the active tool schema.

Policy entries that already exist under the name image have to be migrated to view_image. Run openclaw doctor --fix to bring supported config policy surfaces and persisted automation toolsAllow lists up to date.

Extend capabilities

Pick the extension path that matches what you need OpenClaw to do:

Troubleshoot missing tools

Tool access is not granted by configured tools.exec and tools.fs sections. Only when other active global, agent, and provider policies allow those tools does the profile migration warning suggest alsoAllow entries.

If a tool is invisible to the model or cannot be called, begin with the effective policy for the current turn:

  1. In Tools and custom providers, check the active profile, tools.allow, and tools.deny.
  2. In Tools and custom providers, check restrictions specific to the provider, and verify that the selected model provider supports the tool shape.
  3. Use Sandbox vs tool policy vs elevated and Elevated exec to check channel permissions, sandbox state, and elevated access.
  4. In Plugins, check whether the plugin that owns the tool is installed and enabled.
  5. For delegated runs, check the per-agent restrictions in Per-agent sandbox and tool restrictions.
  6. For large OpenClaw catalogs, verify whether the run relies on direct tool exposure, Code Mode, or Tool Search.
  • Automation for cron, tasks, heartbeat, hooks, standing orders, and workflows
  • Agents for the agent model, sessions, memory, and multi-agent coordination
  • Tools and custom providers for the tool policy reference
  • Plugins for installing and managing plugins
  • Plugin SDK for the plugin author reference
  • Skills for skill load order, gating, and config
  • Skill Workshop for creating skills through generation and review
  • Tool Search for discovering a compact OpenClaw tool catalog
  • Code Mode for compact JavaScript workflows over a hidden OpenClaw tool catalog
  • Swarm for structured fan-out and collection from Code Mode
  • Tools invoke API, call these tools over HTTP
2,030 words · updated Oct 26, 2026