Skip to main content

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

ToolCategoryDefaultGateDescription
task_createTaskYesCreate a new task
task_getTaskYesGet a task by ID
task_listTaskYesList tasks with optional filters
task_updateTaskYesUpdate an existing task
shellShellNoExecute a shell command
shell_jobsShellNoList background shell jobs
shell_job_statusShellNoCheck background job status
shell_job_cancelShellNoCancel a background job
memory_searchMemoryN/Amemory-store-sessionSearch semantic memory
datetimeUtilityYesGet current date/time
apply_patchUtilityYesApply structured file patches inside the project root
view_imageUtilityYesimage_tool_resultsRead an image file and return base64 content
generate_imageImage generationRuntime-backedimage provider profileGenerate or edit assistant images and commit blob-backed image blocks
blob_save_fileBlob filesRuntime-backedblob storeSave decoded blob bytes to a project-root-contained file
blob_load_fileBlob filesRuntime-backedblob storeLoad a project-root-contained file into the realm blob store
blob_inspectBlob filesRuntime-backedblob storeInspect blob media type and decoded byte size without returning bytes
send_messageCommsYescommsSend a collaboration message to a peer
send_requestCommsYescommsSend a structured request to a peer
send_responseCommsYescommsSend a response to a peer request
peersCommsYescommsList discoverable peers (trusted + inproc)
browse_skillsSkillsYesskillsBrowse skill collections and search skills
load_skillSkillsYesskillsLoad a skill’s full instructions into the conversation
skill_list_resourcesSkillsYesskillsList skill-owned resources
skill_read_resourceSkillsYesskillsRead a specific skill-owned resource
skill_invoke_functionSkillsYesskillsInvoke a skill-defined function
tool_catalog_searchControl planeYesbuiltinsSearch deferred tool-catalog entries
tool_catalog_loadControl planeYesbuiltinsLoad deferred tool-catalog entries into visibility
meerkat_schedule_createScheduleYesscheduleCreate a new schedule
meerkat_schedule_getScheduleYesscheduleRead one schedule
meerkat_schedule_listScheduleYesscheduleList schedules
meerkat_schedule_updateScheduleYesscheduleUpdate trigger, target, or policies
meerkat_schedule_pauseScheduleYesschedulePause a schedule
meerkat_schedule_resumeScheduleYesscheduleResume a paused schedule
meerkat_schedule_deleteScheduleYesscheduleDelete a schedule
meerkat_schedule_occurrencesScheduleYesscheduleList occurrences for a schedule
workgraph_createWorkGraphNowork_graphCreate a work item
workgraph_getWorkGraphNowork_graphRead one item
workgraph_listWorkGraphNowork_graphList items
workgraph_readyWorkGraphNowork_graphList ready items
workgraph_snapshotWorkGraphNowork_graphRead an observability snapshot
workgraph_eventsWorkGraphNowork_graphRead event history
workgraph_claimWorkGraphNowork_graphClaim an item
workgraph_releaseWorkGraphNowork_graphRelease a claim
workgraph_updateWorkGraphNowork_graphUpdate item fields
workgraph_blockWorkGraphNowork_graphMark an item blocked
workgraph_closeWorkGraphNowork_graphClose an item terminally
workgraph_linkWorkGraphNowork_graphAdd an edge
workgraph_add_evidenceWorkGraphNowork_graphAdd evidence

Enabling and disabling tools

