Tools
MindRoom includes 100+ tool integrations that agents can use to interact with external services.
Enabling Tools
Tools are enabled per-agent in the configuration. Each tool entry can be a plain string or a single-key dict with inline config overrides:
agents:
assistant:
display_name: Assistant
role: A helpful assistant with file and web access
model: sonnet
tools:
- file # plain string, uses defaults
- shell: # inline config override
extra_env_passthrough: "DAWARICH_*"
- github
- duckduckgo
You can also assign tools to all agents globally:
defaults.tools are merged into each agent's own tools list with duplicates removed. Set defaults.tools: [] to disable global default tools, or set agents.<name>.include_default_tools: false to opt out a specific agent.
When the same tool appears in both defaults.tools and an agent's tools with inline overrides, the per-agent overrides take priority (with non-overlapping keys merged from both).
See Per-Agent Tool Configuration for the full override syntax and merge order.
Tool Categories
Tools are organized by category:
- File & System - File operations, shell, Docker, Python, SQL, databases (Postgres, Redshift, Neo4j, DuckDB), Pandas, CSV, coding, self-config, calculator, reasoning, file generation, visualization, sleep
- Web Search & Research - DuckDuckGo, Google Search, Baidu, Tavily, Exa, SerpAPI, Serper, SearXNG, Linkup
- Web Scraping & Crawling - Firecrawl, Crawl4AI, BrowserBase, AgentQL, Spider, ScrapeGraph, Apify, BrightData, Oxylabs, Jina, Website, Trafilatura, Newspaper4k, Web Browser Tools, Browser (OpenClaw)
- AI & ML APIs - OpenAI, Gemini, Groq, Replicate, Fal, DALL-E, Cartesia, ElevenLabs, Desi Vocal, LumaLabs, ModelsLabs
- Knowledge & Research - arXiv, Wikipedia, PubMed, Hacker News
- Communication & Social - Matrix, Gmail, Slack, Discord, Telegram, WhatsApp, Twilio, Webex, Resend, Email (SMTP), X/Twitter, Reddit, Zoom
- Project Management - GitHub, Bitbucket, Jira, Linear, ClickUp, Confluence, Notion, Trello, Todoist, Zendesk
- Calendar & Scheduling - Google Calendar, Cal.com, Scheduler
- Data & Business - Google Sheets, Yahoo Finance, OpenBB, Shopify, Financial Datasets API
- Location & Maps - Google Maps, OpenWeather
- DevOps & Infrastructure - AWS Lambda, AWS SES, Airflow, E2B, Daytona, Claude Agent, Composio, Google BigQuery, container sandbox proxy
- Smart Home - Home Assistant
- Media & Entertainment - YouTube, Spotify, Giphy, MoviePy, Unsplash, Brandfetch
- Memory & Storage - Memory, Mem0, Zep, Attachments
- Custom & Config - Custom API, Config Manager, Context Compaction, Subagents, Delegate
Quick Examples
Research Agent
agents:
researcher:
display_name: Researcher
role: Find and summarize information from the web and academic sources
model: sonnet
tools:
- duckduckgo
- arxiv
- wikipedia
- pubmed
DevOps Agent
agents:
devops:
display_name: DevOps
role: Manage infrastructure, containers, and deployments
model: sonnet
tools:
- shell
- docker
- github
- aws_lambda
Communication Agent
agents:
notifier:
display_name: Notifier
role: Send notifications and messages across platforms
model: sonnet
tools:
- slack
- telegram
- gmail
Implied Tools
Some tools automatically include companion tools via the IMPLIED_TOOLS mapping.
When matrix_message is in an agent's tool list, attachments is automatically added.
This happens during tool name expansion — the effective tool set includes both the explicitly listed tools and any implied tools.
Currently the only implied mapping is:
| Tool | Implies |
|---|---|
matrix_message |
attachments |
This is why the openclaw_compat preset includes attachments in its effective tool set even though the preset definition only lists matrix_message.
Tool Runtime Context
When a tool runs inside a Matrix-connected agent, it receives a ToolRuntimeContext via a context variable.
This context carries the current room_id, thread_id, requester_id, agent_name, the Matrix client, the active config, and runtime paths.
Tools like matrix_message and thread_tags use this context to act on the correct room and thread without the caller passing explicit IDs.
thread_tags can also target another authorized room, but it still checks the target room's canonical thread root and requester membership before writing the shared tag state.
thread_tags.tag_thread() and thread_tags.untag_thread() still use the active thread when the caller explicitly repeats the current room_id.
thread_tags.list_thread_tags() uses the active thread by default, but passing room_id without thread_id forces room-wide listing even from inside an active thread.
thread_tags.list_thread_tags(tag=...) narrows both thread-specific and room-wide responses to the requested tag only.
thread_tags also validates and normalizes predefined payload schemas for blocked.data.blocked_by, waiting.data.waiting_on, priority.data.level, and due.data.deadline.
thread_tags intentionally replaces the removed experimental thread_resolution tool and does not auto-read old com.mindroom.thread.resolution markers.
Attachment IDs from the current conversation are also available in the runtime context.
Tools that accept attachment_ids (such as matrix_message) resolve those IDs against the context-scoped attachment registry, preventing one conversation from accessing files uploaded in another.
Automatic Dependency Installation
Each tool declares its Python dependencies as an optional extra in pyproject.toml.
When an agent tries to use a tool whose dependencies aren't installed, MindRoom automatically installs them at runtime:
- Pre-check — uses
importlib.util.find_spec()to detect missing packages without importing anything - Locked install — runs
uv sync --locked --inexact --no-dev --extra <tool>to install exact pinned versions fromuv.lock - Fallback — if no lockfile is available, falls back to
uv pip installorpip install
This means you don't need to install all 100+ tool dependencies upfront — only the tools your agents actually use get installed.
To disable auto-install, set the environment variable:
To pre-install specific tool dependencies:
See the full list in:
- Built-in Tools - Complete list of available built-in tools with configuration details
- MCP (Planned) - Native MCP status and plugin-based workaround
- Plugins - Extend MindRoom with custom tools and skills (including MCP via plugin workaround)