Tools Invoke (HTTP)
Il Gateway di OpenClaw espone un semplice endpoint HTTP per invocare direttamente un singolo strumento. È sempre abilitato e usa l’autenticazione del Gateway più la policy degli strumenti. Come la superficie compatibile con OpenAI/v1/*, l’autenticazione bearer con segreto condiviso viene trattata come accesso operatore fidato per l’intero gateway.
POST /tools/invoke- Stessa porta del Gateway (multiplex WS + HTTP):
http://<gateway-host>:<port>/tools/invoke
Autenticazione
Usa la configurazione di autenticazione del Gateway. Percorsi comuni di autenticazione HTTP:- autenticazione con segreto condiviso (
gateway.auth.mode="token"o"password"):Authorization: Bearer <token-or-password> - autenticazione HTTP fidata con identità (
gateway.auth.mode="trusted-proxy"): instrada tramite il proxy identity-aware configurato e lascia che inserisca le intestazioni di identità richieste - autenticazione aperta su ingresso privato (
gateway.auth.mode="none"): nessuna intestazione auth richiesta
- Quando
gateway.auth.mode="token", usagateway.auth.token(oOPENCLAW_GATEWAY_TOKEN). - Quando
gateway.auth.mode="password", usagateway.auth.password(oOPENCLAW_GATEWAY_PASSWORD). - Quando
gateway.auth.mode="trusted-proxy", la richiesta HTTP deve provenire da una sorgente proxy fidata non loopback configurata; i proxy loopback sullo stesso host non soddisfano questa modalità. - Se
gateway.auth.rateLimitè configurato e si verificano troppi errori di autenticazione, l’endpoint restituisce429conRetry-After.
Confine di sicurezza (importante)
Tratta questo endpoint come una superficie di accesso operatore completo per l’istanza gateway.- L’autenticazione bearer HTTP qui non è un modello a portata ridotta per utente.
- Un token/password Gateway valido per questo endpoint deve essere trattato come una credenziale da proprietario/operatore.
- Per le modalità di autenticazione con segreto condiviso (
tokenepassword), l’endpoint ripristina i normali valori predefiniti completi dell’operatore anche se il chiamante invia un’intestazionex-openclaw-scopespiù restrittiva. - L’autenticazione con segreto condiviso tratta anche le invocazioni dirette degli strumenti su questo endpoint come turni owner-sender.
- Le modalità HTTP fidate con identità (ad esempio autenticazione trusted proxy o
gateway.auth.mode="none"su un ingresso privato) rispettanox-openclaw-scopesquando presente e altrimenti tornano all’insieme normale di scope predefiniti dell’operatore. - Mantieni questo endpoint solo su loopback/tailnet/ingresso privato; non esporlo direttamente a internet pubblico.
gateway.auth.mode="token"o"password"+Authorization: Bearer ...- dimostra il possesso del segreto operatore condiviso del gateway
- ignora
x-openclaw-scopespiù restrittivo - ripristina l’insieme completo degli scope operatore predefiniti:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - tratta le invocazioni dirette degli strumenti su questo endpoint come turni owner-sender
- modalità HTTP fidate con identità (ad esempio autenticazione trusted proxy, o
gateway.auth.mode="none"su ingresso privato)- autenticano una qualche identità fidata esterna o un confine di deployment
- rispettano
x-openclaw-scopesquando l’intestazione è presente - tornano all’insieme normale di scope operatore predefiniti quando l’intestazione è assente
- perdono la semantica owner solo quando il chiamante restringe esplicitamente gli scope e omette
operator.admin
Corpo della richiesta
tool(stringa, obbligatorio): nome dello strumento da invocare.action(stringa, facoltativo): mappato negli argomenti se lo schema dello strumento supportaactione il payload args lo ha omesso.args(oggetto, facoltativo): argomenti specifici dello strumento.sessionKey(stringa, facoltativo): chiave di sessione di destinazione. Se omessa o"main", il Gateway usa la chiave della sessione principale configurata (rispettasession.mainKeye l’agente predefinito, oppureglobalin ambito globale).dryRun(booleano, facoltativo): riservato per uso futuro; attualmente ignorato.
Comportamento di policy + instradamento
La disponibilità degli strumenti viene filtrata attraverso la stessa catena di policy usata dagli agenti Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- policy di gruppo (se la chiave di sessione corrisponde a un gruppo o canale)
- policy del sotto-agente (quando si invoca con una chiave di sessione del sotto-agente)
- Le approvazioni exec sono barriere operative, non un confine di autorizzazione separato per questo endpoint HTTP. Se uno strumento è raggiungibile qui tramite autenticazione Gateway + policy degli strumenti,
/tools/invokenon aggiunge un ulteriore prompt di approvazione per chiamata. - Non condividere credenziali bearer Gateway con chiamanti non fidati. Se hai bisogno di separazione tra confini di fiducia, esegui gateway separati (e idealmente utenti/host OS separati).
exec— esecuzione diretta di comandi (superficie RCE)spawn— creazione arbitraria di processi figlio (superficie RCE)shell— esecuzione di comandi shell (superficie RCE)fs_write— modifica arbitraria di file sull’hostfs_delete— eliminazione arbitraria di file sull’hostfs_move— spostamento/rinomina arbitrari di file sull’hostapply_patch— l’applicazione di patch può riscrivere file arbitrarisessions_spawn— orchestrazione delle sessioni; generare agenti da remoto è RCEsessions_send— iniezione di messaggi cross-sessioncron— piano di controllo dell’automazione persistentegateway— piano di controllo del gateway; impedisce la riconfigurazione via HTTPnodes— il relay dei comandi ai nodi può raggiungere system.run su host associatiwhatsapp_login— configurazione interattiva che richiede scansione QR da terminale; si blocca su HTTP
gateway.tools:
x-openclaw-message-channel: <channel>(esempio:slack,telegram)x-openclaw-account-id: <accountId>(quando esistono più account)
Risposte
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(richiesta non valida o errore negli input dello strumento)401→ non autorizzato429→ autenticazione rate-limited (Retry-Afterimpostato)404→ strumento non disponibile (non trovato o non in allowlist)405→ metodo non consentito500→{ ok: false, error: { type, message } }(errore imprevisto nell’esecuzione dello strumento; messaggio sanitizzato)