Isaac Sim MCP Server
Allows JetBrains IDEs (e.g., IntelliJ, PyCharm) to control NVIDIA Isaac Sim via MCP, providing tools for managing scenes, robots, sensors, and simulation state.
Integrates with NVIDIA Isaac Sim, providing 42 tools for controlling simulation scenes, objects, lighting, robots, sensors, materials, assets, action graphs, and simulation execution through natural language commands.
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., "@Isaac Sim MCP Serveradd a cube and a sphere to the scene at (0,0,0)"
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.
Isaac Sim MCP Server
Natural language control for NVIDIA Isaac Sim through the Model Context Protocol (MCP).
Connect any MCP-compatible IDE (Cursor, VS Code, Claude Code, Windsurf, JetBrains) to a running Isaac Sim instance and control it with plain-English prompts -- create robots, build scenes, run simulations, and debug physics all from your editor.

Highlights
42 tools across 9 categories -- scene, objects, lighting, robots, sensors, materials, assets, simulation, graphs
107+ robots auto-discovered from the Isaac Sim asset library (Franka, UR, Unitree, Boston Dynamics, and more)
Step-and-observe debugging -- step the simulation and inspect prim positions, joint states, and physics in one call
Hot-reload -- iterate on Python controllers without restarting Isaac Sim
Multi-instance -- run multiple Isaac Sim sessions side by side on different ports
Built for Isaac Sim 5.1.0 with a modular adapter layer for version isolation
Related MCP server: Context7 MCP Server
Installation
Option A: pip install (recommended)
pip install isaacsim-mcp-serverThis installs the MCP server and the isaacsim-mcp-server CLI. You still need the Isaac Sim extension from the repo (see Launching Isaac Sim below).
Option B: From source
git clone https://github.com/whats2000/isaacsim-mcp-server
cd isaacsim-mcp-server
./scripts/setup_python_env.shRequirements
Requirement | Version |
NVIDIA Isaac Sim |
|
Python |
|
| latest (for source install) |
Platform | Linux (Ubuntu 22.04+) |
Currently onlyLinux is supported. Windows support is planned. macOS is not supported because NVIDIA Isaac Sim does not run on macOS.
We are welcoming contributions to support other Isaac Sim versions. The adapter layer is designed for easy version isolation.
Quick Start
1. Set up the environment
If you installed from source:
./scripts/setup_python_env.sh2. Launch Isaac Sim with the extension
./scripts/run_isaac_sim.shYou should see in the logs:
Registered 41 command handlers
Isaac Sim MCP server started on localhost:8766export BEAVER3D_MODEL="<your beaver3d model name>"
export ARK_API_KEY="<your beaver3d api key>"
export NVIDIA_API_KEY="<your nvidia api key>"3. Connect your IDE
Add the MCP server to your editor. Replace the path with your actual repo location.
claude mcp add isaac-sim /path/to/isaacsim-mcp-server/scripts/run_mcp_server.shOr edit ~/.claude.json / .mcp.json:
{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}Create .vscode/mcp.json in your workspace:
{
"servers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}Open Cursor Settings > MCP, or edit ~/.cursor/mcp.json:
{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}Edit the config file for your platform:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}Open Windsurf Settings > MCP or edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
}
}
}Go to Settings > Tools > AI Assistant > MCP Servers and add the server. See the JetBrains MCP docs for details.
4. Start prompting
Check the connection with get_scene_info.
If the scene is empty, create a physics scene.
Add a Franka robot at the origin and a Go1 quadruped at [2, 0, 0].Architecture
MCP Client (IDE)
|
v
isaacsim-mcp-server (PyPI package / CLI)
|
v TCP socket (localhost:8766)
|
isaac.sim.mcp_extension (Omniverse extension)
|
v
Handlers -> Adapter -> Isaac Sim 5.1.0 APIsTools
42 tools across 9 categories:
Category | Count | What you can do |
Scene | 7 | Inspect scenes, create physics, list/load environments, browse prims |
Objects | 4 | Create, delete, transform, and clone primitives |
Lighting | 2 | Create and tune lights |
Robots | 6 | Spawn 107+ robots, inspect joints, set positions, refresh library |
Sensors | 4 | Create cameras/LiDAR, capture images, get point clouds |
Materials | 2 | Create and apply materials |
Assets | 4 | Import URDF, load/search USD, generate 3D models |
Graphs | 2 | Build and edit Action Graphs (OnPlaybackTick, ScriptNode, script file attachment) |
Simulation | 11 | Play/pause/stop/step, execute Python, inspect physics, hot-reload |
Scene: get_scene_info create_physics_scene clear_scene list_prims get_prim_info list_environments load_environment
Objects: create_object delete_object transform_object clone_object
Lighting: create_light modify_light
Robots: create_robot list_available_robots refresh_robot_library get_robot_info set_joint_positions get_joint_positions
Sensors: create_camera capture_image create_lidar get_lidar_point_cloud
Materials: create_material apply_material
Assets: import_urdf load_usd search_usd generate_3d
Graphs: create_action_graph edit_action_graph
Simulation: play_simulation pause_simulation stop_simulation step_simulation set_physics_params get_isaac_logs get_simulation_state get_physics_state get_joint_config execute_script reload_script
Example Prompts
Scene bootstrap
Check the connection with get_scene_info. If the scene is empty, create a physics scene.
Add stronger lighting and place a camera that looks at the workspace.Robot layout
Create three Franka robots in a row at [0,0,0], [2,0,0], and [4,0,0].
Then add a Go1 robot at [1, 3, 0].Environment loading
List available environments, choose a warehouse-like one, and load it.
Create a camera and capture an image.Asset search and 3D generation
Search for a rusty desk, load the best result near [0, 5, 0], scaled to [2, 2, 2].Advanced Usage
Multiple Instances
Run multiple Isaac Sim sessions side by side. Each uses a different port (auto-assigned from 8766).
# First instance (default port 8766)
claude mcp add isaac-sim /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh
# Second instance (port 8767)
claude mcp add isaac-sim-2 -e ISAAC_MCP_PORT=8767 -- /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh{
"mcpServers": {
"isaac-sim": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
},
"isaac-sim-2": {
"command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh",
"env": { "ISAAC_MCP_PORT": "8767" }
}
}
}Desktop Launcher (Linux)
Install a dedicated Isaac Sim MCP application icon:
./scripts/install_desktop_entry.shThis creates a launcher that auto-assigns ports, waits for the extension socket, and cleans up on exit.
Recommended Workflow
Start with
get_scene_infoto verify the connectionCreate a physics scene if the stage is empty
Prefer purpose-built tools before
execute_scriptUse
list_available_robots/list_environmentsbefore loadingUse
create_action_graphto wire OnPlaybackTick → ScriptNode controllersUse
step_simulationwithobserve_primsandobserve_jointsfor debuggingUse
reload_scriptto iterate on controllers without restarting
Demo: Franka Pick-and-Place
A ready-to-run demo at demo/franka_pick_place.py using RMPflow for motion planning:
Please use the Isaac MCP tool complete this:
Create a physics scene with a ground plane, then spawn a Franka FR3 robot at the origin.
Add two textured tables with a gap along Y. Place a small textured cube with physics enabled on top of the first table.
Use `create_action_graph` to wire `OnPlaybackTick` → `ScriptNode`, and write a pick-and-place controller script using RMPflow for motion planning. Save the script to the `demo/` directory.
Use `get_prim_info` to query actual positions and sizes of the tables and cube before writing the controller — do not hardcode coordinates.
Start the simulation with Play. The robot should pick the cube from table 1 and place it on table 2. Verify the process using `step_simulation` with `observe_prims` on the cube to confirm it reaches table 2.Uses create_action_graph with script_file for one-step Action Graph + ScriptNode setup, plus the observability tools: get_joint_config, step_simulation with observe_prims, get_physics_state, and edit_action_graph for script hot-reload.
Development
# Run the MCP inspector
./.venv/bin/python -m mcp dev ./isaac_mcp/server.pyThe inspector is available at http://localhost:5173.
Setup Notes
Script | Purpose | Default |
| Create venv and install package | Python 3.10 |
| Launch Isaac Sim with extension |
|
| Start the MCP server | Port 8766 |
| Combined launcher | Auto-assigns port |
| Dev server with hot-reload | Port 8766 |
Override defaults:
PYTHON_SPEC=3.11 ./scripts/setup_python_env.sh
ISAACSIM_ROOT=/opt/isaacsim ./scripts/run_isaac_sim.shIf Isaac Sim says Can't find extension with name: isaac.sim.mcp_extension:
# Make sure you're in the repo root
pwd
test -f ./isaac.sim.mcp_extension/config/extension.toml && echo OKNote: --ext-folder must point to the repo root, not to isaac.sim.mcp_extension/ directly.
Contributing
Pull requests are welcome. Improvements to tools, docs, adapters, and tests are all useful.
License
MIT License. Copyright (c) 2023-2025 omni-mcp, Copyright (c) 2026 whats2000. See LICENSE.
Available Tools
42 toolsapply_materialC
Bind a material to an object.
Args: material_path: Prim path of the material. target_prim_path: Prim path of the object to apply the material to.
| Name | Required | Description | Default |
|---|---|---|---|
| material_path | Yes | ||
| target_prim_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose behavioral traits such as reversibility, side effects, or required permissions beyond the fact that it modifies state.
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 concise (two sentences plus parameter docs) and front-loaded with the primary action. No unnecessary words.
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 is simple (2 required params) and an output schema exists, the description covers the core action but omits usage context and behavioral details.
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?
With 0% schema coverage, the description adds basic meaning for both parameters ('Prim path of the material', 'Prim path of the object'), but no format or examples.
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 'Bind a material to an object' with specific arguments, effectively distinguishing it from siblings like create_material.
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?
No guidance on when to use this tool versus alternatives, nor any prerequisites or caveats. Implied usage only.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_imageA
Capture an RGB image from a camera sensor.
Args: prim_path: Prim path of the camera. output_path: File path to save the image. Returns metadata only if not set.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | No | /World/Camera | |
| output_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that it captures an RGB image and returns metadata if output_path is not set. However, it does not mention any destructive or side effects, permissions, or constraints (e.g., camera must exist). Some useful behavior is stated, but lacking depth.
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 brief, with a clear first sentence explaining purpose, followed by a compact argument list. No redundant information. Every sentence adds 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?
For a simple tool with two optional parameters and an output schema (though not shown), the description covers the essential behavior: capturing an image and saving to file or returning metadata. It does not explain metadata contents or output schema details, but the presence of an output schema partially mitigates that. Overall, fairly 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?
Schema description coverage is 0%, so the description must compensate. It explains both parameters: prim_path as the camera's prim path and output_path as the file path to save the image, adding meaning beyond the schema. However, it omits details like file format or valid values. Overall, good but not exhaustive.
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 action ('capture'), resource ('RGB image from a camera sensor'), and the primary arguments. It distinguishes itself from sibling tools like 'create_camera' or 'get_scene_info' by focusing on image acquisition. The scope is well-defined.
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 (when an image from a camera is needed) but does not explicitly state when not to use or provide comparisons to alternative tools like 'get_scene_info'. No context-sensitive guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_sceneA
Remove all prims from the scene.
Args: keep_physics: If True, keep physics scene prims.
| Name | Required | Description | Default |
|---|---|---|---|
| keep_physics | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only mentions removal of prims and keep_physics option. Lacks disclosure of return values, side effects, or safety implications.
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?
Two sentences, front-loaded with primary action, no wasted words. Every sentence adds 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?
Simple tool with one parameter; output schema exists so return values not needed. Could mention prerequisites or undo behavior, but adequate for basic use.
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 has 0% description coverage; description fully compensates by explaining keep_physics behavior ('If True, keep physics scene prims') beyond type/default.
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 'Remove all prims from the scene' with a specific verb and resource, distinguishing it from single-object deletion tools like delete_object.
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?
Implied usage via keep_physics parameter but no explicit guidance on when to use clear_scene versus sibling tools (e.g., delete_object). No when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clone_objectA
Duplicate an existing object to a new prim path.
Args: source_path: Prim path of the object to clone. target_path: Prim path for the cloned object. position: [x, y, z] position for the clone. Keeps original position if not set.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | ||
| target_path | Yes | ||
| position | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It does not disclose important behaviors like whether cloning is a deep copy, what happens if target_path exists, or error handling.
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 extremely concise: a single sentence stating the purpose, followed by a clearly structured parameter list with no fluff.
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?
Covers basic input semantics well but lacks information about output (though output schema exists), error conditions, and side effects like overwriting 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?
With 0% schema description coverage, the description adds clear, meaningful explanations for all three parameters, including an example for position.
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 action (duplicate) and resource (existing object to a new prim path), distinguishing it from sibling tools like create_object and transform_object.
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 for copying objects but lacks explicit guidance on when to use versus alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_action_graphA
Create and wire an OmniGraph Action Graph.
Builds a complete Action Graph with nodes, connections and attribute values using og.Controller.edit(). This is the programmatic equivalent of creating an Action Graph in the visual editor.
Args: graph_path: USD prim path for the graph (default "/World/ActionGraph"). nodes: List of node definitions. Each dict has: - "path": Node path relative to graph (e.g. "OnPlaybackTick") - "type": OmniGraph node type (e.g. "omni.graph.action.OnPlaybackTick") connections: List of [source_attr, target_attr] pairs for wiring nodes. Each attr is "NodePath.outputs:attrName" or "NodePath.inputs:attrName". values: List of attribute value overrides. Each dict has: - "attr": Full attribute path (e.g. "ScriptNode.inputs:script") - "value": The value to set evaluator: Graph evaluator type (default "push"). script_file: Convenience shortcut — path to a local Python script file. When provided, automatically creates OnPlaybackTick → ScriptNode nodes, wires them, and attaches the script file (sets usePath + scriptPath). The nodes and connections parameters are ignored when script_file is set.
Example (inline script): create_action_graph( values=[ {"attr": "ScriptNode.inputs:script", "value": "def compute(db): ..."} ] )
Example (script file — one-step): create_action_graph( script_file="/path/to/controller.py" )
| Name | Required | Description | Default |
|---|---|---|---|
| graph_path | No | /World/ActionGraph | |
| nodes | No | ||
| connections | No | ||
| values | No | ||
| evaluator | No | push | |
| script_file | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses use of og.Controller.edit() and the script_file shortcut that overrides nodes/connections. However, it does not mention side effects like overwriting existing graphs, error handling, or permission requirements. With no annotations, this is moderate but incomplete.
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?
Well-organized with Args and Example sections. Each sentence adds value, though some repetition exists (e.g., 'programmatic equivalent of creating an Action Graph in the visual editor' could be merged). Nevertheless, it is efficient and front-loaded.
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 6 parameters, no required ones, and the presence of an output schema (reducing burden on description), the description covers all parameters with examples and behavioral notes. Missing details on return value or error cases, but acceptable for the complexity level.
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?
Despite 0% schema description coverage, the description thoroughly explains all 6 parameters with structure, defaults (graph_path default '/World/ActionGraph', evaluator default 'push'), and examples. The script_file parameter is clarified as a convenience shortcut with behavioral implications.
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?
Clearly states 'Create and wire an OmniGraph Action Graph' and differentiates from sibling 'edit_action_graph' by explicitly describing creation. Provides specific details on building nodes, connections, and attribute values, making the purpose unambiguous.
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?
No explicit guidance on when to use this tool versus alternatives like 'edit_action_graph'. Examples imply usage scenarios but do not state prerequisites, exclusions, or when not to use. The description assumes the agent knows when graph creation is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_cameraA
Add a camera sensor to the scene.
Args: prim_path: Prim path for the camera. position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. resolution: [width, height] image resolution. Default 1280x720.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | No | /World/Camera | |
| position | No | ||
| rotation | No | ||
| resolution | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It describes the action but does not disclose potential side effects, failure modes, or permissions required. Minimal 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 very concise with a one-line purpose followed by a clear list of parameter explanations. No wasted words, front-loaded appropriately.
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 simplicity and presence of an output schema, the description covers the basic semantics. Lacks mention of default behavior beyond schema defaults, but sufficient for the use case.
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 description adds meaning beyond the input schema by explaining each parameter (e.g., 'world position' for position). With 0% schema description coverage, this compensation is effective.
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 'Add a camera sensor to the scene' with a specific verb and resource, distinguishing it from sibling tools like create_light or create_robot.
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?
No guidance on when to use this tool vs alternatives (e.g., create_lidar for other sensors). It does not provide context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lidarB
Add a lidar sensor to the scene.
Args: prim_path: Prim path for the lidar. position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. config: Lidar configuration name (e.g. "Example_Rotary").
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | No | /World/Lidar | |
| position | No | ||
| rotation | No | ||
| config | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description omits behavioral details such as whether existing prims at the same path are overwritten, required permissions, or side effects. The return value is not mentioned despite an output schema existing.
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 concise and well-structured with an Args block. Every sentence adds value, though the example config could be more specific.
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 4 parameters and an output schema (not shown), the description adequately covers parameters but lacks information on config options and return value, leaving room for ambiguity in tool usage.
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 description adds meaning by explaining the rotation unit (degrees) and providing an example config name, partially compensating for the 0% schema coverage. However, it does not list valid config values or clarify the expected array length for position/rotation.
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 action ('Add a lidar sensor') and the resource ('to the scene'), which distinguishes it from sibling creation tools like create_camera or create_light.
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 over alternatives (e.g., create_camera), nor does it mention prerequisites or context-specific recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lightB
Create a light in the scene.
Args: light_type: Type of light — DistantLight, DomeLight, SphereLight, RectLight, DiskLight, or CylinderLight. position: [x, y, z] world position. intensity: Light intensity. color: [r, g, b] light color (0-1). rotation: [rx, ry, rz] rotation in degrees. prim_path: Custom prim path. Auto-generated if not provided.
| Name | Required | Description | Default |
|---|---|---|---|
| light_type | No | DistantLight | |
| position | No | ||
| intensity | No | ||
| color | No | ||
| rotation | No | ||
| prim_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It does not disclose side effects (e.g., whether it replaces existing lights at same path), mutability, or system behavior. Only lists params but no behavioral context.
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?
Description is short and to the point, listing args in a clean format. Could be slightly more concise by removing 'Args:' header, but it's well-structured.
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?
Adequate for a simple creation tool with output schema. Missing context about uniqueness constraints (prim_path), range limits for intensity/color, and error scenarios. Not critical but could be improved.
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?
All 6 parameters are briefly described with format hints (e.g., '[x, y, z]', '0-1', 'degrees', 'Auto-generated'). This adds meaning beyond the schema, which has 0% description coverage and only defaults.
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 it creates a light, with specific verb 'Create' and resource 'light'. It distinguishes from sibling 'modify_light' by implying creation vs modification.
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?
No explicit guidance on when to use this tool vs alternatives like modify_light or other siblings. Only implicit that it's for creating new lights, but no when-not or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_materialA
Create a PBR or physics material.
Args: material_type: "pbr" for visual material or "physics" for physics material. prim_path: Prim path for the material. Auto-generated if not set. color: [r, g, b] diffuse color (0-1). PBR only. roughness: Surface roughness (0-1). PBR only. metallic: Metallic value (0-1). PBR only.
| Name | Required | Description | Default |
|---|---|---|---|
| material_type | No | pbr | |
| prim_path | No | ||
| color | No | ||
| roughness | No | ||
| metallic | No |
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 must fully disclose behavioral traits. It only states creation and parameter meanings, omitting side effects (e.g., overwriting existing materials at a prim_path, resource implications, or error conditions).
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 concise and well-structured, with a short introductory sentence followed by a bullet-like list of args. Some repetition ('PBR only' on multiple lines) could be tightened, but overall 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 description covers parameter meanings and defaults but does not mention return values (despite an output schema existing) or behavior when prim_path conflicts. For a 5-param tool with 0% schema coverage, this is adequate but has 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%, so the description fully explains each parameter, including valid ranges (color 0-1, roughness 0-1, metallic 0-1) and which parameters apply to which material_type. This adds significant meaning 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 clearly states 'Create a PBR or physics material', specifying the verb and resource, and distinguishes between two material types. This is unambiguous and different from sibling tools like apply_material.
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 when to use each material type (PBR vs physics) and notes that prim_path is auto-generated if not set. However, it does not explicitly state when not to use this tool or provide alternatives, though siblings are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_objectA
Create a primitive object (Cube, Sphere, Cylinder, Cone, Capsule, Plane).
The scale parameter multiplies the primitive's default size. For example, a Cube has default size 2.0, so scale=[0.5, 0.5, 0.5] creates a 1.0m cube.
Returns prim_path, actual_size [x, y, z] in meters, and bounding_box (min/max corners in world coordinates) so you can accurately place other objects relative to this one (e.g. placing a cube on top of a table).
Args: object_type: Type of primitive — Cube, Sphere, Cylinder, Cone, Capsule, or Plane. position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. scale: [sx, sy, sz] scale factors. color: [r, g, b] color values (0-1). physics_enabled: Enable physics on this object. prim_path: Custom prim path. Auto-generated if not provided.
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | No | Cube | |
| position | No | ||
| rotation | No | ||
| scale | No | ||
| color | No | ||
| physics_enabled | No | ||
| prim_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It explains the creation behavior, scale effect with example, and return values (prim_path, actual_size, bounding_box). It lacks details on side effects or permissions but is largely 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 well-structured with a clear first sentence and an automated 'Args' section. It is reasonably concise, though the Args list could be shortened by not repeating parameter names already in schema.
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 7 parameters, no annotations, and an output schema, the description covers creation logic, parameter effects, and return usage. It lacks details on physics behavior or color format but is sufficient for the tool's complexity.
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?
With 0% schema coverage, the description adds significant meaning: lists allowable object types, explains scale with example, notes prim_path auto-generation, and defines return values. Rotation units are specified as degrees, adding value 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 clearly states the tool creates a primitive object and lists six specific types (Cube, Sphere, etc.), making the purpose distinct from siblings like clone_object or create_robot.
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 (creating primitives) but does not explicitly mention when not to or compare to siblings. It provides practical usage tips (e.g., using return values for placement) but lacks exclusion criteria or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_physics_sceneA
Create a physics scene with ground plane. Call get_scene_info first to verify connection.
Args: gravity: Gravity vector [x, y, z]. Default is standard gravity. scene_name: Name for the physics scene prim.
| Name | Required | Description | Default |
|---|---|---|---|
| gravity | No | ||
| scene_name | No | PhysicsScene |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, but the description includes default values and an explicit action. Lacks details on idempotency, destruction, or side effects.
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?
Concise with a clear action sentence and structured Args section. Could be slightly more compact.
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 an output schema present, return values need not be explained. However, lacks context on whether simulation starts or if it replaces existing scenes.
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?
Despite 0% schema coverage, the description explains both parameters with defaults and meaning, adding value 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?
Clearly states it creates a physics scene with a ground plane, distinguishing it from similar tools like get_physics_state.
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?
Explicitly advises calling get_scene_info first to verify connection, providing a clear when-to-use instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_robotA
Create a robot in the scene from the Isaac Sim asset library.
Supports fuzzy matching — e.g. "franka", "spot", "g1", "go1". Call list_available_robots first to see all available robots. Call create_physics_scene before creating robots.
Returns prim_path, robot_key, joint_names, and num_dof so you can immediately use set_joint_positions without a follow-up get_robot_info call.
Args: robot_type: Robot name or search term. Fuzzy matched against available robots. position: [x, y, z] world position. name: Custom name for the robot prim. prim_path: Exact USD prim path (e.g. "/World/Franka"). Overrides name-based path.
| Name | Required | Description | Default |
|---|---|---|---|
| robot_type | No | franka | |
| position | No | ||
| name | No | ||
| prim_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses fuzzy matching, return fields, and prim_path override behavior. With no annotations, description carries the burden and does well, though could mention if conflicting robots are replaced.
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?
Two clear sentences for purpose, then bullet-style parameter details. Front-loaded with core purpose and prerequisites. No superfluous text.
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 moderate complexity (4 params, fuzzy matching, overrides) and presence of an output schema, the description covers prerequisites, fuzzy matching behavior, and return fields adequately for correct usage.
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?
With 0% schema description coverage, the description provides meaningful explanations for all 4 parameters: robot_type as a fuzzy search term, position as world coordinates, name as custom prim name, and prim_path as an override. Adds value beyond schema types.
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 creates a robot in the scene from the Isaac Sim asset library, with specific verb+resource. It distinguishes from siblings like create_object and import_urdf via the robot library source.
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?
Explicitly advises calling list_available_robots first and creating a physics scene before use, providing clear context. Does not explicitly state when not to use, but guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_objectB
Delete an object from the scene.
Args: prim_path: The prim path of the object to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not disclose any behavioral traits beyond 'delete', such as irreversibility, cascade effects, or permissions. No annotations are provided to compensate.
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 very concise and front-loaded, but it could be more informative without adding much length.
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 destructive nature and lack of annotations, the description should provide more context about return values, error handling, or effects on the scene.
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 description explains that prim_path is 'the prim path of the object to delete', adding context beyond the schema's type definition, but the information is minimal.
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 ('Delete') and resource ('object from the scene'), clearly differentiating it from sibling tools like clone_object or create_object.
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?
No guidance is provided on when to use this tool versus alternatives, nor any prerequisites or conditions for deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_action_graphA
Edit an existing OmniGraph Action Graph: set attribute values or add connections.
Use this to update ScriptNode scripts (inline or file path), change attribute values, or add new connections on an already-created graph.
For ScriptNode with a local file script, set both usePath and scriptPath: values=[ {"attr": "ScriptNode.inputs:usePath", "value": true}, {"attr": "ScriptNode.inputs:scriptPath", "value": "/path/to/script.py"} ]
For ScriptNode with inline script: values=[ {"attr": "ScriptNode.inputs:usePath", "value": false}, {"attr": "ScriptNode.inputs:script", "value": "def compute(db): ..."} ]
Args: graph_path: USD prim path of the existing graph (default "/World/ActionGraph"). values: List of attribute value overrides. Each dict has: - "attr": Attribute path relative to graph (e.g. "ScriptNode.inputs:script") - "value": The value to set connections: List of [source_attr, target_attr] pairs to add.
| Name | Required | Description | Default |
|---|---|---|---|
| graph_path | No | /World/ActionGraph | |
| values | No | ||
| connections | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description doesn't mention error conditions, permissions, or side effects beyond the stated editing capabilities.
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?
Well-structured with paragraphs and bullet points, front-loads purpose but could be slightly more concise.
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?
Covers essential aspects for a complex tool with optional parameters, but could discuss return values or error handling more explicitly.
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?
With 0% schema description coverage, the description thoroughly explains each parameter with examples, adding significant meaning 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 clearly states it edits an existing OmniGraph Action Graph by setting attribute values or adding connections, which is specific and distinguishes from siblings like create_action_graph.
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?
Provides detailed examples for ScriptNode updates and parameter documentation, but doesn't explicitly state when not to use or compare with alternatives beyond creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_scriptA
Escape hatch: execute arbitrary Python code in Isaac Sim.
PREFER named tools over this for: reading/setting joints (set_joint_positions, get_joint_positions), inspecting state (get_prim_info, get_physics_state, get_joint_config), stepping simulation (step_simulation), and checking logs (get_isaac_logs).
USE this for: operations no named tool covers, such as creating Action Graphs, computing IK, setting up physics callbacks, or configuring advanced USD properties.
For persistent controllers (>20 lines), write a .py file and load it with reload_script instead of pasting code here.
Args: code: Python code to execute in the Isaac Sim context. cwd: Optional working directory to add to sys.path before execution.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | ||
| cwd | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It mentions 'escape hatch' implying risk, but does not explicitly detail behavioral traits like potential side effects, security implications, or execution limits. It is adequate but not comprehensive.
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 bullet points for guidance and clear parameter descriptions. Every sentence adds value, and it is appropriately sized for the tool's complexity.
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 no annotations and zero schema coverage, the description covers purpose, usage, and parameters thoroughly. It does not describe return values, but an output schema exists, so this is acceptable. Minor gap: no mention of side effects beyond the escape hatch label.
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 0%, so the description fully compensates by explaining that 'code' is Python code executed in the Isaac Sim context and 'cwd' is an optional working directory added to sys.path. This adds essential meaning beyond the schema's bare titles.
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 it is an 'escape hatch' to execute arbitrary Python code in Isaac Sim, and explicitly contrasts it with specific named tools, making its purpose highly distinct.
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?
It provides explicit when-to-use (operations no named tool covers) and when-not-to-use (prefer named tools for common tasks) guidance, and even suggests an alternative tool (reload_script) for persistent controllers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_3dB
Generate a 3D model from text or image using Beaver3D, then load it into the scene.
Args: text_prompt: Text description for 3D generation. image_url: URL of an image for 3D generation. position: [x, y, z] world position for the generated model. scale: [sx, sy, sz] scale factors.
| Name | Required | Description | Default |
|---|---|---|---|
| text_prompt | No | ||
| image_url | No | ||
| position | No | ||
| scale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral transparency. It fails to disclose important behavioral traits such as expected latency, asynchronous behavior, resource requirements, or side effects. The mention of 'Beaver3D' hints at an external service but lacks detail.
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 relatively concise, consisting of a single sentence followed by a list of parameters. However, the parameter list largely duplicates information already in the input schema, and could be integrated more efficiently. The structure is functional but not optimized.
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 of a 3D generation tool, the description is incomplete. It does not discuss required inputs (e.g., one of text_prompt or image_url must be provided), output behavior, or limitations. The presence of an output schema may compensate for return value documentation, but the description still lacks key operational 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?
Despite 0% schema description coverage, the description provides basic parameter explanations: 'Text description for 3D generation.' and 'URL of an image for 3D generation.' etc. While this adds meaning beyond parameter names, the descriptions are minimal and do not specify constraints like coordinate system for position or the requirement that one of text or image must be provided.
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 it generates a 3D model from text or image using Beaver3D and loads it into the scene. The verb 'generate' and specific resource '3D model' along with the tool name make the purpose unambiguous. It also implicitly distinguishes from siblings as no other sibling tool generates 3D content.
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, nor does it mention prerequisites or conditions. It simply describes what the tool does without any usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_isaac_logsA
Diagnostic tool: get recent warnings and errors from the Isaac Sim console.
Call this after any tool returns an error, after simulation behavior is unexpected, or after execute_script / reload_script fails. Helps diagnose physics warnings, collision issues, and script errors that are not surfaced in tool responses.
Args: clear: Clear the log buffer after reading. Default True. count: Maximum number of log entries to return.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | ||
| count | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that logs are cleared by default (clear parameter), which is a notable side effect. However, it does not explain whether calling the tool is safe (e.g., if it affects simulation state) or how the log buffer behaves across calls. More detail on side effects would improve 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 extremely concise: three sentences plus a two-parameter list. Every sentence serves a purpose, and the purpose is front-loaded ('Diagnostic tool'). No redundant or vague text.
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 simplicity (two optional parameters, no required params) and the presence of an output schema (context signals indicate has output schema: true), the description covers the essential usage context: when to call and what it retrieves. It could mention that logs are recent and ordered by time, but overall it is adequate for selection and 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 0%, so the description must compensate. It provides brief but meaningful explanations for both parameters: 'clear' (clear buffer after reading) and 'count' (max entries). These add value beyond the schema types and defaults. However, the descriptions could be more precise (e.g., what 'clear' means for future reads).
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 diagnostic tool to retrieve recent warnings and errors from the Isaac Sim console, with a specific verb ('get') and resource ('warnings and errors'). It distinguishes from sibling tools (e.g., get_simulation_state, list_prims) by its exclusive focus on logging and diagnostics.
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 states when to call the tool: after any tool error, unexpected simulation behavior, or script failures. It also lists diagnostic capabilities (physics warnings, collision issues, script errors). However, it does not explicitly state when not to use it, such as for normal operations or real-time monitoring, which would make it a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_joint_configA
Diagnostic tool: get joint drive configuration for a robot articulation.
Returns stiffness, damping, limits, target vs actual positions, and position error for each joint. Call this when:
Joint drives are not tracking targets (check position_error)
Joints are oscillating or unstable (check stiffness/damping ratio)
Joints hit limits unexpectedly (check lower_limit/upper_limit)
Args: prim_path: USD path to the robot articulation root.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It implies read-only via 'diagnostic tool' and lists returned data. Does not explicitly state no side effects, but the context suggests it is safe.
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?
Well-structured with a clear purpose sentence, bullet-point usage guidelines, and an args section. No redundant information.
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?
Comprehensive for a diagnostic tool with one parameter: covers return fields, usage context, and parameter detail. Output schema exists so return values need not be detailed in description.
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?
Adds significant meaning to the single parameter 'prim_path' by specifying it is a USD path to the robot articulation root, which is not clear from schema title alone.
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?
Clearly states it is a diagnostic tool that returns joint drive configuration, including stiffness, damping, limits, and position error. Distinguishes from sibling tools like get_joint_positions which only return positions.
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?
Provides explicit scenarios for use (tracking issues, oscillation, limit hits). Lacks mention of when not to use or explicit alternative tool name, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_joint_positionsA
Read current joint positions from a robot.
Units: radians for revolute joints, meters for prismatic joints. Joint order matches the joint_names from get_robot_info. For a combined step-and-read, prefer step_simulation with observe_joints.
Args: prim_path: The prim path of the robot.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It explains units and joint order, but does not explicitly state that the operation is read-only or has no side effects. The name implies reading, but more explicit behavioral context would improve 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 four concise sentences plus an Args line, each serving a purpose: purpose, units/order, alternative, and parameter description. No wasted words.
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 simplicity (one parameter) and presence of an output schema (not shown but indicated), the description covers the essential aspects: purpose, units, joint order, and recommended alternative. Could be considered complete, though a clear read-only statement would enhance completeness.
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%, so the description must compensate. It briefly describes prim_path as 'The prim path of the robot.' but does not elaborate on format, constraints, or how to obtain it. Minimal added value over 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 clearly states 'Read current joint positions from a robot.', specifying a verb (Read) and resource (joint positions). It adds units and joint order details, and distinguishes itself from the sibling tool step_simulation with observe_joints.
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 provides an alternative: 'For a combined step-and-read, prefer step_simulation with observe_joints.' This guides when to use this tool vs. a sibling, though it lacks explicit 'when not to use' beyond that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lidar_point_cloudB
Get point cloud data from a lidar sensor.
Args: prim_path: Prim path of the lidar sensor.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | No | /World/Lidar |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the action ('Get point cloud data') without disclosing any behavioral traits such as side effects, permissions, rate limits, or data format. This is minimal 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 two sentences long, front-loads the purpose, and has no unnecessary information. Every word earns 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?
The tool is simple (1 parameter, no required params, output schema exists). The description covers the purpose and the parameter. Since an output schema is provided (context indicates 'has output schema: true'), it is acceptable not to describe return values. Minor gap: no mention that the output is point cloud data, but that is implied.
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 no description for 'prim_path', but the tool description includes 'prim_path: Prim path of the lidar sensor.' which adds some meaning. However, it does not provide details like format, constraints, or examples, so it is adequate but not rich.
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 'Get point cloud data from a lidar sensor,' which is a specific verb ('Get') and resource ('point cloud data from lidar sensor'). It distinguishes itself from sibling tools like 'create_lidar' (creates a sensor) and 'capture_image' (captures image data).
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, nor does it mention any prerequisites or context. It simply states the action without any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_physics_stateA
Diagnostic tool: get physics state for a prim.
Returns rigid body status, mass, velocities, kinematic flag, and collision info. Call this when:
Objects fall through the ground (check collision enabled)
Objects don't move when expected (check is_kinematic, mass)
Grasping fails (check collision on gripper fingers and target object)
Args: prim_path: USD path to the prim to inspect.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility. It conveys that this is a read-only diagnostic operation by stating 'Diagnostic tool' and describing return values. It does not discuss permissions or performance, but the read-only nature is sufficiently 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 extremely concise (four sentences) with the purpose front-loaded in the first sentence. Every sentence contributes meaning, with no wasted words.
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 presence of an output schema, the description adequately covers purpose, usage, and parameter. Minor gaps (e.g., prerequisites like physics enabled) exist but do not severely hinder completeness.
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 single parameter 'prim_path' is given semantic meaning as 'USD path to the prim to inspect', which adds value beyond the bare schema (which had no description). This is clear and helpful.
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 it is a diagnostic tool that gets physics state for a prim, listing specific return fields (rigid body status, mass, velocities, etc.). It distinguishes from siblings like get_prim_info and get_robot_info by focusing on physics-specific diagnostics.
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 explicit scenarios for when to use the tool (objects falling through ground, not moving, grasping failures). While it does not explicitly mention when not to use it or name alternative tools, the context is clear enough for guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prim_infoB
Get detailed information about a specific prim.
Returns type, world-space position, and children. For geometric prims (Cube, Sphere, Cylinder, Cone, Capsule), also returns actual_size [x, y, z] in meters accounting for scale and default primitive dimensions.
Args: prim_path: The USD prim path to inspect.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description does not disclose behavioral traits such as whether the operation is read-only, requires permissions, or has side effects. It only lists return values without safety context.
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 concise with an args section, but the info about return fields could be more structured (e.g., bullet points). It avoids verbosity.
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 output schema exists (context signal), the description doesn't need to detail return values fully. However, it lacks error conditions, edge cases, and confirms no side effects. Adequate for a simple tool.
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 has 0% description coverage. The description adds meaning by stating prim_path is 'the USD prim path to inspect', but lacks format examples or constraints beyond the schema's type/required.
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 gets detailed info about a prim, listing return fields (type, position, children, actual_size for geometric prims). It distinguishes from sibling tools like get_robot_info or get_scene_info by specifying 'prim' focus.
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 does not provide explicit guidance on when to use this tool versus alternatives like get_joint_positions or get_scene_info. It is implied for prim inspection, but no when-not-to or alternatives mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_robot_infoA
Get robot joint information including names, DOF count, joint types, and limits.
Call this after create_robot to understand the robot's kinematic structure. Returns joint names ordered by DOF index, joint types (revolute/prismatic), and joint limits (degrees for revolute, meters for prismatic).
Args: prim_path: The prim path of the robot.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not mention side effects, error behavior, or safety. It is a read operation but not stated. Lacks transparency beyond purpose.
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?
Three sentences plus an Args line. No redundancy, but could be more structured. Appropriate length for the information provided.
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 single parameter and existence of output schema, the description adequately covers when to use and what is returned (joint names, types, limits, DOF count). Complete for its scope.
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?
Parameter prim_path has 0% schema description coverage. The description merely repeats 'The prim path of the robot' without additional constraints or format details, adding minimal value.
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 retrieves joint information (names, DOF count, types, limits), distinguishing it from siblings like get_joint_config or get_joint_positions.
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?
It explicitly suggests calling after create_robot to understand kinematic structure. While it doesn't mention exclusions or alternatives, the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_infoA
Ping the Isaac Sim extension server and return scene information including stage path, assets root, and prim count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden. The tool 'pings' and 'returns' information, implying a read-only operation without side effects, but it does not explicitly state that it is non-destructive or clarify what happens if the server is unreachable. The description is adequate but not comprehensive.
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 clear sentence, front-loading the main purpose and listing key return values. No superfluous words; every part earns 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?
Given the tool's simplicity (no parameters) and the existence of an output schema (flagged as true), the description sufficiently covers the tool's function. It lists the expected return fields, which is enough for an agent to understand what information is retrieved.
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 schema description coverage is 100% (trivially). Since no parameters exist, the description needs to add no additional meaning. The baseline score of 4 is appropriate as no compensation is required.
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 'pings the Isaac Sim extension server' and 'returns scene information including stage path, assets root, and prim count.' The verb 'ping' and 'return' with specific resources make the purpose unambiguous, and it distinguishes from sibling tools like get_prim_info which focus on individual prims.
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?
No guidance is provided on when to use this tool versus alternatives. With many sibling tools (e.g., get_prim_info, get_simulation_state), the agent would benefit from explicit context on when scene-level info is appropriate, but the description omits this entirely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_simulation_stateA
Get the current simulation state including timeline status (playing/stopped/paused), simulation time, and physics dt. Call this to verify the simulation is running before using step_simulation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes returned data and that it's a read operation. Could mention if it's safe to call repeatedly, but overall adequate for a simple getter.
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?
Two sentences, very concise, front-loaded with the main action and then usage guidance. No wasted words.
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 an output schema exists, the description is complete for a simple getter. It tells what it returns and when to use it, with no 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?
No parameters exist, so schema coverage is 100% trivially. Description adds nothing about parameters, which is fine. Baseline 4 for 0 params.
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 it gets the current simulation state and lists specific fields (timeline status, simulation time, physics dt). It distinguishes from siblings by mentioning its use for verification before step_simulation.
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?
Explicitly says when to use: 'Call this to verify the simulation is running before using step_simulation.' This provides clear context and an alternative scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_urdfB
Import a robot from a URDF file into the scene.
Args: urdf_path: Path to the URDF file. prim_path: Prim path for the imported robot. position: [x, y, z] world position.
| Name | Required | Description | Default |
|---|---|---|---|
| urdf_path | Yes | ||
| prim_path | No | /World/robot | |
| position | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and description does not disclose behavioral traits such as side effects, error handling, or whether the operation is reversible. The description is purely operational.
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 concise, with a clear purpose statement followed by parameter documentation. The Args section is formatted as a docstring, which is efficient but slightly verbose for a tool description.
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 no annotations and an output schema (true), the description covers core functionality but lacks details about failure modes, default behavior, or interaction with the scene. It is adequate but not comprehensive.
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 includes an Args section that explains each parameter: 'urdf_path: Path to the URDF file.', 'prim_path: Prim path for the imported robot.', 'position: [x, y, z] world position.' This adds meaning beyond the schema's titles.
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?
Description clearly states 'Import a robot from a URDF file into the scene.' It uses a specific verb ('import') and resource ('robot from URDF file'), distinguishing it from sibling tools like create_robot or load_usd.
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?
No guidance on when to use this tool versus alternatives like create_robot or load_usd. Lacks context about prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_available_robotsA
List all available robots discovered from the Isaac Sim asset server. Returns robot keys, descriptions, manufacturers, and asset paths. The list is auto-discovered at startup and reflects the actual assets available in your Isaac Sim version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the list is auto-discovered at startup and reflects actual assets, implying no side effects. This is transparent for a read-only listing 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?
Three short sentences with no redundancy. The first sentence states the core purpose, the second lists return values, and the third provides context. Every sentence earns 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?
Given the simplicity of the tool and the presence of an output schema, the description provides sufficient detail about the purpose, return content, and behavior. It is complete for a listing tool.
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 description adds value by detailing what information is returned (keys, descriptions, manufacturers, asset paths), which goes beyond the empty 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 states the verb 'List' and the resource 'available robots', and specifies the return fields. It distinguishes from sibling tools like 'create_robot' and 'get_robot_info' by focusing on discovery and listing.
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 context on when to use the tool (after startup) and the source of data (auto-discovered from Isaac Sim asset server). It lacks explicit when-not or alternatives, but the tool's behavior is straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_environmentsA
List all available environments discovered from the Isaac Sim asset server. Includes warehouses, offices, outdoor scenes, and more.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, rate limits, or authorization needs. For a read-like operation, more detail is expected.
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?
Two concise sentences with no wasted words. Every sentence adds value: scope and examples.
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 no parameters and the existence of an output schema, the description is fairly complete. It explains what the tool returns and gives examples. However, it could mention whether the list is limited or if there is any pagination.
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?
There are zero parameters, so baseline is 4. The description adds clear meaning by specifying the content and source of the list, which is sufficient.
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 it lists all available environments from the Isaac Sim asset server, with examples of types (warehouses, offices, outdoor scenes). This strongly distinguishes it from sibling tools like 'load_environment' and 'list_available_robots'.
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 for listing environments but does not explicitly provide when-to-use or when-not-to-use guidance. It does not mention alternatives or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_primsA
List all prims in the scene, optionally filtered by type.
Args: root_path: Root path to start listing from. prim_type: Filter by prim type (e.g. "Mesh", "Xform").
| Name | Required | Description | Default |
|---|---|---|---|
| root_path | No | / | |
| prim_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions filtering by type but does not describe performance implications, recursion depth, or output format. Since an output schema exists (per context signals), the description could have elaborated on return structure, but it falls short.
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 extremely concise: two sentences plus a compact Args block. Every sentence serves a purpose, and the most critical information (action, resource, filtering) appears first. No superfluous text.
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 output schema exists, the description need not detail return values, but it omits any constraints like maximum depth, performance notes for large scenes, or pagination. For a listing tool, this information is relevant but absent. The description is minimally adequate but not fully 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?
With 0% schema description coverage, the description must compensate. However, it merely restates parameter names and provides trivial examples (e.g., 'Mesh', 'Xform'). The meaning of 'root_path' is repeated from the schema title, and 'prim_type' lacks explanation of valid values or behavior when null. The description adds minimal value 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 uses a specific verb 'List' and resource 'prims', clearly indicating the action and object. It also mentions optional filtering by type, which distinguishes it from sibling tools like get_prim_info (which retrieves details for a single prim) or get_scene_info (scene-level data).
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 states what the tool does but does not provide explicit guidance on when to use it versus alternatives. While the sibling list suggests related tools, there is no direct comparison or recommendation, leaving the agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_environmentA
Load a pre-built environment into the scene. Supports fuzzy matching. Call list_environments first to see available options.
Args: environment: Environment name or search term (e.g. "warehouse", "hospital", "office"). prim_path: Prim path for the loaded environment.
| Name | Required | Description | Default |
|---|---|---|---|
| environment | Yes | ||
| prim_path | No | /Environment |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully convey behavioral traits. It mentions fuzzy matching, but does not disclose whether the tool is destructive (e.g., replaces existing scene), affects other prims, or requires specific permissions. Critical behavioral context is missing.
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 brief and well-structured: a clear first sentence for purpose, followed by a usage recommendation and an 'Args' section. Every sentence is necessary and there is no redundancy or 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?
Given the tool's moderate complexity (2 params, output schema exists), the description covers the main points: purpose, prerequisite, parameter semantics, and fuzzy matching. It does not detail behavior when the environment already exists, but output schema reduces the need for return value description. Minor 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 coverage is 0%, so the description must add meaning. It explains 'environment' as a name or search term with examples ('warehouse', 'hospital', 'office'), and clarifies 'prim_path' as the path for loading. This adds significant value beyond the bare 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 states the tool loads a pre-built environment into the scene, with the verb 'load' and resource 'pre-built environment'. It adds specificity with 'supports fuzzy matching', distinguishing it from sibling 'load_usd' which loads arbitrary USD files.
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 explicit usage guidance: 'Call list_environments first to see available options.' This sets a prerequisite step. However, it does not discuss when not to use the tool or mention alternative tools for loading other resources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_usdB
Load a USD asset from a URL or file path into the scene.
Args: usd_url: URL or local path to the USD file. prim_path: Prim path for the loaded asset. position: [x, y, z] world position. scale: [sx, sy, sz] scale factors.
| Name | Required | Description | Default |
|---|---|---|---|
| usd_url | Yes | ||
| prim_path | No | /World/my_usd | |
| position | No | ||
| scale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It discloses the action (load into scene) but does not cover behavioral traits such as whether it is destructive, merges, or requires an existing stage. Lacks details on return value or error handling.
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 moderately concise with a clear docstring format. The Args section repeats schema info but adds context. Could be shortened slightly, but overall 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?
Given the simple tool function (loading an asset) and presence of an output schema, the description is adequate but has gaps: does not specify behavior when file is missing or prim_path exists. More completeness could include error conditions or return value hints.
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?
With 0% schema description coverage, the description adds meaning beyond parameter names: 'usd_url' explained as URL or path, 'prim_path' as prim path, 'position' as world coordinates, 'scale' as scale factors. This significantly aids understanding.
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 verb (Load), resource (USD asset), and source (URL or file path). It distinguishes from sibling tools like 'import_urdf' and 'load_environment'.
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?
No guidance on when to use this tool versus alternatives. The description does not mention prerequisites, exclusions, or conditions. It is implied for loading USD assets but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modify_lightC
Modify properties of an existing light.
Args: prim_path: The prim path of the light to modify. intensity: New intensity value. color: [r, g, b] new light color (0-1).
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes | ||
| intensity | No | ||
| color | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description lacks behavioral details such as error handling (e.g., if prim_path is invalid), side effects, or permission requirements. The description only states 'modify properties' without further elaboration.
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 concise: a single purpose line followed by clear argument definitions. It avoids unnecessary words, but the docstring format is slightly verbose for a tool description.
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 simplicity of the tool and presence of an output schema (though not shown), the description covers basic functionality. However, it omits error cases and preconditions, which are important for contextual completeness.
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?
With 0% schema description coverage, the description adds meaning for intensity ('New intensity value') and color ('[r, g, b] new light color (0-1)'), clarifying format and range. However, prim_path is not explained, leaving some ambiguity.
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 'Modify properties of an existing light,' specifying the verb and resource. It distinguishes from siblings like create_light and delete_object. However, it could be more explicit about which properties are modifiable beyond the listed parameters.
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?
No guidance on when to use this tool versus alternatives like create_light or transform_object. No context about prerequisites (e.g., light must already exist) or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_simulationB
Pause the physics simulation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavioral traits. It merely states the action without mentioning side effects, reversibility, safety, or impact on simulation state. This is insufficient for an agent to understand the implications of pausing.
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 extremely concise, consisting of a single sentence that is front-loaded with the action. No words are wasted.
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 basic action but omits important context such as preconditions (e.g., the simulation must be running) or behavioral details. An output schema exists, so return values are handled, but the description could still be more complete for an agent to use 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 no parameters, and the schema coverage is 100% (trivially). The description adds no parameter information because none is needed. Per guidelines, zero parameters warrant a baseline score of 4.
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 verb 'pause' and the resource 'physics simulation', making the tool's purpose immediately understandable. It is distinct from siblings like 'play_simulation' and 'stop_simulation', though it does not explicitly differentiate between pause and stop.
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?
No usage guidelines are provided. The description does not indicate when to use this tool over similar siblings like 'stop_simulation' or 'step_simulation', nor does it mention any prerequisites or context for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
play_simulationB
Start the physics simulation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description does not disclose side effects, error conditions, or behavior if already running.
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?
Single sentence, no wasted words. However, it could be slightly expanded without losing conciseness.
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 simple parameterless tool, description covers the basic action but lacks context about simulation state or output.
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?
No parameters exist, so baseline 4 applies. Description adds minimal meaning beyond schema, but schema has no properties.
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 'Start the physics simulation' clearly states the action and object. It distinguishes from siblings like pause_simulation but does not specify if it resets or resumes.
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?
No guidance on when to use versus other simulation controls (e.g., step_simulation) or prerequisites like having a scene loaded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_robot_libraryA
Force re-scan the asset server for available robots. Use this if new robot assets were added.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. 'Force re-scan' implies mutation but does not disclose side effects, permissions, or safety. Lacks detail for a mutating operation.
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?
Two concise sentences, front-loaded purpose and usage. No wasted words.
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 parameterless tool with output schema, description covers purpose and trigger condition completely.
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?
Tool has 0 parameters with 100% schema coverage. Description adds no parameter info, but none is needed. Baseline 4 applies.
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 verb 'force re-scan' and the resource 'asset server for available robots'. It distinguishes from sibling 'list_available_robots' by indicating it triggers an update.
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?
Explicitly states when to use: 'if new robot assets were added'. Does not mention when not to use or alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reload_scriptA
Load a Python controller or module into Isaac Sim from a file on disk.
Use this instead of execute_script for persistent controllers, state machines, or any code longer than ~20 lines. Workflow:
Write the controller as a .py file
reload_script to load it into Isaac Sim
step_simulation to debug the behavior
Edit the file and reload_script again to iterate
The file's directory is auto-added to sys.path.
Args: file_path: Path to the Python file on disk. module_name: Optional module name to reload (e.g. 'my_controller').
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| module_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description provides some behavioral info: file's directory is auto-added to sys.path, and it implies the tool reloads modules. However, it does not cover error handling, whether the operation is destructive, or what happens on initial load vs reload. More detail would help.
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 concise with structured sections: purpose, when-to-use workflow, sys.path note, and Args. Every sentence adds value without redundancy.
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 output schema exists, no return details needed. The description explains core functionality, workflow, and parameter meaning. It lacks error handling info but is otherwise complete for a tool with sibling execute_script differentiation.
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?
Despite 0% schema description coverage, the description explicitly explains both parameters under 'Args': file_path is 'Path to the Python file on disk' and module_name is 'Optional module name to reload'. This adds meaningful context 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 clearly states it loads a Python controller or module from disk, distinguishes itself from execute_script by specifying persistent controllers and longer code, and uses specific verbs like 'load' and 'reload'.
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 says 'Use this instead of execute_script for persistent controllers, state machines, or any code longer than ~20 lines', providing clear when-to-use guidance and naming an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_usdA
Search the NVIDIA USD asset library by text description, then load the best match.
Args: text_prompt: Text description of the 3D asset to search for. target_path: Prim path for the loaded result. position: [x, y, z] world position. scale: [sx, sy, sz] scale factors.
| Name | Required | Description | Default |
|---|---|---|---|
| text_prompt | Yes | ||
| target_path | No | /World/my_usd | |
| position | No | ||
| scale | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description lacks behavioral details such as side effects, whether the asset is fully loaded or referenced, or any prerequisites.
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?
Concise: one-line purpose followed by a well-structured args block. Every sentence provides essential information without redundancy.
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?
Covers purpose and parameters adequately, but lacks description of return values/output schema, failure behavior, or how the asset integrates into the scene.
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?
No schema descriptions (0% coverage), but the args block in description adds meaning: e.g., 'position: [x,y,z] world position' clarifies format and purpose beyond parameter names.
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?
Description clearly states verb 'Search...then load' and resource 'NVIDIA USD asset library', distinguishing it from sibling tools like load_usd which loads specific files.
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?
Implied usage for text-based asset search with auto-loading, but no explicit guidance on when not to use or comparison to alternatives like load_usd or create_object.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_joint_positionsA
Set target joint positions on a robot via ArticulationAction.
Units: radians for revolute joints, meters for prismatic joints (e.g. gripper fingers). Use get_robot_info to discover joint names, types, and limits first. After calling this, use step_simulation to advance and observe the result — do not use play_simulation + sleep.
Args: prim_path: The prim path of the robot. joint_positions: List of target joint position values. joint_indices: Optional list of joint indices to set. Sets all joints if not provided.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes | ||
| joint_positions | Yes | ||
| joint_indices | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool operates via ArticulationAction, uses specific units (radians/meters), and interacts with other tools. However, it does not mention potential errors (e.g., out-of-range joints) or side effects beyond setting positions. Still, it provides sufficient behavioral context for a simulation 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 concise and well-structured, with clear sections for units, usage, and arguments. It front-loads the main action and provides essential details without unnecessary verbosity. Minor redundancy (e.g., mentioning 'joint positions' twice) but overall 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?
Given that an output schema exists, the description does not need to cover return values. It adequately covers purpose, prerequisites, parameter behavior, and post-conditions. Some details about error handling or validation are missing, but the description is sufficiently complete for effective tool usage.
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%, so the description must compensate. It explains prim_path as the robot's prim path, joint_positions as a list of target values, and joint_indices as optional for selecting specific joints. It adds meaning by specifying units and prerequisites (use get_robot_info). While not exhaustive, it adds significant value 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 clearly states the tool's purpose: 'Set target joint positions on a robot via ArticulationAction.' It specifies the action (set), resource (joint positions), and mechanism (ArticulationAction). This distinguishes it from sibling tools like get_joint_positions and step_simulation.
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 explicit usage guidelines: it instructs users to first call get_robot_info to discover joint names, types, and limits, and after setting positions, to use step_simulation to advance and observe results. It also warns against using play_simulation with sleep. This clearly defines when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_physics_paramsB
Configure physics engine parameters.
Args: gravity: Gravity vector [x, y, z]. time_step: Physics time step in seconds. gpu_enabled: Enable GPU-accelerated physics.
| Name | Required | Description | Default |
|---|---|---|---|
| gravity | No | ||
| time_step | No | ||
| gpu_enabled | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It implies mutation but does not clarify persistence, required simulation state, or whether other parameters are affected. Minimal transparency beyond parameter listings.
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 concise with a purpose statement followed by a structured argument list. No wasted words, though a brief note on return value or behavior would enhance completeness.
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 simplicity and presence of an output schema, the description covers parameter semantics but omits behavioral context like whether the call is synchronous or requires a running simulation. Adequate but with 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%, so the description compensates by explaining each parameter: gravity as a vector [x,y,z], time_step in seconds, gpu_enabled as enabling GPU acceleration. This adds value beyond the schema's type info.
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 'Configure physics engine parameters,' which is a clear verb+resource pair. It distinguishes from sibling tools like 'get_physics_state' (read) but does not explicitly differentiate from other configuration 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?
No guidance on when to use this tool versus alternatives, prerequisites, or side effects. The description only states what it does without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
step_simulationA
Step the simulation forward by N frames, then observe prim and joint states.
This is the primary tool for debugging robot behavior. Use it instead of play_simulation + sleep + execute_script. The observe parameters let you inspect positions, velocities, and joint states in a single call.
Typical debug loop:
set_joint_positions to command the robot
step_simulation with observe_prims and observe_joints
get_joint_config if drives are not tracking correctly
get_physics_state if objects are not behaving as expected
Adjust and repeat
Args: num_steps: Number of simulation frames to step. observe_prims: List of prim paths to observe (returns position + velocity). observe_joints: List of articulation prim paths to observe (returns joint positions).
| Name | Required | Description | Default |
|---|---|---|---|
| num_steps | No | ||
| observe_prims | No | ||
| observe_joints | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that stepping simulation advances by N frames and observes states, which is the core behavior. Lacks mention of potential side effects (e.g., irreversible physics state changes) but is adequate for a simulation stepping tool. No annotations to contradict.
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?
Well-structured with a concise first sentence, then rationale for usage, a debug loop example, and parameter docs. Every sentence adds value without redundancy.
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 has 3 optional parameters and an output schema, the description covers purpose, usage, parameters, and provides a typical workflow, making it fully sufficient for an AI agent to use 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?
Description includes an 'Args' section that clearly explains all three parameters (num_steps, observe_prims, observe_joints), adding meaning beyond the input schema which has no 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?
Description uses specific verb 'step' and resource 'simulation', clearly states it's for debugging robot behavior, and distinguishes from siblings like play_simulation and execute_script.
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?
Explicitly recommends using instead of play_simulation + sleep + execute_script, and provides a typical debug loop with numbered steps, giving clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_simulationB
Stop the physics simulation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only states the action 'stop' without detailing side effects, reversibility, or what happens to simulation state. Minimal behavioral context.
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?
Single sentence with no unnecessary words. Perfectly concise.
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?
Simple tool with no parameters and output schema. Description is adequate but lacks context on difference from pause_simulation and any side effects. Could be more complete for decision-making.
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?
No parameters exist, so schema coverage is 100%. Description adds nothing beyond schema, but baseline for 0-param tool is 4.
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?
Description clearly states 'Stop the physics simulation' with a specific verb and resource. However, it does not differentiate from sibling tool pause_simulation, which could lead to ambiguity.
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?
No guidance on when to use this tool vs alternatives like pause_simulation or step_simulation. The description provides no context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transform_objectA
Set the transform (position, rotation, scale) of an existing object.
Args: prim_path: The prim path of the object to transform. position: [x, y, z] new world position. rotation: [rx, ry, rz] new rotation in degrees. scale: [sx, sy, sz] new scale factors.
| Name | Required | Description | Default |
|---|---|---|---|
| prim_path | Yes | ||
| position | No | ||
| rotation | No | ||
| scale | No |
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 burden for behavioral disclosure. It states 'set' implying mutation but lacks details on side effects, permissions, or constraints such as whether the transform is absolute or relative.
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 concise with a one-line summary followed by an Args section. It is well-structured and front-loaded, though the Args section adds minimal extra value over the schema.
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 moderate complexity of a transform setter and the presence of an output schema (not shown but indicated), the description adequately covers the purpose and parameters. No gaps in understanding the operation.
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 description includes a docstring-style explanation for all four parameters, adding meaning beyond the schema (e.g., 'world position', 'degrees', 'scale factors'). Since schema coverage is 0%, this compensation is valuable, though the descriptions are brief.
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 'Set the transform (position, rotation, scale) of an existing object,' using a specific verb and resource. This distinguishes it from sibling tools like create_object or delete_object, which have different purposes.
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. It does not mention when not to use it or suggest other tools for related operations like reading transforms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct operation or resource. Despite the large number, tools like create_object, clone_object, import_urdf, load_usd, and load_environment are clearly differentiated by their source and purpose. Robot-related tools (get_joint_positions, get_robot_info, get_joint_config) each return unique information. No two tools appear to do the same thing.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., apply_material, capture_image, clear_scene). Even tools with different prefixes like list_ and get_ maintain the pattern. There are no mixing of conventions like camelCase or inconsistent verb styles.
With 42 tools, this server falls well above the recommended 3-15 range for well-scoped sets. While the breadth of Isaac Sim capabilities may justify many tools, the count is too high for easy agent navigation. It fits the 'borderline' 16-25? No, 42 is clearly too many, scoring 2 as per guidelines (25+ is too many, but not extreme 50+).
The tool surface is remarkably comprehensive, covering scene creation, object manipulation, materials, lighting, sensors, robots, physics, USD operations, simulation control, and debugging. Minor gaps exist, such as the absence of a tool to remove individual lights or materials (only clear_scene removes all), but core workflows are well-supported.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with Unity Editor through the Model Context Protocol, allowing natural language control of Unity projects including scene manipulation, GameObject creation, component updates, package management, and test execution.
- FlicenseNot gradedqualityDmaintenanceEnables LLM-powered code analysis, generation, debugging, and context management through MCP integration with IDEs like Cursor and Claude Desktop.
- AlicenseNot gradedqualityDmaintenanceEnables AI tools like Windsurf and Claude to control NVIDIA Isaac Sim and Isaac Lab through natural language, providing tools for scene inspection, prim management, physics simulation, and robot spawning.8Apache 2.0
- AlicenseAqualityBmaintenanceEnables driving Omniverse Kit apps (Isaac Sim, Isaac Lab) over MCP, allowing agents to control simulations, run Python, and call namespace-scoped tools via a single bridge.11MIT
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/whats2000/isaacsim-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server