Skip to main content
Glama
sandraschi

Robotics MCP Server

by sandraschi

Robotics MCP Server

πŸ“– Installation Guide β€” quick start, manual setup, and troubleshooting

Author: FlowEngineer sandraschi

One MCP server for physical robots (Dreame vacuums, Yahboom ROS, Elegoo, Nori A3), Gazebo, and virtual stacks (Unity, VRChat). FastMCP, stdio + HTTP. Optional watchfiles restarts for dev or unattended runs (not an SLA).

Doc

Contents

Technical README

Prerequisites, hardware, install, packaging, Cursor, config, composed MCPs, testing, troubleshooting

Usage and API

Tool examples, web UI, HTTP endpoints

Android Doctrine

Safety, legal, and operational standards for the android fleet

Setup Prerequisites

Unity, VRChat, peer MCP servers when you need the full stack

Crash protection (watchfiles)

Auto-restart and health checks

Status: Industrial v1.4.1 (2026-04-14) | SOTA v1.4.1 Compliance | Benny Protocol Secured.

SOTA Benny Protocol FastMCP Biome Python License

Quick Start

git clone https://github.com/sandraschi/robotics-mcp
cd robotics-mcp
just

This opens an interactive dashboard showing all available commands. Run just bootstrap to install dependencies, then just serve or just dev to start.

Manual Setup

If you don't have just installed:

Related MCP server: ROS MCP

Install

uvx robotics-mcp
pip install robotics-mcp

Development clone: see Installation in the technical README.

Contributing

See CONTRIBUTING.md.

πŸ›‘οΈ Industrial Quality Stack

This project adheres to SOTA 14.1 industrial standards for high-fidelity agentic orchestration:

  • Python (Core): Ruff for linting and formatting. Zero-tolerance for print statements in core handlers (T201).

  • Webapp (UI): Biome for sub-millisecond linting. Strict noConsoleLog enforcement.

  • Protocol Compliance: Hardened stdout/stderr isolation to ensure crash-resistant JSON-RPC communication.

  • Automation: Justfile recipes for all fleet operations (just lint, just fix, just dev).

  • Security: Automated audits via bandit and safety.

License

MIT see LICENSE.

Acknowledgments

FastMCP; ROS community; Unity3D, VRChat, World Labs Marble/Chisel; MCP ecosystem contributors.

Available Tools

25 tools
dreame_controlA

Dreame D20 Pro vacuum control with conversational responses.

Provides unified interface for Dreame vacuum operations: status, battery, water level, suction, LIDAR map, cleaning programs, zone/spot/room cleaning, and configuration.

Operations:

  • get_status: Battery, water, suction, charging state, device status

  • start_cleaning / stop_cleaning: Full-house or spot cleaning

  • return_to_dock: Return to charging dock

  • move: Manual drive (rotation, velocity)

  • play_sound: Locate robot

  • set_suction_level: Suction power 1-4

  • set_water_volume: Water flow 1-3

  • set_mop_humidity: Mop pad humidity 1-3

  • get_map: LIDAR map data (rooms, walls, robot/charger positions)

  • export_map: Export LIDAR map to OBJ/PLY/Unity/Blender formats

  • clean_zone / clean_spot / clean_room: Targeted cleaning

  • get_cleaning_history / clear_error: History and error recovery

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNoOverride token (for testing or onboard flow)
zonesNo[[x1,y1,x2,y2], ...] for clean_zone
spot_xNo
spot_yNo
room_idNoRoom ID for clean_room
robot_idNoRobot identifier (default dreame_01)dreame_01
rotationNoDegrees for move (-120 to 120)
velocityNoDistance for move (-300 to 300)
operationYesOperation to perform
ip_addressNoOverride IP (for testing or onboard flow)
output_dirNoDirectory for exports (for export_map, default: ~/dreame_maps)
mop_humidityNo1-3 for set_mop_humidity
water_volumeNo1-3 for set_water_volume
suction_levelNo1-4 for set_suction_level
export_formatsNoComma-separated: obj,ply,unity,blender,json (for export_map)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the burden of explaining side effects. It does this well by showing that it starts/stops cleaning, returns the robot to dock, drives it, exports maps, clears errors, and reports status. It lacks explicit safety, authorization, failure, or real-world movement caveats, which would be needed for a 5 given the lack of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but appropriately sized for 16 operations. It front-loads the tool’s authoritative use case and then gives a clear, ordered list of operation behaviors. Every line earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 15 parameters and 16 operations, the description is broadly complete: it explains each operation's domain and the main output categories. The output schema and the schema-level parameter descriptions remove much of the burden. However, it does not state required argument conditions, such as when `clean_zone` needs `zones` or `move` needs `rotation` and `velocity`, so those constraints remain inference rather than explicit guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers 87% of the parameters, so the baseline is 3. Description does add meaningful context beyond the schema by mapping values like suction 1-4, water 1-3, and mop humidity 1-3, but most of the parameter meaning is already in the schema and the description does not explain conditional parameter requirements between operations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence clearly names a specific resource, the Dreame D20 Pro vacuum, and a specific action domain: control. The operation list makes the scope concrete and distinguishes it from general robot/drone tools, but it does not explicitly differentiate this from the close sibling `dreame_onboard`, and much of the operation list repeats what the `operation` enum already exposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description establishes a clear context: use this as the unified interface for Dreame vacuum status, cleaning, mapping, and settings operations. It does not explicitly state when not to use it or name alternatives like `robot_control` or `dreame_onboard`, so exclusion logic is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

dreame_onboardA

Dreame D20 Pro Plus β€” DreameHome cloud setup (no local token).

This server uses the DreameHome cloud API. Set environment variables and optionally the Tasshack ref clone path. No network discovery or miio token needed.

Returns: Setup instructions and env var reference.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden. It discloses meaningful behavior: it targets DreameHome cloud rather than local APIs, requires environment variables, and explicitly rules out token-based discovery ('No network discovery or miio token needed'). It does not, however, clarify whether the tool mutates host state (writes env vars, uses the clone path) or is purely informational, leaving idempotency and side effects ambiguous.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact: a front-loaded title line, three short sentences of setup context, and a Returns line. There is minor redundancy between 'no local token' in the first line and 'No network discovery or miio token needed' in the body, but overall every sentence earns its place and the structure is scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with an output schema, the description is fairly complete: it names the device, the API used, the prerequisites, what is not needed, and what will be returned. The clear gaps are an explicit 'use this when...' statement and a note on whether the setup flow modifies the system β€” both of which matter for an agent deciding whether to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty, so there is nothing for the description to contradict. The description compensates by documenting the external configuration inputs β€” environment variables and the optional Tasshack ref clone path β€” which are the actual 'inputs' this tool consumes, going beyond what the schema could express.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Dreame D20 Pro Plus β€” DreameHome cloud setup (no local token).' It clearly differentiates this from local-discovery/miio-token flows by stating 'No network discovery or miio token needed,' which separates it from the robot-control and simulation siblings. It stops short of explicitly naming the sibling tool it is not (e.g., dreame_control), but an agent can confidently identify this as the cloud-onboarding tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: when you need to onboard a Dreame D20 via the DreameHome cloud API rather than local discovery, and it clarifies prerequisites ('Set environment variables and optionally the Tasshack ref clone path'). However, it never explicitly states when not to use it or names an alternative tool for local/control operations, so the agent must infer the boundary from the sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drone_controlC

Core drone flight control operations with conversational responses.

Provides unified control interface for PX4/ArduPilot drones via MAVLink protocol or direct firmware integration. Supports both autonomous and manual flight modes with rich conversational responses for natural AI interaction.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoFlight mode for set_mode operation (e.g., "STABILIZE", "ALT_HOLD", "LOITER", "AUTO", "RTL")
altitudeNoTarget altitude (m) for takeoff operation
drone_idYesUnique drone identifier (e.g., "drone_01", "px4_quad_01", "esp32_drone_01")
yaw_rateNoRotational velocity (rad/s) for move operation
operationYesFlight control operation to perform: - "get_status": Get comprehensive drone status (battery, position, mode, health) - "takeoff": Take off to specified altitude (default 5m) - "land": Land at current position - "move": Move with specified velocity vectors - "stop": Emergency stop all movement - "return_home": Return to launch/home position (RTL) - "set_mode": Change flight mode (stabilize, alt_hold, loiter, auto, rtl) - "arm": Arm drone motors (required before flight) - "disarm": Disarm drone motors (safe state) - "calibrate": Perform sensor/accelerometer calibration - "emergency_stop": Immediate emergency stop and motor disarm
velocity_xNoEast-west velocity (m/s) for move operation
velocity_yNoNorth-south velocity (m/s) for move operation
velocity_zNoUp-down velocity (m/s) for move operation (positive = up)
calibration_typeNoType of calibration for calibrate operation (e.g., "accelerometer", "compass", "level")

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the full behavioral burden. It mentions conversational responses and MAVLink integration, but it does not disclose that this tool can physically command a drone, that operation such as arm, takeoff, or emergency_stop have safety implications, or what the actual command execution flow looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, but it repeats the conversational-response concept twice: 'with conversational responses' and 'rich conversational responses for natural AI interaction'. The second paragraph gives useful context but is somewhat generic and not information-dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with nine parameters and numerous high-risk operations like takeoff, emergency_stop, arm, and land, this description is incomplete. It does not mention preconditions, operation-specific parameter rules, or how to route among the closely related drone/robot sibling tools. The input schema helps significantly, but the description itself leaves relevant selection and safety context absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already documents operation-specific parameters such as altitude for takeoff, velocity vectors for move, and calibration_type for calibrate. The description adds no extra parameter meaning, which is acceptable given the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly labels this as a drone flight control tool: 'Core drone flight control operations' and 'unified control interface for PX4/ArduPilot drones via MAVLink'. It distinguishes itself at the category level, but it does not explicitly differentiate from sibling tools like drone_flight_control or drone_navigation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to choose this tool over alternatives such as drone_flight_control, drone_navigation, or robot_control. The phrase 'supports both autonomous and manual flight modes' only hints at scope, with no explicit exclusions or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drone_flight_controlC

Manage advanced drone flight control, missions, and parameters with conversational responses.

Provides fine-grained control over PX4/ArduPilot flight modes, autonomous mission execution, and drone parameter tuning for advanced flight operations with intelligent mission planning and parameter optimization recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoFlight mode name for set_flight_mode operation
drone_idYesUnique drone identifier
operationYesAdvanced flight control operation to perform: - "set_flight_mode": Change to specific flight mode (LOITER, AUTO, GUIDED, etc.) - "get_flight_modes": List all available flight modes - "start_mission": Begin execution of uploaded mission plan - "pause_mission": Temporarily halt mission execution - "resume_mission": Continue paused mission - "abort_mission": Immediately terminate mission - "upload_mission": Send mission plan to drone - "download_mission": Retrieve current mission from drone - "set_parameter": Modify drone parameter value - "get_parameters": Retrieve all drone parameters
mission_idNoIdentifier for mission operations
param_nameNoParameter name for set_parameter operation
param_valueNoNew value for the specified parameter
mission_planNoComplete mission plan dictionary with waypoints and commands

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden of disclosure. It mentions 'conversational responses' and 'intelligent mission planning' but does not reveal important behavioral traits such as whether operations are immediately hazardous, reversible, or require specific authorization. For a flight-control tool this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is wordy and repetitive. Phrases like 'advanced flight operations', 'intelligent mission planning', and 'parameter optimization recommendations' inflate the text without adding concrete, decision-relevant information. A more compact description would front-load the fact that this is a dispatcher for mission, mode, and parameter operations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description does not provide enough practical context. It does not mention safety considerations, the need for a connected or authorized drone, which operations require which auxiliary parameters, or how it differs from the sibling drone_control tool. The output schema helps, but the description still leaves important operational context implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the operation enum includes detailed descriptions of each operation mode. The description adds general context about PX4/ArduPilot and parameter optimization, but it does not add meaning beyond what the schema already provides for parameters like mission_id, param_name, or mission_plan.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool manages advanced drone flight control, missions, and parameter tuning, and names PX4/ArduPilot flight modes. It is specific enough about the domain and resource, but it does not explicitly differentiate itself from the closely named sibling drone_control.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as drone_control or drone_navigation. It does not state prerequisites, exclusions, or scenarios that favor this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drone_navigationB