AgentFactory controls which tool categories are available via builder methods:
FlagBuilder MethodDefaultControls
enable_builtins.builtins(bool)falseTask 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)falseAll shell tools (shell, shell_jobs, shell_job_status, shell_job_cancel)
enable_memory.memory(bool)falsememory_search (requires memory-store-session feature)
enable_schedule.schedule(bool)falseScheduler tools (meerkat_schedule_*)
enable_workgraph.workgraph(bool)falseWorkGraph tools (workgraph_*)
enable_comms.comms(bool)falseAll comms tools (requires comms feature)
enable_mob.mob(bool)falseMob 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.rsAgentFactory struct and builder methods.
Each AgentBuildConfig can override factory-level flags for a single agent build:
Override FieldTypeEffect
override_builtinsToolCategoryOverrideExplicit enable, disable, or inherit
override_shellToolCategoryOverrideExplicit enable, disable, or inherit
override_memoryToolCategoryOverrideExplicit enable, disable, or inherit
override_scheduleToolCategoryOverrideExplicit enable, disable, or inherit
override_workgraphToolCategoryOverrideExplicit enable, disable, or inherit
override_mobToolCategoryOverrideExplicit enable, disable, or inherit
All default to inherit (use the factory-level setting).Source: meerkat/src/factory.rsAgentBuildConfig struct.
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).
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-backed generate_image, and runtime-backed blob_save_file/blob_load_file/blob_inspect when a blob store is available. Controlled by config.tools.builtins_enabled.
  • Shell (CapabilityId::Shell): shell, shell_jobs, shell_job_status, shell_job_cancel. Controlled by config.tools.shell_enabled.
  • Schedule (CapabilityId::Schedule): meerkat_schedule_*. Controlled by config.tools.schedule_enabled.
  • WorkGraph (CapabilityId::WorkGraph): workgraph_*. Controlled by config.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 (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 visible
  • ToolFilter::Deny(set) — listed tools are hidden
Composition: Most-restrictive wins. Multiple allow-lists intersect, multiple deny-lists union, deny beats allow.Persistence: The active external filter is stored in session metadata under tool_scope_external_filter and restored on session resume.Source: meerkat-core/src/tool_scope.rs
MCP servers can be added or removed from a running session. Operations are staged on the McpRouter and applied at the next turn boundary.
SurfaceMethodStatus
JSON-RPCmcp/add, mcp/remove, mcp/reloadFully wired (staged)
RESTPOST /sessions/{id}/mcp/add|remove|reloadFully wired
CLIrkat mcp add/remove/list/getConfig surface; start or resume a session to load config
MCP servermeerkat_mcp_add, meerkat_mcp_remove, meerkat_mcp_reloadFully wired
Servers being removed transition through 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.rs
Mob flow steps can restrict tools for a single turn via TurnToolOverlay:
TurnToolOverlay {
    allowed_tools: Option<Vec<String>>,  // allow-list for this turn
    blocked_tools: Option<Vec<String>>,  // deny-list for this turn
}
Set on 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.rs

Schedule tools

Schedule tools are the agent-facing scheduler surface. They are distinct from the host APIs (schedule/* over RPC and /schedules/* over REST).
ToolPurpose
meerkat_schedule_createCreate a durable schedule with trigger, target, and policies
meerkat_schedule_getRead one schedule by schedule_id
meerkat_schedule_listList schedules in the active realm
meerkat_schedule_updateUpdate trigger, target, policies, or labels
meerkat_schedule_pausePause a schedule
meerkat_schedule_resumeResume a paused schedule
meerkat_schedule_deleteDelete a schedule
meerkat_schedule_occurrencesList occurrences for a schedule
These tools are provided by 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.
ToolPurpose
workgraph_createCreate a durable work item
workgraph_getRead one item
workgraph_listList items with filters
workgraph_readyList machine-derived ready items
workgraph_snapshotRead items, edges, ready ids, timestamp, and event high-water mark
workgraph_eventsRead event history
workgraph_claimClaim an item with expected revision and typed owner
workgraph_releaseRelease an active claim
workgraph_updateUpdate mutable fields
workgraph_blockMark an item blocked
workgraph_closeClose as completed, cancelled, or failed
workgraph_linkAdd an edge
workgraph_add_evidenceAdd an evidence reference
For operating guidance, load the 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 via TaskStore (either FileTaskStore on disk or MemoryTaskStore in-memory).
A Task object returned by task tools has these fields:
FieldTypeDescription
idStringUnique task identifier
subjectStringShort subject/title
descriptionStringDetailed description
statusString"pending", "in_progress", or "completed"
priorityString"low", "medium", or "high"
labelsString[]Labels/tags for categorization
blocksString[]IDs of tasks that this task blocks
blocked_byString[]IDs of tasks that block this task
created_atStringISO 8601 creation timestamp
updated_atStringISO 8601 last-updated timestamp
created_by_sessionString?Session ID that created this task
updated_by_sessionString?Session ID that last updated this task
ownerString?Owner/assignee (agent name or user identifier)
metadataObjectArbitrary key-value metadata
Source: meerkat-tools/src/builtin/types.rsTask struct.
Create a new task in the project task list.Default enabled: Yes
subject
String
required
Short subject/title of the task.
description
String
required
Detailed description of what needs to be done.
priority
String
default:"medium"
"low", "medium", or "high".
labels
String[]
default:"[]"
Labels/tags for categorization.
blocks
String[]
default:"[]"
Task IDs that this task blocks.
blocked_by
String[]
default:"[]"
Task IDs that block this task.
owner
String
default:"null"
Owner/assignee.
metadata
Object
default:"{}"
Arbitrary key-value metadata.
Returns: The created Task object (see task data model above).Source: meerkat-tools/src/builtin/tasks/task_create.rs
Get a task by its ID.Default enabled: Yes
id
String
required
The task ID to retrieve.
Returns: The Task object matching the given ID.Error: ExecutionFailed if the task ID is not found.Source: meerkat-tools/src/builtin/tasks/task_get.rs
List tasks in the project, optionally filtered by status or labels.Default enabled: Yes
status
String
default:"null (all)"
Filter by status: "pending", "in_progress", or "completed".
labels
String[]
default:"null (all)"
Filter by labels (tasks matching any label).
Returns: Array of Task objects matching the filters.Source: meerkat-tools/src/builtin/tasks/task_list.rs
Update an existing task. Only provided fields are modified; omitted fields remain unchanged.Default enabled: Yes
id
String
required
The task ID to update.
subject
String
default:"unchanged"
New subject/title.
description
String
default:"unchanged"
New description.
status
String
default:"unchanged"
New status: "pending", "in_progress", or "completed".
priority
String
default:"unchanged"
New priority: "low", "medium", or "high".
labels
String[]
default:"unchanged"
Replace all labels.
owner
String
default:"unchanged"
New owner/assignee.
metadata
Object
default:"unchanged"
Merge metadata (set key to null to remove).
add_blocks
String[]
default:"[]"
Task IDs to add to the blocks list.
remove_blocks
String[]
default:"[]"
Task IDs to remove from the blocks list.
add_blocked_by
String[]
default:"[]"
Task IDs to add to the blocked_by list.
remove_blocked_by
String[]
default:"[]"
Task IDs to remove from the blocked_by list.
Returns: The updated Task object.Error: ExecutionFailed if the task ID is not found.Source: meerkat-tools/src/builtin/tasks/task_update.rs

Shell tools

Shell tools execute commands and manage background jobs. They are all default_enabled: false and require the factory-level enable_shell flag (or a ToolPolicyLayer override) to be active.
Shell behavior is controlled by ShellConfig:
Config FieldTypeDefaultDescription
enabledboolfalseMaster switch for shell tools
default_timeout_secsu6430Default command timeout
restrict_to_projectbooltrueRestrict working dirs to project root
shellString"nu"Shell binary name (Nushell by default; falls back to bash/zsh/sh)
shell_pathPathBuf?NoneExplicit shell binary path
project_rootPathBufCWDProject root for path restriction
max_completed_jobsusize100Maximum completed jobs retained
completed_job_ttl_secsu64300TTL for completed job records (seconds)
max_concurrent_processesusize10Maximum concurrent background processes
security_modeSecurityModeUnrestrictedCommand security policy
security_patternsVec<String>[]Glob patterns for allow/deny lists
Source: meerkat-tools/src/builtin/shell/config.rs
The SecurityEngine validates commands before execution using POSIX-compliant word splitting (shlex) and glob pattern matching (globset).
ModeBehavior
UnrestrictedAll commands allowed (default)
AllowListOnly commands matching security_patterns globs are allowed
DenyListCommands matching security_patterns globs are rejected
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: meerkat-tools/src/builtin/shell/security.rs
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)
command
String
required
The command to execute (POSIX-style parsing for policy checks).
working_dir
String
default:"Project root"
Working directory (relative to project root).
timeout_secs
u64
default:"Config default (30)"
Timeout in seconds.
background
bool
default:"false"
If true, run in background and return job ID immediately.
{
  "exit_code": 0,
  "stdout": "...",
  "stderr": "...",
  "timed_out": false,
  "duration_secs": 1.23
}
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.
Source: meerkat-tools/src/builtin/shell/tool.rs
List all background shell jobs.Default enabled: No (requires shell to be enabled)Parameters: None (empty object).
[
  {
    "id": "job_<uuid-v7>",
    "command": "echo hello",
    "status": "running",
    "started_at_unix": 1700000000
  }
]
The status field is one of: "running", "completed", "failed", "timed_out", "cancelled".Source: meerkat-tools/src/builtin/shell/jobs_list_tool.rs
Check status of a background shell job. Returns full job details including output when complete.Default enabled: No (requires shell to be enabled)
job_id
String
required
The job ID to check.
{
  "id": "job_<uuid-v7>",
  "command": "echo test",
  "working_dir": "/path/to/project",
  "timeout_secs": 30,
  "started_at_unix": 1700000000,
  "status": "completed"
}
Error: ExecutionFailed if the job ID is not found.Source: meerkat-tools/src/builtin/shell/job_status_tool.rs
Cancel a running background shell job.Default enabled: No (requires shell to be enabled)
job_id
String
required
The job ID to cancel.
{
  "job_id": "job_<uuid-v7>",
  "status": "cancelled"
}
Error: ExecutionFailed if the job ID is not found.Source: meerkat-tools/src/builtin/shell/job_cancel_tool.rs
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.rs

Memory tool

The memory search tool lives in the meerkat-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.

Utility tools

Utility tools are general-purpose helpers enabled by default when builtins are on.
Get the current date and time. Returns ISO 8601 formatted datetime and Unix timestamp.Default enabled: YesParameters: None (empty object).
{
  "iso8601": "2025-01-15T14:30:00+01:00",
  "date": "2025-01-15",
  "time": "14:30:00",
  "timezone": "+01:00",
  "unix_timestamp": 1736949000,
  "year": 2025,
  "month": 1,
  "day": 15,
  "weekday": "Wednesday"
}
Source: meerkat-tools/src/builtin/utility/datetime.rs
Read an image file from the project directory and return its contents as a base64-encoded 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
String
required
Path to the image file, relative to the project root.
Supported formats: PNG, JPEG, GIF, WebP, SVG.Size limit: 5 MB. Files exceeding this limit return an error.Capability gating: 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.rs
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 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
String
required
Blob ID to save.
path
String
required
Destination path, relative to the project root or absolute within the project root.
overwrite
Boolean
default:"false"
Whether to replace an existing file.
Returns: JSON metadata: 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.rs
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.
path
String
required
Source path, relative to the project root or absolute within the project root.
media_type
String
default:"inferred from extension"
Optional media type. When omitted, Meerkat infers common image, text, JSON, CSV, SVG, and PDF media types from the file extension.
Size limit: 25 MB.Returns: JSON metadata: 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.rs
Inspect a blob without returning its raw payload.Default enabled: Yes when builtins are on and the runtime-backed session has a blob store.
blob_id
String
required
Blob ID to inspect.
Returns: JSON metadata: blob_id, media_type, and decoded size_bytes.Source: meerkat-tools/src/builtin/utility/blob_file.rs
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 AssistantImageRef values.Default enabled: Yes when builtins are on and the runtime-backed session has image-generation machine, executor, planner, and blob-store wiring.
request
Object
required
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.
Common request:
{
  "request": {
    "intent": "generate",
    "prompt": "a cozy tabby cat by a sunlit window",
    "size": "1024x1024",
    "quality": "auto",
    "format": "png",
    "count": 1,
    "provider": "openai"
  }
}
Targets: 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 the comms 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 a collaboration message to a trusted peer.Default enabled: Yes (when comms is active)
to
String
required
Peer name to send to.
body
String
required
Message content.
handling_mode
String
required
Use "queue" for ordinary delivery or "steer" for immediate steer processing on runtime-backed sessions.
{ "status": "sent" }
Source: meerkat-comms/src/mcp/tools.rs
Send a structured request to a trusted peer. Use when you want explicit intent + params and a correlated response via send_response.Default enabled: Yes (when comms is active)
to
String
required
Peer name to send to.
intent
String
required
Request intent/action identifier (e.g., "review", "delegate").
params
any
default:"null"
Request parameters.
handling_mode
String
required
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.
{ "status": "sent" }
Source: meerkat-comms/src/mcp/tools.rs
Send a response to a previously received request from a trusted peer.Default enabled: Yes (when comms is active)
to
String
required
Peer name to send to.
in_reply_to
String (UUID)
required
ID of the request being responded to.
status
String
required
Response status: "accepted", "completed", or "failed".
result
any
default:"null"
Response result data.
{ "status": "sent" }
Source: meerkat-comms/src/mcp/tools.rs
List all discoverable peers and their connection status.Returns configured trusted peers (TrustedPeers), excluding the current agent (“self”) by public key.Default enabled: Yes (when comms is active)Parameters: None (empty object).
{
  "peers": [
    {
      "name": "agent-beta",
      "peer_id": "<derived-peer-id>",
      "address": "tcp://127.0.0.1:4200"
    }
  ]
}
Source: meerkat-comms/src/mcp/tools.rsPeersInput

Cargo feature gates

Tool availability depends on compile-time features in the meerkat-tools crate:
FeatureDefaultDependenciesTools unlocked
commsYesdep:meerkat-commssend_message, send_request, send_response, peers
mcpYesdep:meerkat-mcpExternal MCP tool routing (not builtin tools)
The 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