Skip to main content
Glama
whats2000

Isaac Sim MCP Server

Isaac Sim MCP Server

PyPI version Isaac Sim 5.1.0 - 6.0.1 Python 3.10+ License: MIT MCP Quality isaacsim-mcp-server 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, Antigravity, 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.

Robot Simulate Demo


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 - 6.0.1 (PhysX + Newton) with a modular adapter layer for version isolation


Related MCP server: Context7 MCP Server

Installation

pip install isaacsim-mcp-server

This 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.sh

Requirements

Requirement

Version

NVIDIA Isaac Sim

5.1.0 - 6.0.1 (PhysX or Newton)

Python

3.10+

uv

latest (for source install)

Platform

Linux (Ubuntu 22.04+) or Windows 10/11

IMPORTANT

Linux and Windows are supported. On Windows, use the PowerShell launcher scripts/run_isaac_sim.ps1 in place of the .sh scripts (see below). macOS is not supported because NVIDIA Isaac Sim does not run on macOS.

NOTE

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.sh

On Windows, uv sync creates the virtual environment (.venv) and installs the package plus its dependencies:

uv sync

2. Launch Isaac Sim with the extension

./scripts/run_isaac_sim.sh

You should see in the logs:

Registered 42 command handlers
Isaac Sim MCP server started on localhost:8766

The script looks for Isaac Sim in $HOME/isaacsim; set ISAACSIM_ROOT to use a different install.

Choosing the physics engine. Isaac Sim 6.0+ ships PhysX (default) and Newton backends. Select one with --newton / --physx, or ISAACSIM_ENGINE:

./scripts/run_isaac_sim.sh                  # PhysX (default)
./scripts/run_isaac_sim.sh --newton         # Newton
ISAACSIM_ENGINE=newton ./scripts/run_isaac_sim.sh

The same flags work with scripts/launch_isaac_sim_mcp.sh. Everything else on the command line is forwarded to Kit untouched. The server auto-detects the active engine, so no MCP-side configuration changes. Newton requires 6.0 or newer; asking for it on 5.1.0 fails with a clear message.

On Windows, use the PowerShell launcher instead. It takes the same engine selection and forwards extra arguments to Kit:

.\scripts\run_isaac_sim.ps1                          # PhysX (default)
.\scripts\run_isaac_sim.ps1 -Engine newton           # Newton
$env:ISAACSIM_ENGINE = 'newton'; .\scripts\run_isaac_sim.ps1

The script resolves the install from -IsaacSimRoot, then $env:ISAACSIM_ROOT, then a local source build, then C:\isaacsim, then %USERPROFILE%\isaacsim. It also creates a writable USD working directory (.cache\usd) since Windows has no /tmp.

export BEAVER3D_MODEL="<your beaver3d model name>"
export ARK_API_KEY="<your beaver3d api key>"
export NVIDIA_API_KEY="<your nvidia api key>"

On Windows (PowerShell):

$env:BEAVER3D_MODEL = "<your beaver3d model name>"
$env:ARK_API_KEY = "<your beaver3d api key>"
$env: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. The command examples are for Linux/macOS; each guide shows the Windows equivalent, which wraps the PowerShell launcher scripts\run_mcp_server.ps1.

claude mcp add isaac-sim /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh

Or edit ~/.claude.json / .mcp.json:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}

On Windows, wrap the PowerShell launcher:

claude mcp add isaac-sim -- powershell -NoProfile -ExecutionPolicy Bypass -File C:\path\to\isaacsim-mcp-server\scripts\run_mcp_server.ps1
{
  "mcpServers": {
    "isaac-sim": {
      "command": "powershell",
      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
    }
  }
}

Create .vscode/mcp.json in your workspace:

{
  "servers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}

On Windows, wrap the PowerShell launcher:

{
  "servers": {
    "isaac-sim": {
      "command": "powershell",
      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
    }
  }
}

Open Cursor Settings > MCP, or edit ~/.cursor/mcp.json:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}

On Windows, wrap the PowerShell launcher:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "powershell",
      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
    }
  }
}

Edit the config file for your platform:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}

On Windows, wrap the PowerShell launcher:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "powershell",
      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
    }
  }
}

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"
    }
  }
}

On Windows, wrap the PowerShell launcher:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "powershell",
      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
    }
  }
}

Open the agent side panel, click … > MCP Servers > Manage MCP Servers > View raw config, or edit ~/.gemini/config/mcp_config.json (global) or .agents/mcp_config.json (workspace):

{
  "mcpServers": {
    "isaac-sim": {
      "command": "/path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh"
    }
  }
}

On Windows, wrap the PowerShell launcher:

{
  "mcpServers": {
    "isaac-sim": {
      "command": "powershell",
      "args": ["-NoProfile", "-ExecutionPolicy", "Bypass", "-File", "C:\\path\\to\\isaacsim-mcp-server\\scripts\\run_mcp_server.ps1"]
    }
  }
}

Go to Settings > Tools > AI Assistant > MCP Servers and add the server, with the command /path/to/isaacsim-mcp-server/scripts/run_mcp_server.sh. See the JetBrains MCP docs for details.

On Windows, set the command to powershell and the arguments to -NoProfile -ExecutionPolicy Bypass -File C:\path\to\isaacsim-mcp-server\scripts\run_mcp_server.ps1.

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 / 6.0 APIs

Tools

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


Known Limitations

Open defects a normal session can hit. Each is warned about at the point of use where that is possible; this list is for choosing a runtime before you start.

Affects

What happens

Issue

6.0 Newton

Joint drives do not converge — a commanded target is overshot and the joint keeps going, and joint limits are not enforced. Scene setup, stepping and inspection are fine; run motion work on PhysX (isaac-sim.sh).

#21

6.0

The first RTX camera created in a session cannot be removed. create_camera warns once when it hands you that camera.

#20

5.1

get_lidar_point_cloud fills on roughly a third of reads, so a caller must retry. A lidar created while the timeline is running never fills at all — create it stopped.

#31

5.1

An RTX lidar prim cannot be deleted; the prim is left behind as a Camera. create_lidar refuses such a path and names a free one.

#25


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.sh

This creates a launcher that auto-assigns ports, waits for the extension socket, and cleans up on exit.

  1. Start with get_scene_info to verify the connection

  2. Create a physics scene if the stage is empty

  3. Prefer purpose-built tools before execute_script

  4. Use list_available_robots / list_environments before loading

  5. Use create_action_graph to wire OnPlaybackTick → ScriptNode controllers

  6. Use step_simulation with observe_prims and observe_joints for debugging

  7. Use reload_script to 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.py

The inspector is available at http://localhost:5173.

Setup Notes

Script

Purpose

Default

setup_python_env.sh

