Tools Invoke (HTTP)
O Gateway do OpenClaw expõe um endpoint HTTP simples para invocar diretamente uma única ferramenta. Ele está sempre ativado e usa a autenticação do Gateway mais a política de ferramentas. Assim como a superfície compatível com OpenAI em/v1/*, a autenticação bearer com segredo compartilhado é tratada como acesso confiável de operador para todo o gateway.
POST /tools/invoke- Mesma porta do Gateway (multiplexação WS + HTTP):
http://<gateway-host>:<port>/tools/invoke
Autenticação
Usa a configuração de autenticação do Gateway. Caminhos comuns de autenticação HTTP:- autenticação por segredo compartilhado (
gateway.auth.mode="token"ou"password"):Authorization: Bearer <token-or-password> - autenticação HTTP confiável com identidade (
gateway.auth.mode="trusted-proxy"): encaminhe pela proxy com reconhecimento de identidade configurada e deixe que ela injete os cabeçalhos de identidade exigidos - autenticação aberta em ingresso privado (
gateway.auth.mode="none"): nenhum cabeçalho de autenticação é exigido
- Quando
gateway.auth.mode="token", usegateway.auth.token(ouOPENCLAW_GATEWAY_TOKEN). - Quando
gateway.auth.mode="password", usegateway.auth.password(ouOPENCLAW_GATEWAY_PASSWORD). - Quando
gateway.auth.mode="trusted-proxy", a solicitação HTTP deve vir de uma origem confiável não loopback configurada; proxies loopback no mesmo host não satisfazem esse modo. - Se
gateway.auth.rateLimitestiver configurado e ocorrerem muitas falhas de autenticação, o endpoint retorna429comRetry-After.
Limite de segurança (importante)
Trate este endpoint como uma superfície de acesso completo de operador para a instância do gateway.- A autenticação bearer HTTP aqui não é um modelo estreito de escopo por usuário.
- Um token/senha válido do Gateway para este endpoint deve ser tratado como credencial de proprietário/operador.
- Para modos de autenticação com segredo compartilhado (
tokenepassword), o endpoint restaura os padrões normais completos de operador mesmo que o chamador envie um cabeçalhox-openclaw-scopesmais restrito. - A autenticação com segredo compartilhado também trata invocações diretas de ferramentas neste endpoint como turnos de remetente proprietário.
- Modos HTTP confiáveis com identidade (por exemplo, autenticação por trusted proxy ou
gateway.auth.mode="none"em um ingresso privado) respeitamx-openclaw-scopesquando presente e, caso contrário, usam como fallback o conjunto normal de escopos padrão de operador. - Mantenha este endpoint apenas em loopback/tailnet/ingresso privado; não o exponha diretamente à internet pública.
gateway.auth.mode="token"ou"password"+Authorization: Bearer ...- comprova posse do segredo compartilhado de operador do gateway
- ignora
x-openclaw-scopesmais restritos - restaura o conjunto completo padrão de escopos de operador:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - trata invocações diretas de ferramentas neste endpoint como turnos de remetente proprietário
- modos HTTP confiáveis com identidade (por exemplo autenticação por trusted proxy, ou
gateway.auth.mode="none"em ingresso privado)- autenticam alguma identidade externa confiável ou limite de implantação
- respeitam
x-openclaw-scopesquando o cabeçalho está presente - usam como fallback o conjunto normal padrão de escopos de operador quando o cabeçalho está ausente
- só perdem semântica de proprietário quando o chamador restringe explicitamente os escopos e omite
operator.admin
Corpo da solicitação
tool(string, obrigatório): nome da ferramenta a invocar.action(string, opcional): mapeado para args se o schema da ferramenta oferecer suporte aactione o payload de args o tiver omitido.args(objeto, opcional): argumentos específicos da ferramenta.sessionKey(string, opcional): chave da sessão de destino. Se omitido ou"main", o Gateway usa a chave principal de sessão configurada (respeitasession.mainKeye o agente padrão, ouglobalno escopo global).dryRun(boolean, opcional): reservado para uso futuro; atualmente ignorado.
Comportamento de política + roteamento
A disponibilidade da ferramenta é filtrada pela mesma cadeia de política usada pelos agentes do Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- políticas de grupo (se a chave da sessão mapear para um grupo ou canal)
- política de subagente (ao invocar com uma chave de sessão de subagente)
- Aprovações de exec são guard-rails de operador, não um limite de autorização separado para este endpoint HTTP. Se uma ferramenta for alcançável aqui por autenticação do Gateway + política de ferramentas,
/tools/invokenão adiciona um prompt extra de aprovação por chamada. - Não compartilhe credenciais bearer do Gateway com chamadores não confiáveis. Se você precisar de separação entre limites de confiança, execute gateways separados (e idealmente usuários/hosts de SO separados).
exec— execução direta de comandos (superfície RCE)spawn— criação arbitrária de processos filhos (superfície RCE)shell— execução de comandos de shell (superfície RCE)fs_write— mutação arbitrária de arquivos no hostfs_delete— exclusão arbitrária de arquivos no hostfs_move— mover/renomear arquivos arbitrariamente no hostapply_patch— aplicação de patch pode reescrever arquivos arbitráriossessions_spawn— orquestração de sessão; iniciar agentes remotamente é RCEsessions_send— injeção de mensagem entre sessõescron— plano de controle de automação persistentegateway— plano de controle do gateway; evita reconfiguração via HTTPnodes— relay de comandos de node pode alcançarsystem.runem hosts pareadoswhatsapp_login— configuração interativa que exige leitura de QR code no terminal; trava em HTTP
gateway.tools:
x-openclaw-message-channel: <channel>(exemplo:slack,telegram)x-openclaw-account-id: <accountId>(quando existem múltiplas contas)
Respostas
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(solicitação inválida ou erro de entrada da ferramenta)401→ não autorizado429→ autenticação limitada por taxa (Retry-Afterdefinido)404→ ferramenta não disponível (não encontrada ou não permitida por allowlist)405→ método não permitido500→{ ok: false, error: { type, message } }(erro inesperado de execução da ferramenta; mensagem higienizada)