Manage drone navigation, waypoints, and geofencing with conversational responses.

Handles GPS navigation, waypoint missions, geofence boundaries, and follow-me modes with intelligent path planning and safety-aware navigation. Integrates with PX4/ArduPilot navigation systems and RTK positioning for precise aerial operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
altitudeNoTarget altitude in meters for waypoint operations
drone_idYesUnique drone identifier
latitudeNoTarget latitude in decimal degrees for waypoint operations
longitudeNoTarget longitude in decimal degrees for waypoint operations
operationYesNavigation operation to perform: - "get_position": Get current GPS position and altitude - "set_waypoint": Set single waypoint for navigation - "follow_waypoints": Execute multi-waypoint mission - "clear_waypoints": Clear all programmed waypoints - "set_geofence": Define geofence boundaries and restrictions - "enable_follow_me": Start following specified target - "disable_follow_me": Stop follow-me mode - "set_home_location": Set RTL/home position coordinates
target_idNoIdentifier of target to follow for follow-me operations
waypointsNoList of waypoint dictionaries [{"lat": float, "lon": float, "alt": float}, ...]
fence_pointsNoList of geofence boundary points [{"lat": float, "lon": float}, ...]
max_altitudeNoMaximum allowed altitude in meters for geofence
home_altitudeNoHome position altitude in meters
home_latitudeNoHome position latitude in decimal degrees
home_longitudeNoHome position longitude in decimal degrees

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

It adds useful behavioral context beyond the schema, such as 'conversational responses', 'intelligent path planning', PX4/ArduPilot integration, and RTK positioning. Yet it does not disclose side effects, safety prerequisites, or limitations of the underlying navigation calls, and there are no annotations to lighten that burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and largely front-loaded: the first sentence captures the scope and the second adds system integration context. Some phrases like 'intelligent path planning' and 'precise aerial operations' add minor fluff but do not materially harm clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema and a very detailed input schema, the description need not restate parameters or return values. However, with 12 parameters and several high-level operation modes, the absence of guidance on selection from sibling tools and operation-specific caveats makes it only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all parameters. The description itself adds no parameter meaning, which is acceptable at the baseline, but it also does not describe parameter-to-operation relationships that could help disambiguate complex multi-parameter operations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Manage drone navigation, waypoints, and geofencing' and then names specific capabilities: GPS navigation, waypoint missions, geofence boundaries, and follow-me modes. This is a clear verb-resource pairing, though it does not explicitly distinguish itself from nearby siblings like drone_flight_control or drone_control.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this is the go-to tool for navigation planning, waypoint management, geo-fencing, and follow-me operation. However, it never names alternatives or gives when-to-use versus when-not-to-use guidance, leaving an agent to infer the boundaries against the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

drone_streamingC

Manage drone video streaming and recording with conversational responses.

Controls FPV video feeds, RTSP/WebRTC streaming, and onboard recording. Supports multiple protocols for real-time monitoring and data capture with intelligent quality adaptation and conversational status updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
bitrateNoTarget bitrate in kbps for stream quality control
qualityNoVideo quality preset for streaming ("480p", "720p", "1080p", "4K")
drone_idYesUnique drone identifier
filenameNoOutput filename for recording/snapshot operations
protocolNoStreaming protocol ("rtsp", "rtmp", "webrtc", "hls")
operationYesVideo streaming operation to perform: - "start_fpv": Start first-person-view video stream - "stop_fpv": Stop FPV video stream - "get_stream_url": Get URL for active video stream - "set_stream_quality": Adjust stream quality and bitrate - "start_recording": Begin video recording to file - "stop_recording": Stop video recording - "take_snapshot": Capture single still image

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It states that the tool supports multiple protocols, real-time monitoring, quality adaptation, and conversational status updates. However, it stays high-level and does not cover stateful prerequisites or side effects such as stopping an active stream or recording.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but repetitive: conversational responses and conversational status updates say essentially the same thing, and the third sentence largely restates the second. Vague phrasing such as intelligent quality adaptation adds little concrete value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The input schema and output schema reduce some burden, but for a seven-operation tool with no annotations, the description still lacks workflow prerequisites such as requiring an active stream for get_stream_url, requiring a filename for recording, and how this tool relates to the other drone tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each parameter is already documented. The description adds only broad protocol and quality context, not operation-specific parameter constraints, so it remains at the baseline expected for a well-covered schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a concrete resource: drone video streaming and recording, including FPV feeds, RTSP/WebRTC streaming, and onboard recording. It is specific enough for an agent to recognize this as a streaming/capture tool, though it does not explicitly contrast it with sibling tools like drone_control.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. With many sibling drone-related tools, the description does not tell an agent which situations select drone_streaming over drone_control or drone_flight_control.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

environmental_logistics_handlerC

Handle specialized environmental and substrate logistics.

Covers everything from textiles and darkroom film to wildlife search & rescue, autonomous security patrols, pet logistics, pool supervision, human health, and mural painting.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoSpecific action (e.g., "laser_play", "pet_shower", "pool_supervise", "fall_detect", "huggie_suit", "mural_animal_scene", "call_brother_steve", "call_police", "call_firefighters", "call_ambulance").
force_nNoApplication force in Newtons.
operationYesThe logistics operation to perform.
paint_typeNoColor or type of paint.
pattern_idNoOptional ID for the pattern, plan, or bounding box.
gripper_typeNoRobotic end-effector or tool type.vacuum_bernoulli
pressure_kpaNoOperating pressure (vacuum or positive).
material_typeYesMaterial category (e.g., "silk", "photo_paper", "fence", "nestling", "dog", "pool_perimeter", "toddler", "senior", "nursery_wall").
nozzle_patternNoSpray pattern for the paint nozzle.flat_fan
stiffening_agentNoPolymer used for temporary textile rigidification.gelatin
concentration_pctNoAgent concentration for stiffening.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, and the description provides no behavioral information: it does not mention side effects, safety considerations, whether operations are read-only or mutating, permission requirements, or error conditions. For a tool that includes human health supervision and emergency dispatch, the total absence of behavioral disclosure is a significant issue.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but the first sentence largely restates the tool's name without adding concrete information. The second sentence is a long catch-all list that reads more as an attempt at inclusivity than as a structured explanation, and it does not front-load the most important usage detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the large number of parameters, multiple enum values, and no annotations, the description is not enough for an agent to understand how to correctly select an operation for a requested task. The schema helps significantly, but important context such as expected behavior, safety constraints, and when not to invoke this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the parameter descriptions already provide detailed examples for operation, material_type, action, gripper_type, and others. The tool description itself does not add any new parameter-level semantics beyond a broad context, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a broad area ('environmental and substrate logistics') and gives a long list of covered domains, so an agent can infer it is a catch-all for specialized logistics tasks. However, it never states a precise concrete action or resource, and the wording is vague enough that it does not clearly distinguish itself from any specific sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The list of examples suggests niche use cases like textiles, security patrol, pet logistics, or pool supervision, but there is no actual guidance on when to select this tool versus any alternative. The claim that it 'covers everything' is over-inclusive, not actionable, and no exclusion criteria are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gazebo_modelsB

Manage Gazebo Fuel simulation models - browse, download, and spawn.

Browse, download, and spawn 3000+ free models from Gazebo Fuel (fuel.gazebosim.org) into your Gazebo simulation environment.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoSpawn X position (meters)
yNoSpawn Y position (meters)
zNoSpawn Z position (meters)
pageNoPage number
ownerNoModel owner
queryNoSearch text
categoryNoCategory filter
per_pageNoResults per page
operationYesOperation to perform
model_nameNoModel name
spawn_nameNoName for spawned instance

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for disclosing behavioral context. It mentions an external source (fuel.gazebosim.org) and simulation integration, but does not disclose side effects such as downloading files, deleting local models, network dependence, or requirements for a running Gazebo environment. This is a significant gap for a tool that includes deletion and download operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded, but the first sentence's verb list 'browse, download, and spawn' is repeated in the second sentence without much new information. The second sentence adds useful context about the source and model count, but the redundancy keeps it from being fully polished.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex with 11 parameters and 5 enum operations, yet the description covers only 3 of the 5 operations and omits 'list_local' and 'delete_local'. It also does not explain behavioral implications of spawning into a simulation or managing local model storage, so an agent could miss important side effects despite having the full schema available.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 11 parameters, including x/y/z spawn positions, pagination, search filters, and operation names. The description adds only high-level context about spawning into Gazebo and does not meaningfully extend or clarify the parameters beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (Gazebo Fuel simulation models) and concrete actions (browse, download, spawn), which makes the tool's general purpose clear. However, it omits 'list_local' and 'delete_local' operations and does not explicitly differentiate itself from sibling tools like sim_marketplace_search_tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: use this tool when working with Gazebo Fuel models and bringing them into a Gazebo simulation environment. It provides no explicit guidance on when to choose this tool over alternatives or when to avoid it, nor does it explain when each operation should be used.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

noetix_infoA

Noetix Bumi humanoid robot β€” features, specs, and SDK links.

Operations: info β€” return features, specs, GitHub and docs links (default)

Returns: success, message, and data (specs, features, github, docs).

ParametersJSON Schema
NameRequiredDescriptionDefault
operationNoinfo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must cover behavioral disclosure. It discloses that the tool returns a structured payload ('success, message, and data') and that the 'info' operation is a read-style lookup; however, it does not explicitly state side effects, limits, or prerequisites, though this appears to be a simple information retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, front-loaded with the tool's subject, and clearly separated into 'Operations' and 'Returns' sections. Every line carries essential information without any fluff or unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single optional parameter and a simple return payload, the description covers the necessary operational details: the default operation and the shape of the response. Its only minor gap is not stating explicitly that 'info' is the sole supported operation, but the format implies it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema only defines an optional `operation` property with a default and no per-property description, but the description explains that 'info' returns the relevant fields and that it is the default. This compensates for the 0% schema coverage by giving the parameter real meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description identifies the exact resource (Noetix Bumi humanoid robot) and a specific verb ('return') along with the returned content (features, specs, GitHub and docs links). It clearly communicates the tool's purpose without being confused with the listed sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool should be used when an agent needs Noetix robot specifications, features, or SDK/docs links, but it does not explicitly say when not to use it or how it compares to the many sibling robotics tools. The usage context is present but left mostly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robot_behaviorA

Robot behavior control portmanteau - Animation, camera, navigation, and manipulation.

PORTMANTEAU PATTERN: Consolidates animation, camera, navigation, and manipulation operations into a single unified tool. This reduces tool explosion while maintaining full functionality across all behavior categories.

CATEGORIES:

  • animation: Animation and pose control

  • camera: Camera feed and visual control

  • navigation: Path planning and navigation

  • manipulation: Arm and gripper control

ANIMATION ACTIONS:

  • animate_wheels: Rotate wheels during movement (Scout mecanum wheels)

  • animate_movement: Play movement animations (walk, turn, etc.)

  • set_pose: Set robot pose (sitting, standing, etc. for Unitree)

  • play_animation: Play custom animations

  • stop_animation: Stop current animation

  • get_animation_state: Get current animation state

