Skip to content

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 + any extra_tools.
  • voice_agent.build_voice_agent() — the bidi voice persona: ROVER_ALL_TOOLS + stop_conversation.
  • mcp_server_entry.py — exposes ROVER_ALL_TOOLS to MCP clients; --tools a,b / --skip c filter 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.