Create venv and install package

Python 3.10

run_isaac_sim.sh

Launch Isaac Sim with extension (Linux)

$HOME/isaacsim

run_isaac_sim.ps1

Launch Isaac Sim with extension (Windows)

C:\isaacsim

run_mcp_server.sh

Start the MCP server (Linux)

Port 8766

run_mcp_server.ps1

Start the MCP server (Windows)

Port 8766

launch_isaac_sim_mcp.sh

Combined launcher

Auto-assigns port

dev_mcp_server.sh

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.sh
ISAACSIM_ENGINE=newton ./scripts/run_isaac_sim.sh

Engine selection lives in scripts/lib/isaac_launcher.sh: each engine maps to the launcher script Isaac Sim ships for it. Adding an entry to that map is all a new backend needs — it enables both ISAACSIM_ENGINE=<name> and --<name> in every launcher script.

If 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 OK

Note: --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 tools
apply_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
material_pathYes
target_prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathNo/World/Camera
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

The description implies when to use (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.

Also empties any environment loaded by load_environment, which removes that environment's collision floor along with it — so a later create_physics_scene finds no floor and supplies its own. The stage's defaultLight is always kept — a stage with no light renders black, which looks like a broken camera.

Args: keep_physics: If True, keep physics scene prims. keep_environment: If True, keep the loaded environment. Reloading one costs seconds, so pass this when clearing objects between attempts.

ParametersJSON Schema
NameRequiredDescriptionDefault
keep_physicsNo
keep_environmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers: it discloses destructive scope, the side effect on the environment's collision floor, the interaction with create_physics_scene, and the defaultLight retention policy with a clear rationale. This covers exactly the non-obvious behaviors an agent needs to anticipate.

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

Conciseness4/5

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

The description is longer than necessary in places, but every paragraph adds distinct information: core action, environment/physics side effects, lighting rationale, and parameter meanings. The main sentence is front-loaded, and the Args section is clearly structured.

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

Completeness5/5

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

This destructive tool has no annotations, two optional flags, and cross-tool implications with load_environment and create_physics_scene. The description addresses all of these, explains the defaultLight exception, and gives enough context for correct invocation. With an output schema present, no return-value discussion is needed.

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

Parameters5/5

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

Schema coverage is 0%, and the schema only provides titles and defaults, so the description must compensate. It explains both keep_physics and keep_environment in plain language and adds a practical cost rationale for keep_environment, which is precisely the semantic value the schema lacks.

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

Purpose5/5

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

The opening line, 'Remove all prims from the scene,' states a specific verb and resource and clearly distinguishes this from sibling tools like delete_object, which targets individual prims. The description then sharpens scope by explaining interactions with the loaded environment and the always-kept defaultLight.

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

Usage Guidelines4/5

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

The description gives practical guidance on when to use keep_environment ('Reloading one costs seconds, so pass this when clearing objects between attempts') and warns about downstream consequences for create_physics_scene. It does not explicitly name alternatives like delete_object for removing a single prim, 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.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
source_pathYes
target_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 "execution", what Action Graphs use). "push" evaluates every application update regardless of the timeline, so an OnPlaybackTick-driven ScriptNode would keep running even while the simulation is stopped. 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. RECOMMENDED for anything you will iterate on — edit the file and reload_script "just works", with the better reload story. inline_script: Convenience shortcut — inline Python (must define setup(db)/compute(db)). Auto-creates OnPlaybackTick → ScriptNode, wires them, and sets the script inline (usePath=False). For small, static graphs. For anything you will iterate on, prefer script_file — it has the better reload story (edit the file + reload_script "just works"; inline edits need edit_action_graph).

Example (inline script — one-step): create_action_graph( inline_script="def setup(db): pass\ndef compute(db): return True" )

Example (script file — one-step, recommended for iteration): create_action_graph( script_file="/path/to/controller.py" )

ParametersJSON Schema
NameRequiredDescriptionDefault
nodesNo
valuesNo
evaluatorNoexecution
graph_pathNo/World/ActionGraph
connectionsNo
script_fileNo
inline_scriptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it does so thoroughly. It discloses the underlying og.Controller.edit() mechanism, automatic node creation/wiring for shortcuts, the usePath/scriptPath side effects, and explains evaluator behavior, e.g., push evaluates every application update even when the simulation is stopped.

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

Conciseness5/5

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

Although long, it is tightly organized with Args and two examples, and every section adds operational value. The repeated reload guidance is minor redundancy, not bloat, given how important that choice is.

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

Completeness5/5

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

The description is complete for a tool of this complexity: it covers all parameters, gives usage examples, explains tradeoffs, references sibling tools like reload_script and edit_action_graph, and the output schema is present to cover return values.

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

Parameters5/5

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, and it does: every one of the seven parameters is documented with defaults, expected formats, and concrete examples. It even gives exact attribute path syntax for connections and values.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create and wire an OmniGraph Action Graph.' It clarifies this is the programmatic equivalent of building one in the visual editor and differentiates from editing by saying it builds the complete graph, reinforced by the later reference to edit_action_graph.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance: script_file is 'RECOMMENDED for anything you will iterate on', inline_script is 'For small, static graphs', and it states that inline edits need edit_action_graph. It also notes that nodes and connections are ignored when script_file is set, preventing misuse.

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.

Prefer target= over rotation= for aiming: cameras look down their local -Z and carry a built-in orientation, so hand-computed euler angles are easy to get wrong and give you a picture of the sky. The response echoes the rotation that was applied under "rotation" and the point under "aimed_at".

Args: prim_path: Prim path for the camera. position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. Ignored if target is given. resolution: [width, height] image resolution. Default 1280x720. target: [x, y, z] world point to look at, using +Z as up. Needs a position — either passed here or already on the prim.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
positionNo
rotationNo
prim_pathNo/World/Camera
resolutionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description must disclose behavior on its own. It reveals that cameras look down local -Z, that rotation is ignored if target is given, and that the response echoes the applied rotation and aimed_at point. This goes beyond basic schema and helps the agent anticipate outcomes. It does not mention side effects or permissions, but for a creation tool this is sufficient.

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

Conciseness4/5

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

The description is well-structured: a one-line purpose, a usage tip, and an Args list. The most critical guidance (prefer target over rotation) is front-loaded. It is somewhat long but every sentence earns its place given the tool's complexity. No fluff.

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

Completeness4/5

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

Given the tool's complexity (aiming, multiple parameters, response echo) and lack of annotations, the description covers the essential aspects thoroughly. An output schema exists, so return format details are not needed here. It does not mention error conditions or edge cases, but those are minor for a creation tool.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It explains each parameter's meaning, units, defaults, and interactions – e.g., rotation is in degrees and ignored if target is given, target needs a position, resolution defaults to 1280x720. This is exemplary and provides all necessary semantic context.

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

