Tools

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

File Operations

bash

Runs shell commands. Use it for git, builds, tests, and anything else you'd type in a terminal. Not for reading or writing files.

ParameterTypeRequiredDefaultDescription
commandstringyesThe bash command to execute
descriptionstringnoShort description (3-5 words)
timeoutu64no120Timeout in seconds
workdirstringnocwdWorking directory

read

Reads a file or directory listing. Output includes 1-indexed line numbers for precise references.

ParameterTypeRequiredDefaultDescription
pathstringyesAbsolute path to file or directory
offsetusizenoStart line (1-indexed)
limitusizeno2000Max lines to read

write

Overwrites a file with new content. Creates parent directories if needed.

ParameterTypeRequiredDescription
pathstringyesAbsolute path
contentstringyesComplete file content

edit

Finds an exact string in a file and replaces it. The match must be unique unless replace_all is set.

ParameterTypeRequiredDefaultDescription
pathstringyesAbsolute path
old_stringstringyesExact string to find
new_stringstringyesReplacement string
replace_allboolnofalseReplace all occurrences

multiedit

Applies multiple replacements to the same file atomically. Edits run in sequence, each seeing the result of the previous. If any edit fails, nothing is written.

ParameterTypeRequiredDescription
pathstringyesAbsolute path
editsarrayyesArray of {old_string, new_string, replace_all?}

glob

Finds files matching a glob pattern. Respects .gitignore and returns results sorted by modification time (newest first).

ParameterTypeRequiredDefaultDescription
patternstringyesGlob pattern (e.g. **/*.rs)
pathstringnocwdDirectory to search

grep

Searches file contents with regex. Respects .gitignore. Results are grouped by file and sorted by modification time.

ParameterTypeRequiredDefaultDescription
patternstringyesRegex pattern
pathstringnocwdDirectory to search
includestringnoFile glob filter (e.g. *.rs)

index

Returns a compact skeleton of a source file: imports, type definitions, and function signatures, all with line numbers. Uses 70-90% fewer tokens than reading the full file. Powered by tree-sitter, supports 15+ languages.

ParameterTypeRequiredDescription
pathstringyesAbsolute path

Execution & Control

batch

Runs 1 to 25 independent tool calls in parallel. Partial failures don't block the rest. Useful when reading multiple files or running unrelated lookups at once.

ParameterTypeRequiredDescription
tool_callsarrayyesArray of {tool, parameters}

code_execution

Runs Python in a sandboxed interpreter. All tools are available as async functions inside the sandbox, so the agent can chain calls, filter results, or do light data processing in one round trip.

ParameterTypeRequiredDefaultDescription
codestringyesPython code (must await tool calls)
timeoutu64no30Timeout in seconds (max 300)

question

Asks the user a question. Can present predefined options for single or multi-select answers.

ParameterTypeRequiredDescription
questionsarrayyesArray of question objects with question, options, multiple

External

webfetch

Fetches the contents of a URL. HTTP is upgraded to HTTPS automatically. Max response size is 5MB.

ParameterTypeRequiredDefaultDescription
urlstringyesURL to fetch
formatstringnomarkdownOutput format: markdown, text, html
timeoutu64no30Timeout in seconds

websearch

Searches the web via Exa AI. Useful for real-time information not available in the codebase.

ParameterTypeRequiredDefaultDescription
querystringyesSearch query
num_resultsu64no8Number of results

Agent & Knowledge

task

Runs a sub-agent on an independent task. Research agents are read-only; general agents get full tool access. Model tier is configurable, so lightweight tasks don't use expensive models.

ParameterTypeRequiredDefaultDescription
descriptionstringyesShort task description (3-5 words)
promptstringyesDetailed prompt
subagent_typestringnoresearchresearch (read-only) or general
model_tierstringnocurrentstrong, medium, or weak

todowrite

Creates or updates a todo list for tracking multi-step work. Each item has a content string, a status, and a priority.

ParameterTypeRequiredDescription
todosarrayyesArray of {content, status, priority}

memory

A persistent, project-scoped scratchpad. Used to save learnings, patterns, and decisions that should survive across sessions.

ParameterTypeRequiredDescription
commandstringyesview, write, or delete
pathstringnoRelative path (omit to list all)
contentstringnoContent for write

skill

Loads a named skill, giving the agent detailed instructions for a specific kind of task. Skills are focused, reusable, and opinionated.

ParameterTypeRequiredDescription
namestringyesSkill name