CAMERA ACTIONS:

  • get_camera_feed: Get live camera feed (physical Scout camera)

  • get_virtual_camera: Get Unity camera view from robot perspective

  • set_camera_angle: Adjust camera angle

  • capture_image: Capture still image

  • start_streaming: Start video stream

  • stop_streaming: Stop video stream

  • get_camera_status: Get camera status and settings

NAVIGATION ACTIONS:

  • plan_path: Plan path from A to B (A* or RRT)

  • follow_path: Execute planned path

  • set_waypoint: Set navigation waypoint

  • clear_waypoints: Clear waypoint list

  • get_path_status: Check path execution status

  • avoid_obstacle: Dynamic obstacle avoidance

  • get_current_path: Get current path being followed

MANIPULATION ACTIONS:

  • move_arm: Move arm to target joint positions or end-effector pose

  • set_joint_positions: Set individual joint positions (dict of joint_name: angle)

  • set_end_effector_pose: Move end-effector to target pose (position + orientation)

  • get_arm_state: Get current arm joint positions and end-effector pose

  • open_gripper: Open gripper fully

  • close_gripper: Close gripper fully

  • set_gripper_position: Set gripper position (0.0 = open, 1.0 = closed)

  • get_gripper_state: Get current gripper position and force feedback

  • move_to_pose: Move arm to target pose with IK (inverse kinematics)

  • home_arm: Return arm to home/rest position

ParametersJSON Schema
NameRequiredDescriptionDefault
loopNoWhether to loop animation.
poseNoPose name for set_pose.
actionYesAction to perform (see category-specific actions above).
arm_idNoArm identifier for multi-arm robots (e.g., "left", "right").
angle_xNoCamera angle X (pitch) in degrees.
angle_yNoCamera angle Y (yaw) in degrees.
path_idNoPath identifier for follow_path or get_path_status.
categoryYesBehavior category: "animation", "camera", or "navigation".
robot_idYesRobot identifier (e.g., "scout_01", "vbot_scout_01").
waypointNoWaypoint position (x, y, z) for set_waypoint.
stream_urlNoStream URL for start_streaming.
force_limitNoMaximum force/torque limit for movement.
output_pathNoOutput file path for capture_image.
wheel_speedsNoWheel speeds for animate_wheels.
goal_positionNoGoal position (x, y, z) for plan_path.
animation_nameNoAnimation name for play_animation.
start_positionNoStart position (x, y, z) for plan_path.
animation_speedNoAnimation speed multiplier.
joint_positionsNoJoint positions dict (e.g., {"shoulder": 45.0, "elbow": 90.0}).
gripper_positionNoGripper position (0.0 = open, 1.0 = closed).
end_effector_poseNoEnd-effector pose dict with position and orientation.
obstacle_positionNoObstacle position (x, y, z) for avoid_obstacle.
manipulation_speedNoMovement speed (0.0-1.0) for arm/gripper motion.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. Each action line names the behavior (e.g., 'clear_waypoints: Clear waypoint list', 'stop_streaming: Stop video stream'), which is reasonable transparency. However, it omits expected side effects, safety warnings, preconditions such as plan_path before follow_path, or any explanation of physical robot interactions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized and front-loaded with its purpose, making it easy to scan. That said, the 'PORTMANTEAU PATTERN' section repeats the same category list and the action lists could be shortened since the schema already defines action categories and parameters. It is comprehensive but longer than strictly needed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given complexity with 23 parameters and 25+ actions, the description does provide a near-complete catalog of actions and their behavior. The schema has a rich output schema and 100% parameter coverage, so the description does not need to explain parameter values or return types. It is complete enough for an agent to understand the overall scope, though a per-action required-parameter mapping would be even more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, giving each parameter a clear meaning. The description adds significant value by mapping actions like set_target_pose, plan_path, and set_gripper_position to natural-language semantics and validating expectations like 'gripper_position 0.0 = open, 1.0 = closed.' This extra mapping goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear statement of scope: 'Robot behavior control portmanteau - Animation, camera, navigation, and manipulation.' It then enumerates four concrete categories with a detailed action list, making the tool's purpose immediately recognizable. However, it never explicitly contrasts itself with sibling tools like robot_control or drone_control, so differentiation is implicit rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that this is a consolidated tool for animation, camera, navigation, and manipulation operations, which implies when it should be used. It does not explicitly state when not to use it or name an alternative tool for a specific task, so the guidance is contextual but not exclusionary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robot_controlC

Unified robot control with conversational responses.

Provides a single interface for controlling physical robots, virtual robots, and specialized devices with intelligent routing and rich conversational responses. Primary: Dreame D20 Pro vacuum. Also supports Yahboom ROSMASTER, Moorebot Scout, Unitree (when hardware available), and virtual robots in Unity/VRChat.

PORTMANTEAU PATTERN RATIONALE: Instead of creating separate tools for each robot type and operation, this tool consolidates all robot control operations into a single interface. This design:

  • Prevents tool explosion (15+ tools -> 1 tool) while maintaining full functionality

  • Enables seamless switching between physical and virtual robots

  • Provides consistent error handling and safety protocols across all robot types

  • Supports conversational AI interaction with context-aware responses

  • Follows FastMCP 2.13+ best practices for feature-rich MCP servers

SUPPORTED ROBOT TYPES:

  • Dreame D20 Pro: Primary platform - LIDAR vacuum with mapping, zone cleaning, mop, auto-empty

  • Yahboom Robots: ROSMASTER series with AI, navigation, and optional robotic arms

  • Moorebot Scout: ROS1 wheeled robot

  • Elegoo Robots: ROS-on-PC robots with serial communication

  • Unitree Go2/G1: Quadrupedal robots (when hardware available)

  • Virtual Robots: Unity3D/VRChat robots

  • Hue HomeAware: Philips Hue Bridge Pro with RF-based movement detection

SUPPORTED OPERATIONS:

  • Universal: "get_status", "move", "stop"

  • Physical Robots: "return_to_dock", "stand", "sit", "walk", "sync_vbot"

  • Yahboom: "home_patrol", "camera_capture", "arm_move", "gripper_control", "navigate_to", "ai_query"

  • Elegoo: "emergency_stop" (ROS-on-PC serial communication)

  • Dreame: "start_auto_empty", "stop_auto_empty", "start_self_clean", "stop_self_clean", "set_suction_level", "set_water_volume", "set_mop_humidity", "clean_zone", "clean_spot", "start_mapping", "rename_room", "set_cleaning_sequence", "set_restricted_zones", "get_cleaning_history", "clear_error"

  • Hue HomeAware: "hue_get_movement_events", "hue_get_sensor_status", "hue_get_movement_zones"

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoTarget X coordinate (meters) for navigation operations
yNoTarget Y coordinate (meters) for navigation operations
queryNoAI query text for multimodal analysis (Yahboom robots)
thetaNoTarget orientation (radians) for navigation operations
zonesNoList of zone coordinates [[x1,y1,x2,y2], ...] for zone cleaning
actionYesOperation to perform. MUST be one of the supported operations above: Universal Operations: - "get_status": Get comprehensive robot status (battery, position, sensors, capabilities) - "move": Control movement with linear/angular velocities (all mobile robots) - "stop": Emergency stop all movement (all robots) Physical Robot Operations: - "return_to_dock": Return to charging dock (vacuums only) - "stand": Stand up from sitting position (legged robots) - "sit": Sit down (legged robots) - "walk": Start walking gait (legged robots) - "sync_vbot": Synchronize virtual robot with physical robot state Yahboom Robot Operations: - "home_patrol": Start autonomous home security patrol - "camera_capture": Capture image from robot camera - "arm_move": Move robotic arm to specified joint angles - "gripper_control": Control gripper open/close/stop - "navigate_to": Navigate to specific coordinates - "ai_query": Multimodal AI query (text/vision/voice/multimodal) Dreame Vacuum Operations: - "start_auto_empty": Start automatic dust bin emptying - "stop_auto_empty": Stop automatic dust bin emptying - "start_self_clean": Start mop self-cleaning cycle - "stop_self_clean": Stop mop self-cleaning cycle - "set_suction_level": Set vacuum suction power (1-4) - "set_water_volume": Set mopping water volume (1-3) - "set_mop_humidity": Set mop pad humidity (1-3) - "clean_zone": Clean specific rectangular zones - "clean_spot": Intensive spot cleaning at coordinates - "start_mapping": Start new map creation/mapping - "rename_room": Rename a detected room - "set_cleaning_sequence": Set room cleaning order - "set_restricted_zones": Create virtual walls/restricted zones - "get_cleaning_history": Retrieve cleaning history - "clear_error": Clear error conditions
linearNoLinear velocity (m/s) for move operations. Range: -2.0 to 2.0 m/s
spot_xNoX coordinate for intensive spot cleaning
spot_yNoY coordinate for intensive spot cleaning
angularNoAngular velocity (rad/s) for rotation. Range: -3.14 to 3.14 rad/s
room_idNoRoom identifier for room-specific operations
durationNoMovement duration in seconds. Default: continuous until stopped
robot_idYesUnique robot identifier. MUST follow naming convention: - Physical: "scout_01", "go2_01", "g1_01", "yahboom_01", "elegoo_01", "dreame_01", "hue_01" - Virtual: "vbot_scout_01", "unity_bot_01", "vrchat_bot_01"
room_nameNoNew name for room renaming operations
query_typeNoAI query type. MUST be "text", "vision", "voice", or "multimodal"
joint_anglesNoDictionary of joint names to target angles (degrees) for arm control
mop_humidityNoMop pad humidity level (1-3, where 3 is maximum humidity)
patrol_routeNoName of predefined patrol route for autonomous navigation
water_volumeNoMopping water volume level (1-3, where 3 is maximum)
suction_levelNoVacuum suction power level (1-4, where 4 is maximum)
gripper_actionNoGripper action. MUST be "open", "close", or "stop"
restricted_zonesNoDictionary with 'walls' and 'zones' keys for virtual barriers
cleaning_sequenceNoList of room IDs defining cleaning order [room1, room2, ...]

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations available, the description carries the full transparency burden. It does disclose some behavioral traits: 'intelligent routing', 'rich conversational responses', and 'consistent error handling and safety protocols across all robot types'. But it is mostly promotional and vagueβ€”there is no mention of side effects, what happens on failure, software requirements, whether actions require confirmation, or how physical safety is enforced. The description is not contradictory, but it gives only partial transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is far too long for an agent-facing tool definition. The PORTMANTEAU PATTERN RATIONALE section explains internal design philosophy rather than how to call the tool, and the SUPPORTED OPERATIONS list duplicates the action enum that is already in the schema. While the description uses headings and bullet formatting, many sentences (e.g., 'Follows FastMCP 2.13+ best practices') do not help an agent invoke the tool correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (23 parameters, 40 actions, many robot types), the description is incomplete: the SUPPORTED OPERATIONS section omits at least six actions that appear in the schema's `action` enumβ€”`start_cleaning`, `stop_cleaning`, `clean_room`, `go_to`, `get_map`, and `start_fast_mapping`. It also fails to map which parameters are required for specific actions, leaving the agent to infer or scout a large parameter space. The presence of an output schema helps, but the gap between the narrative operations and the actual enum is a meaningful completeness error.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% parameter description coverage, including descriptions for every action enum value and ranges for velocity, water/suction levels, and coordinates. The description mostly restates or duplicates this information (especially the SUPPORTED OPERATIONS list) without adding actionable param semantics beyond what the schema already provides. Per the baseline, 3 is appropriate when schema does this heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states this is a 'Unified robot control' interface and lists the exact platforms it supports ('Dreame D20 Pro', 'Yahboom', 'Moorebot', 'Unitree', 'virtual robots'). It is more specific than the name alone and conveys it is an aggregation tool. However, it does not explicitly differentiate from siblings like robot_virtual, dreame_control, or drone_control, so the boundary of what this tool owns vs. those tools is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains why a consolidated tool exists ('Instead of creating separate tools for each robot type...') and what robot types it supports, which implies when to use it. However, it never says 'use this instead of X' and does not list exclusions or conditions that would route the agent to sibling tools such as dreame_control, drone_control, robot_behavior, or robot_virtual. There is no practical guidance for selecting between this and the many sibling tools that appear to overlap in purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robotics_agentic_workflowC

