📑 Table des matières

Les tools openclaw, à quoi servent-ils et comment les utiliser ?

OpenClaw 🟢 Débutant ⏱️ 5 min de lecture 📅 2026-02-24

OpenClaw Tools: The Nervous System of Your AI Agent

When you talk to OpenClaw, you're not just talking to a chatbot. You're talking to an agent capable of acting on your system, your browser, your applications. How? Through tools — functions the agent can invoke to accomplish concrete tasks.

Prerequisites

  • OpenClaw installed and configured
  • Basic understanding of JSON and command line
  • Official documentation: https://docs.openclaw.ai/tools

What Is a Tool?

A tool is a function that OpenClaw can call. When you ask "run this command" or "search the web," the agent doesn't pretend: it calls the exec or web_search tool, receives the result, and responds.

Concrete example: you ask "check if the server is running." The agent:
1. Calls exec with the command systemctl status nginx
2. Receives the stdout
3. Explains the service status

That's what tools are. No magic, just well-defined functions.

Tool Categories

OpenClaw organizes tools into groups:

🖥️ Runtime (group:runtime)

Tools: exec, process

For executing shell commands and managing background processes.

# Via the OpenClaw agent (by talking to it)
"Run the uptime command"
# → Calls exec(command="uptime")

"Start the backup in background"
# → Calls exec(command="backup.sh", background=true)
# → Returns a sessionId

"Check the backup status"
# → Calls process(action="poll", sessionId="...")

Important options:
- pty: true → for interactive commands (vim, tmux)
- timeout → auto-kill after X seconds
- background → launch without waiting for completion
- elevated → execute in privileged mode if allowed

📁 File System (group:fs)

Tools: read, write, edit, apply_patch

For reading and modifying files.

"Read the file /etc/nginx/nginx.conf"
# → Calls read(path="/etc/nginx/nginx.conf")

"Add a line at the end of the file"
# → Calls edit(path="...", oldText="...", newText="...")

"Apply this patch on 3 files"
# → Calls apply_patch(patches=[...])

Note: apply_patch is experimental (OpenAI models only), enabled via tools.exec.applyPatch.enabled.

🌐 Web (group:web)

Tools: web_search, web_fetch

For searching and extracting web content.

"Search for the latest info on Claude 4"
# → Calls web_search(query="Claude 4 latest news", count=5)

"Extract the content from this URL"
# → Calls web_fetch(url="...", extractMode="markdown")

Setup:

{
  "tools": {
    "web": {
      "search": { "enabled": true, "maxResults": 10 },
      "fetch": { "enabled": true, "maxCharsCap": 50000 }
    }
  }
}

Required: Brave API key for web_searchopenclaw configure --section web

🌍 Browser (group:ui)

Tool: browser

For controlling a real Chrome browser.

"Open Google and search for OpenClaw"
# 1. browser(action="start")
# 2. browser(action="open", targetUrl="https://google.com")
# 3. browser(action="snapshot", snapshotFormat="ai")
# 4. browser(action="act", request={kind:"type", ref:"searchbox", text:"OpenClaw"})
# 5. browser(action="act", request={kind:"press", key:"Enter"})

"Take a screenshot of the page"
# → browser(action="screenshot") → returns image + MEDIA:

Recommended workflow:
1. status / start → launch the browser
2. snapshot → capture the page state (AI or aria tree)
3. act → click, type, scroll (click, type, press, hover, drag)
4. screenshot → visual confirmation

Multi-profiles: you can have multiple isolated Chrome instances via profile.

📱 Canvas & Nodes

Tools: canvas, nodes

For controlling macOS/iOS devices (OpenClaw companion app).

Canvas: displays visual content on a screen (present, eval, snapshot, A2UI).

Nodes: targets paired devices:
- notify → macOS system notification
- camera_snap → take a photo
- screen_record → screen recording
- location_get → geolocation
- run → shell command on the device

"Take a photo with the MacBook"
# → nodes(action="camera_snap", node="office-mac")

"Record the screen for 10s"
# → nodes(action="screen_record", node="office-mac", durationMs=10000)

💬 Messaging (group:messaging)

Tool: message

For sending messages on Telegram/Discord/Slack/WhatsApp/Signal/iMessage.

"Send a message to #general on Discord"
# → message(action="send", channel="discord", target="#general", message="...")

"Create a poll on Telegram"
# → message(action="poll", channel="telegram", ...)

