Tools

Maki ships with 19 built-in tools. This is the full reference.

File Operations

bash (lua plugin)

Execute a bash command. Commands run in by default.

ParameterTypeRequiredDefaultDescription
commandstringyesThe bash command to execute
descriptionstringnoShort description (3-5 words) of what the command does
timeoutintegerno120Timeout in seconds
workdirstringnocwdWorking directory

read (lua plugin)

Read a file or directory. Returns contents with line numbers (1-indexed).

ParameterTypeRequiredDescription
limitintegernoMax number of lines to read. Omitting the limit reads up to 2000 lines.
offsetintegernoLine number to start from (1-indexed)
pathstringyesAbsolute path to the file or directory

write (lua plugin)

Write content to a file, replacing existing content.

ParameterTypeRequiredDescription
contentstringyesThe complete file content to write
pathstringyesAbsolute path to the file

edit (lua plugin)

Replace an exact string match in a file.

ParameterTypeRequiredDefaultDescription
new_stringstringyesReplacement string
old_stringstringyesExact string to find (must match uniquely unless replace_all is true)
pathstringyesAbsolute path to the file
replace_allbooleannofalseReplace all occurrences

multiedit (lua plugin)

Make multiple find-and-replace edits to a single file atomically. Prefer this over edit when making multiple changes to the same file.

ParameterTypeRequiredDescription
editsarrayyesArray of edit operations to apply sequentially
pathstringyesAbsolute path to the file

edit_lines (lua plugin, opt-in)

Edit lines by number. Omit end to insert before start without removing lines. Set end to replace or delete (empty new_string) a range.

ParameterTypeRequiredDescription
endintegernoLast line, inclusive. Omit to insert before start without removing lines.
new_stringstringyesReplacement text
pathstringyesAbsolute path to the file
startintegeryesFirst line (1-indexed)

glob (lua plugin)

Find files by glob pattern.

ParameterTypeRequiredDefaultDescription
pathstringnocwdDirectory to search in
patternstringnoGlob pattern (e.g. /*.rs, src//*.ts)

grep (lua plugin)

Search file contents using regex.

ParameterTypeRequiredDefaultDescription
context_afterintegernoContext lines after match
context_beforeintegernoContext lines before match
includestringnoFile glob filter (e.g. *.c)
limitintegernoMax match groups to return
pathstringnocwdDirectory to search in
patternstringyesRegex pattern

index (lua plugin)

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.

ParameterTypeRequiredDescription
pathstringyesAbsolute path to the file

view_image (lua plugin)

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.

ParameterTypeRequiredDescription
pathstringyesPath to the image file

Execution & Control

batch (native)

Executes multiple independent tool calls concurrently to reduce round-trips.

ParameterTypeRequiredDescription
tool_callsarrayyesArray of tool calls to execute in parallel

code_execution (lua plugin)

Execute Python code in a sandboxed interpreter with tools as callable functions.

ParameterTypeRequiredDefaultDescription
codestringyesPython code to execute. Tools are async functions that return strings (not objects). You MUST await every call: result = await read(path='/file'). Use await asyncio.gather(...) for concurrency.
timeoutintegerno30, max 300Timeout in seconds

question (lua plugin)

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
ParameterTypeRequiredDescription
questionsarrayyesList of questions to ask the user

Agent & Knowledge

task (lua plugin)

Launch an autonomous subagent to perform tasks independently. Best combined with batch.

ParameterTypeRequiredDescription
descriptionstringyesShort (3-5 words) description of the task
model_tierstringnoModel 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_schemastringnoJSON Schema (object) the subagent's final result must match. When set, the result is returned as a validated JSON string.
promptstringyesDetailed task prompt for the agent
subagent_typestringnoSubagent type: "research" (read-only, default) or "general" (can modify files)

todo_write (lua plugin)

Create or update a structured todo list to track tasks.

ParameterTypeRequiredDescription
todosarrayyesThe updated todo list

memory (lua plugin)

Persistent, project-scoped scratchpad for learnings, patterns, decisions, and gotchas across sessions.

ParameterTypeRequiredDescription
commandstringyesCommand: view, write, delete
contentstringnoFile content for 'write'
pathstringnoRelative path (e.g. 'architecture.md'). Omit to list all.

skill (lua plugin)

Load a skill that provides instructions and workflows for specific tasks.

ParameterTypeRequiredDescription
namestringyesName of the skill to load

Web

webfetch (lua plugin)

Fetch a URL and return its contents.

ParameterTypeRequiredDefaultDescription
formatstringnoOutput format: markdown (default), text, or html
timeoutintegerno30, max 120Timeout in seconds
urlstringyesURL to fetch (http:// or https://)

websearch (lua plugin)

Search the web for real-time information using Exa AI.

ParameterTypeRequiredDefaultDescription
num_resultsintegerno8Number of results to return
querystringyesSearch query