Execute a complex, multi-step robotics workflow leveraging MCP sampling.

ParametersJSON Schema
NameRequiredDescriptionDefault
objectiveYesThe goal you want to achieve with the robotic fleet.
thought_processYesThe reasoning behind invoking this workflow.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for disclosing behavior, but it only states that a workflow is executed. It does not explain what 'executing' entails, what side effects or mutations may occur, whether it returns sampling results, or how 'MCP sampling' influences the workflow. This is minimal operational transparency for a potentially powerful tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundancy or filler beyond the mild qualifiers 'complex, multi-step.' It is concise and front-loads the core action, but it could use the saved space to include more behavioral or usage-relevant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity implied by a multi-step workflow and the large set of sibling robotics tools, the description is incomplete. It does not describe what makes the workflow agentic, what side effects are possible, what success looks like, or when this tool should be chosen over the many sibling tools. Even with an output schema, the lack of usage context leaves a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameter meanings are fully documented in the schema. The description adds no extra semantic weight to the parameters, but this is acceptable given the schema already defines both objective and thought_process clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action, 'Execute a complex, multi-step robotics workflow', and adds the distinctive mechanism 'leveraging MCP sampling.' This is clear enough to convey the tool's general job, though it remains somewhat abstract and does not explicitly distinguish it from sibling workflow or robotics tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool over any of the many sibling tools, and no mention of exclusions or alternative selection criteria. Only the implicit idea of a complex multi-step workflow hints at intended use, leaving the agent without clear decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robotics_fab_artA

Fab art fleet bridge via inkscape-mcp HTTP (DXF, laser dots, Gazebo schematics).

Operations: inkscape_status: Probe inkscape-mcp and list fab presets. batch_dxf_export: Run inkscape_fab_art batch_dxf_export on input_dir. batch_laser_dots: Generate laser dot SVG batch from preset. gazebo_schematic: SVG to PNG schematic for model documentation. stage_fab_paths: Stage DXF/SVG/PNG outputs for robotics workflows. push_gimp_schematic: Export schematic and push through gimp validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
gimp_urlNohttp://127.0.0.1:10773
svg_pathNo
input_dirNo
operationYes
preset_idNogazebo_model_doc_192
push_gimpNo
output_dirNo
inkscape_urlNohttp://127.0.0.1:10900
laser_preset_idNofab_calibration_grid

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must carry the behavioral burden, and it does reveal that the tool talks to external HTTP services, generates files such as DXF/SVG/PNG, and can 'push through gimp validation.' It does not disclose possible filesystem side effects, service availability requirements, or whether any operation is destructive, leaving moderate behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: a short summary line followed by a bullet list of operations. Each operation line adds meaningful information and there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so return-value details are not needed, and the description gives a useful high-level map of all six operations. However, the tool has 9 parameters, 0% schema coverage, and an external HTTP dependency; the description does not say which parameters each operation relies on or what conditions must hold before invoking the HTTP bridge successfully.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description partially compensates by explaining operations and referencing concepts tied to parameters: input_dir, SVG paths, presets, GIMP, and Inkscape. It does not explicitly map each parameter to each operation, and parameters like `output_dir`, `push_gimp`, and `laser_preset_id` are only loosely implied rather than clearly defined.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as a 'fab art fleet bridge via inkscape-mcp HTTP' and enumerates six distinct operations with concrete targets: DXF export, laser dot SVG generation, Gazebo schematics, staging outputs, and GIMP validation. It is not a tautology and gives an agent enough to understand the tool's role, though it does not explicitly distinguish itself from the nearby robotics/simulation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Each bullet gives an implied usage context, such as 'batch_laser_dots: Generate laser dot SVG batch from preset' and 'gazebo_schematic: SVG to PNG schematic for model documentation.' However, there is no explicit guidance about when to use this tool versus sibling tools like robotics_sim_art or gazebo_models, nor any exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robotics_sim_artB

Sim-art fleet bridge via gimp-mcp HTTP (Gazebo icons, VRChat, avatar thumbs).

Uses HTTP tool calls instead of mounting gimp-mcp stdio (avoids protocol hangs).

Operations: gimp_status: Probe gimp-mcp health and list sim-art templates. batch_gazebo_icons: Run gimp_sim_art_tool gazebo_model_icons on input_dir. import_gazebo_models: Batch import thumbnails into models_root (auto_import). batch_vrchat_icons: Run vrchat_icon_batch on input_dir. avatar_thumbnail: Push icon_path to avatar via avatar_manager set_thumbnail.

ParametersJSON Schema
NameRequiredDescriptionDefault
gimp_urlNohttp://127.0.0.1:10773
avatar_idNo
icon_pathNo
input_dirNo
model_dirNo
operationYes
avatar_urlNohttp://127.0.0.1:10793
auto_importNo
models_rootNo
template_idNogazebo_icon_256

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral burden. It names operations like health probing, batch icon generation, importing thumbnails, and pushing thumbnails to avatars, which implies side effects. However, it does not disclose permissions, failure modes, destructive potential, rate limits, or what happens on partial failures, so transparency is only partial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the purpose and transport choice, and then structured as a readable operation list. The inline operations list slightly duplicates the schema enum, but it adds one-line semantics, so the structure is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has five operations and ten parameters, and the description gives a useful skeleton for each operation. However, it does not specify which parameters are required for each operation, how the parameters relate to one another, or the expected call format. The presence of an output schema helps with return values, but the missing per-operation parameter contract leaves meaningful gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and while the operation list adds meaning for some parameters like input_dir, models_root, and icon_path, several parameters remain unexplained: model_dir, gimp_url, avatar_url, template_id, and the precise contract of auto_import. For a 10-parameter tool with zero schema descriptions, the description only partially compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool is a sim-art fleet bridge via gimp-mcp HTTP for Gazebo icons, VRChat, and avatar thumbnails, and it enumerates five concrete operations with verbs. It is specific enough for an agent to understand what the tool does, though it does not explicitly distinguish itself from sibling tools like robotics_fab_art or gazebo_models.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly explains why this tool exists: it uses HTTP tool calls instead of mounting gimp-mcp stdio to avoid protocol hangs. This provides clear context for choosing this variant over the alternative. It still lacks explicit exclusions or directions for when to prefer sibling tools, so it is not a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robotics_systemB

System management portmanteau for Robotics MCP.

PORTMANTEAU PATTERN RATIONALE: Instead of creating 3 separate tools (help, status, list_robots), this tool consolidates related system operations into a single interface. This design:

  • Prevents tool explosion (3 tools -> 1 tool) while maintaining full functionality

  • Improves discoverability by grouping related operations together

  • Reduces cognitive load when working with system management tasks

  • Enables consistent system interface across all operations

  • Follows FastMCP 2.13+ best practices for feature-rich MCP servers

SUPPORTED OPERATIONS:

  • help: Get comprehensive help information about the server and its tools

  • status: Get server status with connectivity tests and robot counts

  • list_robots: List all registered robots with optional filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
operationYesThe system operation to perform. MUST be one of: - "help": Get help information (no additional parameters) - "status": Get server status (no additional parameters) - "list_robots": List robots (optional: robot_type, is_virtual filters)
is_virtualNoOptional filter for list_robots operation. - True: Only virtual robots (vbots) - False: Only physical robots (bots) - None: Both virtual and physical robots
robot_typeNoOptional filter for list_robots operation. Valid values: "scout", "go2", "g1", "dreame", or any custom robot type. If None, returns all robot types.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description must carry the full behavioral disclosure burden. It says the operations 'get' or 'list' information and mentions details like connectivity tests and robot counts, but it never states whether there are side effects, permissions, rate limits, or system mutations. For a management tool with no annotation safety signal, this is a meaningful gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is notably inefficient: five rationale bullets about discoverability, tool explosion, and FastMCP best practices are irrelevant to selecting or calling the tool. The useful supported-operation list is placed after that padding and largely duplicates the input schema. The labeled headings help scanning, but a large portion of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with fully described schema parameters and no required behavior beyond operation selection, the description covers the core invocation cases. It also mentions the optional filters for `list_robots` and the distinct behavior of `status`. Exactly what each operation returns is handled by the output schema, so the description is largely sufficient for successful invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already provides detailed semantics for `operation`, `is_virtual`, and `robot_type`. The description adds only a concise summary of each operation without helping do more than the schema. This matches the baseline of 3 for a fully covered schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies a consolidated system-management tool and enumerates the exact operations it supports (`help`, `status`, `list_robots`). The first line uses the vague term 'portmanteau,' but the SUPPORTED OPERATIONS list makes the purpose concrete and actionable. It does not name sibling tools, so it could be more explicit about what it is NOT for.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool: for help, server status, and robot listing. However, it provides no explicit when-not-to-use guidance and never names alternatives among the many robot-control and simulation siblings. The portmanteau rationale is a design explanation, not real operational selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robot_manufacturingB

Manufacturing equipment control with conversational responses.

Provides unified control over 3D printers, CNC machines, and laser cutters with rich conversational responses for natural AI interaction. Supports complete manufacturing workflows from file upload to finished product.

PORTMANTEAU PATTERN RATIONALE: Instead of creating separate tools for each device type and operation, this tool consolidates manufacturing operations into a single interface. This design:

  • Prevents tool explosion (9+ tools -> 1 tool) while maintaining full functionality

  • Enables consistent manufacturing workflow across different device types

  • Provides unified error handling and safety protocols

  • Supports conversational AI interaction with rich response formats

  • Follows FastMCP 2.13+ best practices for feature-rich MCP servers

SUPPORTED OPERATIONS:

  • 3D Printers: Print control, monitoring, maintenance (OctoPrint/Moonraker)

  • CNC Machines: Milling, drilling, cutting operations

  • Laser Cutters: Vector cutting, engraving, material processing