Purpose5/5

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

The description opens with 'Add a camera sensor to the scene', which is a specific verb and resource. It is clearly distinct from sibling tools like create_light or create_lidar, so an agent can immediately understand what this tool does without inspecting the schema.

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

Usage Guidelines4/5

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

The description explicitly advises 'Prefer target= over rotation= for aiming' and explains the reason, plus states that rotation is ignored when target is given. This gives clear guidance on when to use each parameter. It does not directly contrast with sibling creation tools, but the usage context within the tool is well covered.

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").

ParametersJSON Schema
NameRequiredDescriptionDefault
configNo
positionNo
rotationNo
prim_pathNo/World/Lidar

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNo
positionNo
rotationNo
intensityNo
prim_pathNo
light_typeNoDistantLight

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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. material_path: Alias for prim_path. apply_material names this argument material_path, and an unknown argument is dropped silently rather than rejected — so asking for material_path="/World/Looks/Red" used to succeed while creating the material somewhere else entirely, and the follow-up apply_material then failed on a path that was never used. color: [r, g, b] diffuse color (0-1). PBR only. roughness: Surface roughness (0-1). PBR only. metallic: Metallic value (0-1). PBR only.

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNo
metallicNo
prim_pathNo
roughnessNo
material_pathNo
material_typeNopbr

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses a critical behavioral trap: material_path is an alias for prim_path, and an unknown argument is silently dropped, which previously caused failures. This is exactly the kind of behavioral context that helps an agent avoid a real bug. It doesn't mention side effects or return values, but the output schema exists and the warning is high-value.

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

Conciseness4/5

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

The description is well-structured with a clear opening line and a bulleted Args list. The material_path warning is a bit long but earns its place because it documents a silent-failure trap. Slightly verbose in the warning, but every sentence adds value.

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

Completeness4/5

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

For a 6-param tool with 0% schema coverage and no annotations, the description covers the key semantics: material type, path behavior, and PBR-only params. The output schema exists, so return values are covered elsewhere. Missing explicit guidance on what happens when material_type is 'physics' (which params are ignored) is a minor gap, but the description is largely complete.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It explains material_type values, prim_path auto-generation, the material_path alias trap, and the PBR-only scope of color/roughness/metallic. This adds meaning beyond the raw schema, though it doesn't give exact value ranges for all params (color range is given, roughness/metallic are not).

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

Purpose5/5

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

The description states a specific verb ('Create') and resource ('PBR or physics material'), and distinguishes the two material types. It also names the sibling tool apply_material, which helps differentiate this creation tool from the application tool.

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

Usage Guidelines4/5

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

The description explains when to use this tool (creating materials) and gives a clear warning about the material_path alias pitfall, which is valuable usage guidance. It doesn't explicitly list alternatives or when-not-to-use, but the context is clear enough for an agent to select it appropriately.

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).

Prefer size for absolute sizing: size is the target in METERS (default 1.0), so size=0.3 gives a 0.3 m object regardless of type.

scale is a RAW MULTIPLIER of the primitive's NATIVE size, not meters. Native sizes: Cube/Sphere/Cylinder/Cone/Capsule = 2 m, Plane = 1 m. So scale=0.5 on a Cube -> 1 m, and scale=[0.4,0.4,0.3] -> a 0.8 x 0.8 x 0.6 m box (0.4 * 2 m), which surprises callers who expect 0.4 m. Use scale only for deliberate non-uniform shaping; otherwise use size. If both are given, scale wins and size is ignored.

For the geometric prims (Cube, Sphere, Cylinder, Cone, Capsule) this 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. A Plane has no such extent and returns prim_path only.

Args: object_type: Type of primitive — Cube, Sphere, Cylinder, Cone, Capsule, or Plane (case-insensitive; "cube" is normalized to "Cube"). position: [x, y, z] world position. rotation: [rx, ry, rz] rotation in degrees. scale: [sx, sy, sz] RAW multiplier of the native size (2 m for most prims, 1 m for Plane). NOT meters. Overrides size. size: Target size in METERS (default 1.0). Absolute; independent of the primitive's native size. Ignored if scale is provided. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNo
colorNo
scaleNo
positionNo
rotationNo
prim_pathNo
object_typeNoCube
physics_enabledNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and meets it: it discloses the non-obvious scale convention (raw multiplier of native size), gives native sizes, and states precedence when both scale and size are provided. It also discloses differing return behavior for geometric prims vs Plane: prim_path/actual_size/bounding_box vs prim_path only.

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

Conciseness5/5

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

The description is front-loaded with the core action and the critical size/scale warning before the Args list. It is long but organized into clear prose and an Args reference, with almost no filler; the repetition of scale caveats is useful emphasis rather than waste.

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

Completeness5/5

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

Given 8 optional parameters, no schema-level descriptions, and no annotations, the description is complete enough to call correctly: it supplies defaults, explains precedence, enumerates supported object types, and describes return fields. The output schema may carry the formal return structure, but the prose adds the needed semantics.

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

Parameters5/5

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, and it does: every parameter is documented with units or value ranges, including object_type normalization, position as world coordinates, rotation in degrees, color 0-1, and the crucial scale/size distinction. This far exceeds the bare schema names.

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

Purpose5/5

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

The description opens with a direct verb and resource: 'Create a primitive object (Cube, Sphere, Cylinder, Cone, Capsule, Plane).' The enumerated types make the scope unmistakable and separate it from sibling creation tools like create_robot, create_camera, and generate_3d.

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

Usage Guidelines4/5

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

It gives explicit when-to-use guidance for the key parameter choice: 'Prefer `size` for absolute sizing' and 'Use `scale` only for deliberate non-uniform shaping; otherwise use `size`.' It doesn't name sibling tools for non-primitive creation, but the primitive type list and the size-vs-scale rule provide clear usage context.

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, adding a ground plane only if the stage lacks one. Call get_scene_info first to verify connection.

A loaded environment usually brings its own collision floor, and this does not add a second one on top of it — provided load_environment ran BEFORE this call. The check happens once, here: call this first and the environment's floor arrives afterwards, leaving two collision floors with the engine deciding which one objects land on. load_environment reports that case as "collision_floor_warning". The response reports "ground_plane" — the floor objects will actually land on — and "ground_plane_created", false when the stage already had one. Read the floor's height from that prim rather than assuming z=0; an environment's floor is not always at the origin.

The check recognises a collision-enabled prim of type Plane, which is what the shipped environments author. An environment whose floor is a Mesh is NOT recognised, so a second plane is added and two collision floors end up on the stage — which one wins is the physics engine's decision. When "ground_plane_created" is true after loading an environment, verify the floor before placing anything on it.

