Tools
Makima ships with 26 built-in tools in this reference (24 on by default, 2 opt-in via plugin options). Tools marked opt-in are off until you enable them under plugins in Configuration.
File Operations
bash
Execute a bash command.
Commands run in
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
command | string | yes | The bash command to execute | |
description | string | no | Short description (3-5 words) of what the command does | |
timeout | integer | no | 120 | Timeout in seconds |
workdir | string | no | cwd | Working directory |
list
List directory contents. Returns entry names sorted alphabetically, directories first with a trailing /.
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | Absolute path to the directory |
read
Read a file. Returns contents with line numbers (1-indexed).
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | integer | yes | Max number of lines to read. Use 0 to read until end of file (capped at 2000 lines). |
offset | integer | yes | Line number to start from (1-indexed). Use 1 for the first line. |
path | string | yes | Absolute path to the file |
write
Write content to a file, replacing existing content.
| Parameter | Type | Required | Description |
|---|---|---|---|
content | string | yes | The complete file content to write |
path | string | yes | Absolute path to the file |
edit
Replace an exact string match in a file.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
new_string | string | yes | Replacement string | |
old_string | string | yes | Exact string to find (must match uniquely unless replace_all is true) | |
path | string | yes | Absolute path to the file | |
replace_all | boolean | no | false | Replace all occurrences |
multiedit
Make multiple find-and-replace edits to a single file atomically. Prefer this over edit when making multiple changes to the same file.
| Parameter | Type | Required | Description |
|---|---|---|---|
edits | array | yes | Array of edit operations to apply sequentially |
path | string | yes | Absolute path to the file |
edit_lines opt-in
Edit lines by number. Replaces lines from start to end (inclusive) with new_string. Use empty new_string to delete a range. Do not use with the batch tool.
| Parameter | Type | Required | Description |
|---|---|---|---|
end | integer | yes | Last line, inclusive |
new_string | string | yes | Replacement text |
path | string | yes | Absolute path to the file |
start | integer | yes | First line (1-indexed) |
insert_lines opt-in
Insert new_string after line line, or at the top with 0. Only include new lines, never lines already in the file. Do not use with the batch tool.
| Parameter | Type | Required | Description |
|---|---|---|---|
line | integer | yes | Line number to insert after (1-indexed). Use 0 to insert at the top. |
new_string | string | yes | Text to insert |
path | string | yes | Absolute path to the file |
glob
Find files by glob pattern.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path | string | no | cwd | Directory to search in |
pattern | string | yes | Glob pattern (e.g. /*.rs, src//*.ts) |
grep
Search file contents using regex.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
context_after | integer | no | Context lines after match | |
context_before | integer | no | Context lines before match | |
include | string | no | File glob filter (e.g. *.c) | |
limit | integer | no | Max match groups to return | |
path | string | no | cwd | Directory to search in |
pattern | string | yes | Regex pattern |
index
Return a compact overview of a source file: imports, type definitions, function signatures, and structure with their line numbers surrounded by []. ~70-90% more efficient than reading the full file.
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | Absolute path to the file |
view_image
View an image file (png, jpeg, gif, webp) so you can actually see it; it is returned as vision input alongside the tool result. Use instead of read for images.
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | yes | Path to the image file |
Execution & Control
batch
Executes multiple independent tool calls concurrently to reduce round-trips.
| Parameter | Type | Required | Description |
|---|---|---|---|
tool_calls | array | yes | Array of tool calls to execute in parallel |
code_execution
Execute Python code in a sandboxed interpreter with tools as callable functions.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
code | string | yes | Python code to execute. Tools are async functions that return strings (not objects). You MUST await every call: result = await read(path='/file', offset=1, limit=0). Use await gather(...) for concurrency. | |
timeout | integer | no | 30 | Script execution timeout in seconds |
plan_submit
Submit the finished plan for user review in the interactive UI.
| Parameter | Type | Required | Description |
|---|
question
Use this tool when you need to ask the user questions during execution. This allows you to:
- Gather user preferences or requirements
- Clarify ambiguous instructions
- Get decisions on implementation choices as you work
- Offer choices to the user about what direction to take
| Parameter | Type | Required | Description |
|---|---|---|---|
questions | array | yes | List of questions to ask the user |
Agent & Knowledge
task
Launch an autonomous subagent to perform tasks independently. Best combined with batch.
| Parameter | Type | Required | Description |
|---|---|---|---|
description | string | yes | Short (3-5 words) description of the task |
model_tier | string | no | Model tier (optional, omit to use current model, capped at current tier): - "strong" (e.g. Opus): Deep reasoning, complex architecture, subtle bugs, most critical sections. ~5x cost of medium. - "medium" (e.g. Sonnet): Balanced. Refactors, features, multi-file changes. - "weak" (e.g. Haiku): Fast/cheap. Search, summarize, boilerplate, simple edits. |
output_schema | string | no | JSON Schema (object) the subagent's final result must match. When set, the result is returned as a validated JSON string. |
prompt | string | yes | Detailed task prompt for the agent |
subagent_type | string | no | Subagent type: "research" (read-only, default), "general" (can modify files), or "plan_reviewer" (read-only plan audit, plan mode only) |
task_spawn
Start a background subagent and return its task_id immediately. Each task's messages run FIFO, acquiring concurrency capacity only when each turn starts. The result is returned automatically when the subagent finishes, so wait for the reply instead of polling task_get. Queue messages with task_send and finish with task_despawn. Also callable from a code_execution script as a Python async function.
| Parameter | Type | Required | Description |
|---|---|---|---|
description | string | yes | Short (3-5 words) description of the task |
model_tier | string | no | Model tier (optional, omit to use current model, capped at current tier): - "strong" (e.g. Opus): Deep reasoning, complex architecture, subtle bugs, most critical sections. ~5x cost of medium. - "medium" (e.g. Sonnet): Balanced. Refactors, features, multi-file changes. - "weak" (e.g. Haiku): Fast/cheap. Search, summarize, boilerplate, simple edits. |
output_schema | string | no | JSON Schema (object) the subagent's final result must match. When set, the result is returned as a validated JSON string. |
prompt | string | yes | Detailed task prompt for the agent |
subagent_type | string | no | Subagent type: "research" (read-only, default), "general" (can modify files), or "plan_reviewer" (read-only plan audit, plan mode only) |
task_get
Poll a background subagent. Returns { status = "running" | "done" | "closed", result?, error? }. Normally unnecessary: a spawned subagent's result arrives automatically, so wait for that reply instead of polling task_get. Does not block the main agent. Also callable from a code_execution script as a Python async function.
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | yes | Task id returned by task_spawn. |
task_send
Queue a message to a background subagent in per-task FIFO order and return immediately. A done subagent processes it as a new turn, acquiring concurrency capacity when the turn starts. Returns { queued = true }, or a session error if queueing fails. Also callable from a code_execution script as a Python async function.
| Parameter | Type | Required | Description |
|---|---|---|---|
message | string | yes | Message to queue to the subagent. A done subagent restarts on the next turn. |
task_id | string | yes | Task id returned by task_spawn. |
task_despawn
Cancel a background subagent, discard messages not yet admitted, flush its chat transcript, and release active turn permits. Returns { ok = true }. Also callable from a code_execution script as a Python async function.
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | yes | Task id returned by task_spawn. |
todo_write
Create or update a structured todo list to track tasks.
| Parameter | Type | Required | Description |
|---|---|---|---|
todos | array | yes | The updated todo list |
memory
Persistent, project-scoped scratchpad for learnings, patterns, decisions, and gotchas across sessions.
| Parameter | Type | Required | Description |
|---|---|---|---|
command | string | yes | - list [tags]: tag-grouped index, no bodies.- read path|tags: one body (path) or collated bodies (tags).- write path tags content: create or overwrite a note.- delete path |
content | string | no | Body for write (frontmatter added automatically). |
path | string | no | Relative path, e.g. 'architecture.md'. |
tags | array | no | snake_case tags. Filter for list/read; assigned on write (defaults to filename stem). |
skill
Load a skill that provides instructions and workflows for specific tasks.
| Parameter | Type | Required | Description |
|---|---|---|---|
name | string | yes | Name of the skill to load |
Web
webfetch
Fetch a URL and return its contents.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
format | string | no | Output format: markdown (default), text, or html | |
timeout | integer | no | 30, max 120 | Timeout in seconds |
url | string | yes | URL to fetch (http:// or https://) |
websearch
Search the web for real-time information using Exa AI.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
num_results | integer | no | 8 | Number of results to return |
query | string | yes | Search query |