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: builtins, shell, semantic memory, WorkGraph, and mob orchestration. On the CLI, these are selected with tool presets. Other surfaces expose per-category booleans such asenable_builtins, enable_shell, enable_memory, enable_workgraph, and enable_mob.
- CLI
- JSON-RPC
- REST
- MCP
- Python
- TypeScript
- Rust
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.