Args: gravity: Gravity vector [x, y, z]. Default is standard gravity. scene_name: Name for the physics scene prim.

ParametersJSON Schema
NameRequiredDescriptionDefault
gravityNo
scene_nameNoPhysicsScene

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are present, so the description carries the full burden. It discloses the conditional creation of a ground plane, the response fields ground_plane and ground_plane_created, the risk of duplicate floors, and the limitation with Mesh floors. This goes beyond a simple action statement and reveals side effects and edge cases.

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

Conciseness4/5

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

The description is long but well-structured. It front-loads the purpose, then gives usage guidance, then behavioral details, then parameter explanations. Each sentence contributes to understanding the tool's behavior and edge cases. While verbose, the complexity of the tool justifies the length; it is not redundant.

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

Completeness5/5

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

The tool has an output schema, so return values are covered. The description covers the key preconditions (get_scene_info, load_environment ordering), the conditional behavior, the response fields, and the risks. An agent has all necessary information to call this tool correctly and interpret results. No critical gaps remain.

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

Parameters4/5

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

Schema coverage is 0%, so the description must explain parameters. It provides an 'Args' section defining gravity as a vector and scene_name as the prim name, but omits the default value for gravity (standard gravity is vague) and does not explicitly state that both parameters are optional, though the schema shows defaults. It adds meaning beyond the schema but could be more precise.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Create a physics scene' and immediately clarifies the conditional ground-plane logic, which is unique to this tool. It clearly distinguishes this from sibling creation tools like create_object or create_material by focusing on physics scene setup and the environment interaction.

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

Usage Guidelines5/5

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

Explicitly instructs to call get_scene_info first to verify connection, and explains the ordering requirement relative to load_environment. It states the consequence of calling this tool before load_environment (two collision floors) and warns about Mesh floors not being recognized. This provides clear when-to-use and precautionary guidance.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
positionNo
prim_pathNo
robot_typeNofranka

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
valuesNo
graph_pathNo/World/ActionGraph
connectionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

CAUTION: touching an articulation controlled by a running ScriptNode / Action Graph can silently break its control path (no error is raised). While a graph is running, read-only diagnostics (get_prim_info, get_physics_state, get_joint_positions, get_isaac_logs) are safe, but stop_simulation before using execute_script or named write tools on the same articulation.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
cwdNo
codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries full responsibility for disclosing side effects. It explicitly warns that touching an articulation controlled by a running ScriptNode/Action Graph can silently break its control path, that read-only diagnostics are safe, and that stop_simulation should be used before writes. This is strong, actionable risk disclosure.

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

Conciseness5/5

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

The description is detailed but every block earns its place: purpose, routing, caution, escalation path, and parameter semantics. The structure uses clear labels and scannable lists, and the front-loaded 'Escape hatch' phrase immediately conveys the tool's nature.

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

Completeness5/5

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

Given the tool's arbitrary-code natureaint and the existing output schema, the description covers everything an agent needs: when to use it, when not to, safety hazards, the stopping prerequisite, and the alternative for persistent code. No critical context appears missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description alone carries parameter meaning. It explains that 'code' is Python code executed in the Isaac Sim context and that 'cwd' is an optional working directory added to sys.path. This goes well beyond the raw schema fields.

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

Purpose5/5

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

The description opens with 'Escape hatch: execute arbitrary Python code in Isaac Sim,' using a specific verb and resource. It clearly distinguishes itself from named sibling tools by listing what those tools handle and framing this as the fallback for uncovered operations.

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

Usage Guidelines5/5

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

The description gives explicit 'PREFER named tools over this' and 'USE this for' sections, naming specific alternatives like set_joint_positions, get_prim_info, and step_simulation. It also provides a concrete boundary: use reload_script for persistent controllers over 20 lines.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
positionNo
image_urlNo
text_promptNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, 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: recent WARN/ERROR logs plus captured print() output.

Captures carb.log_*/omni.log WARN+ERROR and stdout from execute_script / reload_script (tagged [PRINT]). Plain print() outside those captured contexts may not appear.

Defaults are agent-friendly: non-destructive (clear=False) and scoped to the current run (since_last_play=True) so you see logs from what you just did, not stale entries from previous runs.

Args: clear: If True, empty the buffer after reading. Default False. count: Maximum number of log entries to return. since_last_play: If True (default), return only entries since the last timeline Play. Set False for the full buffer.

ParametersJSON Schema
NameRequiredDescriptionDefault
clearNo
countNo
since_last_playNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses what is captured, what may not appear, the non-destructive default, the scoping behavior, and the side effect of clear=True. This gives the agent an accurate behavioral model beyond the raw schema.

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

Conciseness5/5

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

The description is well-organized and front-loaded with the core purpose. The capture scope, limitation, defaults, and parameter explanations each earn their place with no filler. The Args section is concise and directly actionable.

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

Completeness5/5

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

The tool is simple, has no required parameters, and includes an output schema, so the description does not need to explain return values. It covers operational context, behavioral caveats, and all parameter semantics. Nothing essential is missing for correct invocation.

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

Parameters5/5

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

Input schema has 0% description coverage, so the description must explain the parameters, and it does. Each parameter is documented with its effect, default, and how it changes behavior. This fully compensates for the schema gap.

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

Purpose5/5

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

The description opens with a clear statement that this is a diagnostic tool for recent WARN/ERROR logs plus captured print() output. It names the specific log sources (carb.log_*/omni.log) and distinguishes captured stdout contexts. This is unambiguous and sufficiently distinct from all sibling tools.

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

Usage Guidelines4/5

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

The description provides clear usage context: it is for viewing logs from execute_script / reload_script and current-run activity, with agent-friendly defaults. It explains how to see the full buffer via since_last_play=False and that clear=True is destructive. It does not explicitly name alternatives, but no sibling tool overlaps with log retrieval.

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)

Units: gains are per-radian (angular) or per-meter (linear), per each joint's gain_units. USD stores angular gains per-degree — divide by 180/pi before writing one back via execute_script, or the drive lands 57.3x stiff, silently.

Args: prim_path: USD path to the robot articulation root.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It fully does so by explaining the return data, the units (per-radian vs per-meter, and the USD per-degree conversion warning), and the fact that it's a diagnostic tool (implying read-only). The explicit warning about the 57.3x stiffness error is a significant behavioral detail that prevents silent failures. No contradictions with annotations (since none exist).

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

Conciseness5/5

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

The description is well-structured and every sentence serves a purpose. It opens with a one-line definition, lists the returned fields, then gives three 'call when' conditions, followed by a crucial units caveat and the parameter explanation. There is no fluff or redundant content; it is appropriately detailed without being verbose.

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

Completeness5/5

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