Actions: send, react, edit, delete, pin, thread-create, search, etc.

⏰ Automation (group:automation)

Tools: cron, gateway

For managing scheduled tasks and configuration.

"Create a cron that reminds me every day at 9am"
# → cron(action="add", job={...})

"List active cron jobs"
# → cron(action="list")

"Restart OpenClaw"
# → gateway(action="restart")

Cron format:

{
  "schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Europe/Paris" },
  "payload": { "kind": "systemEvent", "text": "Daily reminder" },
  "sessionTarget": "main"
}

👥 Sessions (group:sessions)

Tools: sessions_list, sessions_history, sessions_send, sessions_spawn, session_status

For managing multiple conversations and sub-agents.

"List my active sessions"
# → sessions_list()

"Send a message to the support session"
# → sessions_send(sessionKey="support", message="...")

"Launch a sub-agent for this task"
# → sessions_spawn(task="...", model="anthropic/claude-sonnet-4-5")

🧠 Memory (group:memory)

Tools: memory_search, memory_get

For searching in MEMORY.md and memory/*.md.

"Remind me what we decided yesterday about project X"
# → memory_search(query="project X decisions", maxResults=5)
# → memory_get(path="memory/2026-02-10.md", from=120, lines=30)

Configuring Tool Access

By default, all tools are available. You can restrict them via openclaw.json:

Global Deny

{
  "tools": {
    "deny": ["browser", "nodes"]
  }
}

→ Completely blocks browser and nodes.

Selective Allow

{
  "tools": {
    "allow": ["group:fs", "group:web", "sessions_list"]
  }
}

→ Only allows these tools (everything else is blocked).

Profiles (Presets)

Instead of listing manually, use a profile:

minimalsession_status only
codinggroup:fs, group:runtime, group:sessions, group:memory, image
messaginggroup:messaging, sessions tools
full → everything (default)

{
  "tools": {
    "profile": "coding"
  }
}

Per Provider

Restrict for a specific model:

{
  "tools": {
    "profile": "coding",
    "byProvider": {
      "google-antigravity": { "profile": "minimal" }
    }
  }
}

→ Gemini Antigravity will only have session_status, the rest will have the coding profile.

Per Agent

Create a support agent with limited access:

{
  "agents": {
    "list": [
      {
        "id": "support",
        "tools": {
          "profile": "messaging",
          "allow": ["slack", "discord"]
        }
      }
    ]
  }
}

Practical Use Cases

1. Automate a Daily Backup

# 1. Create a backup.sh script
"Create a file backup.sh that copies ~/docs to /backup/"

# 2. Make executable
"Make backup.sh executable"
# → exec(command="chmod +x backup.sh")

# 3. Add a cron job
"Create a cron job that runs backup.sh every day at 2am"
# → cron(action="add", job={...})

2. Scrape a Website

"Go to example.com, find all links, and save them to links.txt"
# 1. browser(action="start")
# 2. browser(action="open", targetUrl="https://example.com")
# 3. browser(action="snapshot")
# 4. Extract links from snapshot
# 5. write(path="links.txt", content="...")

3. Server Monitoring with Alerts

"Check CPU load every 5 min, alert me if >80%"
# → Cron that:
#    1. exec(command="top -bn1 | grep Cpu(s)")
#    2. Parses the value
#    3. If >80% → message(action="send", ...)

4. Sub-agent for Long Tasks

"Analyze all error logs from last month and summarize patterns"
# → sessions_spawn(
#     task="Analyze logs /var/log/*.log from last month, summarize error patterns",
#     model="anthropic/claude-sonnet-4-5",
#     runTimeoutSeconds=600
#   )
# → Sub-agent runs in isolation, announces the result

Summary

  • Tools = functions the agent can call to act (not just talk)
  • 9 main groups: runtime, fs, web, ui, messaging, automation, sessions, memory, nodes
  • Fine-grained configuration: profiles, deny/allow, byProvider, per agent
  • Typical workflow: status → action → result → next action
  • Security: tools.deny to block sensitive actions

Conclusion

Tools are the difference between a chatbot and an agent. With OpenClaw, you don't ask "can you do X?", you ask "do X" — and it happens. Whether it's running a command, scraping the web, or controlling your browser, everything goes through these tools.

Next step: explore Skills that guide the agent on how to use tools in specific contexts. And join the Discord community to share your workflows!