Documentation Index
Fetch the complete documentation index at: https://docs.rkat.ai/llms.txt
Use this file to discover all available pages before exploring further.
Overview
| Tool | Category | Default | Gate | Description |
|---|---|---|---|---|
task_create | Task | Yes | — | Create a new task |
task_get | Task | Yes | — | Get a task by ID |
task_list | Task | Yes | — | List tasks with optional filters |
task_update | Task | Yes | — | Update an existing task |
shell | Shell | No | — | Execute a shell command |
shell_jobs | Shell | No | — | List background shell jobs |
shell_job_status | Shell | No | — | Check background job status |
shell_job_cancel | Shell | No | — | Cancel a background job |
memory_search | Memory | N/A | memory-store-session | Search semantic memory |
datetime | Utility | Yes | — | Get current date/time |
apply_patch | Utility | Yes | — | Apply structured file patches inside the project root |
view_image | Utility | Yes | image_tool_results | Read an image file and return base64 content |
generate_image | Image generation | Runtime-backed | image provider profile | Generate or edit assistant images and commit blob-backed image blocks |
blob_save_file | Blob files | Runtime-backed | blob store | Save decoded blob bytes to a project-root-contained file |
blob_load_file | Blob files | Runtime-backed | blob store | Load a project-root-contained file into the realm blob store |
blob_inspect | Blob files | Runtime-backed | blob store | Inspect blob media type and decoded byte size without returning bytes |
send_message | Comms | Yes | comms | Send a collaboration message to a peer |
send_request | Comms | Yes | comms | Send a structured request to a peer |
send_response | Comms | Yes | comms | Send a response to a peer request |
peers | Comms | Yes | comms | List discoverable peers (trusted + inproc) |
browse_skills | Skills | Yes | skills | Browse skill collections and search skills |
load_skill | Skills | Yes | skills | Load a skill’s full instructions into the conversation |
skill_list_resources | Skills | Yes | skills | List skill-owned resources |
skill_read_resource | Skills | Yes | skills | Read a specific skill-owned resource |
skill_invoke_function | Skills | Yes | skills | Invoke a skill-defined function |
tool_catalog_search | Control plane | Yes | builtins | Search deferred tool-catalog entries |
tool_catalog_load | Control plane | Yes | builtins | Load deferred tool-catalog entries into visibility |
meerkat_schedule_create | Schedule | Yes | schedule | Create a new schedule |
meerkat_schedule_get | Schedule | Yes | schedule | Read one schedule |
meerkat_schedule_list | Schedule | Yes | schedule | List schedules |
meerkat_schedule_update | Schedule | Yes | schedule | Update trigger, target, or policies |
meerkat_schedule_pause | Schedule | Yes | schedule | Pause a schedule |
meerkat_schedule_resume | Schedule | Yes | schedule | Resume a paused schedule |
meerkat_schedule_delete | Schedule | Yes | schedule | Delete a schedule |
meerkat_schedule_occurrences | Schedule | Yes | schedule | List occurrences for a schedule |
workgraph_create | WorkGraph | No | work_graph | Create a work item |
workgraph_get | WorkGraph | No | work_graph | Read one item |
workgraph_list | WorkGraph | No | work_graph | List items |
workgraph_ready | WorkGraph | No | work_graph | List ready items |
workgraph_snapshot | WorkGraph | No | work_graph | Read an observability snapshot |
workgraph_events | WorkGraph | No | work_graph | Read event history |
workgraph_claim | WorkGraph | No | work_graph | Claim an item |
workgraph_release | WorkGraph | No | work_graph | Release a claim |
workgraph_update | WorkGraph | No | work_graph | Update item fields |
workgraph_block | WorkGraph | No | work_graph | Mark an item blocked |
workgraph_close | WorkGraph | No | work_graph | Close an item terminally |
workgraph_link | WorkGraph | No | work_graph | Add an edge |
workgraph_add_evidence | WorkGraph | No | work_graph | Add evidence |
Enabling and disabling tools
Factory-level flags
Factory-level flags
AgentFactory controls which tool categories are available via builder methods:| Flag | Builder Method | Default | Controls |
|---|---|---|---|
enable_builtins | .builtins(bool) | false | Task tools, utility tools (datetime, apply_patch, view_image), runtime-backed generate_image, and blob file tools when a blob store is wired |
enable_shell | .shell(bool) | false | All shell tools (shell, shell_jobs, shell_job_status, shell_job_cancel) |
enable_memory | .memory(bool) | false | memory_search (requires memory-store-session feature) |
enable_schedule | .schedule(bool) | false | Scheduler tools (meerkat_schedule_*) |
enable_workgraph | .workgraph(bool) | false | WorkGraph tools (workgraph_*) |
enable_comms | .comms(bool) | false | All comms tools (requires comms feature) |
enable_mob | .mob(bool) | false | Mob orchestration tools (mob_*, meerkat_*) |
AgentFactory is the only place tool categories are composed. The public meerkat::AgentBuilder delegates to the factory path with explicit client/tool/store overrides. The lower-level meerkat_core::AgentBuilder is not re-exported by the facade and is not a public standalone embedding API. See AgentBuilder vs AgentFactory.Source: meerkat/src/factory.rs — AgentFactory struct and builder methods.Per-build overrides
Per-build overrides
Each
All default to
AgentBuildConfig can override factory-level flags for a single agent build:| Override Field | Type | Effect |
|---|---|---|
override_builtins | ToolCategoryOverride | Explicit enable, disable, or inherit |
override_shell | ToolCategoryOverride | Explicit enable, disable, or inherit |
override_memory | ToolCategoryOverride | Explicit enable, disable, or inherit |
override_schedule | ToolCategoryOverride | Explicit enable, disable, or inherit |
override_workgraph | ToolCategoryOverride | Explicit enable, disable, or inherit |
override_mob | ToolCategoryOverride | Explicit enable, disable, or inherit |
inherit (use the factory-level setting).Source: meerkat/src/factory.rs — AgentBuildConfig struct.ToolPolicyLayer
ToolPolicyLayer
Individual tools can be enabled or disabled via
ToolPolicyLayer in BuiltinToolConfig. When shell is enabled, a ToolPolicyLayer is applied that activates the four shell tools (which have default_enabled: false).Capability registrations
Capability registrations
Capabilities are registered via the
inventory crate in meerkat-tools/src/lib.rs:- Builtins (
CapabilityId::Builtins):task_list,task_create,task_get,task_update,datetime,apply_patch,view_image, runtime-backedgenerate_image, and runtime-backedblob_save_file/blob_load_file/blob_inspectwhen a blob store is available. Controlled byconfig.tools.builtins_enabled. - Shell (
CapabilityId::Shell):shell,shell_jobs,shell_job_status,shell_job_cancel. Controlled byconfig.tools.shell_enabled. - Schedule (
CapabilityId::Schedule):meerkat_schedule_*. Controlled byconfig.tools.schedule_enabled. - WorkGraph (
CapabilityId::WorkGraph):workgraph_*. Controlled byconfig.tools.workgraph_enabled.
Runtime tool scoping
Beyond static factory flags and per-build overrides, tool visibility can be changed at runtime during a live session. See Tool scoping for the conceptual overview.ToolScope lifecycle
ToolScope lifecycle
ToolScope (in meerkat-core) manages runtime tool visibility. It holds the base tool set from the dispatcher, an active external filter, and an optional per-turn overlay.Staging: External callers stage filter updates via ToolScopeHandle::stage_external_filter(filter). The staged filter is NOT applied immediately — the current turn is unaffected.Boundary apply: At the start of each CallingLlm loop iteration, tool_scope.apply_staged(dispatcher_tools) atomically promotes the staged filter to active, prunes stale tool names, and returns the visible tool set. A ToolConfigChanged event is emitted and a typed tool_config system notice is recorded in the conversation.Filter types:ToolFilter::All— no restriction (default)ToolFilter::Allow(set)— only listed tools are visibleToolFilter::Deny(set)— listed tools are hidden
tool_scope_external_filter and restored on session resume.Source: meerkat-core/src/tool_scope.rsLive MCP server mutation
Live MCP server mutation
MCP servers can be added or removed from a running session. Operations are staged on the
Servers being removed transition through
McpRouter and applied at the next turn boundary.| Surface | Method | Status |
|---|---|---|
| JSON-RPC | mcp/add, mcp/remove, mcp/reload | Fully wired (staged) |
| REST | POST /sessions/{id}/mcp/add|remove|reload | Fully wired |
| CLI | rkat mcp add/remove/list/get | Config surface; start or resume a session to load config |
| MCP server | meerkat_mcp_add, meerkat_mcp_remove, meerkat_mcp_reload | Fully wired |
Active → Removing (draining) → Removed to allow in-flight tool calls to complete before finalization.Source: meerkat-mcp/src/router.rs, meerkat-rpc/src/handlers/mcp.rsPer-turn flow tool overlay
Per-turn flow tool overlay
Mob flow steps can restrict tools for a single turn via Set on
TurnToolOverlay:StartTurnRequest.flow_tool_overlay by the flow engine. Ephemeral — cleared after the turn completes. Composes with the external filter using most-restrictive semantics.Source: meerkat-core/src/service/mod.rs, meerkat-mob/src/runtime/flow.rsSchedule tools
Schedule tools are the agent-facing scheduler surface. They are distinct from the host APIs (schedule/* over RPC and /schedules/* over REST).
Schedule tool inventory
Schedule tool inventory
| Tool | Purpose |
|---|---|
meerkat_schedule_create | Create a durable schedule with trigger, target, and policies |
meerkat_schedule_get | Read one schedule by schedule_id |
meerkat_schedule_list | List schedules in the active realm |
meerkat_schedule_update | Update trigger, target, policies, or labels |
meerkat_schedule_pause | Pause a schedule |
meerkat_schedule_resume | Resume a paused schedule |
meerkat_schedule_delete | Delete a schedule |
meerkat_schedule_occurrences | List occurrences for a schedule |
ScheduleToolDispatcher in meerkat-schedule and are gated by the scheduler capability.WorkGraph tools
WorkGraph tools are the agent-facing write path for durable work. Host RPC, REST, and CLI expose read-only observability only.WorkGraph tool inventory
WorkGraph tool inventory
| Tool | Purpose |
|---|---|
workgraph_create | Create a durable work item |
workgraph_get | Read one item |
workgraph_list | List items with filters |
workgraph_ready | List machine-derived ready items |
workgraph_snapshot | Read items, edges, ready ids, timestamp, and event high-water mark |
workgraph_events | Read event history |
workgraph_claim | Claim an item with expected revision and typed owner |
workgraph_release | Release an active claim |
workgraph_update | Update mutable fields |
workgraph_block | Mark an item blocked |
workgraph_close | Close as completed, cancelled, or failed |
workgraph_link | Add an edge |
workgraph_add_evidence | Add an evidence reference |
workgraph-workflow companion skill when it
is available. For the data model and host observability surfaces, see
WorkGraph reference.Task tools
Task tools provide structured work tracking. They are enabled by default when builtins are on. Tasks are persisted viaTaskStore (either FileTaskStore on disk or MemoryTaskStore in-memory).
Task data model
Task data model
A
Source:
Task object returned by task tools has these fields:| Field | Type | Description |
|---|---|---|
id | String | Unique task identifier |
subject | String | Short subject/title |
description | String | Detailed description |
status | String | "pending", "in_progress", or "completed" |
priority | String | "low", "medium", or "high" |
labels | String[] | Labels/tags for categorization |
blocks | String[] | IDs of tasks that this task blocks |
blocked_by | String[] | IDs of tasks that block this task |
created_at | String | ISO 8601 creation timestamp |
updated_at | String | ISO 8601 last-updated timestamp |
created_by_session | String? | Session ID that created this task |
updated_by_session | String? | Session ID that last updated this task |
owner | String? | Owner/assignee (agent name or user identifier) |
metadata | Object | Arbitrary key-value metadata |
meerkat-tools/src/builtin/types.rs — Task struct.task_create
task_create
Create a new task in the project task list.Default enabled: YesReturns: The created
Short subject/title of the task.
Detailed description of what needs to be done.
"low", "medium", or "high".Labels/tags for categorization.
Task IDs that this task blocks.
Task IDs that block this task.
Owner/assignee.
Arbitrary key-value metadata.
Task object (see task data model above).Source: meerkat-tools/src/builtin/tasks/task_create.rstask_get
task_get
Get a task by its ID.Default enabled: YesReturns: The
The task ID to retrieve.
Task object matching the given ID.Error: ExecutionFailed if the task ID is not found.Source: meerkat-tools/src/builtin/tasks/task_get.rstask_list
task_list
List tasks in the project, optionally filtered by status or labels.Default enabled: YesReturns: Array of
Filter by status:
"pending", "in_progress", or "completed".Filter by labels (tasks matching any label).
Task objects matching the filters.Source: meerkat-tools/src/builtin/tasks/task_list.rstask_update
task_update
Update an existing task. Only provided fields are modified; omitted fields remain unchanged.Default enabled: YesReturns: The updated
The task ID to update.
New subject/title.
New description.
New status:
"pending", "in_progress", or "completed".New priority:
"low", "medium", or "high".Replace all labels.
New owner/assignee.
Merge metadata (set key to
null to remove).Task IDs to add to the
blocks list.Task IDs to remove from the
blocks list.Task IDs to add to the
blocked_by list.Task IDs to remove from the
blocked_by list.Task object.Error: ExecutionFailed if the task ID is not found.Source: meerkat-tools/src/builtin/tasks/task_update.rsShell tools
Shell tools execute commands and manage background jobs. They are alldefault_enabled: false and require the factory-level enable_shell flag (or a ToolPolicyLayer override) to be active.
Shell configuration
Shell configuration
Shell behavior is controlled by
Source:
ShellConfig:| Config Field | Type | Default | Description |
|---|---|---|---|
enabled | bool | false | Master switch for shell tools |
default_timeout_secs | u64 | 30 | Default command timeout |
restrict_to_project | bool | true | Restrict working dirs to project root |
shell | String | "nu" | Shell binary name (Nushell by default; falls back to bash/zsh/sh) |
shell_path | PathBuf? | None | Explicit shell binary path |
project_root | PathBuf | CWD | Project root for path restriction |
max_completed_jobs | usize | 100 | Maximum completed jobs retained |
completed_job_ttl_secs | u64 | 300 | TTL for completed job records (seconds) |
max_concurrent_processes | usize | 10 | Maximum concurrent background processes |
security_mode | SecurityMode | Unrestricted | Command security policy |
security_patterns | Vec<String> | [] | Glob patterns for allow/deny lists |
meerkat-tools/src/builtin/shell/config.rsShell security modes
Shell security modes
The
Patterns are matched against the canonicalized command invocation. The engine parses the full command string into individual words, then validates the executable (first word) and the full command string against the pattern set.Source:
SecurityEngine validates commands before execution using POSIX-compliant word splitting (shlex) and glob pattern matching (globset).| Mode | Behavior |
|---|---|
Unrestricted | All commands allowed (default) |
AllowList | Only commands matching security_patterns globs are allowed |
DenyList | Commands matching security_patterns globs are rejected |
meerkat-tools/src/builtin/shell/security.rsshell
shell
Execute a shell command. Uses POSIX-style parsing for policy checks; runs via Nushell or fallback shell.Default enabled: No (requires shell to be enabled)Source:
The command to execute (POSIX-style parsing for policy checks).
Working directory (relative to project root).
Timeout in seconds.
If
true, run in background and return job ID immediately.Output is truncated to the last 100,000 characters if it exceeds that limit. Fields
stdout_lossy and stderr_lossy indicate whether output was lossy-decoded from non-UTF-8 bytes.meerkat-tools/src/builtin/shell/tool.rsshell_jobs
shell_jobs
List all background shell jobs.Default enabled: No (requires shell to be enabled)Parameters: None (empty object).The
status field is one of: "running", "completed", "failed", "timed_out", "cancelled".Source: meerkat-tools/src/builtin/shell/jobs_list_tool.rsshell_job_status
shell_job_status
Check status of a background shell job. Returns full job details including output when complete.Default enabled: No (requires shell to be enabled)Error:
The job ID to check.
ExecutionFailed if the job ID is not found.Source: meerkat-tools/src/builtin/shell/job_status_tool.rsshell_job_cancel
shell_job_cancel
Cancel a running background shell job.Default enabled: No (requires shell to be enabled)Error:
The job ID to cancel.
ExecutionFailed if the job ID is not found.Source: meerkat-tools/src/builtin/shell/job_cancel_tool.rsShell types
Shell types
JobId format:
"job_" followed by a UUID v7 string.JobStatus variants: Running, Completed, Failed, TimedOut, Cancelled (serialized as lowercase snake_case strings).Source: meerkat-tools/src/builtin/shell/types.rsMemory tool
The memory search tool lives in themeerkat-memory crate and is composed into the tool dispatcher as a separate MemorySearchDispatcher (implementing AgentToolDispatcher). It is NOT part of CompositeDispatcher — it is wired via ToolGateway when the memory-store-session feature is enabled and enable_memory is true.
memory_search
memory_search
Search semantic memory for past conversation content. Memory contains text from earlier conversation turns that were compacted away to save context space.The Returns an empty array if no matches are found.Source:
Natural language search query describing what you want to recall.
Maximum number of results to return (max: 20).
limit is capped at 20 regardless of the requested value.meerkat-memory/src/tool.rsUtility tools
Utility tools are general-purpose helpers enabled by default when builtins are on.datetime
datetime
Get the current date and time. Returns ISO 8601 formatted datetime and Unix timestamp.Default enabled: YesParameters: None (empty object).Source:
meerkat-tools/src/builtin/utility/datetime.rsview_image
view_image
Read an image file from the project directory and return its contents as a base64-encoded Supported formats: PNG, JPEG, GIF, WebP, SVG.Size limit: 5 MB. Files exceeding this limit return an error.Capability gating:
ContentBlock::Image. This enables vision-capable models to analyze images from disk during tool use.Default enabled: Yes (when builtins are on and the model supports image tool results)Path to the image file, relative to the project root.
view_image is currently hidden via ToolScope when the active model does not support image content in tool results (ModelProfile.image_tool_results == false).Returns: A content-block result containing a single ContentBlock::Image with the base64-encoded image data and detected media type.Source: meerkat-tools/src/builtin/utility/view_image.rsblob_save_file
blob_save_file
Save decoded bytes from the session blob store to a file inside the project root. This is the model-facing equivalent of materializing a blob with Returns: JSON metadata:
rkat blob get, but it remains sandboxed to the active project.Default enabled: Yes when builtins are on and the runtime-backed session has a blob store.Blob ID to save.
Destination path, relative to the project root or absolute within the project root.
Whether to replace an existing file.
blob_id, media_type, path, and bytes_written. Raw bytes are never returned in the tool result.Source: meerkat-tools/src/builtin/utility/blob_file.rsblob_load_file
blob_load_file
Read a file inside the project root and store its bytes in the realm blob store.Default enabled: Yes when builtins are on and the runtime-backed session has a blob store.Size limit: 25 MB.Returns: JSON metadata:
Source path, relative to the project root or absolute within the project root.
Optional media type. When omitted, Meerkat infers common image, text, JSON, CSV, SVG, and PDF media types from the file extension.
blob_id, media_type, path, and bytes_read. Raw bytes are never returned in the tool result.Source: meerkat-tools/src/builtin/utility/blob_file.rsblob_inspect
blob_inspect
Inspect a blob without returning its raw payload.Default enabled: Yes when builtins are on and the runtime-backed session has a blob store.Returns: JSON metadata:
Blob ID to inspect.
blob_id, media_type, and decoded size_bytes.Source: meerkat-tools/src/builtin/utility/blob_file.rsgenerate_image
generate_image
Generate or edit an assistant-owned image through the session image-generation substrate. Generated bytes are committed to the realm blob store and returned as durable Common request:Targets:
AssistantImageRef values.Default enabled: Yes when builtins are on and the runtime-backed session has image-generation machine, executor, planner, and blob-store wiring.Image generation request. The simple shape supports
intent, prompt, instruction, source_images, reference_images, size, quality, format, count/n, target, provider, model, and provider_params.auto uses the current provider’s image profile when available. Use provider: "openai" or provider: "gemini" to force a provider default. Use provider plus model to force a provider-owned image model.Supported universal options: size accepts auto, 1024x1024, 1024x1536, 1536x1024, or WIDTHxHEIGHT; quality accepts auto, low, medium, high; format accepts auto, png, jpeg, jpg, webp; count is currently limited to 1.Provider params: Use top-level size, quality, format, and intent for normal requests; these are Meerkat fields, not raw provider params. For the current gpt-image-2 default, OpenAI provider_params should normally be limited to background, output_compression, moderation, and hosted-tool-only action; background is auto or opaque only, output_compression applies when format is jpeg/webp, moderation is auto or low, action is usually omitted in favor of top-level intent, and input_fidelity is not accepted by Meerkat 0.6.5. Gemini accepts aspect_ratio and image_size.Returns: ImageGenerationToolResult JSON containing operation_id, terminal, images, provider_text, revised_prompt, native_metadata, and warnings. Each generated image includes blob_ref.blob_id, which can be saved from inside the session with blob_save_file or fetched externally with rkat blob get <blob_id> --output image.png.Source: meerkat-tools/src/builtin/image_generation.rsSee Image generation for provider behavior, examples, and troubleshooting.Comms tools
Comms tools enable inter-agent communication. They require thecomms Cargo feature (dep:meerkat-comms) and the factory-level enable_comms flag. Unlike other tool categories, comms tools are provided as a separate CommsToolSurface dispatcher (implementing AgentToolDispatcher) and composed via ToolGateway, NOT bundled into CompositeDispatcher.
Comms tools are only shown to the agent when at least one peer is discoverable
(controlled by CommsToolSurface::peer_availability()). The check passes when
TrustedPeers has entries.
Tool definitions (name, description, input schema) are dynamically loaded from meerkat_comms::tools_list().
send_message
send_message
Send a collaboration message to a trusted peer.Default enabled: Yes (when comms is active)Source:
Peer name to send to.
Message content.
Use
"queue" for ordinary delivery or "steer" for immediate steer processing on runtime-backed sessions.meerkat-comms/src/mcp/tools.rssend_request
send_request
Send a structured request to a trusted peer. Use when you want explicit Source:
intent + params and a correlated response via send_response.Default enabled: Yes (when comms is active)Peer name to send to.
Request intent/action identifier (e.g.,
"review", "delegate").Request parameters.
Use
"queue" for ordinary delivery or "steer" for immediate steer processing on runtime-backed sessions.Use
send_message for normal agent collaboration. Use send_request only when you want an explicit structured ask and later send_response correlated by in_reply_to.meerkat-comms/src/mcp/tools.rssend_response
send_response
Send a response to a previously received request from a trusted peer.Default enabled: Yes (when comms is active)Source:
Peer name to send to.
ID of the request being responded to.
Response status:
"accepted", "completed", or "failed".Response result data.
meerkat-comms/src/mcp/tools.rspeers
peers
List all discoverable peers and their connection status.Returns configured trusted peers (Source:
TrustedPeers), excluding the current agent (“self”) by public key.Default enabled: Yes (when comms is active)Parameters: None (empty object).meerkat-comms/src/mcp/tools.rs — PeersInputCargo feature gates
Tool availability depends on compile-time features in themeerkat-tools crate:
| Feature | Default | Dependencies | Tools unlocked |
|---|---|---|---|
comms | Yes | dep:meerkat-comms | send_message, send_request, send_response, peers |
mcp | Yes | dep:meerkat-mcp | External MCP tool routing (not builtin tools) |
memory_search tool is gated by the memory-store-session feature on the meerkat facade crate (not meerkat-tools), since MemorySearchDispatcher lives in meerkat-memory.
Source: meerkat-tools/Cargo.toml