Given the tool's simplicity (one parameter) and the presence of an output schema (which presumably defines the return structure), the description is complete. It covers what the tool does, when to use it, the units, and the parameter semantics. Nothing an agent needs to invoke it correctly is missing. The diagnostic nature and read-only implication are clear, making this a fully self-sufficient description.

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

Parameters5/5

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

The input schema has one parameter (prim_path) with no description in the schema (coverage 0%). The tool description compensates fully by stating it is the 'USD path to the robot articulation root.' This is sufficient for a single, self-explanatory parameter, and the description adds the necessary context for correct invocation.

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

Purpose5/5

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

The description clearly states the tool's function: a diagnostic tool that retrieves joint drive configuration (stiffness, damping, limits, target vs actual positions, position error) for a robot articulation. It uses a specific verb and resource, making it distinct from sibling tools like get_joint_positions or set_joint_positions. The diagnostic focus and explicit return values leave no ambiguity about purpose.

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

Usage Guidelines5/5

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

The description provides explicit, scenario-based guidance for when to use this tool: when joint drives aren't tracking targets, when joints oscillate or are unstable, and when joints hit limits unexpectedly. It also gives a practical caveat about writing gains back via execute_script, which helps agents avoid misuse. This is clear and actionable, distinguishing it from alternatives.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_cloudA

Get point cloud data from a lidar sensor.

Requires the timeline to be playing — RTX lidar data is produced by Replicator while the sim runs, and a sweep only completes on some frames, so an empty read means "not this frame", not "saw nothing".

By default returns a summary rather than the raw cloud: point_count, bounds, and the nearest hit. A full sweep is tens of thousands of points and megabytes of JSON, which is rarely what you want in a response.

Args: prim_path: Prim path of the lidar sensor. max_points: Include this many points in the response, sampled at an even stride across the sweep. Omit for summary only. output_path: Write the complete cloud to this .npy file and return its path; numpy.load() reads it back as an (N, 3) array.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathNo/World/Lidar
max_pointsNo
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it excels: it explains the timing-dependent nature of RTX lidar data, the meaning of empty reads, the default summary behavior, the large size of raw clouds, and that output_path writes an .npy file readable as an (N, 3) array. This goes well beyond the minimum.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the most critical caveat (timeline playing, sweep timing) before parameter details. Every sentence adds value, and the Args section maps cleanly to the schema without unnecessary repetition.

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

Completeness5/5

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

The description fully covers prerequisites, common failure semantics, output modes, and parameter behavior. Since an output schema exists, detailed return-shape documentation is unnecessary, and nothing critical an agent needs to call the tool correctly appears missing.

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

Parameters5/5

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, and it does. Each parameter gets meaningful semantics: prim_path identifies the lidar sensor, max_points controls sampled points at even stride and can be omitted for summary-only, and output_path writes the complete cloud and returns a loadable path.

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

Purpose5/5

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

The description opens with 'Get point cloud data from a lidar sensor', a specific verb plus resource, and clearly distinguishes itself from siblings like create_lidar and capture_image. It further clarifies that the tool can return either a summary or raw points, leaving no ambiguity about its purpose.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: the timeline must be playing, a sweep only completes on some frames, and an empty read means 'not this frame'. It also advises when to prefer the summary over raw points, though it does not explicitly name alternative tools or exclusion conditions.

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, velocities, kinematic flag, and collision info. mass is included only when the prim carries a UsdPhysics MassAPI — objects created by create_object do not, and take their mass from the collider's density. Velocity units: linear_velocity in m/s, angular_velocity in rad/s. Velocities are only non-zero once the simulation has advanced — step the simulation (or play) before reading them. 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full behavioral burden and does so well. It discloses the mass-only-with-MassAPI caveat, velocity units, and the important timing behavior that velocities are zero until the simulation advances. These are non-obvious traits that an agent must know to interpret results correctly.

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

Conciseness5/5

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

The description is well-organized and front-loaded: purpose, return contents, unit caveats, timing caveat, then a bulleted call-when list. Every sentence adds value, and the structure makes the information easy to scan.

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

Completeness5/5

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

The description is complete for a single-parameter diagnostic getter. It covers what is returned, key edge cases, units, timing, and when to invoke the tool. Since an output schema exists, not detailing every return field is acceptable.

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

Parameters4/5

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

The schema has 0% description coverage, but the description compensates with an Args line: 'USD path to the prim to inspect.' This adds domain meaning beyond the raw parameter name and type, though it could have been slightly richer with path format details or an example.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Diagnostic tool: get physics state for a prim.' It enumerates the returned data (rigid body status, velocities, kinematic flag, collision info), which distinguishes it from broader sibling tools like get_simulation_state and get_scene_info.

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

Usage Guidelines4/5

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

