Skip to content

Tools of the model

The model calls these tools with your permissions; Tatu has no per-tool permission gates.

Tool What it does Main parameters See
bash Run a shell command in the project; each call starts a fresh shell with no stdin. Background execution is available only in interactive sessions. Required command; optional timeout in seconds, run_in_background when available Background tasks
read Read text or attach an image; long text can be read in ranges. A path that does not exist is answered with close names or with what the nearest folder holds. Required path; optional offset (1-based line), limit Images
write Create a file and parent folders, or overwrite a file already read and unchanged since. Required path, content (file_text is accepted for it) Security and trust
edit Replace exact text in a file already read; all replacements must match and not overlap. Required path, edits; each edit has oldText, newText, optional replaceAll. An oldText and newText beside edits count as one more edit Security and trust
grep Search file contents with a Go regular expression or literal text; respect .gitignore and skip binary files. Required pattern; optional path, glob, ignoreCase, literal, context, limit Your first session
find Find paths by glob, respecting .gitignore. Required pattern; optional path, limit Your first session
web_search Search third-party services for titles, URLs and snippets; queries leave your computer. Required query; optional limit (default 8, maximum 20) The web
web_fetch Read a page as Markdown; save large pages locally or ask a small model a question about the page. Private addresses are never sent to third-party readers. Required url; optional prompt The web
agent Give a subagent a task and receive its report; it has its own conversation and cannot start another subagent or ask you questions. Required description, prompt; optional type, model (fast, balanced, main), step Subagents
ask_user Ask you 1–4 multiple-choice questions, with 2–5 options each and a write-your-own-answer row; interactive sessions only. Required questions; each has question, options with label; optional header, multiSelect, option description and preview Your first session
preview Share a local web app with the Tatu app or a paired remote terminal: start runs the dev server as a background task, waits for its port, checks the HTTP response at / and publishes it; publish shares a server that already runs (it fails when nothing listens); revoke and list. Interactive main agent only, not subagents. Publication is explicit; starting a server separately grants no access. It does not validate rendering or monitor server health. Required action (start, publish, revoke, list); start requires command, optional cwd, port, extra_ports, name; publish requires port, optional extra_ports (up to three other servers the page calls), name; revoke requires id (publication ID or all); list takes no other parameters The app
plan_write Replace the plan with a goal and 2–15 steps; keep the status of retained step IDs. Required goal, steps; step id, title, with optional detail, files, dependsOn, verify, parallel, parallelWhy, status; optional askApproval (ask you to approve the plan, as /plan does) and approval (the words of that question) Planning
plan_update Change step statuses in order, enforcing dependencies and parallel-work rules. Required updates; each has id, status (pending, in_progress, completed, cancelled), optional note Planning
task_output Inspect a background task and the end of its output, optionally waiting for it or for a line of its output; interactive sessions only. Required task_id; optional block, timeout (default 30 seconds, maximum 600), until (with block: a regular expression; return as soon as the output matches, such as a server’s ready line) Background tasks
task_stop Stop a background task and its child processes; interactive sessions only. Required task_id Background tasks
codemode Run a JavaScript program in an isolated sandbox that calls the other tools (tools.<name>(args)), so many calls and their intermediate results cost one step; only what the program prints comes back. Calls go through your hooks like the model’s own, and a program can keep small values between runs with store and load. Turn it off with codemode.enabled. Required code; an optional first line // @options: {"max_output_tokens": 10000, "timeout_ms": 300000} Programs
mcp__<server>__<tool> A tool of an MCP server you configured; one entry per tool. The server’s own parameters MCP servers