Robotics MCP Server
The Robotics MCP Server provides unified control for both physical robots (Moorebot Scout, Unitree Go2/G1 via ROS) and virtual robots (in Unity, VRChat, Resonite) through a single interface.
Core Capabilities:
System Management: Get comprehensive help, check server status with health monitoring, and list all robots with filtering by type and physical/virtual status.
Robot Control & Movement: Control movement with linear/angular velocities, emergency stop, return to dock, and execute specific poses (stand, sit, walk gaits for Unitree). Sync virtual robots with physical robot states in real-time.
Virtual Robot Lifecycle (CRUD): Create, read, update, delete, and list virtual robots (vbots) with support for Scout, Scout E, Go2, G1, Robbie, and custom models. Update properties including position, scale, and metadata.
3D Model Management: Create robot models from scratch using Blender MCP, import/export models to/from game engines, and convert between formats (FBX, GLB, OBJ, VRM). Generate textures using GIMP MCP with realistic/stylized/simple styles.
Animation Control: Control wheel rotation for mecanum robots, play movement animations (walk, turn, idle), set poses, play custom animations with speed/loop controls, and query animation states.
Camera & Vision: Access live camera feeds from physical robots, get virtual camera views, adjust camera angles (pitch/yaw), capture still images, and manage video streaming.
Navigation & Path Planning: Plan paths using A* or RRT algorithms, execute planned paths with real-time following, set/clear waypoints for multi-point navigation, implement dynamic obstacle avoidance, and query navigation status.
Environment Management: Load environments from World Labs Marble/Chisel generators, get virtual LiDAR scans using Unity physics raycasting, and test navigation in virtual environments.
File Conversion: Convert Adobe .spz compressed files to .ply or .splat formats for Unity integration and extract metadata.
Hardware Integration: Support for LiDAR sensors (YDLIDAR SuperLight, Livox Mid-360), microcontrollers (Raspberry Pi Pico, ESP32, Arduino Nano), and pyroelectric motion sensors (AM312, HC-SR501).
Technical Features: Dual transport modes (stdio MCP protocol and HTTP FastAPI endpoints), ROS 1.4 Melodic integration via rosbridge_suite, mock mode for testing without hardware, multi-robot coordination, and composition of 6+ specialized MCP servers (osc-mcp, unity3d-mcp, vrchat-mcp, avatar-mcp, blender-mcp, gimp-mcp).
Enables automated 3D robot model creation and geometry generation for robotics applications
Provides texture creation and image processing capabilities for robot model development
Integrates with ROS 1.4 (Melodic) via rosbridge_suite for physical robot control, including Moorebot Scout and Unitree robots
Enables virtual robot instantiation, environment loading, and robot model import in Unity3D projects
Provides virtual robot control and integration capabilities within VRChat environments
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Robotics MCP Servermove the Scout robot forward 2 meters and scan the environment"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
Prerequisites, hardware, install, packaging, Cursor, config, composed MCPs, testing, troubleshooting | |
Tool examples, web UI, HTTP endpoints | |
Safety, legal, and operational standards for the android fleet | |
Unity, VRChat, peer MCP servers when you need the full stack | |
Auto-restart and health checks |
Status: Industrial v1.4.1 (2026-04-14) | SOTA v1.4.1 Compliance | Benny Protocol Secured.
Quick Start
git clone https://github.com/sandraschi/robotics-mcp
cd robotics-mcp
justThis 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-mcppip install robotics-mcpDevelopment 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
printstatements in core handlers (T201).Webapp (UI): Biome for sub-millisecond linting. Strict
noConsoleLogenforcement.Protocol Compliance: Hardened
stdout/stderrisolation to ensure crash-resistant JSON-RPC communication.Automation: Justfile recipes for all fleet operations (
just lint,just fix,just dev).Security: Automated audits via
banditandsafety.
License
MIT see LICENSE.
Acknowledgments
FastMCP; ROS community; Unity3D, VRChat, World Labs Marble/Chisel; MCP ecosystem contributors.
Available Tools
25 toolsdreame_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
| Name | Required | Description | Default |
|---|---|---|---|
| token | No | Override token (for testing or onboard flow) | |
| zones | No | [[x1,y1,x2,y2], ...] for clean_zone | |
| spot_x | No | ||
| spot_y | No | ||
| room_id | No | Room ID for clean_room | |
| robot_id | No | Robot identifier (default dreame_01) | dreame_01 |
| rotation | No | Degrees for move (-120 to 120) | |
| velocity | No | Distance for move (-300 to 300) | |
| operation | Yes | Operation to perform | |
| ip_address | No | Override IP (for testing or onboard flow) | |
| output_dir | No | Directory for exports (for export_map, default: ~/dreame_maps) | |
| mop_humidity | No | 1-3 for set_mop_humidity | |
| water_volume | No | 1-3 for set_water_volume | |
| suction_level | No | 1-4 for set_suction_level | |
| export_formats | No | Comma-separated: obj,ply,unity,blender,json (for export_map) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Flight mode for set_mode operation (e.g., "STABILIZE", "ALT_HOLD", "LOITER", "AUTO", "RTL") | |
| altitude | No | Target altitude (m) for takeoff operation | |
| drone_id | Yes | Unique drone identifier (e.g., "drone_01", "px4_quad_01", "esp32_drone_01") | |
| yaw_rate | No | Rotational velocity (rad/s) for move operation | |
| operation | Yes | Flight 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_x | No | East-west velocity (m/s) for move operation | |
| velocity_y | No | North-south velocity (m/s) for move operation | |
| velocity_z | No | Up-down velocity (m/s) for move operation (positive = up) | |
| calibration_type | No | Type of calibration for calibrate operation (e.g., "accelerometer", "compass", "level") |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Flight mode name for set_flight_mode operation | |
| drone_id | Yes | Unique drone identifier | |
| operation | Yes | Advanced 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_id | No | Identifier for mission operations | |
| param_name | No | Parameter name for set_parameter operation | |
| param_value | No | New value for the specified parameter | |
| mission_plan | No | Complete mission plan dictionary with waypoints and commands |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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_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.
| Name | Required | Description | Default |
|---|---|---|---|
| bitrate | No | Target bitrate in kbps for stream quality control | |
| quality | No | Video quality preset for streaming ("480p", "720p", "1080p", "4K") | |
| drone_id | Yes | Unique drone identifier | |
| filename | No | Output filename for recording/snapshot operations | |
| protocol | No | Streaming protocol ("rtsp", "rtmp", "webrtc", "hls") | |
| operation | Yes | Video 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Specific 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_n | No | Application force in Newtons. | |
| operation | Yes | The logistics operation to perform. | |
| paint_type | No | Color or type of paint. | |
| pattern_id | No | Optional ID for the pattern, plan, or bounding box. | |
| gripper_type | No | Robotic end-effector or tool type. | vacuum_bernoulli |
| pressure_kpa | No | Operating pressure (vacuum or positive). | |
| material_type | Yes | Material category (e.g., "silk", "photo_paper", "fence", "nestling", "dog", "pool_perimeter", "toddler", "senior", "nursery_wall"). | |
| nozzle_pattern | No | Spray pattern for the paint nozzle. | flat_fan |
| stiffening_agent | No | Polymer used for temporary textile rigidification. | gelatin |
| concentration_pct | No | Agent concentration for stiffening. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Spawn X position (meters) | |
| y | No | Spawn Y position (meters) | |
| z | No | Spawn Z position (meters) | |
| page | No | Page number | |
| owner | No | Model owner | |
| query | No | Search text | |
| category | No | Category filter | |
| per_page | No | Results per page | |
| operation | Yes | Operation to perform | |
| model_name | No | Model name | |
| spawn_name | No | Name for spawned instance |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| operation | No | info |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| loop | No | Whether to loop animation. | |
| pose | No | Pose name for set_pose. | |
| action | Yes | Action to perform (see category-specific actions above). | |
| arm_id | No | Arm identifier for multi-arm robots (e.g., "left", "right"). | |
| angle_x | No | Camera angle X (pitch) in degrees. | |
| angle_y | No | Camera angle Y (yaw) in degrees. | |
| path_id | No | Path identifier for follow_path or get_path_status. | |
| category | Yes | Behavior category: "animation", "camera", or "navigation". | |
| robot_id | Yes | Robot identifier (e.g., "scout_01", "vbot_scout_01"). | |
| waypoint | No | Waypoint position (x, y, z) for set_waypoint. | |
| stream_url | No | Stream URL for start_streaming. | |
| force_limit | No | Maximum force/torque limit for movement. | |
| output_path | No | Output file path for capture_image. | |
| wheel_speeds | No | Wheel speeds for animate_wheels. | |
| goal_position | No | Goal position (x, y, z) for plan_path. | |
| animation_name | No | Animation name for play_animation. | |
| start_position | No | Start position (x, y, z) for plan_path. | |
| animation_speed | No | Animation speed multiplier. | |
| joint_positions | No | Joint positions dict (e.g., {"shoulder": 45.0, "elbow": 90.0}). | |
| gripper_position | No | Gripper position (0.0 = open, 1.0 = closed). | |
| end_effector_pose | No | End-effector pose dict with position and orientation. | |
| obstacle_position | No | Obstacle position (x, y, z) for avoid_obstacle. | |
| manipulation_speed | No | Movement speed (0.0-1.0) for arm/gripper motion. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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"
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Target X coordinate (meters) for navigation operations | |
| y | No | Target Y coordinate (meters) for navigation operations | |
| query | No | AI query text for multimodal analysis (Yahboom robots) | |
| theta | No | Target orientation (radians) for navigation operations | |
| zones | No | List of zone coordinates [[x1,y1,x2,y2], ...] for zone cleaning | |
| action | Yes | Operation 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 | |
| linear | No | Linear velocity (m/s) for move operations. Range: -2.0 to 2.0 m/s | |
| spot_x | No | X coordinate for intensive spot cleaning | |
| spot_y | No | Y coordinate for intensive spot cleaning | |
| angular | No | Angular velocity (rad/s) for rotation. Range: -3.14 to 3.14 rad/s | |
| room_id | No | Room identifier for room-specific operations | |
| duration | No | Movement duration in seconds. Default: continuous until stopped | |
| robot_id | Yes | Unique 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_name | No | New name for room renaming operations | |
| query_type | No | AI query type. MUST be "text", "vision", "voice", or "multimodal" | |
| joint_angles | No | Dictionary of joint names to target angles (degrees) for arm control | |
| mop_humidity | No | Mop pad humidity level (1-3, where 3 is maximum humidity) | |
| patrol_route | No | Name of predefined patrol route for autonomous navigation | |
| water_volume | No | Mopping water volume level (1-3, where 3 is maximum) | |
| suction_level | No | Vacuum suction power level (1-4, where 4 is maximum) | |
| gripper_action | No | Gripper action. MUST be "open", "close", or "stop" | |
| restricted_zones | No | Dictionary with 'walls' and 'zones' keys for virtual barriers | |
| cleaning_sequence | No | List of room IDs defining cleaning order [room1, room2, ...] |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| objective | Yes | The goal you want to achieve with the robotic fleet. | |
| thought_process | Yes | The reasoning behind invoking this workflow. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gimp_url | No | http://127.0.0.1:10773 | |
| svg_path | No | ||
| input_dir | No | ||
| operation | Yes | ||
| preset_id | No | gazebo_model_doc_192 | |
| push_gimp | No | ||
| output_dir | No | ||
| inkscape_url | No | http://127.0.0.1:10900 | |
| laser_preset_id | No | fab_calibration_grid |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gimp_url | No | http://127.0.0.1:10773 | |
| avatar_id | No | ||
| icon_path | No | ||
| input_dir | No | ||
| model_dir | No | ||
| operation | Yes | ||
| avatar_url | No | http://127.0.0.1:10793 | |
| auto_import | No | ||
| models_root | No | ||
| template_id | No | gazebo_icon_256 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| operation | Yes | The 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_virtual | No | Optional filter for list_robots operation. - True: Only virtual robots (vbots) - False: Only physical robots (bots) - None: Both virtual and physical robots | |
| robot_type | No | Optional filter for list_robots operation. Valid values: "scout", "go2", "g1", "dreame", or any custom robot type. If None, returns all robot types. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| gcode | No | Raw G-code commands to send to device (string) | |
| speed | No | Speed/feed rate settings: - 3D printers: Print speed (mm/s) - CNC machines: Feed rate (mm/min) - Laser cutters: Cutting speed (mm/min) | |
| action | Yes | Specific 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" | |
| category | Yes | Operation category. MUST be one of: - "control": Direct device control (start/stop/move operations) - "monitor": Status monitoring and data retrieval - "maintenance": Calibration, cleaning, firmware updates | |
| position | No | Position coordinates as dict (X, Y, Z in mm): - "x": X-axis position - "y": Y-axis position - "z": Z-axis position | |
| device_id | Yes | Unique identifier for the manufacturing device (e.g., "printer_01", "cnc_mill_01", "laser_pro_01") | |
| file_path | No | Path to file for printing/cutting operations (STL/G-code/SVG files) | |
| device_type | Yes | Type 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 | |
| temperature | No | Temperature settings as dict (3D printers): - "hotend": Nozzle temperature (Β°C) - "bed": Build plate temperature (Β°C) - "chamber": Chamber temperature (Β°C) | |
| monitor_type | No | What 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_action | No | Maintenance operation to perform (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Model 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 |
| script | No | ||
| category | No | ||
| platform | No | Target platform for import (unity/vrchat/resonite). | unity |
| robot_id | No | Virtual robot identifier (required for export). | |
| spz_path | No | Path to .spz file (required for spz_* operations). | |
| operation | Yes | The 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) | |
| dimensions | No | Custom dimensions for create (length, width, height in meters). | |
| model_path | No | Path to model file (required for import). | |
| robot_type | No | Type of robot (required for create/import). Examples: "scout", "go2", "g1", "robbie", "custom" | |
| output_path | No | Path for output file (required for create, optional for export/convert). | |
| script_name | No | ||
| source_path | No | Source file path (required for convert). | |
| target_path | No | Output file path (optional for convert). | |
| project_path | No | Unity project path (for import). | |
| create_prefab | No | Create Unity prefab after import. | |
| output_format | No | Output format for spz_convert (ply, obj, glb). | |
| source_format | No | Source file format (required for convert). | |
| target_format | No | Target file format (required for convert). | |
| texture_style | No | Texture style for create (realistic/stylized/simple). | realistic |
| create_textures | No | Create textures using gimp-mcp (for create). | |
| include_animations | No | Include animations in export. | |
| unity_project_path | No | Unity project path for spz_install. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Size multiplier for create/spawn/update/set_scale. | |
| metadata | No | Additional metadata dictionary for create/update. | |
| platform | No | Target platform ("unity", "vrchat", "resonite"). Default: "unity". | unity |
| position | No | Spawn/update position (x, y, z) for create/spawn/update. | |
| robot_id | No | Virtual robot identifier (required for read, update, delete, get_status, etc.). Auto-generated for create/spawn if not provided. | |
| operation | Yes | Operation to perform (see CRUD and Virtual Robot Operations above). | |
| model_path | No | Path to 3D model file (.glb, .fbx, .vrm) for custom robot_type. | |
| robot_type | No | Type of robot (required for create/spawn). Examples: "scout", "go2", "g1", "robbie", "custom" | |
| environment | No | Environment name (Marble-generated) for load_environment. | |
| project_path | No | Unity project path (optional, auto-detected if not provided). | |
| environment_path | No | Path to environment file for load_environment. | |
| include_colliders | No | Whether to import collider meshes (default: True). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Description of the simulation task. | |
| preferred_backend | No | Prefer a specific backend: 'mujoco', 'gazebo', 'isaac', 'limx'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| model_id | Yes | Model ID slug, e.g. 'unitree_go2', 'limx_tron1_pf'. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags (e.g. 'humanoid', 'biped', 'quadruped'). | |
| type | No | Filter by robot type (e.g. 'humanoid', 'quadruped', 'biped'). | |
| query | No | Keyword to search model names, tags, and formats. | |
| sim_backend | No | Filter by compatible sim backend (e.g. 'mujoco', 'gazebo', 'isaac', 'limx'). |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Size multiplier for "create" or "update" (e.g., 1.0 = original size). | |
| metadata | No | Additional metadata dictionary for "create" or "update". | |
| platform | No | Target platform ("unity" or "vrchat"). Default: "unity". | unity |
| position | No | Spawn/update position (x, y, z) for "create" or "update". | |
| robot_id | No | Virtual robot identifier (required for "read", "update", "delete"). Auto-generated for "create" if not provided. | |
| operation | Yes | CRUD 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_path | No | Path to 3D model file (.glb, .fbx, .vrm) for "create" with "custom" robot_type. | |
| robot_type | No | Type 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
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Filter by tags (for list operation) | |
| search | No | Search query (for list operation) | |
| category | No | Filter by category (for list operation) | |
| operation | Yes | Operation to perform | |
| variables | No | Variables for workflow execution | |
| debug_mode | No | ||
| workflow_id | No | Workflow identifier | |
| execution_id | No | Execution identifier (for status operations) | |
| workflow_data | No | Workflow definition (for create/update/import) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
25 tool updates
v0.2.1- Added
dreame_control - Added
dreame_onboard - Added
drone_control - Added
drone_flight_control - Added
drone_navigation - Added
drone_streaming - Added
environmental_logistics_handler - Added
gazebo_models - Added
noetix_info - Changed
robot_behavior24 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded value: +"Action to perform (see category-specific actions above)." - added
Input schema / properties / angle_x / descriptionAdded value: +"Camera angle X (pitch) in degrees." - added
Input schema / properties / angle_y / descriptionAdded value: +"Camera angle Y (yaw) in degrees." - added
Input schema / properties / animation_name / descriptionAdded value: +"Animation name for play_animation." - added
Input schema / properties / animation_speed / descriptionAdded value: +"Animation speed multiplier." - added
Input schema / properties / arm_id / descriptionAdded value: +"Arm identifier for multi-arm robots (e.g., \"left\", \"right\")." - added
Input schema / properties / category / descriptionAdded value: +"Behavior category: \"animation\", \"camera\", or \"navigation\"." - added
Input schema / properties / end_effector_pose / descriptionAdded value: +"End-effector pose dict with position and orientation." - added
Input schema / properties / force_limit / descriptionAdded value: +"Maximum force/torque limit for movement." - added
Input schema / properties / goal_position / descriptionAdded value: +"Goal position (x, y, z) for plan_path." - added
Input schema / properties / gripper_position / descriptionAdded value: +"Gripper position (0.0 = open, 1.0 = closed)." - added
Input schema / properties / joint_positions / descriptionAdded value: +"Joint positions dict (e.g., {\"shoulder\": 45.0, \"elbow\": 90.0})." - added
Input schema / properties / loop / descriptionAdded value: +"Whether to loop animation." - added
Input schema / properties / manipulation_speed / descriptionAdded value: +"Movement speed (0.0-1.0) for arm/gripper motion." - added
Input schema / properties / obstacle_position / descriptionAdded value: +"Obstacle position (x, y, z) for avoid_obstacle." - added
Input schema / properties / output_path / descriptionAdded value: +"Output file path for capture_image." - added
Input schema / properties / path_id / descriptionAdded value: +"Path identifier for follow_path or get_path_status." - added
Input schema / properties / pose / descriptionAdded value: +"Pose name for set_pose." - added
Input schema / properties / robot_id / descriptionAdded value: +"Robot identifier (e.g., \"scout_01\", \"vbot_scout_01\")." - added
Input schema / properties / start_position / descriptionAdded value: +"Start position (x, y, z) for plan_path." - added
Input schema / properties / stream_url / descriptionAdded value: +"Stream URL for start_streaming." - added
Input schema / properties / waypoint / descriptionAdded value: +"Waypoint position (x, y, z) for set_waypoint." - added
Input schema / properties / wheel_speeds / descriptionAdded value: +"Wheel speeds for animate_wheels."
- Changed
robot_control25 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded 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" - changed
Input schema / properties / action / enumPrevious 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" +] - added
Input schema / properties / angular / descriptionAdded value: +"Angular velocity (rad/s) for rotation. Range: -3.14 to 3.14 rad/s" - added
Input schema / properties / cleaning_sequenceAdded value: +{ + "anyOf": [ + { + "items": { + "type": "integer" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "List of room IDs defining cleaning order [room1, room2, ...]" +} - added
Input schema / properties / duration / descriptionAdded value: +"Movement duration in seconds. Default: continuous until stopped" - added
Input schema / properties / gripper_actionAdded value: +{ + "anyOf": [ + { + "enum": [ + "open", + "close", + "stop" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Gripper action. MUST be \"open\", \"close\", or \"stop\"" +} - added
Input schema / properties / joint_anglesAdded value: +{ + "anyOf": [ + { + "additionalProperties": { + "type": "number" + }, + "type": "object" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Dictionary of joint names to target angles (degrees) for arm control" +} - added
Input schema / properties / linear / descriptionAdded value: +"Linear velocity (m/s) for move operations. Range: -2.0 to 2.0 m/s" - added
Input schema / properties / mop_humidityAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Mop pad humidity level (1-3, where 3 is maximum humidity)" +} - added
Input schema / properties / patrol_routeAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Name of predefined patrol route for autonomous navigation" +} - added
Input schema / properties / queryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "AI query text for multimodal analysis (Yahboom robots)" +} - added
Input schema / properties / query_typeAdded value: +{ + "anyOf": [ + { + "enum": [ + "text", + "vision", + "voice", + "multimodal" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "AI query type. MUST be \"text\", \"vision\", \"voice\", or \"multimodal\"" +} - added
Input schema / properties / restricted_zonesAdded 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" +} - added
Input schema / properties / robot_id / descriptionAdded 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\"" - added
Input schema / properties / room_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Room identifier for room-specific operations" +} - added
Input schema / properties / room_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "New name for room renaming operations" +} - added
Input schema / properties / spot_xAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "X coordinate for intensive spot cleaning" +} - added
Input schema / properties / spot_yAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Y coordinate for intensive spot cleaning" +} - added
Input schema / properties / suction_levelAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Vacuum suction power level (1-4, where 4 is maximum)" +} - added
Input schema / properties / thetaAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Target orientation (radians) for navigation operations" +} - added
Input schema / properties / water_volumeAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Mopping water volume level (1-3, where 3 is maximum)" +} - added
Input schema / properties / xAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Target X coordinate (meters) for navigation operations" +} - added
Input schema / properties / yAdded value: +{ + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Target Y coordinate (meters) for navigation operations" +} - added
Input schema / properties / zonesAdded 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" +}
- Changed
robot_manufacturing12 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / action / descriptionAdded 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\"" - added
Input schema / properties / category / descriptionAdded 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" - added
Input schema / properties / device_id / descriptionAdded value: +"Unique identifier for the manufacturing device\n(e.g., \"printer_01\", \"cnc_mill_01\", \"laser_pro_01\")" - added
Input schema / properties / device_type / descriptionAdded 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" - added
Input schema / properties / file_path / descriptionAdded value: +"Path to file for printing/cutting operations\n(STL/G-code/SVG files)" - added
Input schema / properties / gcode / descriptionAdded value: +"Raw G-code commands to send to device (string)" - added
Input schema / properties / maintenance_action / descriptionAdded value: +"Maintenance operation to perform (optional)" - added
Input schema / properties / monitor_type / descriptionAdded 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)" - added
Input schema / properties / position / descriptionAdded 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" - added
Input schema / properties / speed / descriptionAdded 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)" - added
Input schema / properties / temperature / descriptionAdded value: +"Temperature settings as dict (3D printers):\n- \"hotend\": Nozzle temperature (Β°C)\n- \"bed\": Build plate temperature (Β°C)\n- \"chamber\": Chamber temperature (Β°C)"
- Changed
robot_model25 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / categoryAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / create_prefab / descriptionAdded value: +"Create Unity prefab after import." - added
Input schema / properties / create_textures / descriptionAdded value: +"Create textures using gimp-mcp (for create)." - added
Input schema / properties / dimensions / descriptionAdded value: +"Custom dimensions for create (length, width, height in meters)." - added
Input schema / properties / format / descriptionAdded 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)" - added
Input schema / properties / include_animations / descriptionAdded value: +"Include animations in export." - added
Input schema / properties / model_path / descriptionAdded value: +"Path to model file (required for import)." - added
Input schema / properties / operation / descriptionAdded 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)" - changed
Input schema / properties / operation / enumPrevious 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" +] - added
Input schema / properties / output_format / descriptionAdded value: +"Output format for spz_convert (ply, obj, glb)." - added
Input schema / properties / output_path / descriptionAdded value: +"Path for output file (required for create, optional for export/convert)." - added
Input schema / properties / platform / descriptionAdded value: +"Target platform for import (unity/vrchat/resonite)." - added
Input schema / properties / project_path / descriptionAdded value: +"Unity project path (for import)." - added
Input schema / properties / robot_id / descriptionAdded value: +"Virtual robot identifier (required for export)." - added
Input schema / properties / robot_type / descriptionAdded value: +"Type of robot (required for create/import).\nExamples: \"scout\", \"go2\", \"g1\", \"robbie\", \"custom\"" - added
Input schema / properties / scriptAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / script_nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / source_format / descriptionAdded value: +"Source file format (required for convert)." - added
Input schema / properties / source_path / descriptionAdded value: +"Source file path (required for convert)." - added
Input schema / properties / spz_path / descriptionAdded value: +"Path to .spz file (required for spz_* operations)." - added
Input schema / properties / target_format / descriptionAdded value: +"Target file format (required for convert)." - added
Input schema / properties / target_path / descriptionAdded value: +"Output file path (optional for convert)." - added
Input schema / properties / texture_style / descriptionAdded value: +"Texture style for create (realistic/stylized/simple)." - added
Input schema / properties / unity_project_path / descriptionAdded value: +"Unity project path for spz_install."
- Changed
robot_virtual14 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / environment / descriptionAdded value: +"Environment name (Marble-generated) for load_environment." - added
Input schema / properties / environment_path / descriptionAdded value: +"Path to environment file for load_environment." - added
Input schema / properties / include_colliders / descriptionAdded value: +"Whether to import collider meshes (default: True)." - added
Input schema / properties / metadata / descriptionAdded value: +"Additional metadata dictionary for create/update." - added
Input schema / properties / model_path / descriptionAdded value: +"Path to 3D model file (.glb, .fbx, .vrm) for custom robot_type." - added
Input schema / properties / operation / descriptionAdded value: +"Operation to perform (see CRUD and Virtual Robot Operations above)." - added
Input schema / properties / platform / descriptionAdded value: +"Target platform (\"unity\", \"vrchat\", \"resonite\"). Default: \"unity\"." - changed
Input schema / properties / platform / enumPrevious value: -[ - "unity", - "vrchat" -]New value: +[ + "unity", + "vrchat", + "resonite" +] - added
Input schema / properties / position / descriptionAdded value: +"Spawn/update position (x, y, z) for create/spawn/update." - added
Input schema / properties / project_path / descriptionAdded value: +"Unity project path (optional, auto-detected if not provided)." - added
Input schema / properties / robot_id / descriptionAdded value: +"Virtual robot identifier (required for read, update, delete, get_status, etc.).\nAuto-generated for create/spawn if not provided." - added
Input schema / properties / robot_type / descriptionAdded value: +"Type of robot (required for create/spawn).\nExamples: \"scout\", \"go2\", \"g1\", \"robbie\", \"custom\"" - added
Input schema / properties / scale / descriptionAdded value: +"Size multiplier for create/spawn/update/set_scale."
- Added
robotics_agentic_workflow - Added
robotics_fab_art - Added
robotics_sim_art - Changed
robotics_system4 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / is_virtual / descriptionAdded 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" - added
Input schema / properties / operation / descriptionAdded 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)" - added
Input schema / properties / robot_type / descriptionAdded value: +"Optional filter for list_robots operation.\nValid values: \"scout\", \"go2\", \"g1\", \"dreame\", or any custom robot type.\nIf None, returns all robot types."
- Added
sim_fleet_backends - Added
sim_fleet_route - Added
sim_fleet_status - Added
sim_marketplace_info_tool - Added
sim_marketplace_search_tool - Changed
vbot_crud10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / metadata / descriptionAdded value: +"Additional metadata dictionary for \"create\" or \"update\"." - added
Input schema / properties / model_path / descriptionAdded value: +"Path to 3D model file (.glb, .fbx, .vrm) for \"create\" with \"custom\" robot_type." - added
Input schema / properties / operation / descriptionAdded 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)" - added
Input schema / properties / platform / descriptionAdded value: +"Target platform (\"unity\" or \"vrchat\"). Default: \"unity\"." - changed
Input schema / properties / platform / enumPrevious value: -[ - "unity", - "vrchat" -]New value: +[ + "unity", + "vrchat", + "resonite" +] - added
Input schema / properties / position / descriptionAdded value: +"Spawn/update position (x, y, z) for \"create\" or \"update\"." - added
Input schema / properties / robot_id / descriptionAdded value: +"Virtual robot identifier (required for \"read\", \"update\", \"delete\").\nAuto-generated for \"create\" if not provided." - added
Input schema / properties / robot_type / descriptionAdded 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\"." - added
Input schema / properties / scale / descriptionAdded value: +"Size multiplier for \"create\" or \"update\" (e.g., 1.0 = original size)."
- Changed
workflow_management10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / category / descriptionAdded value: +"Filter by category (for list operation)" - added
Input schema / properties / debug_modeAdded value: +{ + "default": false, + "type": "boolean" +} - added
Input schema / properties / execution_id / descriptionAdded value: +"Execution identifier (for status operations)" - added
Input schema / properties / operation / descriptionAdded value: +"Operation to perform" - added
Input schema / properties / search / descriptionAdded value: +"Search query (for list operation)" - added
Input schema / properties / tags / descriptionAdded value: +"Filter by tags (for list operation)" - added
Input schema / properties / variables / descriptionAdded value: +"Variables for workflow execution" - added
Input schema / properties / workflow_data / descriptionAdded value: +"Workflow definition (for create/update/import)" - added
Input schema / properties / workflow_id / descriptionAdded value: +"Workflow identifier"
10 tool updates
v1.0.0- Removed
robot_animation - Added
robot_behavior - Removed
robot_camera - Added
robot_manufacturing - Changed
robot_model4 fields changed- changed
Input schema / properties / operation / enumPrevious value: -[ - "create", - "import", - "export", - "convert" -]New value: +[ + "create", + "import", + "export", + "convert", + "spz_check", + "spz_convert", + "spz_extract", + "spz_install" +] - added
Input schema / properties / output_formatAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / spz_pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Input schema / properties / unity_project_pathAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Removed
robot_navigation - Added
robot_virtual - Removed
spz_converter - Removed
virtual_robotics - Added
workflow_management
9 tool updates
- First observed
robot_animation - First observed
robot_camera - First observed
robot_control - First observed
robot_model - First observed
robot_navigation - First observed
robotics_system - First observed
spz_converter - First observed
vbot_crud - First observed
virtual_robotics
TDQS
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.
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.
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.
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
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
- alloyOAuthai.usealloy
Connect Claude, Cursor, Codex, and other AI tools to your robotics mission data.
Cloud Blender for AI agents: scenes, assets, renders, MP4, STL, GLB β over hosted remote MCP.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal Eβ¦
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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
- AlicenseAqualityDmaintenanceEnables controlling robots in ROS environments through natural language, supporting topics, services, actions, and GUI tools.2436MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language command control of robots via ROS2, with a web portal for real-time visualization and interaction.1MIT
- FlicenseBqualityDmaintenanceUniversal bridge between AI agents and Autoware autonomous driving stack, enabling AI-driven mission planning, real-time vehicle control, and adaptive decision-making.571-
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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