The description provides explicit when-to-use conditions ('Objects fall through the ground', 'Objects don't move when expected', 'Grasping fails'), which is strong practical guidance. It does not name alternative tools or state when not to use it, so it stops short of a 5.

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

get_prim_infoA

Get detailed information about a specific prim.

Returns type, children, and a transform block. Position is reported in both frames, under explicit names — there is no bare "position": position_local — parent-relative, the value transform_object writes. position_world — where the prim actually is on the stage. Use this to reason about distances, reach, or contact. For a robot link such as /World/Franka/fr3_hand_tcp the two differ by the robot's own pose. position_world_source is "usd" (derived from the authored transform) or "physics" (measured, on Newton). On Newton a body that has been simulated may carry position_warning saying both values are its spawn pose; read it through get_physics_state instead.

Also returns rotation [rx, ry, rz] in degrees (XYZ order, the same convention transform_object accepts) and scale — both local, like position_local. For geometric prims (Cube, Sphere, Cylinder, Cone, Capsule), also returns actual_size [x, y, z] in meters accounting for scale and default primitive dimensions (world-space, like position_world).

Args: prim_path: The USD prim path to inspect.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden — and it delivers richly. It discloses the dual-frame convention (position_local vs position_world), the source semantics ('usd' vs 'physics'), the position_warning caveat on Newton, the rotation ordering (XYZ degrees, matching transform_object), local vs world scaling, and the actual_size behavior for geometric prims. This is far beyond the minimum and leaves the agent with no dangerous assumptions about output semantics.

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

Conciseness4/5

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

The description is longer than average, but every sentence earns its place — the framing notes prevent real errors (bare 'position' confusion, wrong reference frame, spawn-pose misreads). It is front-loaded with the purpose, uses a scannable bullet layout, and avoids fluff. It is verbose by necessity, not by waste.

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

Completeness5/5

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

An output schema exists, so return-value structure need not be spelled out — yet the description goes further and explains the semantics of the returned fields (frame meanings, source values, warning conditions, unit conventions). For a single-parameter read tool this is essentially complete; the only minor omission is error behavior for invalid prim paths, which is not critical here.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does. The single parameter prim_path is given meaning beyond the schema title: 'The USD prim path to inspect,' which clarifies the expected path format. For a one-parameter read tool this is adequate compensation; it could add examples of valid path forms (e.g., /World/Franka/fr3_hand_tcp), but the coverage gap is small since there is only one simple parameter.

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

Purpose5/5

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

States a specific verb+resource ('Get detailed information about a specific prim') and lists exactly what is returned: type, children, transform block. The explicit 'there is no bare position' note preempts a common agent mistake and differentiates this read tool from siblings like get_robot_info, get_scene_info, and get_simulation_state. An agent can tell what this tool does and what it is not without opening another schema.

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

Usage Guidelines4/5

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

Provides explicit usage context ('Use position_world to reason about distances, reach, or contact') and one concrete routing to a sibling ('read it through get_physics_state instead' for the Newton spawn-pose warning case). It also references transform_object's convention to tie related tools together. It does not, however, broadly contrast with the many other read siblings (get_scene_info, get_simulation_state, get_robot_info), so the exclusion guidance is present but not comprehensive.

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 (radians for revolute, meters for prismatic — each entry carries its own units).

Args: prim_path: The prim path of the robot.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that the tool returns joint names ordered by DOF index, joint types, and limits with units, which is useful behavioral context. However, it doesn't mention whether this is a read-only operation, whether it requires a valid robot prim, or what happens if the prim path is invalid. The return format is partially covered by the output schema, so a 3 is appropriate.

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

Conciseness4/5

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

The description is compact and front-loaded with the core purpose, followed by usage timing and return details. The Args section is minimal but acceptable. It earns its place with no wasted words, though the return details could be slightly more structured.

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

Completeness4/5

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

Given the tool has an output schema and only one parameter, the description is mostly complete. It explains what the tool returns, when to call it, and the meaning of the parameter. It doesn't mention error cases or prerequisites beyond the create_robot hint, but for a simple read-only info tool, this is adequate.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains that prim_path is 'The prim path of the robot', which adds minimal meaning beyond the schema's title. It doesn't clarify what a valid prim path looks like, how to obtain one, or whether it should point to a robot root or a specific link. The description adds some context but not enough to fully compensate for the lack of schema descriptions.

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

Purpose5/5

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

The description states a specific verb ('Get'), a specific resource ('robot joint information'), and enumerates the exact content returned (names, DOF count, joint types, limits). It also distinguishes itself from siblings like get_joint_positions and get_joint_config by focusing on kinematic structure rather than state or configuration.

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

Usage Guidelines4/5

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

The description explicitly says to call this after create_robot to understand the robot's kinematic structure, which gives clear usage context. It doesn't explicitly name alternatives or exclusions, but the timing guidance and the focus on kinematic structure imply when it is appropriate relative to siblings like get_joint_positions.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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: timeline status (playing/stopped/paused), simulation time, and physics dt. step_simulation does NOT require a running timeline — do not play just to step.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It states what data is returned but does not explicitly confirm the operation is read-only or free of side effects. The 'Get' verb implies a read, but given the zero annotation coverage, more explicit disclosure (e.g., 'does not modify simulation state') would be beneficial. The extra note about step_simulation is about a sibling tool's behavior, not this tool's.

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

Conciseness4/5

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

Two concise sentences. The first front-loads the purpose and return fields; the second adds a useful but tangential warning about step_simulation. It is appropriately sized with no redundant text.

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

Completeness4/5

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

For a parameterless getter with an output schema, the description sufficiently names the returned fields and even includes a relevant workflow caveat about stepping without playing. No important calling context is missing.

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

Parameters4/5

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

There are zero parameters and the input schema is empty, so the description cannot add parameter meaning. Baseline 4 applies for no parameters.

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

Purpose4/5

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

Description explicitly states the tool retrieves the current simulation state and enumerates the specific components: timeline status, simulation time, and physics dt. It uses a clear verb ('Get') and resource. While it doesn't contrast with sibling get_physics_state, the specificity makes the purpose unmistakable.

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

Usage Guidelines3/5

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

The description provides a specific workflow hint about step_simulation not requiring a running timeline, which indirectly helps an agent decide not to call play_simulation before stepping. However, it does not explicitly state when to use this tool over alternatives like get_physics_state or get_scene_info, nor provide general selection criteria.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
prim_pathNo/World/robot
urdf_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the 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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 the prims directly under root_path, optionally filtered by type.

One level deep by default, so list_prims("/") names /World and /Environment rather than everything inside them — a robot alone is hundreds of prims. The response echoes recursive so a shallow answer is never mistaken for a complete one.

Pass recursive=True to walk the whole subtree. That is the one you want when checking whether something was really deleted, or when hunting a prim nested under a robot: a Camera at /World/Arm/EyeCam does not appear in a shallow listing of /World.

Args: root_path: Root path to start listing from. prim_type: Filter by prim type (e.g. "Mesh", "Xform"). With recursive=True, non-matching prims are still descended into, so a Camera under an Xform is found. recursive: Walk the entire subtree instead of one level.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_typeNo
recursiveNo
root_pathNo/

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the burden and delivers: default one-level depth, the response echo of recursive to prevent false confidence, and the nuanced behavior that non-matching prims are still descended into during recursive filtered searches. It is a read-only listing tool and these semantics are clearly disclosed.

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

Conciseness4/5

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

The one-sentence summary is front-loaded and the paragraphs build useful context, but the explanation is slightly verbose. All content earns its place, so it remains strong despite being beyond a minimal summary.

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

Completeness4/5

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

Given an output schema exists and no annotations are present, the description covers the important operational semantics: default depth, filtering, recursive behavior, and a use case. Minor gaps such as absolute path expectations or cost warnings for deep recursion are not stated, but the core calling context is complete.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must explain every parameter; it does. Each arg gets meaningful semantics: root_path is the starting point, prim_type is exemplified with 'Mesh'/'Xform' and its recursive descent behavior, and recursive defines subtree walking.

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

Purpose5/5

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

The description opens with a specific verb-resource pair: 'List the prims directly under root_path, optionally filtered by type.' It immediately clarifies the depth scope, distinguishing this from broader scene inspection tools like search_usd and get_scene_info.

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

Usage Guidelines4/5

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

It gives explicit situational guidance: recursive=True 'is the one you want when checking whether something was really deleted, or when hunting a prim nested under a robot.' It does not explicitly route to sibling alternatives for other cases, so it misses the full when-versus-alternatives guidance.

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.

Many shipped environments are authored Y-up and/or in centimeters; those are rotated and rescaled to match the stage, and the response reports what was applied under "corrections". Read prim_path from the response rather than assuming it — it defaults to a named child of /Environment.

"bounds" carries two different heights, so use the right one: floor_height — the surface objects rest on, measured from the environment's collision floor. Place with position=[x, y, floor_height]. bounds_min_z — the lowest authored geometry (trim, a recessed drain, a sunk prop). Not a placement height. floor_height_source says which was used. When it reads "bounds_min_z" no collision floor could be measured and floor_height is a fallback that may be below the real surface — floor_height_warning explains it.

Args: environment: Environment name or search term (e.g. "warehouse", "hospital", "office"). prim_path: Prim path for the loaded environment. Defaults to /Environment/, which keeps it separate from the stage's default lighting and lets clear_scene remove it.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathNo
environmentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it does so thoroughly. It discloses fuzzy matching, automatic Y-up/centimeter corrections, response fields like 'corrections' and 'floor_height_source', fallback behavior, and how prim_path affects scene organization and clear_scene removal.

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

Conciseness5/5

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

The description is long but every sentence adds actionable information. It is front-loaded with the purpose and prerequisite, then logically organizes caveats about corrections and floor height so an agent can place objects correctly without re-reading the output schema.

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

Completeness5/5

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

Given two parameters, no annotations, and a complex output, the description covers prerequisites, naming, fuzzy matching, coordinate-system corrections, placement semantics, and response interpretation. An agent has everything needed to invoke the tool and interpret the result correctly.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description fully compensates. It defines environment as a name or fuzzy search term with examples, and prim_path with its default, behavioral implications, and relationship to clear_scene.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Load a pre-built environment into the scene.' It clarifies this is distinct from arbitrary USD loading by calling it 'pre-built' and directing users to list_environments, effectively differentiating it from siblings like load_usd.

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

Usage Guidelines4/5

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

It explicitly says to call list_environments first, providing a clear prerequisite and workflow. It also explains when prim_path defaults are desirable, but it does not explicitly discuss when to choose an alternative such as load_usd or when not to use this tool.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
usd_urlYes
positionNo
prim_pathNo/World/my_usd

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNo
intensityNo
prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

Reload a Python controller from a file on disk.

Two modes, chosen automatically:

  • If any Action-Graph ScriptNode references this file (inputs:scriptPath), those ScriptNodes are force-recompiled so your on-disk edits take effect on the running graph. This is how you iterate on a ScriptNode controller.

  • Otherwise the file is (re-)executed as a standalone controller, the way you would use execute_script for code longer than ~20 lines.

Workflow:

  1. Write the controller as a .py file (attach via create_action_graph script_file=... for ScriptNode use)

  2. reload_script to load / recompile it

  3. step_simulation to debug (frozen timeline) or play for a ScriptNode demo

  4. 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. script_file: Alias for file_path. create_action_graph names this argument script_file, and an unknown argument is dropped silently rather than rejected, so both spellings are accepted here instead of one of them quietly doing nothing. module_name: Optional module name to reload (e.g. 'my_controller').

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNo
module_nameNo
script_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A5/5.0
Behavior5/5

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

With no annotations at all, the description fully carries the behavioral burden. It discloses automatic mode selection, force-recompilation of ScriptNodes, standalone re-execution, sys.path modification, and the silent dropping of unknown arguments. These are important non-obvious behaviors beyond the schema.

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

Conciseness5/5

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

The description is well structured with a clear opening, mode explanation, workflow list, and argument details. Every section earns its place, and the most important information is front-loaded. Length is justified by the tool's dual-mode complexity.

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

Completeness5/5

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

Given the tool's dual-mode nature, absence of annotations, and 0% schema description coverage, the description covers everything needed: when it applies, how it behaves, required workflow context, and parameter semantics. The presence of an output schema means return-value documentation is not required here.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully. It explains file_path, script_file as an alias, module_name's optional role, and even the reason both aliases are accepted. This is more useful than typical parameter documentation.

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

Purpose5/5

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

The description begins with a specific verb and object: 'Reload a Python controller from a file on disk.' It then clearly separates two modes, making it easy to distinguish from siblings like execute_script and create_action_graph. The mention of ScriptNode recompilation gives precise resource context.

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

Usage Guidelines5/5

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

The description explicitly states when each mode applies and provides a workflow linking reload_script to create_action_graph, step_simulation, and play_simulation. It also references execute_script as the alternative for standalone execution, giving an agent clear decision criteria.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
positionNo
target_pathNo/World/my_usd
text_promptYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
prim_pathYes
joint_indicesNo
joint_positionsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the 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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
gravityNo
time_stepNo
gpu_enabledNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

Advance the simulation by exactly N physics frames on a FROZEN timeline.

step is self-contained: it initialises physics on first call and operates on a paused/stopped timeline, so N is always exact and observations correlate to a known frame count.

Do NOT call play_simulation before or during the debug loop; step is for a frozen timeline. If the timeline is already playing, step returns an error (a free run cannot be counted frame-by-frame). Use play_simulation ONLY for a final continuous run / ScriptNode-driven demo, never for debugging.

Typical debug loop (no play):

  1. set_joint_positions to command the robot

  2. step_simulation with observe_prims and observe_joints

  3. get_joint_config if drives are not tracking correctly

  4. get_physics_state if objects are not behaving as expected

  5. 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).