ParametersJSON Schema
NameRequiredDescriptionDefault
gcodeNoRaw G-code commands to send to device (string)
speedNoSpeed/feed rate settings: - 3D printers: Print speed (mm/s) - CNC machines: Feed rate (mm/min) - Laser cutters: Cutting speed (mm/min)
actionYesSpecific action to perform (depends on category and device_type): Control actions: "start_print", "stop_print", "pause_print", "resume_print", "set_temperature", "home_axes", "move_head", "send_gcode", "load_filament", "unload_filament" Monitor actions: "get_status", "get_progress", "get_temperatures", "get_webcam", "get_files" Maintenance actions: "level_bed", "calibrate_pid", "clean_nozzle", "update_firmware"
categoryYesOperation category. MUST be one of: - "control": Direct device control (start/stop/move operations) - "monitor": Status monitoring and data retrieval - "maintenance": Calibration, cleaning, firmware updates
positionNoPosition coordinates as dict (X, Y, Z in mm): - "x": X-axis position - "y": Y-axis position - "z": Z-axis position
device_idYesUnique identifier for the manufacturing device (e.g., "printer_01", "cnc_mill_01", "laser_pro_01")
file_pathNoPath to file for printing/cutting operations (STL/G-code/SVG files)
device_typeYesType of manufacturing equipment. MUST be one of: - "3d_printer": FDM/FFF 3D printers (OctoPrint, Moonraker, Repetier) - "cnc_machine": CNC milling/drilling machines - "laser_cutter": Laser cutting/engraving systems
temperatureNoTemperature settings as dict (3D printers): - "hotend": Nozzle temperature (Β°C) - "bed": Build plate temperature (Β°C) - "chamber": Chamber temperature (Β°C)
monitor_typeNoWhat to monitor (optional, defaults to "status"): - "status": Current device state and health - "temperature": Temperature readings (3D printers) - "progress": Operation progress and time remaining - "webcam": Live camera feed URL (if available)
maintenance_actionNoMaintenance operation to perform (optional)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the disclosure burden. It does add useful behavioral context such as 'conversational responses', 'rich workflow support', and 'unified error handling and safety protocols'. However, it never states that control or maintenance actions may physically mutate hardware, or whether certain actions are irreversible, which is important for such a tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening line is useful, but the description is much longer than necessary. The PORTMANTEAU PATTERN RATIONALE section is mostly non-operational meta-commentary, including references to avoiding tool explosion and FastMCP best practices, which do not help an AI agent invoke the tool. It could be cut down to a concise summary and support operations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 11-parameter tool with categories and enums, the description and schema provide a fairly complete operational frame, and the output schema lets return value semantics be explained elsewhere. It falls short by not stating any prerequisites, hardware/driver assumptions, or risk/safety guardrails beyond 'safety protocols' as a phrase.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% parameter description coverage, with detailed explanations for action, category, device_type, speed, position, and temperature. The description only adds high-level grouping in the SUPPORTED OPERATIONS section and doesn't uniquely compress the parameters. Baseline 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation verb ('control') and the resource ('3D printers, CNC machines, and laser cutters'), and explains that it consolidates manufacturing workflows. It differentiates from robot, drone, and simulation siblings via its explicit device-type scope and 'unified control' framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool via the supported operations list, but it gives no explicit when-to-use guidance or exclusions. With many sibling tools defined at a different. An agent has no explicit routing cue to prefer this tool over those, despite the clear device scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robot_modelB

Robot model management portmanteau for Robotics MCP.

PORTMANTEAU PATTERN RATIONALE: Instead of creating 4 separate tools (create, import, export, convert), this tool consolidates related model operations into a single interface. This design:

  • Prevents tool explosion (4 tools -> 1 tool) while maintaining full functionality

  • Improves discoverability by grouping related operations together

  • Reduces cognitive load when working with robot models

  • Enables consistent model interface across all operations

  • Follows FastMCP 2.13+ best practices for feature-rich MCP servers

SUPPORTED OPERATIONS:

  • create: Create robot 3D model from scratch using Blender MCP

  • import: Import robot 3D model into Unity/VRChat/Resonite project

  • export: Export robot model from Unity to file format

  • convert: Convert robot model between formats

  • spz_check: Check .spz conversion tool availability

  • spz_convert: Convert .spz file to .ply or other format

  • spz_extract: Extract metadata from .spz file

  • spz_install: Install Unity Gaussian Splatting plugin (alternative to .spz)

  • execute_script: Execute custom Blender Python script (like Gemini-generated scripts)

  • list_scripts: List all available scripts in the repository by category

  • execute_repository_script: Execute a script from the repository with optional parameters

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoModel format (used by create/import/export). - "fbx": Industry standard (recommended for robots) - "glb": Modern glTF 2.0 format - "obj": Simple mesh format - "vrm": VRM format (ONLY for humanoid robots)fbx
scriptNo
categoryNo
platformNoTarget platform for import (unity/vrchat/resonite).unity
robot_idNoVirtual robot identifier (required for export).
spz_pathNoPath to .spz file (required for spz_* operations).
operationYesThe model operation to perform. MUST be one of: - "create": Create model (requires: robot_type, output_path) - "import": Import model (requires: robot_type, model_path) - "export": Export model (requires: robot_id) - "convert": Convert model (requires: source_path, source_format, target_format)
dimensionsNoCustom dimensions for create (length, width, height in meters).
model_pathNoPath to model file (required for import).
robot_typeNoType of robot (required for create/import). Examples: "scout", "go2", "g1", "robbie", "custom"
output_pathNoPath for output file (required for create, optional for export/convert).
script_nameNo
source_pathNoSource file path (required for convert).
target_pathNoOutput file path (optional for convert).
project_pathNoUnity project path (for import).
create_prefabNoCreate Unity prefab after import.
output_formatNoOutput format for spz_convert (ply, obj, glb).
source_formatNoSource file format (required for convert).
target_formatNoTarget file format (required for convert).
texture_styleNoTexture style for create (realistic/stylized/simple).realistic
create_texturesNoCreate textures using gimp-mcp (for create).
include_animationsNoInclude animations in export.
unity_project_pathNoUnity project path for spz_install.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden, and it does surface several significant behaviors such as using Blender MCP, installing plugins, and executing custom scripts. It does not, however, summarize the side effects of these operations, such as file writes, project modifications, or the safety implications of running arbitrary scripts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The SUPPORTED OPERATIONS list is structured and scannable, which is important for an 11-operation tool. The PORTMANTEAU PATTERN RATIONALE section is largely product-design commentary and imparts little invocation knowledge, making the overall description longer than necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 23 parameters and 11 operation modes, the description gives an adequate but minimal high-level map. It should provide a per-operation parameter orientation or a stronger example, but the detailed operation enum and high schema coverage reduce the gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is roughly 87%, so most parameter meaning already comes from the schema. The description adds little parameter-level value beyond mapping script/category/script_name loosely to the script-related operations, but it does not need to compensate because the schema is already detailed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly names the resource (robot models) and enumerates 11 concrete operations, so an agent can see this tool handles model create/import/export/convert/spz/script workflows. It is not vague or tautological, but it never explicitly distinguishes itself from sibling tools such as robot_control or robot_behavior, which prevents a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The operation bullets provide a usable map of what this tool can do, so an agent can infer relevant contexts such as 'import robot model' or 'convert .spz'. However, the description gives no when-not-to-use guidance, no explicit alternatives, and no direction to prefer a sibling tool for related but non-model operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

robot_virtualB

Virtual robot lifecycle and operations portmanteau.

PORTMANTEAU PATTERN: Consolidates virtual robot CRUD operations and virtual robotics operations into a single unified tool. This reduces tool explosion while maintaining full functionality for virtual robot management.

CRUD OPERATIONS:

  • create: Create/spawn and register a new virtual robot

  • read: Get details of an existing virtual robot

  • update: Modify virtual robot properties (scale, position, metadata, etc.)

  • delete: Remove and unregister a virtual robot

  • list: List all virtual robots with optional filtering

VIRTUAL ROBOT OPERATIONS:

  • spawn: Spawn robot in Unity/VRChat scene (alias for create)

  • load_environment: Load Marble/Chisel environment into scene

  • get_status: Get virtual robot status

  • get_lidar: Get virtual LiDAR scan (Unity physics raycast)

  • set_scale: Scale robot size (for size testing)

  • test_navigation: Test pathfinding in environment

  • sync_with_physical: Sync vbot state with physical bot

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoSize multiplier for create/spawn/update/set_scale.
metadataNoAdditional metadata dictionary for create/update.
platformNoTarget platform ("unity", "vrchat", "resonite"). Default: "unity".unity
positionNoSpawn/update position (x, y, z) for create/spawn/update.
robot_idNoVirtual robot identifier (required for read, update, delete, get_status, etc.). Auto-generated for create/spawn if not provided.
operationYesOperation to perform (see CRUD and Virtual Robot Operations above).
model_pathNoPath to 3D model file (.glb, .fbx, .vrm) for custom robot_type.
robot_typeNoType of robot (required for create/spawn). Examples: "scout", "go2", "g1", "robbie", "custom"
environmentNoEnvironment name (Marble-generated) for load_environment.
project_pathNoUnity project path (optional, auto-detected if not provided).
environment_pathNoPath to environment file for load_environment.
include_collidersNoWhether to import collider meshes (default: True).

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must bear the full behavioral-transparency burden. It does supply useful behavioral clues, such as spawn being an alias for create, delete removing and unregistering the robot, and get_lidar using Unity physics raycasting. But it does not disclose side effects, failure modes, or the implications of syncing with a physical bot, which matters for a tool spanning mutating operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized into CRUD and virtual operation categories, which aids scanning. However, it is verbose, repeats the portmanteau concept, and duplicates create/spawn information. The structure is useful, but some sentences are filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-operation tool with 12 parameters and an operation enum, the description covers each operation with a one-line definition and makes key parameter-operation relationships clear, such as robot_id being required for most targeting. The output schema exists to cover return values, and generated necessary per-operation parameter mapping is largely delegated to individual parameter descriptions, which are already populated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are well-documented in the schema itself. The tool description does add minor operation-to-parameter context by mentioning scale, position, and metadata groups, but it largely relies on the schema for parameter meaning. That matches the baseline expectation when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool as managing virtual robot CRUD and virtual robotics operations, with explicit operation names and brief definitions. It is specific about the resource (virtual robots) and the supported verbs. It does not explicitly differentiate itself from sibling tools like vbot_crud, so it falls short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for any virtual robot lifecycle or operations need, and the portmanteau pattern explanation justifies consolidation. However, it gives no explicit guidance on when to choose this tool over alternatives such as vbot_crud or robot_control, nor does it state when these operations are not appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sim_fleet_backendsA

List all registered sim backends and their capabilities (offline registry).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. 'List' and 'offline registry' indicate a read-only operation that does not affect live state, which is adequate for this tool. It does not detail edge behaviors such as empty results or update cadence, but nothing here misleads an agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one front-loaded, efficient sentence. The parenthetical 'offline registry' adds meaningful clarification in two words, with no filler or redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero parameters, a fully-covered empty schema, and an output schema present, the tool is simple enough for the description to be complete. It tells the agent exactly what is being listed and where the data comes from, and there is no missing context an agent would need to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so there is nothing to document. The description reinforces that the operation is unconditional by saying 'all' registered backends, removing any expectation of filters or inputs. This meets the baseline for a parameterless tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and a clear resource ('all registered sim backends and their capabilities'). The parenthetical 'offline registry' adds useful context that distinguishes this from live fleet status or routing tools, though it does not explicitly differentiate from siblings like sim_fleet_status or sim_fleet_route.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context by labeling this an 'offline registry', implying it is the tool to use when the static catalog of backends and capabilities is needed. It does not explicitly state when not to use it or mention any alternative tools, but for a simple list-all tool the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sim_fleet_routeA

Route a simulation task to the best available backend.

Probes all running sim MCPs, picks the optimal one based on task keywords (sensors β†’ Gazebo, rendering β†’ Isaac, locomotion β†’ MuJoCo, TRON 1/Oli β†’ LimX), and returns the backend URL and metadata. The caller then makes the actual API call to that backend.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesDescription of the simulation task.
preferred_backendNoPrefer a specific backend: 'mujoco', 'gazebo', 'isaac', 'limx'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the transparency burden. It clearly discloses that the tool probes running sim MCPs, selects a backend based on keywords, returns URL/metadata, and does not perform the backend call itself. It does not cover edge behavior such as no available backend or ambiguous keyword matches, but the disclosed behavior is materially useful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core action, and every sentence carries information: routing intent, selection behavior, keyword mapping, output, and caller responsibility. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main workflow, input semantics, and expected return, and an output schema exists so return-value details are handled. It lacks guidance on fallback behavior when no backends are running or when keyword matching fails, which would make routing behavior fully predictable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by explaining the semantics of the task parameter through concrete keyword-to-backend mappings (sensors β†’ Gazebo, rendering β†’ Isaac, etc.), which goes beyond the schema's generic 'Description of the simulation task.'

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb, resource, and outcome: route a simulation task to the best available backend and return its URL and metadata. It clearly distinguishes itself from execution tools by noting that the caller makes the actual API call, and from listing/status tools by focusing on probing and selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: whenever a simulation task needs to be routed to an appropriate backend. It also gives concrete keyword-to-backend mappings and clarifies the caller still performs API execution, but it does not explicitly contrast with sibling tools like sim_fleet_backends or sim_fleet_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sim_fleet_statusA

