API d'invocation d'outils
La passerelle OpenClaw expose un simple point de terminaison HTTP pour invoquer un outil directement. Il est toujours activé, mais protégé par l'authentification de la passerelle et la politique des outils.
POST /tools/invoke- Même port que la passerelle (WS + HTTP multiplexé) :
http://<gateway-host>:<port>/tools/invoke
La taille maximale de charge utile par défaut est de 2 Mo.
Authentification
Utilise la configuration d'authentification de la passerelle. Envoyez un jeton porteur :
Authorization: Bearer <token>
Notes :
- Lorsque
gateway.auth.mode="token", utilisezgateway.auth.token(ouOPENCLAW_GATEWAY_TOKEN). - Lorsque
gateway.auth.mode="password", utilisezgateway.auth.password(ouOPENCLAW_GATEWAY_PASSWORD). - Si
gateway.auth.rateLimitest configuré et que trop d'échecs d'authentification se produisent, le point de terminaison renvoie429avecRetry-After.
Corps de la requête
{
"tool": "sessions_list",
"action": "json",
"args": {},
"sessionKey": "main",
"dryRun": false
}
Champs :
tool(chaîne, requis) : nom de l'outil à invoquer.action(chaîne, optionnel) : mappé dans args si le schéma de l'outil prend en chargeactionet que la charge utile args l'a omis.args(objet, optionnel) : arguments spécifiques à l'outil.sessionKey(chaîne, optionnel) : clé de session cible. Si omise ou"main", la passerelle utilise la clé de session principale configurée (respectesession.mainKeyet l'agent par défaut, ouglobaldans la portée globale).dryRun(booléen, optionnel) : réservé à un usage futur ; actuellement ignoré.
Comportement de politique et routage
La disponibilité des outils est filtrée via la même chaîne de politique utilisée par les agents de la passerelle :
tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- politiques de groupe (si la clé de session correspond à un groupe ou canal)
- politique de sous-agent (lors de l'invocation avec une clé de session de sous-agent)
Si un outil n'est pas autorisé par la politique, le point de terminaison renvoie 404. La passerelle HTTP applique également une liste de refus stricte par défaut (même si la politique de session autorise l'outil) :
sessions_spawnsessions_sendgatewaywhatsapp_login
Vous pouvez personnaliser cette liste de refus via gateway.tools :
{
gateway: {
tools: {
// Outils supplémentaires à bloquer via HTTP /tools/invoke
deny: ["browser"],
// Retirer des outils de la liste de refus par défaut
allow: ["gateway"],
},
},
}
Pour aider les politiques de groupe à résoudre le contexte, vous pouvez optionnellement définir :
x-openclaw-message-channel: <channel>(exemple :slack,telegram)x-openclaw-account-id: <accountId>(lorsque plusieurs comptes existent)
Réponses
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(requête invalide ou erreur d'entrée d'outil)401→ non autorisé429→ authentification limitée par taux (Retry-Afterdéfini)404→ outil non disponible (non trouvé ou non autorisé)405→ méthode non autorisée500→{ ok: false, error: { type, message } }(erreur d'exécution d'outil inattendue ; message assaini)
Exemple
curl -sS http://127.0.0.1:18789/tools/invoke \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"tool": "sessions_list",
"action": "json",
"args": {}
}'