ParametersJSON Schema
NameRequiredDescriptionDefault
num_stepsNo
observe_primsNo
observe_jointsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden, and it does well: it discloses exact frame counting, self-contained initialization on first call, operation only on paused/stopped timelines, and error behavior on a playing timeline. It stops short of describing post-step timeline state or what happens when no observe arguments are provided, but the disclosed behavior is already substantial.

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

Conciseness4/5

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

The description is longer than average, but nearly every sentence earns its place: core behavior is front-loaded, the play_simulation exclusion is critical, and the debug loop is a practical aid. It is slightly extended by the numbered workflow, but the structure keeps it readable and purpose-driven.

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

Completeness5/5

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

Given the potential for confusion with play_simulation, pause_simulation, and stop_simulation, this description is functionally complete. It explains all three parameters, the exact behavioral contract, error conditions, and a recommended debug workflow; return-value details are covered by the output schema, so nothing essential is missing.

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

Parameters5/5

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, and it does. It explains num_steps as 'Number of simulation frames to step,' observe_prims as prim paths returning position and velocity, and observe_joints as articulation prim paths returning joint positions. This adds real semantic value beyond the raw parameter names.

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

Purpose5/5

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

The description opens with a precise verb and resource: 'Advance the simulation by exactly N physics frames on a FROZEN timeline.' It also distinguishes itself from play_simulation by explicitly framing step as the frozen-timeline counterpart, so an agent can select it correctly without inferring from the name.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use and when-not-to-use guidance: do NOT call play_simulation before or during the debug loop, step errors if the timeline is playing, and play_simulation is reserved for final continuous runs. The included debug loop further demonstrates the intended sequencing with sibling tools like set_joint_positions and get_physics_state.

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

