Tools Invoke (HTTP)
OpenClaw の Gateway は、単一ツールを直接呼び出すためのシンプルな HTTP エンドポイントを提供します。このエンドポイントは常に有効ですが、Gateway 認証とツールポリシーによるゲートがかかっています。
POST /tools/invoke- Gateway と同じポート(WS + HTTP マルチプレクス):
http://<gateway-host>:<port>/tools/invoke
デフォルトの最大ペイロードサイズは 2MB です。
認証
Gateway の認証設定を使用します。ベアラートークンを送信してください:
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(string、必須):呼び出すツール名。action(string、オプション):ツールスキーマがactionをサポートし、args ペイロードで省略されている場合に args にマッピングされます。args(object、オプション):ツール固有の引数。sessionKey(string、オプション):対象セッションキー。省略時または"main"の場合、Gateway は設定された main セッションキーを使用します(session.mainKeyとデフォルトエージェントに従うか、グローバルスコープではglobal)。dryRun(boolean、オプション):将来の使用のために予約済み。現在は無視されます。
ポリシーとルーティングの動作
ツールの利用可否は、Gateway エージェントが使用するのと同じポリシーチェーンでフィルタリングされます:
tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- グループポリシー(セッションキーがグループまたはチャネルにマップされる場合)
- サブエージェントポリシー(サブエージェントセッションキーで呼び出す場合)
ツールがポリシーで許可されていない場合、エンドポイントは 404 を返します。
Gateway HTTP は、セッションポリシーがツールを許可している場合でもデフォルトでハード拒否リストを適用します:
sessions_spawnsessions_sendgatewaywhatsapp_login
この拒否リストは gateway.tools でカスタマイズできます:
{
gateway: {
tools: {
// HTTP /tools/invoke 経由でブロックする追加ツール
deny: ["browser"],
// デフォルト拒否リストからツールを削除
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": {}
}'