Tools marked with Requires Approval will show a diff or confirmation dialog before executing. The assistant cannot bypass this — you always have the final say on file modifications.
Code Editing & Exploration
10 tools for navigating and modifying your workspace.glob
glob
Find files by glob pattern.
Returns: List of matching file paths (capped at 1,000 files).Example prompt: “Find all Python files under the scripts directory.”
| Parameter | Type | Required | Description |
|---|---|---|---|
pattern | string | Yes | Glob pattern (e.g. **/*.rs, src/**/mod.rs) |
path | string | No | Directory to search from (defaults to workspace root) |
grep
grep
Search file contents with regex.
Returns: Matching lines with file paths and line numbers (capped at 500 matches).Example prompt: “Search for all usages of
| Parameter | Type | Required | Description |
|---|---|---|---|
pattern | string | Yes | Regular expression to match |
path | string | No | Directory or file to search |
glob_filter | string | No | Limit to files matching this glob |
case_insensitive | bool | No | Ignore case when matching |
spawn_entity in the Rust source.”read_file
read_file
Read a file with line numbers.
Returns: File content with line numbers.Example prompt: “Show me lines 100-200 of dispatch.rs.”
| Parameter | Type | Required | Description |
|---|---|---|---|
file_path | string | Yes | Absolute path to the file |
offset | int | No | Starting line number |
limit | int | No | Number of lines to read (default 256) |
read_file_ast
read_file_ast
AST-based file reading that chunks at function and class boundaries using Tree-sitter.
Returns: Semantic chunks of the file (functions, classes, structs) within the token budget.Example prompt: “Read the structure of window_tab.rs — just the function signatures.”
| Parameter | Type | Required | Description |
|---|---|---|---|
file_path | string | Yes | Absolute path to the file |
token_budget | int | No | Maximum tokens to return (default 1,000) |
edit_file
edit_file
Replace content in a file with 4-level fuzzy matching: exact, CRLF-normalized, whitespace-normalized, and Jaro-Winkler (80% threshold).
Returns: Confirmation with diff of the change.Example prompt: “Change the default altitude from 5 to 10 meters in the takeoff handler.”
| Parameter | Type | Required | Description |
|---|---|---|---|
file_path | string | Yes | File to edit |
old_content | string | Yes | Content to find and replace |
new_content | string | Yes | Replacement content |
write_file
write_file
Create a new file or overwrite an existing one.
Returns: Confirmation of write.Example prompt: “Create a new Python script at scripts/waypoint_mission.py with a basic MAVSDK takeoff sequence.”
| Parameter | Type | Required | Description |
|---|---|---|---|
file_path | string | Yes | Path to create or overwrite |
content | string | Yes | Full file content |
create_plan
create_plan
Create an implementation plan for user review before making changes.
Returns: The rendered plan for approval.Example prompt: “Draft a plan for adding GPS fence support to the flight controller.”
| Parameter | Type | Required | Description |
|---|---|---|---|
file_path | string | Yes | Where to save the plan |
content | string | Yes | Plan content |
title | string | Yes | Plan title |
bash
bash
Execute a shell command in the workspace directory.
Returns: stdout and stderr output.Example prompt: “Run cargo test for the lapce-rpc crate.”
| Parameter | Type | Required | Description |
|---|---|---|---|
command | string | Yes | Shell command to run |
timeout_ms | int | No | Timeout in milliseconds (default 120,000; max 300,000) |
repo_map
repo_map
Generate a PageRank-based symbol ranking across the codebase using Tree-sitter.
Returns: Ranked list of the most interconnected symbols (functions, types, traits).Example prompt: “Show me the most important symbols in the simulation module.”
| Parameter | Type | Required | Description |
|---|---|---|---|
path | string | No | Root directory (defaults to workspace) |
token_budget | int | No | Max tokens (default 1,000) |
file_patterns | list | No | Glob patterns to include |
task
task
Spawn a sub-agent with isolated context for parallel work.
| Parameter | Type | Required | Description |
|---|---|---|---|
description | string | Yes | What the sub-agent should accomplish |
prompt | string | Yes | Detailed instructions |
mode | string | Yes | "explore", "search", or "edit" |
model | string | No | Model override |
explore and search modes use Haiku for speed. edit mode uses Sonnet for accuracy.Returns: Sub-agent result.Example prompt: “Search the codebase for how MAVLink heartbeats are parsed.”Simulation Lifecycle
5 tools for launching, monitoring, and querying simulation status.start_simulation
start_simulation
Launch a PX4 SITL simulation in Docker.
Returns: Container name and initial status.Example prompt: “Start a simulation with two x500 drones in the baylands world.”
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | Yes | x500, iris, rc_cessna, standard_vtol, or r1_rover |
world | string | No | default, baylands, warehouse, or a Gazebo Fuel name |
vehicle_count | int | No | Number of vehicles (1—10) |
workspace_path | string | No | Host path to mount into the container |
list_simulations
list_simulations
Find running simulation containers.
Returns: List of containers with
| Parameter | Type | Required | Description |
|---|---|---|---|
model | string | No | Filter by vehicle model |
world | string | No | Filter by world name |
container_name, readiness_state, and metadata.Example prompt: “Are there any simulations running right now?”wait_for_simulation_ready
wait_for_simulation_ready
Block until the simulation reaches a target readiness state.
Readiness states in order:
| Parameter | Type | Required | Description |
|---|---|---|---|
container_name | string | Yes | Container to wait on |
target_state | string | No | Default ReadyToArm |
timeout_secs | int | No | Default 60, max 120 |
Launching > BridgeConnected > WorldLoaded > Rendering > AutopilotConnected > ReadyToArm > FullyOperational.Returns: Final readiness state when target is reached, or timeout error.Example prompt: “Wait until the simulation is ready to arm.”get_readiness_details
get_readiness_details
MAVLink-level diagnostics: heartbeat status, GPS fix type, EKF convergence, and arm readiness.
Runs proxy-local with no UI round-trip for minimal latency.Returns: Structured MAVLink health snapshot.Example prompt: “Why can’t I arm? Show me the readiness details.”
| Parameter | Type | Required | Description |
|---|---|---|---|
container_name | string | No | Container to query (defaults to active) |
get_simulation_state
get_simulation_state
Combined readiness, telemetry, and background task status in a single call.
Returns: Readiness state, current telemetry snapshot, and background task summary.Example prompt: “Give me a full status check of the current simulation.”
| Parameter | Type | Required | Description |
|---|---|---|---|
container_name | string | No | Container to query (defaults to active) |
Flight Control
6 tools for MAVLink-based vehicle command. All send MAVLinkCOMMAND_LONG messages to PX4.
flight_arm
flight_arm
Arm or disarm motors. Sends
Example prompt: “Arm the drone.”
MAV_CMD_COMPONENT_ARM_DISARM (400).| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target simulation |
arm | bool | Yes | true to arm, false to disarm |
flight_takeoff
flight_takeoff
Takeoff to a target altitude. Sends
Example prompt: “Take off to 15 meters.”
MAV_CMD_NAV_TAKEOFF (22).| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target simulation |
altitude_meters | float | No | Altitude in meters, 1—120 (default 5) |
flight_land
flight_land
Land at the current position. Sends
Example prompt: “Land the drone.”
MAV_CMD_NAV_LAND (21).| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target simulation |
flight_goto
flight_goto
Navigate to a waypoint in ENU coordinates. Sends
Example prompt: “Fly to position 10, 5, 20.”
MAV_CMD_DO_REPOSITION (192).| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target simulation |
x | float | Yes | East position (meters) |
y | float | Yes | North position (meters) |
z | float | Yes | Up position (meters) |
flight_set_mode
flight_set_mode
Switch PX4 flight mode. Sends
Supported modes:
MAV_CMD_DO_SET_MODE (176).| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target simulation |
mode | string | Yes | Flight mode name |
MANUAL, ALTCTL/ALTITUDE, POSCTL/POSITION, OFFBOARD, STABILIZED/STABILIZE, HOLD/LOITER, MISSION, RTL/RETURN, LAND, TAKEOFF, GUIDED (maps to POSCTL).Example prompt: “Switch to position hold mode.”flight_return_to_launch
flight_return_to_launch
Return to launch position. Sends
Example prompt: “Return to home.”
MAV_CMD_NAV_RETURN_TO_LAUNCH (20).| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target simulation |
Simulation Control
3 tools for playback, camera, and in-container command execution.sim_control
sim_control
Control simulation playback.
Example prompt: “Pause the simulation and step forward 10 frames.”
| Parameter | Type | Required | Description |
|---|---|---|---|
action | string | Yes | pause, resume, step, reset, or set_speed |
frames | int | No | Number of frames to advance (for step) |
multiplier | float | No | Speed multiplier (for set_speed) |
camera_control
camera_control
Control the 3D viewer camera.
Example prompt: “Follow the drone from an isometric angle.”
| Parameter | Type | Required | Description |
|---|---|---|---|
action_type | string | Yes | set_preset, orbit, set_distance, look_at, or follow_entity |
preset | string | No | front, back, left, right, top, bottom, isometric |
azimuth_delta | float | No | Horizontal orbit delta (for orbit) |
elevation_delta | float | No | Vertical orbit delta (for orbit) |
distance | float | No | Camera distance (for set_distance) |
x, y, z | float | No | Target point (for look_at) |
entity_name | string | No | Entity to track (for follow_entity) |
sim_exec
sim_exec
Run a command synchronously inside the simulation Docker container.
Pre-installed software: MAVSDK 2.0.1, DroneKit 2.9.2, pymavlink, ROS 2 Humble, Gazebo Harmonic, PX4 v1.16.1.Example prompt: “Run
| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target container |
command | string | Yes | Shell command to execute |
timeout_ms | int | No | Timeout (default 120,000; max 300,000) |
workdir | string | No | Working directory inside the container |
ros2 topic list inside the simulation container.”Background Tasks
6 tools for running long operations without blocking the conversation.sim_exec_background
sim_exec_background
Run a command asynchronously inside the simulation container.
Returns:
| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target container |
command | string | Yes | Shell command to execute |
timeout_ms | int | No | Timeout (max 600,000) |
workdir | string | No | Working directory inside the container |
task_id immediately. Use check_background_task or wait_for_any to get results.Example prompt: “Run the MAVSDK waypoint mission script in the background.”start_background_task
start_background_task
Start a long-running managed task.
Returns:
| Parameter | Type | Required | Description |
|---|---|---|---|
kind | string | Yes | WaitSimulationReady, AnalyzeVideo, or BashExecution |
notify_on_complete | bool | No | Whether to notify when done |
task_id.Example prompt: “Start waiting for the simulation to be ready in the background.”wait_for_any
wait_for_any
Wait for ANY of the given background tasks to complete.
Returns: The first completed task’s result.Example prompt: “Wait for either the build or the simulation startup to finish.”
| Parameter | Type | Required | Description |
|---|---|---|---|
task_ids | list | Yes | Task IDs to wait on |
timeout_ms | int | No | Timeout (default 60,000; max 300,000) |
check_background_task
check_background_task
Check the status of a background task.
Task states:
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | Yes | Task to check |
block | bool | No | Block until complete |
timeout_ms | int | No | Timeout when blocking |
Pending, Running, Complete, Failed, Cancelled.Returns: Current state and output if complete.Example prompt: “Is the waypoint mission script still running?”cancel_background_task
cancel_background_task
Cancel a running background task.
Example prompt: “Cancel the background mission script.”
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | Yes | Task to cancel |
list_background_tasks
list_background_tasks
List all background tasks with their current status.No parameters.Returns: All tasks with IDs, kinds, and states.Example prompt: “Show me all background tasks.”
Data Exploration
5 tools for inspecting live simulation data.browse_topics
browse_topics
List available data topics from the simulation.
Returns: Topic names, types, and update rates.Example prompt: “What telemetry topics are available?”
| Parameter | Type | Required | Description |
|---|---|---|---|
category | string | No | Filter: Image, PointCloud, JointState, Telemetry, Transform, Marker, Annotation, Log, LaserScan, Other |
get_telemetry
get_telemetry
Get the current telemetry snapshot: pose, velocity, battery, and flight mode.No parameters.Returns: Latest telemetry values.Example prompt: “What’s the drone’s current altitude and battery level?”
get_telemetry_samples
get_telemetry_samples
Read time-series data for a telemetry channel.
Returns: Auto-downsampled ring buffer data with min, max, unit, and time range.Example prompt: “Plot the altitude over the last 30 seconds.”
| Parameter | Type | Required | Description |
|---|---|---|---|
channel_path | string | Yes | Channel name (supports suffix matching, e.g. position.z) |
max_samples | int | No | Max data points (default 200, max 1,000) |
query_scene_graph
query_scene_graph
Query the entity hierarchy from the 3D viewer.
Returns: Entity list with
| Parameter | Type | Required | Description |
|---|---|---|---|
path_prefix | string | No | Filter to a subtree (e.g. /world/default/x500_0) |
entity_id, path, and parent_path.Example prompt: “Show me all entities under the x500 model.”query_tf_tree
query_tf_tree
Query the transform (TF) hierarchy or look up a specific frame transform.
Hierarchy mode (no args): returns the full parent-child frame tree. Lookup mode (with frames): returns a 4x4 transform matrix.Example prompt: “What’s the transform from the base_link to the camera frame?”
| Parameter | Type | Required | Description |
|---|---|---|---|
source_frame | string | No | Source coordinate frame |
target_frame | string | No | Target coordinate frame |
time | float | No | Timestamp for the lookup |
Vision & Recording
5 tools for visual capture and AI-powered analysis.capture_screenshot
capture_screenshot
Capture a PNG screenshot of the 3D viewer. Returns binary image content directly (bypasses output truncation).No parameters.Returns: PNG image as
BinaryContent.Example prompt: “Take a screenshot of the viewer.”analyze_screenshot
analyze_screenshot
Capture a screenshot and analyze it with Gemini vision.
Returns: Vision model analysis of the captured frame.Example prompt: “Take a screenshot and check if the drone is hovering level.”
| Parameter | Type | Required | Description |
|---|---|---|---|
prompt | string | Yes | What to look for in the image |
start_recording
start_recording
Begin video recording of the 3D viewer.
Returns: Confirmation that recording started.Example prompt: “Start recording the viewer for 20 seconds.”
| Parameter | Type | Required | Description |
|---|---|---|---|
max_duration_secs | int | No | Maximum duration (default 30, max 30) |
stop_recording
stop_recording
Stop the current video recording.No parameters.Returns: Path to the saved video file.Example prompt: “Stop recording.”
analyze_video
analyze_video
Analyze a recorded video with Gemini vision.
Videos under 5 MB use frame extraction. Videos 5 MB and above are uploaded via the Gemini File API.Example prompt: “Analyze the recording and tell me if the landing was smooth.”
| Parameter | Type | Required | Description |
|---|---|---|---|
video_path | string | Yes | Path to the video file |
prompt | string | Yes | What to analyze |
background | bool | No | Run analysis as a background task |
Scene Authoring
3 tools for modifying the simulation scene at runtime.spawn_entity
spawn_entity
Spawn a Gazebo model into the scene.
Example prompt: “Spawn a construction barrel at position 5, 3, 0.”
| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target simulation |
model_id | string | Yes | Gazebo model identifier |
entity_name | string | Yes | Name for the spawned entity |
x, y, z | float | Yes | Spawn position (meters) |
remove_entity
remove_entity
Remove an entity from the scene.
Example prompt: “Remove the barrel I just spawned.”
| Parameter | Type | Required | Description |
|---|---|---|---|
simulation_id | string | Yes | Target simulation |
entity_id | string | Yes | Entity to remove |
get_followable_entities
get_followable_entities
List entities that have dynamic pose updates (suitable for camera follow).No parameters.Returns: Entity names with active pose streams.Example prompt: “Which entities can I follow with the camera?”
Web
1 tool for fetching external content.fetch
fetch
Fetch a URL with pagination support.
Returns: Fetched content as Markdown or raw text.Example prompt: “Fetch the PX4 parameter reference for EKF2_HGT_REF.”
| Parameter | Type | Required | Description |
|---|---|---|---|
url | string | Yes | URL to fetch |
max_length | int | No | Max content length (default 5,000) |
start_index | int | No | Pagination offset (default 0) |
raw | bool | No | Return raw response (for JSON APIs); otherwise HTML is converted to Markdown |
Safety & Security
- User Approval
- Execution Boundaries
- Model Tiers
Two tools require explicit user approval before executing:
The assistant cannot modify files without your confirmation. Edits are presented as diffs in the chat panel so you can accept, reject, or request changes.
| Tool | Approval Type |
|---|---|
edit_file | Diff shown for review |
write_file | Full content shown for review |