Вызов инструментов (HTTP)
Шлюз OpenClaw предоставляет простую конечную точку HTTP для прямого вызова одного инструмента. Она всегда включена, но контролируется аутентификацией шлюза и политикой инструментов.
- POST /tools/invoke
- Тот же порт, что и шлюз (мультиплексирование WS + HTTP): http://<gateway-host>:<port>/tools/invoke
Максимальный размер полезной нагрузки по умолчанию составляет 2 МБ.
Аутентификация
Использует конфигурацию аутентификации шлюза. Отправьте токен носителя:
- Authorization: Bearer <token>
Примечания:
- Когда gateway.auth.mode="token", используйте gateway.auth.token (или OPENCLAW_GATEWAY_TOKEN).
- Когда gateway.auth.mode="password", используйте gateway.auth.password (или OPENCLAW_GATEWAY_PASSWORD).
Тело запроса
\{
"tool": "sessions_list",
"action": "json",
"args": \{\},
"sessionKey": "main",
"dryRun": false
\}
Поля:
- tool (строка, обязательно): имя инструмента для вызова.
- action (строка, опционально): отображается в args, если схема инструмента поддерживает action и полезная нагрузка args опустила его.
- args (объект, опционально): аргументы, специфичные для инструмента.
- sessionKey (строка, опционально): ключ целевого сеанса. Если опущен или "main", шлюз использует настроенный основной ключ сеанса (учитывает session.mainKey и агента по умолчанию, или global в глобальной области).
- dryRun (булево, опционально): зарезервировано для будущего использования; в настоящее время игнорируется.
Поведение политики + маршрутизации
Доступность инструмента фильтруется через ту же цепочку политик, используемую агентами шлюза:
- tools.profile / tools.byProvider.profile
- tools.allow / tools.byProvider.allow
- agents.<id>.tools.allow / agents.<id>.tools.byProvider.allow
- групповые политики (если ключ сеанса отображается на группу или канал)
- политика подагента (при вызове с ключом сеанса подагента)
Если инструмент не разрешен политикой, конечная точка возвращает 404.
Чтобы помочь групповым политикам разрешить контекст, вы можете опционально установить:
- x-openclaw-message-channel: <channel> (пример: slack, telegram)
- x-openclaw-account-id: <accountId> (когда существует несколько аккаунтов)
Ответы
- 200 → \{ ok: true, result \}
- 400 → \{ ok: false, error: \{ type, message \} \} (неверный запрос или ошибка инструмента)
- 401 → unauthorized
- 404 → инструмент недоступен (не найден или не в списке разрешений)
- 405 → метод не разрешен
Пример
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": \{\}
\}'