Toolsets are named bundles that determine which tools the Gauss agent can call during a conversation. Rather than exposing every possible capability all at once, toolsets let you scope the agent’s surface area to exactly what a given platform or workflow needs — keeping prompts tight, costs low, and the agent focused.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/math-inc/OpenGauss/llms.txt
Use this file to discover all available pages before exploring further.
What Is a Toolset?
A toolset is a named group of tools defined intoolsets.py. Each entry has a human-readable description, a list of direct tool names, and an optional list of other toolsets it composes from. When the agent starts, the resolved union of all enabled toolsets determines the tool schemas sent to the model.
Toolsets are resolved recursively. If toolset autoformalize includes web, file, and browser, calling resolve_toolset("autoformalize") returns the full deduplicated set of all tools from all three children. The special aliases all and * resolve every registered toolset at once.
Core Tools — Always Active
_GAUSS_CORE_TOOLS is a fixed list that every platform toolset (gauss-cli, gauss-telegram, gauss-discord, etc.) shares by default. These tools are always present and are not configurable per-platform.
_GAUSS_CORE_TOOLS is intentionally narrow: file work, web lookup, and browser use. This is the minimal surface Gauss needs to autoformalize papers, run web research, and interact with browser-based resources.Available Toolsets
The following toolsets are defined intoolsets.py. Leaf toolsets contain direct tools; composite toolsets are composed entirely from other toolsets.
Leaf Toolsets
file
File manipulation:
read_file, write_file, patch (fuzzy-match patching), search_files (content and filename search).web
Web research:
web_search. Use when you need search results but not full browser interaction.search
Web search only — identical tools to
web but semantically scoped to search without content extraction or scraping.browser
Full browser automation: navigate, snapshot, click, type, scroll, back, press, close, get images, vision — plus
web_search for finding URLs.Platform Toolsets
Each messaging and editor platform has its own named toolset. All currently resolve to_GAUSS_CORE_TOOLS and differ only in their description, which is used for display and logging.
| Toolset | Platform |
|---|---|
gauss-cli | Interactive terminal CLI |
gauss-acp | VS Code, Zed, JetBrains (ACP server) |
gauss-telegram | Telegram bot |
gauss-discord | Discord bot |
gauss-whatsapp | WhatsApp bot |
gauss-slack | Slack bot |
gauss-signal | Signal messenger |
gauss-homeassistant | Home Assistant |
gauss-email | Email (IMAP/SMTP) |
gauss-gateway resolves to the union of all messaging-platform toolsets (telegram, discord, whatsapp, slack, signal, homeassistant, email).
Composite Toolsets
| Toolset | Includes | Use case |
|---|---|---|
autoformalize | web, file, browser | Minimal workflow for papers, source files, and browser-driven research |
gauss-gateway | All messaging platform toolsets | Union surface for the unified messaging gateway |
Configuring Toolsets
There are three ways to control which toolsets are active.- CLI Flag
- config.yaml
- gauss tools TUI
Pass Use
--toolsets (comma-separated) directly when launching Gauss. This is the fastest way to narrow or expand capabilities for a single session.--disabled-toolsets to remove a toolset from an otherwise full set:Tool Registry
tools/registry.py is the central registry that all tool files register into at import time. model_tools.py queries the registry instead of maintaining parallel data structures. The dependency chain is strictly one-way:
get_definitions(tool_names)— returns OpenAI-format tool schemas filtered throughcheck_fn()availability checksdispatch(name, args)— executes the handler, bridges async handlers, and wraps all exceptions into a consistent{"error": "..."}JSON stringis_toolset_available(toolset)— returnsTrueonly if the toolset’scheck_fnpasses; returnsFalse(never raises) on any exceptioncheck_toolset_requirements()— returns{toolset: bool}availability map for every registered toolset
Availability Checks (check_fn)
Every tool registration can supply a check_fn — a zero-argument callable that returns True if the tool is available in the current environment. If check_fn returns False or raises, the tool is silently excluded from the schema list sent to the model.
The first check_fn registered for a toolset becomes the toolset-level availability check surfaced in is_toolset_available() and the gauss tools TUI.
Common patterns:
A small number of agent-level tools —
todo and memory — are intercepted by run_agent.py before handle_function_call() reaches the registry. They do not go through the normal dispatch() path. See todo_tool.py for the pattern if you need to replicate it.Adding Custom Tools
Adding a new tool requires changes in exactly three files.Create tools/your_tool.py
Define the handler function and register it with the registry. The handler must return a JSON string.
Add import in model_tools.py
Open
model_tools.py and add your module to the _discover_tools() import list. Registration happens at module level when the file is imported, so simply importing it is enough.