tota ships with 70+ built-in tools, grouped into capability areas.

Filesystem

ToolDescription
read_fileRead file contents with optional line range
write_fileWrite or overwrite a file
create_fileCreate a new file
edit_fileApply a targeted string replacement edit to an existing file
delete_fileDelete a file
list_dirList directory contents
send_fileSend a file to the user (Telegram or API channel)
approve_scopeApprove a filesystem path for read or write access
find_filesAdvanced file finder — search by glob pattern, content keyword, file type, date range, and size. Recurses up to depth 6, skips node_modules/.git/dist.

Document Readers

ToolDescription
read_pdfExtract text, page count, and metadata from a PDF file
read_excelRead an Excel / CSV file and render as a markdown table or JSON (supports .xlsx, .xls, .ods, .csv)
write_excelCreate an .xlsx file from provided rows and headers, with auto-sized columns and bold header row
read_docxExtract plain text or HTML from a Word .docx file

All document tools use permission-gated filesystem access and dynamic imports — tota starts normally even without the optional packages installed.

Browser Automation

tota supports three browser engines via Playwright — Chromium (default), Firefox, and WebKit (Safari-compatible). The browser opens as a visible window on your desktop by default.

ToolDescription
browser_openOpen a URL in the browser; returns page title, URL, and visible text
browser_clickClick an element by CSS selector or visible text
browser_typeType text into an input field (click-to-focus + fill; SPA-safe for Google, Gmail, etc.)
browser_keyPress a keyboard key — Enter, Tab, Escape, ArrowDown, combos like Control+a
browser_waitWait for a CSS selector to appear or for page navigation to complete
browser_screenshotTake a full-page or element screenshot and send it to the user
browser_extractExtract text or attribute values from elements matching a CSS selector
browser_scrollScroll the page up, down, to the top, or to the bottom
browser_closeClose the browser session and free resources
browser_engineSwitch the active browser engine (chromium / firefox / webkit)

Install browser binaries once:

npx playwright install chromium firefox webkit
# or via the wizard:
tota setup browser

Set BROWSER_ENGINE=firefox (or webkit) in ~/.tota/.env to change the default engine. Set PLAYWRIGHT_HEADLESS=true to run without a visible window (CI/server environments).

Computer-Use (Desktop Control)

Enable with COMPUTER_USE_ENABLED=true in ~/.tota/.env (or capabilities.computer.enabled: true in tota.yaml).

Desktop

ToolDescription
computer_screenshotCapture the full screen or a region; save to a temp file
computer_seeScreenshot + immediate vision AI analysis — understand what's on screen before acting
computer_clickLeft, right, or double-click at pixel coordinates
computer_moveMove the cursor to coordinates
computer_typeType text at the current keyboard focus
computer_keyPress a key or key combo (cmd+c, ctrl+z, enter, tab, escape, arrow keys, etc.)
computer_scrollScroll up, down, left, or right at a position
computer_dragClick and drag between two screen coordinates
computer_screen_sizeGet the primary display resolution

Mouse/keyboard control uses @nut-tree-fork/nut-js (cross-platform native module). On Linux, install libxtst-dev first:

sudo apt install libxtst-dev

Android (ADB)

Android tools work via adb in your PATH — no additional Node.js packages needed.

ToolDescription
adb_devicesList connected Android devices
adb_screenshotTake a screenshot of an Android device
adb_seeAndroid screenshot + vision AI analysis
adb_tapTap at pixel coordinates on the device
adb_swipeSwipe between two coordinates (with optional duration)
adb_typeType text into the focused field on the device
adb_keySend an Android key event (3=HOME, 4=BACK, 26=POWER, 66=ENTER…)
adb_shellRun any adb shell command on the device
adb_pullPull a file from the device to the local machine
adb_pushPush a local file to the device

Shell

ToolDescription
run_commandRun a shell command with timeout and output capture
cdChange the working directory
approve_commandApprove a shell command pattern for the current session

Code Sandbox

ToolDescription
run_codeExecute a code snippet in an isolated sandbox. Supports Python, JavaScript (Node.js), Bash, TypeScript, Ruby, and Go. Output capped at 8,000 chars.

Sandbox is isolated from your working directory — use run_command for in-project commands.

Git

ToolDescription
git_statusShow working tree status
git_diffShow diffs (staged, unstaged, or between refs)
git_logShow commit history
git_commitStage and commit changes with a message
git_addStage files
git_pushPush commits to remote

GitHub

ToolDescription
create_prCreate a pull request
review_prRead PR diff and post a review
list_issuesList open issues with filters
create_issueOpen a new issue
github_apiRaw call to any GitHub REST endpoint

Web

ToolDescription
web_searchSearch the web using Brave, Serper, or Tavily (auto-detected from env keys)
read_urlFetch and extract main content from a URL

Vision

ToolDescription
analyze_imageAnalyze a local image file or image URL. Detects MIME type automatically. Supports JPEG, PNG, GIF, WebP.

Memory

ToolDescription
rememberStore a memory with type and optional scope
search_memoryFull-text search across all memories
delete_memoryDelete a specific memory by ID

Messaging

ToolDescription
send_telegram_messageSend a message to a Telegram user by ID

Scheduler

ToolDescription
schedule_taskSchedule a one-shot or recurring cron task
list_tasksList all scheduled tasks
cancel_taskCancel a scheduled task by ID

System

ToolDescription
get_current_timeReturn current datetime and timezone
delegate_taskDelegate a focused sub-task to a fresh agent instance and return its result

MCP Plugins

When MCP servers are configured, their tools appear automatically with the prefix mcp_<server>_<tool>:

mcp_filesystem_read_file
mcp_my_db_query

See MCP Plugins for setup instructions.

Tool Output Truncation

All tool outputs are capped at 12,000 characters. If a tool returns more, the output is truncated with a clear notice:

... [output truncated — 45320 chars total, showing first 12000]

This prevents token budget overflows on large file reads or command outputs.

| sleep | Wait for N seconds (use sparingly) |