Wywoływanie narzędzi (HTTP)
Gateway OpenClaw udostępnia prosty punkt końcowy HTTP do bezpośredniego wywoływania pojedynczego narzędzia. Jest on zawsze włączony i używa uwierzytelniania Gateway oraz polityki narzędzi. Podobnie jak powierzchnia zgodna z OpenAI/v1/*, uwierzytelnianie bearer oparte na współdzielonym sekrecie jest traktowane jako zaufany dostęp operatora do całego gateway.
POST /tools/invoke- Ten sam port co Gateway (multipleksowanie WS + HTTP):
http://<gateway-host>:<port>/tools/invoke
Uwierzytelnianie
Używa konfiguracji uwierzytelniania Gateway. Typowe ścieżki uwierzytelniania HTTP:- uwierzytelnianie współdzielonym sekretem (
gateway.auth.mode="token"lub"password"):Authorization: Bearer <token-or-password> - zaufane uwierzytelnianie HTTP z przenoszeniem tożsamości (
gateway.auth.mode="trusted-proxy"): kieruj ruch przez skonfigurowane proxy świadome tożsamości i pozwól mu wstrzyknąć wymagane nagłówki tożsamości - otwarte uwierzytelnianie dla prywatnego ingress (
gateway.auth.mode="none"): nagłówek uwierzytelniania nie jest wymagany
- Gdy
gateway.auth.mode="token", użyjgateway.auth.token(lubOPENCLAW_GATEWAY_TOKEN). - Gdy
gateway.auth.mode="password", użyjgateway.auth.password(lubOPENCLAW_GATEWAY_PASSWORD). - Gdy
gateway.auth.mode="trusted-proxy", żądanie HTTP musi pochodzić z skonfigurowanego źródła zaufanego proxy spoza loopback; proxy loopback na tym samym hoście nie spełniają wymagań tego trybu. - Jeśli skonfigurowano
gateway.auth.rateLimiti wystąpi zbyt wiele błędów uwierzytelniania, punkt końcowy zwraca429zRetry-After.
Granica bezpieczeństwa (ważne)
Traktuj ten punkt końcowy jako powierzchnię pełnego dostępu operatora do instancji gateway.- Uwierzytelnianie HTTP bearer tutaj nie jest wąskim modelem zakresów per użytkownik.
- Prawidłowy token/hasło Gateway dla tego punktu końcowego należy traktować jak poświadczenia właściciela/operatora.
- Dla trybów uwierzytelniania opartych na współdzielonym sekrecie (
tokenipassword) punkt końcowy przywraca normalne pełne domyślne uprawnienia operatora nawet wtedy, gdy wywołujący wyśle węższy nagłówekx-openclaw-scopes. - Uwierzytelnianie współdzielonym sekretem traktuje także bezpośrednie wywołania narzędzi na tym punkcie końcowym jako tury owner-sender.
- Zaufane tryby HTTP z przenoszeniem tożsamości (na przykład uwierzytelnianie trusted proxy albo
gateway.auth.mode="none"na prywatnym ingress) honorująx-openclaw-scopes, gdy nagłówek jest obecny, a w przeciwnym razie wracają do normalnego domyślnego zestawu zakresów operatora. - Ten punkt końcowy powinien być dostępny tylko przez loopback/tailnet/prywatny ingress; nie wystawiaj go bezpośrednio do publicznego internetu.
gateway.auth.mode="token"lub"password"+Authorization: Bearer ...- dowodzi posiadania współdzielonego sekretu operatora gateway
- ignoruje węższe
x-openclaw-scopes - przywraca pełny domyślny zestaw zakresów operatora:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - traktuje bezpośrednie wywołania narzędzi na tym punkcie końcowym jako tury owner-sender
- zaufane tryby HTTP z przenoszeniem tożsamości (na przykład uwierzytelnianie trusted proxy albo
gateway.auth.mode="none"na prywatnym ingress)- uwierzytelniają jakąś zewnętrzną zaufaną tożsamość lub granicę wdrożenia
- honorują
x-openclaw-scopes, gdy nagłówek jest obecny - wracają do normalnego domyślnego zestawu zakresów operatora, gdy nagłówek jest nieobecny
- tracą semantykę właściciela tylko wtedy, gdy wywołujący jawnie zawęzi zakresy i pominie
operator.admin
Treść żądania
tool(string, wymagane): nazwa narzędzia do wywołania.action(string, opcjonalne): mapowane do args, jeśli schemat narzędzia obsługujeaction, a ładunek args je pomija.args(object, opcjonalne): argumenty specyficzne dla narzędzia.sessionKey(string, opcjonalne): docelowy klucz sesji. Jeśli pominięte lub"main", Gateway używa skonfigurowanego głównego klucza sesji (honorujesession.mainKeyi domyślnego agenta alboglobalw zakresie globalnym).dryRun(boolean, opcjonalne): zarezerwowane do przyszłego użycia; obecnie ignorowane.
Zachowanie polityki + routingu
Dostępność narzędzi jest filtrowana przez ten sam łańcuch polityk używany przez agentów Gateway:tools.profile/tools.byProvider.profiletools.allow/tools.byProvider.allowagents.<id>.tools.allow/agents.<id>.tools.byProvider.allow- polityki grup (jeśli klucz sesji mapuje się do grupy lub kanału)
- polityka subagenta (przy wywoływaniu z kluczem sesji subagenta)
- Zatwierdzenia wykonania to zabezpieczenia operatora, a nie oddzielna granica autoryzacji dla tego punktu końcowego HTTP. Jeśli narzędzie jest dostępne tutaj przez uwierzytelnianie Gateway + politykę narzędzi,
/tools/invokenie dodaje dodatkowego monitu zatwierdzania per wywołanie. - Nie udostępniaj poświadczeń bearer Gateway niezaufanym wywołującym. Jeśli potrzebujesz separacji między granicami zaufania, uruchom osobne gatewaye (a najlepiej także osobnych użytkowników systemu/hosty).
exec— bezpośrednie wykonywanie poleceń (powierzchnia RCE)spawn— tworzenie dowolnych procesów potomnych (powierzchnia RCE)shell— wykonywanie poleceń powłoki (powierzchnia RCE)fs_write— dowolna modyfikacja plików na hościefs_delete— dowolne usuwanie plików na hościefs_move— dowolne przenoszenie/zmiana nazw plików na hościeapply_patch— nakładanie poprawek może przepisywać dowolne plikisessions_spawn— płaszczyzna sterowania orkiestracją sesji; zdalne uruchamianie agentów to RCEsessions_send— wstrzykiwanie wiadomości między sesjamicron— trwała płaszczyzna sterowania automatyzacjągateway— płaszczyzna sterowania gateway; zapobiega rekonfiguracji przez HTTPnodes— przekaźnik poleceń do węzłów może dotrzeć dosystem.runna sparowanych hostachwhatsapp_login— interaktywna konfiguracja wymagająca skanu QR w terminalu; zawiesza się przez HTTP
gateway.tools:
x-openclaw-message-channel: <channel>(przykład:slack,telegram)x-openclaw-account-id: <accountId>(gdy istnieje wiele kont)
Odpowiedzi
200→{ ok: true, result }400→{ ok: false, error: { type, message } }(nieprawidłowe żądanie lub błąd wejścia narzędzia)401→ brak autoryzacji429→ ograniczenie szybkości uwierzytelniania (Retry-Afterustawione)404→ narzędzie niedostępne (nie znaleziono lub nie znajduje się na liście dozwolonych)405→ metoda niedozwolona500→{ ok: false, error: { type, message } }(nieoczekiwany błąd wykonania narzędzia; komunikat oczyszczony)