工具调用(HTTP)
OpenClaw 网关提供了一个简单的 HTTP 端点,用于直接调用单个工具。该端点始终启用,但受网关认证和工具策略控制。
POST /tools/invoke- 与网关共用同一端口(WS + HTTP 复用):
http://<gateway-host>:<port>/tools/invoke
默认最大请求体为 2 MB。
认证
使用网关认证配置,发送 bearer token:
Authorization: Bearer <token>
说明:
- 当
gateway.auth.mode="token"时,使用gateway.auth.token(或OPENCLAW_GATEWAY_TOKEN)。 - 当
gateway.auth.mode="password"时,使用gateway.auth.password(或OPENCLAW_GATEWAY_PASSWORD)。 - 如果配置了
gateway.auth.rateLimit,认证失败次数过多时端点返回429并带Retry-After头。
请求体
{
"tool": "sessions_list",
"action": "json",
"args": {},
"sessionKey": "main",
"dryRun": false
}
字段说明:
tool(字符串,必填):要调用的工具名称。action(字符串,可选):当工具 schema 支持action且 args 中未包含时,映射到 args 中。args(对象,可选):工具特定的参数。sessionKey(字符串,可选):目标 session key。省略或为"main"时,网关使用配置的 main session key(遵循session.mainKey和默认 agent,或全局范围下使用global)。dryRun(布尔值,可选):保留字段,当前忽略。
策略与路由行为
工具可用性经过与网关 agent 相同的策略链过滤:
tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- 群组策略(当 session key 映射到群组或频道时)
- 子 agent 策略(使用子 agent session key 调用时)
如果工具被策略禁止,端点返回 404。
网关 HTTP 默认还有一个硬拒绝列表(即使会话策略允许也拦截):
sessions_spawnsessions_sendgatewaywhatsapp_login
可通过 gateway.tools 自定义这个拒绝列表:
{
gateway: {
tools: {
// Additional tools to block over HTTP /tools/invoke
deny: ["browser"],
// Remove tools from the default deny list
allow: ["gateway"],
},
},
}
为帮助群组策略解析上下文,可以选择设置:
x-openclaw-message-channel: <channel>(例如:slack、telegram)x-openclaw-account-id: <accountId>(当存在多个账户时)
响应
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(无效请求或工具输入错误)401→ 未授权429→ 认证限流(设置了Retry-After)404→ 工具不可用(未找到或不在白名单中)405→ 方法不允许500→{ ok: false, error: { type, message } }(工具执行意外错误;错误信息已脱敏)
示例
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": {}
}'