If you are new to the tools system, start with Enable built-in tools, then Register MCP servers, then come back to Custom tools (Rust SDK) when you need to extend the runtime directly.
Start here
This page is structured from common product usage to advanced extension work:- enable built-in tools
- register MCP servers
- manage live MCP controls and tool scoping
- implement custom Rust tools when you need to extend the runtime directly
Enable built-in tools
Built-in tool categories include general builtins, shell, semantic memory, schedule, WorkGraph, comms, mob orchestration, image generation, and web search. On the CLI, common groups are selected with tool presets. Other surfaces expose category booleans such asenable_builtins, enable_shell,
enable_memory, enable_workgraph, enable_mob, and enable_web_search.
Image generation and web search are independent from general builtins.
- CLI
- JSON-RPC
- REST
- MCP
- Python
- TypeScript
- Rust
Run a durable background shell job
Ask theshell tool for background: true when you need Meerkat-owned job
truth rather than shell syntax that happens to include &:
shell_job_status, shell_jobs, and shell_job_cancel with that stable
ID. The record survives restart, but the subprocess does not become resumable:
a lost worker is terminally classified worker_lost and is not replayed.
monitor_start is a separate high-trust, opt-in tool for scripts that emit
framed notifications, checkpoints, progress, and completion. It is not enabled
by the standard shell category alone.
Register MCP servers
.rkat/mcp.toml (project) or ~/.rkat/mcp.toml (user). Project scope wins on name collisions.
Each server supports an optional connect_timeout_secs field (default: 10 seconds) covering the entire connect + handshake + tool enumeration budget:
Live MCP controls
Add, remove, or reload MCP servers on a running session without restarting the agent. Changes are staged and applied at the next turn boundary.CLI
rkat mcp add/remove/list/get manages server config (persisted to .rkat/mcp.toml or ~/.rkat/mcp.toml). The methods below manage servers on a running session — changes are staged and applied at the next turn boundary.- JSON-RPC
- REST
- MCP
- Python
- TypeScript
persisted: true to write the change to disk config so it survives restart.
Tool scoping
Tool visibility can change during a session. Changes are staged and atomically applied at the turn boundary — the LLM never sees a tool list change mid-stream. External filters. Allow-list or deny-list filters are persisted in session metadata and survive resume. Per-turn overlays. Mob flow steps can restrict tools for a single turn viaTurnToolOverlay. The overlay is ephemeral and cleared after the turn completes.
- CLI
- JSON-RPC
- REST
- MCP
- Python
- TypeScript
tool_config system notice when the tool set changes, and a tool_config_changed event is emitted to the event stream.
Advanced: Custom tools (Rust SDK)
ImplementAgentToolDispatcher to define your own tools. The agent sees them alongside built-in and MCP tools.