Probe all registered simulation MCP backends and report availability.

Checks: mujoco-mcp (MuJoCo), gazebo-mcp (Gazebo), isaac-mcp (Isaac Sim), limx-robotics-mcp (LimX). Returns health data, strengths, and ports for each.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral disclosure burden. It indicates that the tool is a read-only probe that returns health data, strengths, and ports. However, it does not disclose possible side effects such as network calls to external processes, timeout behavior, or what happens when a backend is unregistered or unreachable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct and well-structured: a single front-loaded summary sentence followed by the list of probed backends and the output. Every sentence adds value, and no unnecessary detail is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a zero-parameter, read-only status probe. An output schema exists, and the description states what is acted on and what is returned (health data, strengths, ports). Nothing essential is missing for an agent to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema reflects this with an empty properties object. Baseline for no parameters is 4, and the description need not discuss inputs. It correctly implies the tool takes no user-specified arguments by design.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the purpose: 'Probe all registered simulation MCP backends and report availability.' It names a concrete action, a resource, and the specific backends checked (mujoco-mcp, gazebo-mcp, isaac-mcp, limx-robotics-mcp). It is clear but does not differentiate from sibling tools like sim_fleet_backends, so it loses the fifth point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied: this tool should be used when you need to check the availability of simulation backends. However, the description provides no explicit guidance on when to prefer this tool over alternatives such as sim_fleet_backends or sim_fleet_route, and no exclusion or comparison is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sim_marketplace_info_toolA

Get full metadata for a specific robot model from the marketplace.

Returns file paths (MJCF, URDF), compatible sim backends, joint/actuator counts, and source URLs.

Return Format

{"success": bool, "message": str, "model": {"id": str, "name": str, ...} | None}

Examples

sim_marketplace_info_tool(model_id="unitree_go2") sim_marketplace_info_tool(model_id="limx_oli_d04")

ParametersJSON Schema
NameRequiredDescriptionDefault
model_idYesModel ID slug, e.g. 'unitree_go2', 'limx_tron1_pf'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral load. It is transparent about the operation's nature ('Get', 'Returns'), discloses exactly what is returned, and even specifies the JSON response envelope with success, message, and model fields. There are no hidden side effects, transformers, or unexpected behaviors implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded, easy to use, and free of filler. Every section earns its place: a one-sentence purpose, a compact list of returned fields, the expected return format, and two representative examples. The inclusion of the return format and examples makes it self-contained without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single required parameter, an embedded output format, explicit examples, and a clear model-specific scope, all information needed to correctly invoke the tool is present. The tool also has a declared output schema, so the description does not need to over-explain return values; it already does enough for an agent to decide, call, and interpret the response. The only slight omission is explicit sibling routing, but the description's focus on 'specific model' is sufficient in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully describes model_id as a slug with examples, so the description does not need to add much. The description's examples mirror the schema's existing examples and provide no deeper parameter semantics. This is a baseline case where the schema carries the weight; the description does not degrade or improve it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pairing: 'Get full metadata for a specific robot model from the marketplace.' It also enumerates the exact content returned (MJCF/URDF paths, sim backends, joint/actuator counts, source URLs), so there is no ambiguity about what this tool does. This clearly distinguishes it from sibling sim_marketplace_search_tool, which is about discovery rather than lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies clear context: the tool operates on a known model_id and returns its metadata. The examples reinforce the usage pattern. However, it does not explicitly mention 'use sim_marketplace_search_tool instead if you do not know the model ID' or otherwise state exclusions, so it falls short of full alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sim_marketplace_search_toolA

Search the robot model marketplace for available models.

Filters by keyword, tags, sim backend, or robot type. When exact keyword match returns nothing, falls back to a local LLM (Ollama) to suggest the closest catalog entry.

Return Format

{"success": bool, "message": str, "matches": [{ "id", "name", "type", "tags", "sim_backends", "formats", "joint_count", "actuator_count" }], "total": int, "llm_fallback_used": bool}

Examples

sim_marketplace_search_tool(query="go2") sim_marketplace_search_tool(tags=["humanoid", "unitree"]) sim_marketplace_search_tool(sim_backend="gazebo")

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter by tags (e.g. 'humanoid', 'biped', 'quadruped').
typeNoFilter by robot type (e.g. 'humanoid', 'quadruped', 'biped').
queryNoKeyword to search model names, tags, and formats.
sim_backendNoFilter by compatible sim backend (e.g. 'mujoco', 'gazebo', 'isaac', 'limx').

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly explains the exact query behavior, including the Ollama LLM fallback, and specifies the return format (success, message, matches, total, llm_fallback_used). This goes beyond a simple description and tells an agent what will happen in edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a one-sentence summary, filter list, return format block, and examples. It is slightly longer than strictly necessary, but every section adds useful information, especially the return schema and examples, making it easy for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter search tool with an output schema and descriptive examples, the description covers core behavior, input options, fallback logic, and response shape. The only minor gap is not defining behavior when multiple filters are combined; exceptions, but this is not required for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already covers all parameter meanings at 100% coverage, so the description does not need to repeat definitions. The description does add useful context for 'query' specifically (how exact-match failure triggers LLM fallback) and provides usage examples that illustrate how parameters map to calls, but these are enhancements rather than required clarification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Search the robot model marketplace for available models') and immediately states the supported filter dimensions: keyword, tags, sim backend, or robot type. This clearly differentiates it from siblings like sim_marketplace_info_tool and gazebo_models by emphasizing search and filtering rather than information-only or model-provider roles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for using the tool: search and filter the model marketplace, with example calls showing keyword, tag, and sim_backend filters. However, it does not explicitly state when NOT to use it or mention alternatives like sim_marketplace_info_tool, so it falls just short of strong routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vbot_crudA

CRUD operations for virtual robots (vbots).

This tool provides complete lifecycle management for virtual robots:

  • Create: Spawn and register a new virtual robot

  • Read: Get details of an existing virtual robot

  • Update: Modify virtual robot properties (scale, position, metadata, etc.)

  • Delete: Remove and unregister a virtual robot

  • List: List all virtual robots with optional filtering

Supported robot types:

  • "scout": Moorebot Scout (mecanum wheels, indoor)

  • "scout_e": Moorebot Scout E (tracked, waterproof, outdoor)

  • "go2": Unitree Go2 (quadruped)

  • "g1": Unitree G1 (humanoid with arms)

  • "yahboom": Yahboom ROSMASTER series (AI-enabled wheeled robots)

  • "drone": Generic PX4/ArduPilot drones

  • "px4_quad": PX4 quadcopter drones

  • "ardupilot": ArduPilot-based drones

  • "robbie": Robbie from Forbidden Planet (classic sci-fi robot)

  • "custom": Custom robot type (requires model_path)

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNoSize multiplier for "create" or "update" (e.g., 1.0 = original size).
metadataNoAdditional metadata dictionary for "create" or "update".
platformNoTarget platform ("unity" or "vrchat"). Default: "unity".unity
positionNoSpawn/update position (x, y, z) for "create" or "update".
robot_idNoVirtual robot identifier (required for "read", "update", "delete"). Auto-generated for "create" if not provided.
operationYesCRUD operation to perform: - "create": Create/spawn a new virtual robot - "read": Read/get details of an existing virtual robot - "update": Update properties of an existing virtual robot - "delete": Delete/remove a virtual robot - "list": List all virtual robots (optionally filtered)
model_pathNoPath to 3D model file (.glb, .fbx, .vrm) for "create" with "custom" robot_type.
robot_typeNoType of robot (required for "create", optional for "list"). Must be one of: "scout", "scout_e", "go2", "g1", "yahboom", "drone", "px4_quad", "ardupilot", "robbie", "custom".

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the burden of explaining side effects. It does this reasonably well by saying 'spawn and register' for create and 'remove and unregister' for delete, and by listing supported robot types. It does not cover permission requirements, persistence guarantees, or failure behavior, but the destructive lifecycle side effects are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The structure is clear and scannable: a lead sentence, a CRUD operation bullet list, then a supported-robot-types list. The 'complete lifecycle management' phrase slightly restates CRUD, but helps emphasize the tool's purpose. Overall the description is informative without being excessive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 8 parameters, the operation enum, and the output schema, the description is nearly complete: it explains operations, side effects, and the robot-type semantics that are most likely to confuse an agent. The main gaps are explicit exclusion of non-lifecycle vbot tools and some detail on what 'optional filtering' means for list, but those are also covered by the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is already 100%, so the baseline is 3. The description adds meaningful semantic context beyond the schema by grouping scale/position/metadata with create/update, noting that custom robots require a model_path, and explaining what each robot type actually is, such as mecanum wheels or waterproof tracked outdoor.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the resource (virtual robots/vbots) and the general action ('CRUD operations'), then enumerates create/read/update/delete/list. It is specific enough to distinguish this from control or manufacturing tools, though it could more explicitly differentiate from sibling tools such as robot_control or robot_virtual.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: if you need lifecycle management or a CRUD action on a vbot, this is the tool. However, it does not explicitly state when to avoid it, nor does it point to alternatives for non-lifecycle tasks like real-time control, manufacturing, or behavior definition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflow_managementC

Comprehensive workflow management operations.