stop_simulationA

Stop the physics simulation and reset to spawn state.

Resets articulations and rigid bodies to their spawn pose (the state captured at first Play), like the Isaac UI Stop button. Call this to return the scene to a clean starting point before another run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It transparently explains that articulations and rigid bodies reset to their spawn pose, and provides a familiar reference (Isaac UI Stop button). It doesn't mention whether non-rigid-body objects (e.g., lights, cameras) are affected, which is a minor gap, but the core behavior is clear.

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

Conciseness5/5

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

Two concise sentences with no wasted words. The primary action and side effect are front-loaded, and the when-to-use guidance is integrated naturally. Perfectly structured for quick parsing.

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

Completeness5/5

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

For a parameterless tool with an output schema (per context signals), the description fully covers what it does and when to use it. No missing information that an agent would need to call it correctly.

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

Parameters4/5

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

The tool has zero parameters, so the description needs no parameter explanation. Baseline of 4 is appropriate; the description adds no parameter-specific information because none is needed.

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

Purpose5/5

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

States a specific verb ('Stop'), resource ('physics simulation'), and the key side effect ('reset to spawn state'). The description clearly distinguishes this from siblings like pause_simulation by emphasizing the reset behavior. An agent can tell exactly what this tool does without ambiguity.

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

Usage Guidelines4/5

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

Explicitly says 'Call this to return the scene to a clean starting point before another run', giving a clear context. It doesn't name alternatives like pause_simulation, but the reset semantics implicitly differentiate it from a simple pause. The guidance is adequate but could be improved by noting when not to use it (e.g., when you want to preserve current state).

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
positionNo
rotationNo
prim_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full 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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 10 tool updatesv0.6.1
    • Changedclear_scene1 field changed
      • addedInput schema / properties / keep_environment
        Added value: +{
        +  "default": false,
        +  "title": "Keep Environment",
        +  "type": "boolean"
        +}
    • Changedcreate_action_graph2 fields changed
      • changedInput schema / properties / evaluator / default
        Previous value: -"push"New value: +"execution"
      • addedInput schema / properties / inline_script
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Inline Script"
        +}
    • Changedcreate_camera1 field changed
      • addedInput schema / properties / target
        Added value: +{
        +  "anyOf": [
        +    {
        +      "items": {
        +        "type": "number"
        +      },
        +      "type": "array"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Target"
        +}
    • Changedcreate_material1 field changed
      • addedInput schema / properties / material_path
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Material Path"
        +}
    • Changedcreate_object1 field changed
      • addedInput schema / properties / size
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Size"
        +}
    • Changedget_isaac_logs2 fields changed
      • changedInput schema / properties / clear / default
        Previous value: -trueNew value: +false
      • addedInput schema / properties / since_last_play
        Added value: +{
        +  "default": true,
        +  "title": "Since Last Play",
        +  "type": "boolean"
        +}
    • Changedget_lidar_point_cloud2 fields changed
      • addedInput schema / properties / max_points
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Max Points"
        +}
      • addedInput schema / properties / output_path
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Output Path"
        +}
    • Changedlist_prims1 field changed
      • addedInput schema / properties / recursive
        Added value: +{
        +  "default": false,
        +  "title": "Recursive",
        +  "type": "boolean"
        +}
    • Changedload_environment3 fields changed
      • addedInput schema / properties / prim_path / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedInput schema / properties / prim_path / default
        Previous value: -"/Environment"New value: +null
      • removedInput schema / properties / prim_path / type
        Removed value: -"string"
    • Changedreload_script5 fields changed
      • addedInput schema / properties / file_path / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / file_path / default
        Added value: +null
      • removedInput schema / properties / file_path / type
        Removed value: -"string"
      • addedInput schema / properties / script_file
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Script File"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "file_path"
        -]
  2. 42 tool updatesv0.1.0
    • First observedapply_material
    • First observedcapture_image
    • First observedclear_scene
    • First observedclone_object
    • First observedcreate_action_graph
    • First observedcreate_camera
    • First observedcreate_lidar
    • First observedcreate_light
    • First observedcreate_material
    • First observedcreate_object
    • First observedcreate_physics_scene
    • First observedcreate_robot
    • First observeddelete_object
    • First observededit_action_graph
    • First observedexecute_script
    • First observedgenerate_3d
    • First observedget_isaac_logs
    • First observedget_joint_config
    • First observedget_joint_positions
    • First observedget_lidar_point_cloud
    • First observedget_physics_state
    • First observedget_prim_info
    • First observedget_robot_info
    • First observedget_scene_info
    • First observedget_simulation_state
    • First observedimport_urdf
    • First observedlist_available_robots
    • First observedlist_environments
    • First observedlist_prims
    • First observedload_environment
    • First observedload_usd
    • First observedmodify_light
    • First observedpause_simulation
    • First observedplay_simulation
    • First observedrefresh_robot_library
    • First observedreload_script
    • First observedsearch_usd
    • First observedset_joint_positions
    • First observedset_physics_params
    • First observedstep_simulation
    • First observedstop_simulation
    • First observedtransform_object

TDQS

A3.7/5.0

Scored across 42 tools

Disambiguation5/5

Every tool targets a distinct asset, operation, or domain (simulation control, scene creation, sensors, materials, action graphs, diagnostics). Even superficially similar tools like get_physics_state, get_joint_config, and get_robot_info are clearly separated by their descriptions and use cases. No two tools appear to do the same thing.

Naming Consistency5/5

All 42 tools follow a consistent verb_noun snake_case pattern: play_simulation, create_object, get_robot_info, list_environments, delete_object, etc. Verbs are clear and predictable ('create', 'get', 'list', 'set', 'load', 'delete'), with no mixed conventions or vague names like 'process' or 'do_thing'.

Tool Count2/5

42 tools far exceeds the 3-15 well-scoped range and even the 25+ threshold classified as 'too many'. While the broad simulation domain justifies some breadth, this surface is heavy and could overwhelm an agent with selection overhead. It sits between borderline and extreme, so a 2 is appropriate.

Completeness4/5

The tool set covers the full lifecycle for core entities: objects (create, read, transform, delete), robots (create, inspect, command, configure), environments (load, list, clear), materials (create, apply), lights (create, modify), sensors (create, capture, read), and simulation control. A minor gap is lack of direct joint velocity reads, but execute_script and step_simulation observations partially fill it, so no dead ends.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables 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.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    8
    Apache 2.0
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    1
    1
    MIT