Tools reference·
21 tools in 12 modules, generated from the @tool functions in tools/ at every docs build (scripts/tooldoc.py): signatures come from the AST, descriptions from the docstrings the model itself reads. If a page here disagrees with the robot, the docstring is wrong — fix it there.
| module | tools | what it covers |
|---|---|---|
| Motion | rover_move rover_stop rover_lamp |
raw drive primitives — move (linear/angular for a duration), stop, and the sync/async contract every persona relies on |
| Navigate | rover_navigate |
one call → a whole sequence of timed move steps (speed presets, room loops); every /control frame still passes the thinker drive-off gate |
| Async motion | rover_async |
a background motion queue that streams /control frames without blocking the agent — fluid movement while it keeps thinking |
| Camera | rover_see rover_screenshot |
grab a front/rear frame, ask the vision model a question about it, screenshot the dashboard |
| State & speaker | rover_state rover_speak |
battery, GPS, IMU, RPMs from the SDK's /data snapshot — and the onboard speaker (/speak) |
| Pose | rover_pose |
dead-reckoning {x, y, yaw} in the RoomPlan frame — IMU heading + commanded velocities, so Scout knows roughly where it is |
| Room map | room_map |
turns an Apple RoomPlan .usdz scan into a compact spatial prompt block (named objects + bounding boxes) |
| Record & controller | start_recording stop_recording recording_status controller_start controller_stop controller_status |
start/stop LeRobot v3 episode recording and the PS4 controller teleop loop — every drive becomes training data |
| Memory | rover_memory |
the cross-persona SQLite brain: remember, recall, forget |
| Telegram | telegram |
send text and photos to the owner's chat from any persona |
| Voice bridge | voice_say |
text → the voice persona's speaker from the text personas |
| Fleet (tiny.technology MCP) | use_device |
use_device and the other fleet tools, mounted only when TINY_MCP=1 — with the self-refusal guard |
Who gets what·
tools/__init__.py assembles ROVER_ALL_TOOLS (vision · motion · state · spatial · memory · recording · controller · comms · Cosmos when a GPU + SCOUT_ENABLE_COSMOS=1 make COSMOS_AVAILABLE true). Every persona gets that same list:
agent.build_agent()— REPL, dashboard Ask, Telegram, thinker and/api/chat:ROVER_ALL_TOOLS+voice_say+ anyextra_tools.voice_agent.build_voice_agent()— the bidi voice persona:ROVER_ALL_TOOLS+stop_conversation.mcp_server_entry.py— exposesROVER_ALL_TOOLSto MCP clients;--tools a,b/--skip cfilter it.
Fleet tools (use_device, tiny_recall, tiny_learn, …) ride along only when TINY_MCP=1 and the persona is in TINY_MCP_PERSONAS, never on a turn that itself arrived from another device (fleet=True) — see Fleet.