OPERATIONS:

  • create: Create new workflow (requires workflow_data)

  • read: Get workflow details (requires workflow_id)

  • update: Update workflow (requires workflow_id, workflow_data)

  • delete: Delete workflow (requires workflow_id)

  • list: List all workflows (filterable by category, tags, search)

  • execute: Execute workflow (requires workflow_id, variables)

  • status: Get execution status (requires execution_id)

  • templates: List available workflow templates

  • import: Import workflow from JSON (requires workflow_data)

  • export: Export workflow to JSON (requires workflow_id)

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter by tags (for list operation)
searchNoSearch query (for list operation)
categoryNoFilter by category (for list operation)
operationYesOperation to perform
variablesNoVariables for workflow execution
debug_modeNo
workflow_idNoWorkflow identifier
execution_idNoExecution identifier (for status operations)
workflow_dataNoWorkflow definition (for create/update/import)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description shoulders the burden of behavioral disclosure. It lists operations like delete, execute, import, and export but does not warn about side effects, destructiveness, execution costs, permissions, or consequences. The word 'Comprehensive' implies full coverage, but pause, resume, step, and continue operations from the schema are omitted, making it less transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is reasonably concise and well-structured, using a bullet list of operations that is easy to scan. The first line 'Comprehensive workflow management operations' is slightly redundant, but it does not waste much space. The main issue is that the structure suggests completeness while four enum operations (pause, resume, step, continue) are missing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a multi-operation, 9-parameter tool with no annotations, so the description needs to be thorough. It omits pause, resume, step, and continue, which are valid operations in the schema, and doesn't address debug_mode. The operation list is useful but not complete enough for an agent to safely and correctly invoke all possible behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 89%, which is high enough to set the baseline at 3. The description does reinforce operation-parameter mapping, e.g., 'execute: requires workflow_id, variables', but this adds little beyond the schema's own parameter descriptions, which already say 'for status operations', 'for list operation', and 'for create/update/import'. It does not explain debug_mode or the omitted operations in the enum.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the tool's domain and enumerates specific operations: create, read, update, delete, list, execute, status, templates, import, export. Each operation is a clear verb plus resource, so an agent can understand what the tool does. However, it does not differentiate from sibling tools by naming what it is not or when to prefer it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an operation list and required parameters ('requires workflow_id'), but does not provide guidance on when to use this tool instead of a sibling tool, nor any exclusion or alternative recommendations. The usage context is only implicit: if you need workflow management, use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 25 tool updatesv0.2.1
    • Addeddreame_control
    • Addeddreame_onboard
    • Addeddrone_control
    • Addeddrone_flight_control
    • Addeddrone_navigation
    • Addeddrone_streaming
    • Addedenvironmental_logistics_handler
    • Addedgazebo_models
    • Addednoetix_info
    • Changedrobot_behavior24 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / action / description
        Added value: +"Action to perform (see category-specific actions above)."
      • addedInput schema / properties / angle_x / description
        Added value: +"Camera angle X (pitch) in degrees."
      • addedInput schema / properties / angle_y / description
        Added value: +"Camera angle Y (yaw) in degrees."
      • addedInput schema / properties / animation_name / description
        Added value: +"Animation name for play_animation."
      • addedInput schema / properties / animation_speed / description
        Added value: +"Animation speed multiplier."
      • addedInput schema / properties / arm_id / description
        Added value: +"Arm identifier for multi-arm robots (e.g., \"left\", \"right\")."
      • addedInput schema / properties / category / description
        Added value: +"Behavior category: \"animation\", \"camera\", or \"navigation\"."
      • addedInput schema / properties / end_effector_pose / description
        Added value: +"End-effector pose dict with position and orientation."
      • addedInput schema / properties / force_limit / description
        Added value: +"Maximum force/torque limit for movement."
      • addedInput schema / properties / goal_position / description
        Added value: +"Goal position (x, y, z) for plan_path."
      • addedInput schema / properties / gripper_position / description
        Added value: +"Gripper position (0.0 = open, 1.0 = closed)."
      • addedInput schema / properties / joint_positions / description
        Added value: +"Joint positions dict (e.g., {\"shoulder\": 45.0, \"elbow\": 90.0})."
      • addedInput schema / properties / loop / description
        Added value: +"Whether to loop animation."
      • addedInput schema / properties / manipulation_speed / description
        Added value: +"Movement speed (0.0-1.0) for arm/gripper motion."
      • addedInput schema / properties / obstacle_position / description
        Added value: +"Obstacle position (x, y, z) for avoid_obstacle."
      • addedInput schema / properties / output_path / description
        Added value: +"Output file path for capture_image."
      • addedInput schema / properties / path_id / description
        Added value: +"Path identifier for follow_path or get_path_status."
      • addedInput schema / properties / pose / description
        Added value: +"Pose name for set_pose."
      • addedInput schema / properties / robot_id / description
        Added value: +"Robot identifier (e.g., \"scout_01\", \"vbot_scout_01\")."
      • addedInput schema / properties / start_position / description
        Added value: +"Start position (x, y, z) for plan_path."
      • addedInput schema / properties / stream_url / description
        Added value: +"Stream URL for start_streaming."
      • addedInput schema / properties / waypoint / description
        Added value: +"Waypoint position (x, y, z) for set_waypoint."
      • addedInput schema / properties / wheel_speeds / description
        Added value: +"Wheel speeds for animate_wheels."
    • Changedrobot_control25 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / action / description
        Added value: +"Operation to perform. MUST be one of the supported operations above:\nUniversal Operations:\n- \"get_status\": Get comprehensive robot status (battery, position, sensors, capabilities)\n- \"move\": Control movement with linear/angular velocities (all mobile robots)\n- \"stop\": Emergency stop all movement (all robots)\n\nPhysical Robot Operations:\n- \"return_to_dock\": Return to charging dock (vacuums only)\n- \"stand\": Stand up from sitting position (legged robots)\n- \"sit\": Sit down (legged robots)\n- \"walk\": Start walking gait (legged robots)\n- \"sync_vbot\": Synchronize virtual robot with physical robot state\n\nYahboom Robot Operations:\n- \"home_patrol\": Start autonomous home security patrol\n- \"camera_capture\": Capture image from robot camera\n- \"arm_move\": Move robotic arm to specified joint angles\n- \"gripper_control\": Control gripper open/close/stop\n- \"navigate_to\": Navigate to specific coordinates\n- \"ai_query\": Multimodal AI query (text/vision/voice/multimodal)\n\nDreame Vacuum Operations:\n- \"start_auto_empty\": Start automatic dust bin emptying\n- \"stop_auto_empty\": Stop automatic dust bin emptying\n- \"start_self_clean\": Start mop self-cleaning cycle\n- \"stop_self_clean\": Stop mop self-cleaning cycle\n- \"set_suction_level\": Set vacuum suction power (1-4)\n- \"set_water_volume\": Set mopping water volume (1-3)\n- \"set_mop_humidity\": Set mop pad humidity (1-3)\n- \"clean_zone\": Clean specific rectangular zones\n- \"clean_spot\": Intensive spot cleaning at coordinates\n- \"start_mapping\": Start new map creation/mapping\n- \"rename_room\": Rename a detected room\n- \"set_cleaning_sequence\": Set room cleaning order\n- \"set_restricted_zones\": Create virtual walls/restricted zones\n- \"get_cleaning_history\": Retrieve cleaning history\n- \"clear_error\": Clear error conditions"
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "get_status",
        -  "move",
        -  "stop",
        -  "return_to_dock",
        -  "stand",
        -  "sit",
        -  "walk",
        -  "sync_vbot"
        -]New value: +[
        +  "get_status",
        +  "move",
        +  "stop",
        +  "return_to_dock",
        +  "stand",
        +  "sit",
        +  "walk",
        +  "sync_vbot",
        +  "home_patrol",
        +  "camera_capture",
        +  "arm_move",
        +  "gripper_control",
        +  "navigate_to",
        +  "ai_query",
        +  "start_cleaning",
        +  "stop_cleaning",
        +  "start_auto_empty",
        +  "stop_auto_empty",
        +  "start_self_clean",
        +  "stop_self_clean",
        +  "set_suction_level",
        +  "set_water_volume",
        +  "set_mop_humidity",
        +  "clean_zone",
        +  "clean_spot",
        +  "clean_room",
        +  "go_to",
        +  "get_map",
        +  "start_mapping",
        +  "start_fast_mapping",
        +  "rename_room",
        +  "set_cleaning_sequence",
        +  "set_restricted_zones",
        +  "get_cleaning_history",
        +  "clear_error",
        +  "emergency_stop",
        +  "hue_get_movement_events",
        +  "hue_get_sensor_status",
        +  "hue_get_movement_zones"
        +]
      • addedInput schema / properties / angular / description
        Added value: +"Angular velocity (rad/s) for rotation. Range: -3.14 to 3.14 rad/s"
      • addedInput schema / properties / cleaning_sequence
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "integer"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "List of room IDs defining cleaning order [room1, room2, ...]"
        +}
      • addedInput schema / properties / duration / description
        Added value: +"Movement duration in seconds. Default: continuous until stopped"
      • addedInput schema / properties / gripper_action
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "open",
        +        "close",
        +        "stop"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Gripper action. MUST be \"open\", \"close\", or \"stop\""
        +}
      • addedInput schema / properties / joint_angles
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "type": "number"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Dictionary of joint names to target angles (degrees) for arm control"
        +}
      • addedInput schema / properties / linear / description
        Added value: +"Linear velocity (m/s) for move operations. Range: -2.0 to 2.0 m/s"
      • addedInput schema / properties / mop_humidity
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Mop pad humidity level (1-3, where 3 is maximum humidity)"
        +}
      • addedInput schema / properties / patrol_route
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Name of predefined patrol route for autonomous navigation"
        +}
      • addedInput schema / properties / query
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "AI query text for multimodal analysis (Yahboom robots)"
        +}
      • addedInput schema / properties / query_type
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "text",
        +        "vision",
        +        "voice",
        +        "multimodal"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "AI query type. MUST be \"text\", \"vision\", \"voice\", or \"multimodal\""
        +}
      • addedInput schema / properties / restricted_zones
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": {
        +        "items": {
        +          "items": {
        +            "type": "integer"
        +          },
        +          "type": "array"
        +        },
        +        "type": "array"
        +      },
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Dictionary with 'walls' and 'zones' keys for virtual barriers"
        +}
      • addedInput schema / properties / robot_id / description
        Added value: +"Unique robot identifier. MUST follow naming convention:\n- Physical: \"scout_01\", \"go2_01\", \"g1_01\", \"yahboom_01\", \"elegoo_01\", \"dreame_01\", \"hue_01\"\n- Virtual: \"vbot_scout_01\", \"unity_bot_01\", \"vrchat_bot_01\""
      • addedInput schema / properties / room_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Room identifier for room-specific operations"
        +}
      • addedInput schema / properties / room_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "New name for room renaming operations"
        +}
      • addedInput schema / properties / spot_x
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "X coordinate for intensive spot cleaning"
        +}
      • addedInput schema / properties / spot_y
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Y coordinate for intensive spot cleaning"
        +}
      • addedInput schema / properties / suction_level
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Vacuum suction power level (1-4, where 4 is maximum)"
        +}
      • addedInput schema / properties / theta
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Target orientation (radians) for navigation operations"
        +}
      • addedInput schema / properties / water_volume
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Mopping water volume level (1-3, where 3 is maximum)"
        +}
      • addedInput schema / properties / x
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Target X coordinate (meters) for navigation operations"
        +}
      • addedInput schema / properties / y
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "Target Y coordinate (meters) for navigation operations"
        +}
      • addedInput schema / properties / zones
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "items": {
        +          "type": "integer"
        +        },
        +        "type": "array"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "List of zone coordinates [[x1,y1,x2,y2], ...] for zone cleaning"
        +}
    • Changedrobot_manufacturing12 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / action / description
        Added value: +"Specific action to perform (depends on category and device_type):\nControl actions: \"start_print\", \"stop_print\", \"pause_print\", \"resume_print\",\n               \"set_temperature\", \"home_axes\", \"move_head\", \"send_gcode\",\n               \"load_filament\", \"unload_filament\"\nMonitor actions: \"get_status\", \"get_progress\", \"get_temperatures\",\n               \"get_webcam\", \"get_files\"\nMaintenance actions: \"level_bed\", \"calibrate_pid\", \"clean_nozzle\",\n                   \"update_firmware\""
      • addedInput schema / properties / category / description
        Added value: +"Operation category. MUST be one of:\n- \"control\": Direct device control (start/stop/move operations)\n- \"monitor\": Status monitoring and data retrieval\n- \"maintenance\": Calibration, cleaning, firmware updates"
      • addedInput schema / properties / device_id / description
        Added value: +"Unique identifier for the manufacturing device\n(e.g., \"printer_01\", \"cnc_mill_01\", \"laser_pro_01\")"
      • addedInput schema / properties / device_type / description
        Added value: +"Type of manufacturing equipment. MUST be one of:\n- \"3d_printer\": FDM/FFF 3D printers (OctoPrint, Moonraker, Repetier)\n- \"cnc_machine\": CNC milling/drilling machines\n- \"laser_cutter\": Laser cutting/engraving systems"
      • addedInput schema / properties / file_path / description
        Added value: +"Path to file for printing/cutting operations\n(STL/G-code/SVG files)"
      • addedInput schema / properties / gcode / description
        Added value: +"Raw G-code commands to send to device (string)"
      • addedInput schema / properties / maintenance_action / description
        Added value: +"Maintenance operation to perform (optional)"
      • addedInput schema / properties / monitor_type / description
        Added value: +"What to monitor (optional, defaults to \"status\"):\n- \"status\": Current device state and health\n- \"temperature\": Temperature readings (3D printers)\n- \"progress\": Operation progress and time remaining\n- \"webcam\": Live camera feed URL (if available)"
      • addedInput schema / properties / position / description
        Added value: +"Position coordinates as dict (X, Y, Z in mm):\n- \"x\": X-axis position\n- \"y\": Y-axis position\n- \"z\": Z-axis position"
      • addedInput schema / properties / speed / description
        Added value: +"Speed/feed rate settings:\n- 3D printers: Print speed (mm/s)\n- CNC machines: Feed rate (mm/min)\n- Laser cutters: Cutting speed (mm/min)"
      • addedInput schema / properties / temperature / description
        Added value: +"Temperature settings as dict (3D printers):\n- \"hotend\": Nozzle temperature (Β°C)\n- \"bed\": Build plate temperature (Β°C)\n- \"chamber\": Chamber temperature (Β°C)"
    • Changedrobot_model25 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / category
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / create_prefab / description
        Added value: +"Create Unity prefab after import."
      • addedInput schema / properties / create_textures / description
        Added value: +"Create textures using gimp-mcp (for create)."
      • addedInput schema / properties / dimensions / description
        Added value: +"Custom dimensions for create (length, width, height in meters)."
      • addedInput schema / properties / format / description
        Added value: +"Model format (used by create/import/export).\n- \"fbx\": Industry standard (recommended for robots)\n- \"glb\": Modern glTF 2.0 format\n- \"obj\": Simple mesh format\n- \"vrm\": VRM format (ONLY for humanoid robots)"
      • addedInput schema / properties / include_animations / description
        Added value: +"Include animations in export."
      • addedInput schema / properties / model_path / description
        Added value: +"Path to model file (required for import)."
      • addedInput schema / properties / operation / description
        Added value: +"The model operation to perform. MUST be one of:\n- \"create\": Create model (requires: robot_type, output_path)\n- \"import\": Import model (requires: robot_type, model_path)\n- \"export\": Export model (requires: robot_id)\n- \"convert\": Convert model (requires: source_path, source_format, target_format)"
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "create",
        -  "import",
        -  "export",
        -  "convert",
        -  "spz_check",
        -  "spz_convert",
        -  "spz_extract",
        -  "spz_install"
        -]New value: +[
        +  "create",
        +  "import",
        +  "export",
        +  "convert",
        +  "spz_check",
        +  "spz_convert",
        +  "spz_extract",
        +  "spz_install",
        +  "execute_script",
        +  "list_scripts",
        +  "execute_repository_script"
        +]
      • addedInput schema / properties / output_format / description
        Added value: +"Output format for spz_convert (ply, obj, glb)."
      • addedInput schema / properties / output_path / description
        Added value: +"Path for output file (required for create, optional for export/convert)."
      • addedInput schema / properties / platform / description
        Added value: +"Target platform for import (unity/vrchat/resonite)."
      • addedInput schema / properties / project_path / description
        Added value: +"Unity project path (for import)."
      • addedInput schema / properties / robot_id / description
        Added value: +"Virtual robot identifier (required for export)."
      • addedInput schema / properties / robot_type / description
        Added value: +"Type of robot (required for create/import).\nExamples: \"scout\", \"go2\", \"g1\", \"robbie\", \"custom\""
      • addedInput schema / properties / script
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / script_name
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / source_format / description
        Added value: +"Source file format (required for convert)."
      • addedInput schema / properties / source_path / description
        Added value: +"Source file path (required for convert)."
      • addedInput schema / properties / spz_path / description
        Added value: +"Path to .spz file (required for spz_* operations)."
      • addedInput schema / properties / target_format / description
        Added value: +"Target file format (required for convert)."
      • addedInput schema / properties / target_path / description
        Added value: +"Output file path (optional for convert)."
      • addedInput schema / properties / texture_style / description
        Added value: +"Texture style for create (realistic/stylized/simple)."
      • addedInput schema / properties / unity_project_path / description
        Added value: +"Unity project path for spz_install."
    • Changedrobot_virtual14 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / environment / description
        Added value: +"Environment name (Marble-generated) for load_environment."
      • addedInput schema / properties / environment_path / description
        Added value: +"Path to environment file for load_environment."
      • addedInput schema / properties / include_colliders / description
        Added value: +"Whether to import collider meshes (default: True)."
      • addedInput schema / properties / metadata / description
        Added value: +"Additional metadata dictionary for create/update."
      • addedInput schema / properties / model_path / description
        Added value: +"Path to 3D model file (.glb, .fbx, .vrm) for custom robot_type."
      • addedInput schema / properties / operation / description
        Added value: +"Operation to perform (see CRUD and Virtual Robot Operations above)."
      • addedInput schema / properties / platform / description
        Added value: +"Target platform (\"unity\", \"vrchat\", \"resonite\"). Default: \"unity\"."
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "unity",
        -  "vrchat"
        -]New value: +[
        +  "unity",
        +  "vrchat",
        +  "resonite"
        +]
      • addedInput schema / properties / position / description
        Added value: +"Spawn/update position (x, y, z) for create/spawn/update."
      • addedInput schema / properties / project_path / description
        Added value: +"Unity project path (optional, auto-detected if not provided)."
      • addedInput schema / properties / robot_id / description
        Added value: +"Virtual robot identifier (required for read, update, delete, get_status, etc.).\nAuto-generated for create/spawn if not provided."
      • addedInput schema / properties / robot_type / description
        Added value: +"Type of robot (required for create/spawn).\nExamples: \"scout\", \"go2\", \"g1\", \"robbie\", \"custom\""
      • addedInput schema / properties / scale / description
        Added value: +"Size multiplier for create/spawn/update/set_scale."
    • Addedrobotics_agentic_workflow
    • Addedrobotics_fab_art
    • Addedrobotics_sim_art
    • Changedrobotics_system4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / is_virtual / description
        Added value: +"Optional filter for list_robots operation.\n- True: Only virtual robots (vbots)\n- False: Only physical robots (bots)\n- None: Both virtual and physical robots"
      • addedInput schema / properties / operation / description
        Added value: +"The system operation to perform. MUST be one of:\n- \"help\": Get help information (no additional parameters)\n- \"status\": Get server status (no additional parameters)\n- \"list_robots\": List robots (optional: robot_type, is_virtual filters)"
      • addedInput schema / properties / robot_type / description
        Added value: +"Optional filter for list_robots operation.\nValid values: \"scout\", \"go2\", \"g1\", \"dreame\", or any custom robot type.\nIf None, returns all robot types."
    • Addedsim_fleet_backends
    • Addedsim_fleet_route
    • Addedsim_fleet_status
    • Addedsim_marketplace_info_tool
    • Addedsim_marketplace_search_tool
    • Changedvbot_crud10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / metadata / description
        Added value: +"Additional metadata dictionary for \"create\" or \"update\"."
      • addedInput schema / properties / model_path / description
        Added value: +"Path to 3D model file (.glb, .fbx, .vrm) for \"create\" with \"custom\" robot_type."
      • addedInput schema / properties / operation / description
        Added value: +"CRUD operation to perform:\n- \"create\": Create/spawn a new virtual robot\n- \"read\": Read/get details of an existing virtual robot\n- \"update\": Update properties of an existing virtual robot\n- \"delete\": Delete/remove a virtual robot\n- \"list\": List all virtual robots (optionally filtered)"
      • addedInput schema / properties / platform / description
        Added value: +"Target platform (\"unity\" or \"vrchat\"). Default: \"unity\"."
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "unity",
        -  "vrchat"
        -]New value: +[
        +  "unity",
        +  "vrchat",
        +  "resonite"
        +]
      • addedInput schema / properties / position / description
        Added value: +"Spawn/update position (x, y, z) for \"create\" or \"update\"."
      • addedInput schema / properties / robot_id / description
        Added value: +"Virtual robot identifier (required for \"read\", \"update\", \"delete\").\nAuto-generated for \"create\" if not provided."
      • addedInput schema / properties / robot_type / description
        Added value: +"Type of robot (required for \"create\", optional for \"list\").\nMust be one of: \"scout\", \"scout_e\", \"go2\", \"g1\", \"yahboom\", \"drone\", \"px4_quad\", \"ardupilot\", \"robbie\", \"custom\"."
      • addedInput schema / properties / scale / description
        Added value: +"Size multiplier for \"create\" or \"update\" (e.g., 1.0 = original size)."
    • Changedworkflow_management10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / category / description
        Added value: +"Filter by category (for list operation)"
      • addedInput schema / properties / debug_mode
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
      • addedInput schema / properties / execution_id / description
        Added value: +"Execution identifier (for status operations)"
      • addedInput schema / properties / operation / description
        Added value: +"Operation to perform"
      • addedInput schema / properties / search / description
        Added value: +"Search query (for list operation)"
      • addedInput schema / properties / tags / description
        Added value: +"Filter by tags (for list operation)"
      • addedInput schema / properties / variables / description
        Added value: +"Variables for workflow execution"
      • addedInput schema / properties / workflow_data / description
        Added value: +"Workflow definition (for create/update/import)"
      • addedInput schema / properties / workflow_id / description
        Added value: +"Workflow identifier"
  2. 10 tool updatesv1.0.0
    • Removedrobot_animation
    • Addedrobot_behavior
    • Removedrobot_camera
    • Addedrobot_manufacturing
    • Changedrobot_model4 fields changed
      • changedInput schema / properties / operation / enum
        Previous value: -[
        -  "create",
        -  "import",
        -  "export",
        -  "convert"
        -]New value: +[
        +  "create",
        +  "import",
        +  "export",
        +  "convert",
        +  "spz_check",
        +  "spz_convert",
        +  "spz_extract",
        +  "spz_install"
        +]
      • addedInput schema / properties / output_format
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / spz_path
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
      • addedInput schema / properties / unity_project_path
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null
        +}
    • Removedrobot_navigation
    • Addedrobot_virtual
    • Removedspz_converter
    • Removedvirtual_robotics
    • Addedworkflow_management
  3. 9 tool updates
    • First observedrobot_animation
    • First observedrobot_camera
    • First observedrobot_control
    • First observedrobot_model
    • First observedrobot_navigation
    • First observedrobotics_system
    • First observedspz_converter
    • First observedvbot_crud
    • First observedvirtual_robotics

