Skip to main content
For concepts, see Tools.
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:
  1. enable built-in tools
  2. register MCP servers
  3. manage live MCP controls and tool scoping
  4. 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 as enable_builtins, enable_shell, enable_memory, enable_workgraph, and enable_mob.

Register MCP servers

Config is stored in .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.
Set 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 via TurnToolOverlay. The overlay is ephemeral and cleared after the turn completes.
Composition rule: most-restrictive wins. Multiple allow-lists intersect, multiple deny-lists union, and deny always beats allow. The conversation records a typed 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)

Implement AgentToolDispatcher to define your own tools. The agent sees them alongside built-in and MCP tools.

Next step