Toolkit Configuration
Dynamic toolkits are groups of tools that agents can load and unload at runtime.
Define toolkit bundles in the top-level toolkits section and grant agents access via allowed_toolkits and initial_toolkits.
See Dynamic Toolkits for the user-facing guide covering how agents interact with toolkits at runtime.
Top-Level toolkits Section
toolkits:
devops:
description: Docker, AWS, and GitHub tools for infrastructure work
tools:
- docker
- aws_lambda
- github
research:
description: Web search and academic paper tools
tools:
- duckduckgo
- arxiv
- wikipedia
data:
description: Data analysis and visualization
tools:
- pandas
- csv
- visualization
- sql:
db_url: postgresql://localhost/analytics
Each toolkit has:
| Field | Type | Default | Description |
|---|---|---|---|
description |
string | "" |
Short description shown to agents when they call list_toolkits() |
tools |
list | [] |
Tool entries in the same format as agent tools (plain strings or single-key dicts with inline config overrides) |
Per-Agent Settings
Agents opt into dynamic toolkits with two fields:
agents:
assistant:
display_name: Assistant
role: A general-purpose helper
model: sonnet
tools: [file, shell]
allowed_toolkits: [devops, research, data]
initial_toolkits: [research]
rooms: [lobby]
| Field | Type | Default | Description |
|---|---|---|---|
allowed_toolkits |
list | [] |
Toolkit names this agent may load at runtime. Each name must match a key in the top-level toolkits section |
initial_toolkits |
list | [] |
Toolkits loaded automatically when a new session starts. Must be a subset of allowed_toolkits. These are sticky — the agent cannot unload them |
When allowed_toolkits is non-empty, MindRoom automatically adds the dynamic_tools meta-toolkit to the agent.
You do not need to add dynamic_tools to the agent's tools list.
Validation Rules
MindRoom validates toolkit configuration at startup and rejects invalid configs with clear error messages.
Reference Validation
- Every entry in
allowed_toolkitsandinitial_toolkitsmust match a key in the top-leveltoolkitssection. initial_toolkitsmust be a subset ofallowed_toolkits.
Reserved Tools
Toolkit definitions cannot include these reserved control-plane tools:
delegatedynamic_toolsself_config
These tools are managed by MindRoom internally and injected automatically when needed.
Tool Registry
All tools listed in a toolkit must resolve through the normal tool registry. Plugin-provided tools work as long as they are registered before config validation runs.
Duplicate Tools
Each tool name must appear at most once within a single toolkit definition. Duplicate entries within one toolkit are rejected.
Scope Compatibility
Some integrations are restricted to shared or unscoped execution (see Worker Routing).
If an agent with an isolating worker_scope (or private.per) has a toolkit containing a shared-only integration, MindRoom rejects the config at startup.
The following integrations are shared-only and cannot appear in toolkits assigned to agents with user or user_agent scope:
spotify, homeassistant
Conflict Detection
When an agent loads a toolkit at runtime, MindRoom checks for tool name collisions. If a toolkit tool is already present in the agent's active set (from static tools or another loaded toolkit) with different config overrides, the load is rejected with a conflict error. Identical duplicate tools are silently deduplicated.
Full Example
models:
default:
provider: anthropic
id: claude-sonnet-4-6
toolkits:
devops:
description: Infrastructure and deployment tools
tools:
- docker
- aws_lambda
- github
research:
description: Web search and academic sources
tools:
- duckduckgo
- arxiv
- wikipedia
data:
description: Data analysis and visualization
tools:
- pandas
- csv
- visualization
agents:
assistant:
display_name: Assistant
role: A versatile helper that loads tools on demand
model: default
tools:
- file
- shell
allowed_toolkits: [devops, research, data]
initial_toolkits: [research]
rooms: [lobby]
researcher:
display_name: Researcher
role: Deep research specialist
model: default
tools:
- duckduckgo
- arxiv
allowed_toolkits: [data]
rooms: [lobby]
defaults:
tools:
- scheduler
In this example:
assistantstarts withfile,shell,scheduler(from defaults), and theresearchtoolkit tools. It can loaddevopsordataon demand, and cannot unloadresearchbecause it is ininitial_toolkits.researcherstarts withduckduckgo,arxiv, andscheduler. It can loaddataon demand for analysis work.