TDQS

C2.7/5.0
Disambiguation1/5

Tool boundaries are severely unclear: `robot_virtual` and `vbot_crud` both provide vbot CRUD, `robot_control` and `dreame_control` both expose Dreame vacuum commands, and `drone_control`, `drone_flight_control`, and `drone_navigation` overlap heavily on flight and mission management. The portmanteau-style operation lists make it hard for an agent to know which tool is canonical for a given action.

Naming Consistency2/5

Most names are snake_case, but they do not follow a consistent action-oriented pattern: some use `_control`, some `_management`, some `_info`, some `_tool`, and some are arbitrary nouns like `robot_virtual`, `vbot_crud`, or `noetix_info`. This makes it difficult to predict tool names or to infer which tool will handle a specific operation.

Tool Count3/5

The 25-tool count is at the heavy end of a reasonable range for such a broad robotics server, but several tools are near-duplicates or one-off info helpers. The set would be easier to navigate if the overlap-free core were consolidated.

Completeness3/5

The surface covers many important areas: virtual robot lifecycle, model management, workflow CRUD, Dreame vacuum controls, drone subsystems, and marketplace lookup. However, `robot_manufacturing` lacks concrete operations, sim backend lifecycle management is only partially exposed, and `robotics_agentic_workflow`/`environmental_logistics_handler` are opaque additions that create coverage gaps.

Maintenance

ActivityActive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables control of ROS/ROS2 robots through natural language commands by translating LLM instructions into ROS topics and services. Supports cross-platform WebSocket-based communication with existing robot systems without requiring code modifications.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables controlling robots in ROS environments through natural language, supporting topics, services, actions, and GUI tools.
    24
    36
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sandraschi/robotics-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server