Toad docs
Reference

Reference

Commands, MCP tools, the handoff format, where Toad keeps things, and the settings you can change.

Commands#

Command
toad setupPrepare or repair everything Toad needs. Flags: --yes, --no-register, --skip-browser, --skip-image, --force
toad doctorCheck the agent, model key, browser, CLI sandbox and coding agents
toad updateInstall the latest version from GitHub and prepare it
toad mcpThe MCP server; coding agents start it
toad ui [--port <port>]The run viewer
toad projects [forget <path>]The projects the viewer shows

MCP tools#

ToolWhat it does
get_toad_guideReturns the guide for coding agents
setup_projectCreates .toad/ in a project (never overwrites files) and adds it to the viewer’s list
run_project_testRuns a handoff in a set-up project; results go to .toad/runs/<id>/
run_web_test, run_cli_testLegacy: tests without a project, using a shared secrets store

Handoff#

run_project_test takes project_path (absolute, no symlinks), a handoff, and optionally timeout_minutes and screenshots. With inline, the default, it attaches up to 8 images; with paths it returns only file paths.

{
  "version": 1,
  "kind": "web",
  "target": { "url": "http://localhost:3000" },
  "request": {
    "goal": "Check sign-in",
    "scenarios": [
      { "name": "Sign in", "steps": "Open sign-in, enter the test login", "expected": "The dashboard is shown" }
    ]
  },
  "credentials": {
    "email": { "env": "TOAD_TEST_EMAIL" },
    "password": { "env": "TOAD_TEST_PASSWORD" }
  },
  "limitations": ["Use test data only"]
}

For "kind": "cli", the target is:

{ "workdir": "/abs/path", "program": "node dist/cli.js", "image": "node:22-bookworm" }

image is optional. Fields left out of target, and the timeout, come from toad.yaml; the handoff wins where both are set. Without scenarios, Toad derives them from the goal.

Result#

The result has the report as text and as structured content:

Field
verdictPASS, FAIL, ERROR, or UNKNOWN when the report has none
statusHow the run itself ended: ok, timeout, blocked, cancelled, error, configuration_error
runIdThe run’s folder name under .toad/runs/
receiptsThe receipts folder
files, screenshotsPaths to what the run produced

A run that could not complete is a tool error; a failing test is not.

Where things live#

Toad is installed once; everything about a project stays in that project.

WhereWhat
<project>/.toad/defaults, secret values, runs
~/.config/toad/projects.json (the viewer’s list), credentials.json (the model key)
~/.local/share/toad/agent/<version>/the prepared agent; older versions are removed on update
~/.cache/toad/scenarios/CLI workspaces, removed after 7 days unused
$XDG_RUNTIME_DIR/toad/run slots and per-run secret files (falls back to a private folder in the system temp directory)

On Windows these are under %APPDATA%\toad and %LOCALAPPDATA%\toad.

Settings#

Environment variables, set where the MCP server is registered:

VariableDefault
DEEPSEEK_API_KEYthe saved keyThe model key; overrides the one toad setup saved
TOAD_MAX_CONCURRENT_RUNS2Runs at once across every Toad server on the machine; further calls wait
TOAD_CLI_SANDBOXautocontainer, bwrap, or auto (a running container runtime, else Bubblewrap)
TOAD_CONTAINER_RUNTIMEfirst that answersdocker or podman
TOAD_CLI_IMAGEnode:22-bookwormImage for CLI tests when the project does not set one
TOAD_COMMAND_TIMEOUT_S120Time limit for each CLI command
TOAD_SCENARIO_TTL_DAYS7When unused CLI workspaces are removed; 0 keeps them
TOAD_CONFIG_DIR, TOAD_DATA_DIR, TOAD_CACHE_DIR, TOAD_RUNTIME_DIRsee aboveMove Toad’s per-user folders
TOAD_AGENT_DIRthe prepared agentUse an agent somewhere else