Chattools
Een beurt met tools voert een native meer-rondenlus uit: het model vraagt, Libre WebUI voert uit onder de identiteit en rechten van de gebruiker, het resultaat gaat terug tot er een antwoord is — maximaal acht ronden en acht oproepen per ronde. Stop annuleert het model, de lopende tool en de goedkeuring.
Oproepen zijn genormaliseerde gebeurtenissen (chat.tool-call.v1, chat.tool-result.v1, chat.approval.v1) die identiek via private WebSocket en duurzame stream lopen. Vernieuwen speelt dezelfde toestand af. De afgeronde beurt bewaart oproepen met begrensde voorbeeldresultaten.
Tools inschakelen
Standaard uit. Een beheerder opent ze onder Settings → Gebruikersbeheer → Toegang en beleid → Gereedschapstoegang; elke beurt kiest via de steeksleutel exact de ingebouwde tools en servers. De kiezer kan een profiel beperken, nooit verruimen. Privéchats bieden geen tools omdat externe acties goedkeuring/audit kunnen achterlaten.
De schakelaar Gereedschapstoegang slaat direct op. Klik erop of gebruik Tab om hem te focussen en Space om hem om te zetten. Het wijzigen van de toegang laat het venster Settings en de schuifpositie ongewijzigd.
Een assistentprofiel kan servers, ingebouwde tools, vaardigheden en kenniscollecties beperken.
Ingebouwde tools
Dertien tools; alleen notitie- en agendawijzigingen hebben effecten en goedkeuring:
web_search— beheerderszoekmachine en toegangsmodus.search_documents— hybride zoeken in eigen/gedeelde documenten en kennis, met citaten.list_documents— IDs, typen en groottes.read_document— begrensd venster per ID/offset met bron.load_skill— volledige instructies per slug; manifest blijft lazy, bestandenlijst wordt toegevoegd.read_skill_file— bijbestand per slug/relatief pad.list_notes— eigen/gedeelde notities.read_note— volledige notitie.create_note— maken, goedkeuring.update_note— vervangen met herstelbare revisie, goedkeuring.list_calendar_events— gebeurtenissen binnen epoch-millisecondbereik.create_calendar_event— maken, goedkeuring.delete_calendar_event— verwijderen, goedkeuring.
Toolservers
Beheerders registreren onder Instellingen → Tools:
- OpenAPI: JSON OpenAPI 3.x wordt eenmaal opgehaald en met SHA-256 vastgezet. Iedere operatie wordt tool;
GETlezen, overige effect totdat beheerder dit per tool wijzigt. Uitvoering bouwt vanuit vastgezette operatie; model kiest bestemming niet. - MCP (Streamable HTTP): lijst via JSON-RPC, op dezelfde manier vastgezet.
annotations.readOnlyHintmarkeert lezen. stdio wordt bewust niet ondersteund; externe processen draaien niet in webproces.
Wijzigingen gelden na refresh door beheerder, met behoud van overrides. Beschikbaarheid kan admin, iedereen of rechten per gebruiker/groep zijn.
Referenties
Authenticatie gebruikt referenties per gebruiker (Bearer of benoemde header), versleuteld met extra geauthenticeerde gegevens voor exacte gebruiker/server, nooit gedeeld.
Interactieve OAuth (MCP)
Een MCP-server kan ook elke gebruiker apart laten aanmelden. Registreer met authenticatiemodus Interactieve OAuth: Libre WebUI leest de WWW-Authenticate-uitdaging, volgt die naar de resource- en autorisatieservermetadata en registreert dynamisch een client (RFC 7591) waar mogelijk; anders vult een beheerder een client-ID en optioneel geheim in op het registratieformulier, versleuteld opgeslagen naast de ontdekte eindpunten.
Elke gebruiker klikt Verbinden op de serverkaart en wordt naar de provider geleid. De flow gebruikt PKCE (S256) met CSRF-state en een PKCE-verifier in een HttpOnly-cookie voor die ene server. De callback wisselt de code op de server, bewaart de tokens versleuteld met dezelfde gebruiker-en-serverbinding als een statisch geheim en stuurt de browser terug met een statusvlag — tokens bereiken de pagina zelf nooit. Toegangstokens vernieuwen automatisch een minuut voor verval, eenmalig per gebruiker en server ook wanneer meerdere toolaanroepen tegelijk lopen. Lukt vernieuwen niet, dan vraagt de toolaanroep om opnieuw te verbinden in plaats van anoniem te mislukken. Verbinding verbreken verwijdert alleen de tokens van die gebruiker en laat de registratie staan; de server verwijderen wist ook de ontdekte configuratie.
Een server die een niet-geauthenticeerde toollijst weigert, wordt toch geregistreerd: de inventaris wordt bij de eerste geslaagde verbinding (of elke beheerdersvernieuwing) vastgezet, zodat een model nooit iets aangeboden krijgt vóórdat het bekend is.
Uitgaand beleid
Elke aanvraag resolveert bestemming, weigert private/loopback/metadata en pint de verbinding tegen DNS rebind. Redirects geweigerd, omvang en timeout begrensd. Exacte interne hosts kunnen in TOOLS_PRIVATE_NETWORK_ALLOWLIST; blijven gepind. Output keert terug als onbetrouwbare tekst.
Goedkeuringen
Leestools draaien direct. Effecttool pauzeert met eenmaal, deze chat, altijd voor tool/server, of weigeren. "Altijd" blijft na herstart en is intrekbaar. Na twee minuten vervalt als weigering. Weigering/timeout voert niets uit. Alles laat geredigeerde audit achter.
Voorbeelden
web_search
Wat veranderde in de nieuwste SQLite-release? Zoek op het web.
Roept {"query": "SQLite latest release changelog"} aan en citeert resultaten.
search_documents
Zoek de beëindigingsclausule en citeer exact.
Gebruikt {"query": "termination clause"}.
load_skill
Maak $release-notes, dan roept het model load_skill {"slug": "release-notes"}. $ voltooit slugs.
OpenAPI-weer
- Registreer
Weather,OpenAPI,https://api.example-weather.dev, specificatiehttps://api.example-weather.dev/openapi.json, authbearer. getForecast(GET) encreateAlert(POST).- Ieder slaat eigen sleutel op.
weather__getForecast {"city": "Montreal"}draait direct;weather__createAlertvraagt Eenmalig, Deze chat, Altijd of Weigeren.
Exa MCP — zoeken en ophalen op het web
Kies in Settings → Tools → Begin met een sjabloon de optie Exa om een MCP-registratie voor te vullen met:
https://mcp.exa.ai/mcp?tools=web_search_exa,web_fetch_exa
De URL selecteert web_search_exa en web_fetch_exa via de parameter voor toolselectie van Exa. Het sjabloon gebruikt geen authenticatie en beperkt de toegang standaard tot beheerders. Controleer het formulier en kies Opslaan om verbinding te maken en de toolinventaris vast te pinnen. Het sjabloon openen of annuleren neemt geen contact op met Exa. Zoekopdrachten en opgevraagde URL's gaan naar Exa wanneer deze tools draaien.
MCP-issues
Registreer Issues, MCP, https://mcp.example-tracker.dev/mcp, auth header met X-Api-Key. De server kan search_issues als alleen-lezen en create_issue als effecttool aanbieden. issues__search_issues draait, issues__create_issue toont argumenten.
Omgevingsvariabelen
| Variabele | Effect |
|---|---|
TOOLS_ACCESS_MODE | admins of all-users |
TOOLS_PRIVATE_NETWORK_ALLOWLIST | Exacte private hosts |
Grenzen
- Aanroepen werken op WebSocket en duurzaam generatiepad; legacy REST-stream niet.
- Kanaal @model-vermeldingen draaien dezelfde lus tegen de catalogus van het vermeldende lid, met één verschil: er is niemand om iets te vragen, dus een effecttool zonder staande goedkeuring wordt meteen geweigerd in plaats van te wachten. Leestools draaien gewoon.
- Work-agents roepen dezelfde servers aan via dezelfde gateway: alleen uitvoeringen met netwerk, servers zonder opgeslagen referenties worden bij het aanbod gefilterd, tools met neveneffecten vallen onder Work-goedkeuringen.
- Gemini en agent CLI krijgen geen tools; Ollama, OpenAI-compatible, Responses-API en Anthropic wel.
- Interactieve OAuth is alleen voor MCP: een OpenAPI-server gebruikt nog altijd een statische referentie per gebruiker. De flow is authorization-code met PKCE; device-code en client-credentials worden niet aangeboden, en een autorisatieserver zonder metadata (of zonder registratie-eindpunt en zonder door de beheerder opgegeven client-ID) kan niet worden verbonden.
- Ontdekte OAuth-eindpunten moeten https zijn; plain http wordt alleen geaccepteerd voor loopback, voor een provider die tijdens ontwikkeling op dezelfde machine draait.
- De redirect-URI komt van
BASE_URL(of de eersteCORS_ORIGIN), dus die waarde moet het adres zijn dat de browser echt bereikt en moet geregistreerd staan bij providers die redirect-URI's vastpinnen.