Les Tools OpenClaw : Le système nerveux de votre agent IA
Quand vous parlez à OpenClaw, vous ne parlez pas qu'à un chatbot. Vous parlez à un agent capable d'agir sur votre système, votre navigateur, vos applications. Comment ? Grâce aux tools — les fonctions que l'agent peut invoquer pour accomplir des tâches concrètes.
Prérequis
- OpenClaw installé et configuré
- Compréhension basique de JSON et ligne de commande
- Documentation officielle : https://docs.openclaw.ai/tools
Qu'est-ce qu'un tool ?
Un tool, c'est une fonction qu'OpenClaw peut appeler. Quand tu demandes "lance cette commande" ou "cherche sur le web", l'agent ne fait pas semblant : il appelle le tool exec ou web_search, reçoit le résultat, et te répond.
Exemple concret : tu demandes "vérifie si le serveur tourne". L'agent :
1. Appelle exec avec la commande systemctl status nginx
2. Reçoit le stdout
3. T'explique l'état du service
C'est ça, les tools. Pas de magie, juste des fonctions bien définies.
Les catégories de tools
OpenClaw organise les tools en groupes :
🖥️ Runtime (group:runtime)
Tools : exec, process
Pour exécuter des commandes shell et gérer les processus en arrière-plan.
# Via l'agent OpenClaw (en lui parlant)
"Lance la commande uptime"
# → Appelle exec(command="uptime")
"Démarre le backup en background"
# → Appelle exec(command="backup.sh", background=true)
# → Retourne un sessionId
"Vérifie l'état du backup"
# → Appelle process(action="poll", sessionId="...")
Options importantes :
- pty: true → pour les commandes interactives (vim, tmux)
- timeout → kill auto après X secondes
- background → lance sans attendre la fin
- elevated → exécute en mode privilégié si autorisé
📁 Système de fichiers (group:fs)
Tools : read, write, edit, apply_patch
Pour lire et modifier des fichiers.
"Lis le fichier /etc/nginx/nginx.conf"
# → Appelle read(path="/etc/nginx/nginx.conf")
"Ajoute une ligne à la fin du fichier"
# → Appelle edit(path="...", oldText="...", newText="...")
"Applique ce patch sur 3 fichiers"
# → Appelle apply_patch(patches=[...])
Note : apply_patch est expérimental (OpenAI models only), activé via tools.exec.applyPatch.enabled.
🌐 Web (group:web)
Tools : web_search, web_fetch
Pour chercher et extraire du contenu web.
"Cherche les dernières infos sur Claude 4"
# → Appelle web_search(query="Claude 4 latest news", count=5)
"Extrait le contenu de cette URL"
# → Appelle web_fetch(url="...", extractMode="markdown")
Setup :
{
"tools": {
"web": {
"search": { "enabled": true, "maxResults": 10 },
"fetch": { "enabled": true, "maxCharsCap": 50000 }
}
}
}
Requis : clé API Brave pour web_search → openclaw configure --section web
🌍 Browser (group:ui)
Tool : browser
Pour contrôler un vrai navigateur Chrome.
"Ouvre Google et cherche 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"})
"Fais un screenshot de la page"
# → browser(action="screenshot") → retourne image + MEDIA:
Workflow recommandé :
1. status / start → lance le navigateur
2. snapshot → capture l'état de la page (AI ou aria tree)
3. act → clique, tape, scroll (click, type, press, hover, drag)
4. screenshot → confirmation visuelle
Multi-profils : tu peux avoir plusieurs instances Chrome isolées via profile.
📱 Canvas & Nodes
Tools : canvas, nodes
Pour contrôler des devices macOS/iOS (app OpenClaw companion).
Canvas : affiche du contenu visuel sur un écran (present, eval, snapshot, A2UI).
Nodes : cible des devices paired :
- notify → notif système macOS
- camera_snap → photo
- screen_record → vidéo écran
- location_get → géoloc
- run → commande shell sur le device
"Prends une photo avec le MacBook"
# → nodes(action="camera_snap", node="office-mac")
"Enregistre l'écran pendant 10s"
# → nodes(action="screen_record", node="office-mac", durationMs=10000)
💬 Messaging (group:messaging)
Tool : message
Pour envoyer des messages sur Telegram/Discord/Slack/WhatsApp/Signal/iMessage.
"Envoie un message à #general sur Discord"
# → message(action="send", channel="discord", target="#general", message="...")
"Crée un sondage sur Telegram"
# → message(action="poll", channel="telegram", ...)
Actions : send, react, edit, delete, pin, thread-create, search, etc.
⏰ Automation (group:automation)
Tools : cron, gateway
Pour gérer les tâches planifiées et la configuration.
"Crée un cron qui me rappelle tous les jours à 9h"
# → cron(action="add", job={...})
"Liste les jobs cron actifs"
# → cron(action="list")
"Redémarre OpenClaw"
# → gateway(action="restart")
Format cron :
{
"schedule": { "kind": "cron", "expr": "0 9 * * *", "tz": "Europe/Paris" },
"payload": { "kind": "systemEvent", "text": "Rappel quotidien" },
"sessionTarget": "main"
}
👥 Sessions (group:sessions)
Tools : sessions_list, sessions_history, sessions_send, sessions_spawn, session_status
Pour gérer plusieurs conversations et sub-agents.
"Liste mes sessions actives"
# → sessions_list()
"Envoie un message à la session support"
# → sessions_send(sessionKey="support", message="...")
"Lance un sub-agent pour cette tâche"
# → sessions_spawn(task="...", model="anthropic/claude-sonnet-4-5")
🧠 Memory (group:memory)
Tools : memory_search, memory_get
Pour chercher dans MEMORY.md et memory/*.md.
"Rappelle-moi ce qu'on a décidé hier sur le projet X"
# → memory_search(query="projet X décisions", maxResults=5)
# → memory_get(path="memory/2026-02-10.md", from=120, lines=30)
Configurer l'accès aux tools
Par défaut, tous les tools sont disponibles. Tu peux restreindre via openclaw.json :
Deny global
{
"tools": {
"deny": ["browser", "nodes"]
}
}
→ Interdit complètement browser et nodes.
Allow sélectif
{
"tools": {
"allow": ["group:fs", "group:web", "sessions_list"]
}
}
→ Autorise SEULEMENT ces tools (tout le reste est bloqué).
Profiles (presets)
Au lieu de lister manuellement, utilise un profile :
minimal → session_status uniquement
coding → group:fs, group:runtime, group:sessions, group:memory, image
messaging → group:messaging, sessions tools
full → tout (par défaut)
{
"tools": {
"profile": "coding"
}
}
Par provider
Restreindre pour un modèle spécifique :
{
"tools": {
"profile": "coding",
"byProvider": {
"google-antigravity": { "profile": "minimal" }
}
}
}
→ Gemini Antigravity n'aura que session_status, le reste aura le profile coding.
Par agent
Créer un agent support avec accès limité :
{
"agents": {
"list": [
{
"id": "support",
"tools": {
"profile": "messaging",
"allow": ["slack", "discord"]
}
}
]
}
}
Cas d'usage pratiques
1. Automatiser un backup quotidien
# 1. Créer un script backup.sh
"Crée un fichier backup.sh qui copie ~/docs vers /backup/"
# 2. Rendre exécutable
"Rends backup.sh exécutable"
# → exec(command="chmod +x backup.sh")
# 3. Ajouter un cron
"Crée un job cron qui lance backup.sh tous les jours à 2h du matin"
# → cron(action="add", job={...})
2. Scraper un site web
"Va sur example.com, cherche tous les liens, et sauvegarde-les dans links.txt"
# 1. browser(action="start")
# 2. browser(action="open", targetUrl="https://example.com")
# 3. browser(action="snapshot")
# 4. Extrait les liens du snapshot
# 5. write(path="links.txt", content="...")
3. Monitoring serveur avec alerte
"Vérifie la charge CPU toutes les 5 min, préviens-moi si >80%"
# → Cron qui :
# 1. exec(command="top -bn1 | grep 'Cpu(s)'")
# 2. Parse la valeur
# 3. Si >80% → message(action="send", ...)
4. Sub-agent pour tâche longue
"Analyse tous les logs d'erreur du mois dernier et résume les patterns"
# → sessions_spawn(
# task="Analyse logs /var/log/*.log du mois dernier, résume patterns d'erreurs",
# model="anthropic/claude-sonnet-4-5",
# runTimeoutSeconds=600
# )
# → Le sub-agent tourne en isolé, t'annonce le résultat
Récapitulatif
- Tools = fonctions que l'agent peut appeler pour agir (pas juste parler)
- 9 groupes principaux : runtime, fs, web, ui, messaging, automation, sessions, memory, nodes
- Configuration fine : profiles, deny/allow, byProvider, par agent
- Workflow type : status → action → résultat → action suivante
- Sécurité : tools.deny pour bloquer les actions sensibles
Conclusion
Les tools sont la différence entre un chatbot et un agent. Avec OpenClaw, tu ne demandes pas "peux-tu faire X ?", tu demandes "fais X" — et ça arrive. Que ce soit exécuter une commande, scraper le web, ou contrôler ton navigateur, tout passe par ces tools.
Prochaine étape : explore les Skills qui guident l'agent sur comment utiliser les tools dans des contextes spécifiques. Et rejoins la communauté Discord pour partager tes workflows !
📚 Pour aller plus loin
-
Configurer OpenClaw : SOUL, AGENTS et Skills — Découvrez comment activer et paramétrer les tools dans votre configuration OpenClaw, avec des exemples concrets pour chaque groupe (
runtime,fs,web, etc.). -
Créer son premier agent IA autonome — Apprenez à combiner les tools (comme
exec,web_searchoubrowser) pour construire un agent capable d’enchaîner des actions complexes, avec des cas d’usage réels. -
MCP, Function Calling, Tool Use : le guide complet — Plongez dans les mécanismes techniques derrière l’appel des tools par OpenClaw, incluant la gestion des erreurs, les timeouts, et l’optimisation des requêtes parallèles.
-
Sécuriser son agent IA : les garde-fous essentiels — Indispensable avant d’utiliser les tools en production : comment limiter les risques liés à
exec, restreindre l’accès au système de fichiers, ou sécuriser les requêtes web.