Toolsets Reference
Toolsets are named collections of tools that control what an agent can do. They are the primary mechanism for configuring tool availability per platform, per session, or per task.
How Toolsets Work
Each tool belongs to exactly one toolset. When you activate a toolset, all tools in that collection become available to the agent. There are three types of toolsets:
- Core — A single logical group of related tools (e.g.,
filetoolset bundlesread_file,write_file,patch,search_files) - Composite — Combines multiple core toolsets for a common scenario (e.g.,
debuggingbundles file, terminal, and web tools) - Platform — Complete tool configuration for a specific deployment context (e.g.,
hermes-cliis the default for interactive CLI sessions)
Toolset Configuration
Per Session (CLI)
hermes chat --toolsets web,file,terminal
hermes chat --toolsets debugging # composite — expands to file + terminal + web
hermes chat --toolsets all # everything
Per Platform (config.yaml)
toolsets:
- hermes-cli # default for CLI
# - hermes-telegram # override for Telegram gateway
Interactive Management
hermes tools # curses UI to toggle per platform
Or within a session:
/tools list
/tools disable browser
/tools enable rl
Core Toolsets
| Toolset | Tools | Purpose |
|---|---|---|
browser | browser_back, browser_click, browser_console, browser_get_images, browser_navigate, browser_press, browser_scroll, browser_snapshot, browser_type, browser_vision, web_search | Full browser automation. Includes web_search as a fallback for quick lookups. |
clarify | clarify | Ask user questions when the agent needs clarification. |
code_execution | execute_code | Run Python scripts that call Hermes tools programmatically. |
cronjob | cronjob | Schedule and manage recurring tasks. |
delegation | delegate_task | Spawn isolated sub-agent instances to do work in parallel. |
file | patch, read_file, search_files, write_file | Read, write, search, and edit files. |
homeassistant | ha_call_service, ha_get_state, ha_list_entities, ha_list_services | Control smart home via Home Assistant. Only available when HASS_TOKEN is set. |
image_gen | image_generate | Text-to-image generation via FAL.ai. |
memory | memory | Manage persistent cross-session memory. |
messaging | send_message | Send messages to other platforms (Telegram, Discord, etc.) mid-session. |
moa | mixture_of_agents | Multi-model consensus via Mixture of Agents. |
rl | rl_check_status, rl_edit_config, rl_get_current_config, rl_get_results, rl_list_environments, rl_list_runs, rl_select_environment, rl_start_training, rl_stop_training, rl_test_inference | Manage RL training environments (Atropos). |
search | web_search | Web search only (no extraction). |
session_search | session_search | Search past chat sessions. |
skills | skill_manage, skill_view, skills_list | CRUD skills and browse web. |
terminal | process, terminal | Execute shell commands and manage background processes. |
todo | todo | Manage task lists within a session. |
tts | text_to_speech | Text-to-speech audio generation. |
vision | vision_analyze | Image analysis via vision-capable models. |
web | web_extract, web_search | Web search and page content extraction. |
Composite Toolsets
These expand to multiple core toolsets, providing convenient shorthands for common situations:
| Toolset | Expands To | Use Case |
|---|---|---|
debugging | patch, process, read_file, search_files, terminal, web_extract, web_search, write_file | Debugging session — access files, terminal, and web research without browser cost or delegation. |
safe | image_generate, mixture_of_agents, vision_analyze, web_extract, web_search | Read-only research and media generation. No file writes, no terminal access, no code execution. Good for untrusted or restricted environments. |
Platform Toolsets
Platform toolsets define the complete tool configuration for a deployment target. Most messaging platforms use the same set as hermes-cli:
| Toolset | Difference from hermes-cli |
|---|---|
hermes-cli | Full toolset — all 38 tools including clarify. Default for interactive CLI sessions. |
hermes-acp | Removes clarify, cronjob, image_generate, mixture_of_agents, send_message, text_to_speech, homeassistant tools. Focuses on coding tasks in IDE context. |
hermes-api-server | Removes clarify, send_message, and text_to_speech. Adds everything else — suitable for programmatic access when user interaction isn't possible. |
hermes-telegram | Same as hermes-cli. |
hermes-discord | Same as hermes-cli. |
hermes-slack | Same as hermes-cli. |
hermes-whatsapp | Same as hermes-cli. |
hermes-signal | Same as hermes-cli. |
hermes-matrix | Same as hermes-cli. |
hermes-mattermost | Same as hermes-cli. |
hermes-email | Same as hermes-cli. |
hermes-sms | Same as hermes-cli. |
hermes-dingtalk | Same as hermes-cli. |
hermes-feishu | Same as hermes-cli. |
hermes-wecom | Same as hermes-cli. |
hermes-homeassistant | Same as hermes-cli. |
hermes-webhook | Same as hermes-cli. |
hermes-gateway | Union of all messaging platform toolsets. Used internally when the gateway needs the broadest possible toolset. |
Dynamic Toolsets
MCP Server Toolsets
Each configured MCP server generates a mcp-<server> toolset at runtime. For example, if you configure a github MCP server, a mcp-github toolset is created containing all tools the server exposes.
# config.yaml
mcp:
servers:
github:
command: npx
args: ["-y", "@modelcontextprotocol/server-github"]
This creates a mcp-github toolset you can reference in --toolsets or platform configuration.
Plugin Toolsets
Plugins can register their own toolsets via ctx.register_tool() during plugin initialization. They appear alongside built-in toolsets and can be toggled the same way.
Custom Toolsets
Define custom toolsets in config.yaml to create project-specific bundles:
toolsets:
- hermes-cli
custom_toolsets:
data-science:
- file
- terminal
- code_execution
- web
- vision
Wildcards
allor*— expands to every registered toolset (built-in + dynamic + plugin)
Relationship with hermes tools
The hermes tools command provides a curses-based UI to toggle individual tools per platform. This operates at the tool level (finer than toolsets) and is persisted to config.yaml. Disabled tools are filtered out even if their toolset is enabled.
See also: Tools Reference for the full list of individual tools and their parameters.