built-in tools
every tool an agent can use out of the box. enable them in tools: in the .agent.md frontmatter.
fs — filesystem
fs.read(path)— read a file. returns string + metadata.fs.write(path, content)— create or overwrite. versioned automatically.fs.append(path, content)— append text.fs.glob(pattern)— list files matching glob./parts/*.part.md.fs.stat(path)— size, mtime, kind.fs.mv(from, to)— move / rename.fs.rm(path)— soft delete into trash.fs.mkdir(path)— make a directory.fs.history(path)— list versions.
llm — language model calls
llm.complete(prompt, opts?)— single-shot completion. returns string.llm.chat(messages, opts?)— multi-turn.llm.embed(text)— embedding vector.llm.vision(image_path, prompt)— vision model call.
model defaults to the agent's frontmatter model. override in opts.model.
web — http
web.fetch(url, opts?)— http get/post. returns body.web.search(query)— web search via our provider.web.screenshot(url)— headless screenshot, saved to /tmp.
shell — sandboxed subprocess
only on runner seats. shell.exec(cmd) runs inside a disposable container with the drive mounted. network configurable via agent frontmatter.
git
git.status()— for projects linked to an external repogit.commit(msg)— commits staged changesgit.diff(path)— diff for a path
notify
notify.inbox(msg)— drop a message in the users inboxnotify.email(to, subject, body)— sends email (team tier only)notify.webhook(name, payload)— fires a configured webhook
cad — parametric geometry
cad.create(jsx)— compile declarative jsx to geometrycad.export(part, format)— step / stl / igescad.sim(part, sim_config)— dispatch a vibeSIM run
pcb
pcb.route(net)— auto-routepcb.drc()— design rule checkpcb.export(format)— gerber / drill / pos
custom tools
drop a .ts file in /.vibe/tools/ that exports a typed function:
export async function crmSync(input: { leadId: string }) {
// your impl, runs on runner seat
return { ok: true }
}
it becomes custom.crmSync in the tool registry automatically.