Unity MCP Server
Provides tools for interacting with the Unity Editor, including managing GameObjects, scenes, assets, menus, play mode, console logs, and tests, as well as searching Unity documentation and local assets via RAG.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Unity MCP ServerCreate a new scene and add a Cube"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Unity MCP Server
A unified Model Context Protocol (MCP) server that combines Unity Editor integration, Unity knowledge base search, and comprehensive XREAL One Pro mixed reality development capabilities for AI assistants.
Features
Core Unity Editor Integration (22 Tools)
Tool | Description |
| Execute Unity menu items by path |
| Select GameObjects in the editor |
| Get detailed GameObject information |
| Update or create GameObjects |
| Delete GameObjects from the scene |
| Duplicate GameObjects |
| Search for GameObjects by name/tag/layer/component |
| Add or modify components on GameObjects |
| Instantiate prefabs/assets in the scene |
| Create prefabs from GameObjects |
| Create new scenes |
| Delete scenes |
| Load scenes (single or additive) |
| Add packages via Package Manager |
| Move, copy, rename, delete assets |
| Run Unity Test Runner tests |
| Send messages to Unity console |
| Retrieve Unity console logs |
| Force script recompilation |
| Control play mode (enter/exit/pause/step) |
| Get/set editor selection |
| Search Unity API docs via RAG |
Related MCP server: MCP Unity Editor
XREAL Mixed Reality Tools (32 Tools)
Project Setup (4 Tools)
Tool | Description |
| Configure Unity project for XREAL One Pro (NRSDK, XR Plugin Management) |
| Android build settings optimized for Samsung S24 + XREAL |
| Import NRSDK package from local file or URL |
| Validate project configuration and fix issues |
Device Control (4 Tools)
Tool | Description |
| Query connected device status, tracking state, battery |
| Switch between 0DoF, 3DoF, and 6DoF tracking |
| Trigger IPD, brightness, and tracking calibration |
| Capture RGB camera frame for CV/AR development |
Hand Tracking (4 Tools)
Tool | Description |
| Enable/configure hand tracking with gesture recognition |
| Query hand pose, joint positions, detected gestures |
| Configure gesture detection (pinch, grab, point, etc.) |
| Add hand interaction to GameObjects (grab, poke, hover) |
Spatial Mapping (5 Tools)
Tool | Description |
| Detect horizontal/vertical planes (floors, walls, tables) |
| Query all detected planes with poses and classifications |
| Create persistent spatial anchors in the real world |
| Load, save, delete, query spatial anchors |
| Generate spatial mesh for physics and occlusion |
Image Tracking (3 Tools)
Tool | Description |
| Register images for marker-based AR tracking |
| Set tracking quality, simultaneous image count |
| Query currently detected and tracked images |
Mixed Reality (3 Tools)
Tool | Description |
| Enable camera passthrough with blend settings |
| Switch between VR, AR, and MR rendering modes |
| Set up depth-based real-world occlusion |
Build & Deploy (2 Tools)
Tool | Description |
| Build optimized APK for XREAL devices |
| List ADB-connected Android devices |
XR Interaction Toolkit (4 Tools)
Tool | Description |
| Configure XR Interaction Toolkit for XREAL |
| Create XREAL-configured XR Origin camera rig |
| Add ray/direct/poke interactors to controllers |
| Create world-space UI optimized for XR |
Performance & Debug (3 Tools)
Tool | Description |
| Real-time FPS, GPU, CPU, thermals, memory |
| Analyze scene for XR performance issues |
| Capture mono/stereo XR viewport screenshots |
Resources
Core Unity Resources (7)
Resource | URI | Description |
Scene Hierarchy |
| All GameObjects in loaded scenes |
GameObject |
| Detailed GameObject info |
Menu Items |
| Available Unity menu items |
Console Logs |
| Console logs with filtering |
Packages |
| Package Manager packages |
Assets |
| Asset Database contents |
Tests |
| Test Runner tests |
XREAL Resources (6)
Resource | URI | Description |
Device State |
| Connection status, tracking quality, thermals |
Hand Tracking |
| Real-time hand joint positions and gestures |
Spatial Anchors |
| All spatial anchors in scene |
Detected Planes |
| Environment surfaces with classifications |
Tracked Images |
| Currently tracked image markers |
Build Settings |
| Android/XREAL build configuration |
Prompts
Core Unity Prompts (1)
Prompt | Description |
| Workflow guidance for GameObject manipulation |
XREAL Prompts (4)
Prompt | Description |
| Step-by-step guide for new XREAL projects |
| Best practices for hand tracking UX |
| Creating persistent MR experiences |
| Mobile XR performance optimization |
Installation
npm install
npm run buildConfiguration
Claude Code (Project-Level)
Create .mcp.json in your project:
{
"mcpServers": {
"unity-mcp": {
"command": "node",
"args": ["C:/path/to/unity-mcp/build/index.js"],
"env": {
"UNITY_PORT": "8090",
"UNITY_HOST": "localhost",
"LOGGING": "true"
}
}
}
}Claude Desktop
Add to %APPDATA%/Claude/claude_desktop_config.json:
{
"mcpServers": {
"unity-mcp": {
"command": "node",
"args": ["C:/path/to/unity-mcp/build/index.js"],
"env": {
"UNITY_PORT": "8090"
}
}
}
}With RAG Knowledge Search
{
"mcpServers": {
"unity-mcp": {
"command": "node",
"args": ["path/to/unity-mcp/build/index.js"],
"env": {
"UNITY_PORT": "8090",
"RAG_PYTHON_PATH": "python",
"RAG_SERVER_PATH": "path/to/unity-rag-server",
"RAG_DB_PATH": "path/to/unity-rag-server/data"
}
}
}
}Environment Variables
Variable | Description | Default |
| Unity WebSocket server port |
|
| Unity WebSocket server host |
|
| Enable console logging |
|
| Enable file logging |
|
| Path to Python executable | - |
| Path to RAG server directory | - |
| Path to RAG database | - |
Quick Start: XREAL Development
1. Setup New XREAL Project
Use prompt: xreal_project_setup
Parameters: { projectType: "MR", targetDevice: "XREALOnePro" }This will guide you through:
Project configuration
NRSDK import
Android build settings
XR rig creation
Hand tracking setup
2. Create Hand-Interactive Object
Tool: create_hand_interactable
Parameters: {
targetGameObject: "MyCube",
interactionType: "Grab",
highlightOnHover: true,
hapticFeedback: true
}3. Add Spatial Anchor
Tool: create_spatial_anchor
Parameters: {
anchorName: "my_anchor",
position: { x: 0, y: 1, z: 2 },
persistent: true
}4. Build and Deploy
Tool: build_xreal_apk
Parameters: {
buildType: "Development",
developmentBuild: true
}Architecture
+-------------------+ STDIO +-------------------+
| AI Assistant | <-----------> | Unity MCP |
| (Claude Code) | | Server (Node) |
+-------------------+ +--------+----------+
|
WebSocket (8090) |
v
+--------+----------+
| Unity Editor |
| + NRSDK |
+--------+----------+
|
USB/WiFi |
v
+--------+----------+
| Samsung S24 |
| + XREAL One Pro |
+-------------------+Development
# Build
npm run build
# Watch mode
npm run watch
# Run with MCP Inspector
npm run inspector
# Start
npm startFile Structure
unity-mcp/
├── src/
│ ├── index.ts # Server entry point
│ ├── unity/
│ │ └── mcpUnity.ts # Unity WebSocket bridge
│ ├── tools/
│ │ ├── *.ts # Core Unity tools (22)
│ │ └── xreal/ # XREAL tools (32)
│ │ ├── setupXrealProjectTool.ts
│ │ ├── enableHandTrackingTool.ts
│ │ ├── createSpatialAnchorTool.ts
│ │ └── ...
│ ├── resources/
│ │ ├── *.ts # Core Unity resources (7)
│ │ └── xreal/ # XREAL resources (6)
│ │ ├── getDeviceStateResource.ts
│ │ ├── getHandTrackingResource.ts
│ │ └── ...
│ ├── prompts/
│ │ ├── gameobjectHandlingPrompt.ts
│ │ └── xreal/ # XREAL prompts (4)
│ │ ├── xrealProjectSetupPrompt.ts
│ │ ├── handInteractionPrompt.ts
│ │ └── ...
│ └── utils/
│ ├── logger.ts
│ └── errors.ts # Includes XREAL error types
├── build/ # Compiled JavaScript
├── .mcp.json # MCP server configuration
└── package.jsonUnity Side Requirements
The MCP server sends JSON-RPC messages to Unity. You need a Unity C# plugin that:
Listens on WebSocket port 8090
Handles incoming tool/resource requests
Interfaces with NRSDK for XREAL features
Returns JSON responses with
{ success: true/false, ... }
Summary
Category | Count |
Core Unity Tools | 22 |
XREAL Tools | 32 |
Total Tools | 54 |
Core Resources | 7 |
XREAL Resources | 6 |
Total Resources | 13 |
Prompts | 5 |
License
MIT
Available Tools
84 toolsadd_asset_to_sceneA
Adds an asset from the AssetDatabase to the Unity scene
| Name | Required | Description | Default |
|---|---|---|---|
| guid | No | The GUID of the asset | |
| parentId | No | The instance ID of the parent GameObject | |
| position | No | Position in the scene (defaults to Vector3.zero) | |
| assetPath | No | The path of the asset in the AssetDatabase | |
| parentPath | No | The path of the parent GameObject in the hierarchy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation, and the description 'Adds' aligns. However, it omits details like side effects, failure conditions, or behavioral constraints beyond the bare action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with 10 words, front-loaded and efficient, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters and no output schema, the description covers the core function but misses context on parameter relationships (e.g., guid vs assetPath) and return behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Adds an asset from the AssetDatabase to the Unity scene' provides a specific verb, resource, and destination, clearly differentiating it from sibling tools like load_scene or manage_asset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., create_prefab, prefab) or prerequisites (e.g., asset must exist in AssetDatabase).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_external_dllA
Downloads a raw DLL (or any binary asset) from a URL and installs it under the Unity project's Assets//. Use this for native plugins, NuGet DLLs, and CDN-hosted libraries that aren't published as Unity packages — e.g. zxing.unity.dll, Newtonsoft.Json.dll, custom .so/.aar bundles. The Node MCP server downloads the URL to a temp file and asks the Unity Editor to copy it into the Assets tree and refresh the AssetDatabase. Use add_package (source=github) for git-hosted UPM packages instead.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Direct download URL for the DLL or binary asset. | |
| fileName | No | File name to save as (including extension). Defaults to the last segment of the URL. | |
| overwrite | No | Overwrite an existing file at the destination. Default true. | |
| destinationFolder | Yes | Folder under Assets/ to place the file in. Will be created if missing. Example: "Plugins/ZXing". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond annotations: it explains the download-then-copy process ('The Node MCP server downloads the URL to a temp file and asks the Unity Editor to copy it into the Assets tree and refresh the AssetDatabase'). Annotations already mark it as non-readOnly and non-destructive, so the description provides useful procedural detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (4 sentences) and front-loaded: first sentence states purpose, second gives use cases, third explains process, fourth contrasts with sibling. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description still covers essential behavior: where file goes, how it's handled, and the overwrite flag. It mentions AssetDatabase refresh. Could briefly address error handling (e.g., URL failure) but overall sufficient for a simple file operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for all 4 parameters. The description adds value for 'fileName' by explaining it defaults to the last URL segment, but for other parameters it largely repeats schema info (e.g., 'overwrite' description is same). Baseline 3 is appropriate since schema already does heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads a raw DLL or binary asset from a URL and installs it under Assets/<destinationFolder>/<fileName>. It specifies the verb (downloads/installs) and resource (DLL/binary asset), and distinguishes it from sibling tools like add_package by mentioning it is for assets not published as Unity packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when to use this tool: for native plugins, NuGet DLLs, CDN-hosted libraries. It also gives examples (zxing.unity.dll, Newtonsoft.Json.dll) and tells when NOT to use it by suggesting add_package for git-hosted UPM packages.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_packageA
Adds packages into the Unity Package Manager
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | The path to use (folder path for disk method or subfolder for GitHub) | |
| branch | No | The branch to use for GitHub packages (optional) | |
| source | Yes | The source to use (registry, github, or disk) to add the package | |
| version | No | The version to use for registry packages (optional) | |
| packageName | No | The package name to add from Unity registry (e.g. com.unity.textmeshpro) | |
| repositoryUrl | No | The GitHub repository URL (e.g. https://github.com/username/repo.git) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already indicate readOnlyHint=false (write operation) and openWorldHint=true (potential side effects). The description adds no further behavioral context, such as error conditions or side effects, but does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that efficiently conveys the tool's purpose without unnecessary words. It is front-loaded and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the schema fully describes parameters, the description lacks an overview of behavior (e.g., different source types, requirements). Minimal but functional given sibling context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with all parameters documented. The description does not elaborate on parameters, but baseline is 3 given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Adds') and resource ('packages into the Unity Package Manager'), clearly distinguishing it from sibling tools like 'add_asset_to_scene' or 'add_external_dll'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, nor are any conditions or prerequisites mentioned. The description simply states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_tracking_imageB
Adds an image to the image tracking database. The system will detect and track this image in the camera feed, returning its pose in 3D space.
| Name | Required | Description | Default |
|---|---|---|---|
| imageName | Yes | Unique name for this tracking image | |
| imagePath | Yes | Path to the image file (PNG or JPG) in the Assets folder | |
| movingImage | No | Whether the image may move (enables continuous tracking) | |
| physicalWidth | Yes | Physical width of the image in meters (required for accurate tracking) | |
| physicalHeight | No | Physical height of the image in meters (calculated from aspect ratio if not provided) | |
| enableAtRuntime | No | Whether to track this image immediately | |
| trackingQuality | No | Tracking quality vs performance trade-off | Medium |
| maxTrackingDistance | No | Maximum distance in meters for detection |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, confirming mutation. The description adds that the system will 'detect and track this image' and 'return its pose in 3D space,' but does not disclose potential side effects (e.g., image already exists, database modifications) or permissions needed. Minimal additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and contains no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 8 parameters and no output schema, yet the description ambiguously mentions 'returning its pose in 3D space'—likely referring to tracking later, not the add operation. Missing details on return value, prerequisites (image in Assets folder), and error conditions. Incomplete for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptive parameter descriptions. The tool description provides overall context but does not add specific meaning beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the action 'adds an image to the image tracking database' and explains the resulting behavior (detection and tracking). This clearly distinguishes it from sibling tools like 'configure_image_tracking' (settings) and 'get_tracked_images' (query).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to add new tracking images but provides no explicit guidance on when to use it versus alternatives, nor any exclusions or prerequisites. Usage is inferred rather than directly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_xr_interactorA
Adds XR interaction components to a GameObject. Interactors enable selection and manipulation of XR Interactables via ray casting or direct touch.
| Name | Required | Description | Default |
|---|---|---|---|
| hand | No | Which hand this interactor is associated with | None |
| lineType | No | Ray visual line type | Straight |
| rayWidth | No | Ray visual width in meters | |
| rayLength | No | Ray interactor max length in meters | |
| enableHaptics | No | Enable haptic feedback | |
| rayValidColor | No | Ray color when hovering valid target (hex) | #00FF00 |
| interactorType | Yes | Type of interactor to add | |
| attachTransform | No | Create attach point transform for grabbed objects | |
| rayInvalidColor | No | Ray color when hovering invalid target (hex) | #FF0000 |
| targetGameObject | Yes | Instance ID, name, or path of the GameObject to add interactor to | |
| selectActionTrigger | No | How select action triggers | StateChange |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false), and the description's verb 'Adds' aligns with that. The description adds behavioral context about the interactors' capabilities (ray casting/direct touch) but does not disclose side effects like potential game object modifications or dependencies on XR setup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, with the action front-loaded in the first sentence and purpose added in the second. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 params, 4 enum types) and the lack of an output schema, the description provides basic high-level context but lacks details on expected behavior, constraints, or how it fits with sibling tools. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 11 parameters have descriptions in the schema (100% coverage), so the description adds no extra parameter-level context. The baseline is 3, and the description does not enhance understanding of parameter usage beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Adds XR interaction components to a GameObject') and differentiates from sibling tools like 'setup_xr_interaction' by specifying component-level addition rather than system setup. It also provides context on what interactors enable (selection/manipulation), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives, nor does it specify prerequisites or exclusions. The mention of 'via ray casting or direct touch' gives limited context but no comparative decision framework.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
animationB
Controls Unity Animation and Timeline systems. Actions:
play: Play animation on a GameObject
stop: Stop animation
pause: Pause animation
sample: Sample animation at specific time
get_clips: List animation clips on an Animator
get_parameters: Get Animator parameters
set_parameter: Set an Animator parameter (float, int, bool, trigger)
get_state_info: Get current Animator state info
crossfade: Crossfade to an animation state
get_timeline_state: Get Timeline playback state
set_timeline_time: Set Timeline playback position
play_timeline: Control Timeline playback
record_animation: Start/stop animation recording
create_clip: Create a new animation clip
| Name | Required | Description | Default |
|---|---|---|---|
| speed | No | Animation playback speed | |
| action | Yes | Animation action to perform | |
| clipName | No | Name of the animation clip | |
| objectId | No | Instance ID of the GameObject | |
| wrapMode | No | Animation wrap mode | |
| stateName | No | Name of the Animator state | |
| layerIndex | No | Animator layer index (default: 0) | |
| objectPath | No | Hierarchy path of the GameObject | |
| newClipPath | No | Path for new animation clip | |
| timelineTime | No | Time position for Timeline | |
| parameterName | No | Name of the Animator parameter | |
| parameterType | No | Type of the Animator parameter | |
| normalizedTime | No | Normalized time (0-1) for sampling or crossfade | |
| parameterValue | No | Value to set for the parameter | |
| timelineAction | No | Timeline playback action | |
| recordingAction | No | Animation recording action | |
| transitionDuration | No | Duration of crossfade transition in seconds |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, requiring the description to disclose behavioral traits. The list of actions is provided but without details on side effects, prerequisites, or return values. The description does not explain what each action does beyond its name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a bullet list, but it is dense and not well-structured for quick agent parsing. It could be more efficient by grouping related information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (17 parameters, multiple actions, no output schema), the description is incomplete. It does not explain which parameters are required for each action or provide usage examples, leaving the agent with insufficient context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the base rating is 3. The description adds the list of actions but does not map parameters to specific actions or provide additional meaning beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it controls Unity Animation and Timeline systems and lists the actions, which differentiates it from sibling tools focused on other domains like lighting or physics. However, it could be more specific about the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for animation/timeline tasks but lacks explicit guidance on when to use this tool versus alternatives or when not to use it. There are no exclusion criteria or context for action selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asset_importA
Manages Unity asset import settings and reimport operations. Actions:
get_settings: Get import settings for an asset
set_settings: Modify import settings
reimport: Force reimport an asset
reimport_all: Reimport all assets (use with caution)
get_importer_type: Get the importer type for an asset
apply_preset: Apply an import preset to an asset Types: texture, model, audio, video, font, shader, plugin
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Asset import action to perform | |
| platform | No | Platform-specific settings to get/set | |
| assetPath | No | Path to the asset (e.g., "Assets/Textures/myTexture.png") | |
| assetType | No | Type of asset for settings schema (auto-detected if not specified) | |
| presetPath | No | Path to import preset to apply | |
| audioSettings | No | Audio clip import settings | |
| modelSettings | No | Model (FBX/OBJ) import settings | |
| textureSettings | No | Texture import settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, implying modification. The description adds a caution for 'reimport_all' but does not disclose other behavioral traits like side effects, authorization needs, or error handling. It provides minimal additional value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. It uses bullet points effectively to enumerate actions and types, with no redundant or verbose content. Every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects, no output schema), the description covers the scope well but lacks return value descriptions and error conditions. The detailed parameter schemas compensate partially, but completeness is average.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents all parameters. The description adds value by grouping actions and asset types, providing context for the 'action' enum and 'assetType' parameter. This aids understanding beyond raw parameter definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages Unity asset import settings and reimport operations, listing specific actions and asset types. It distinguishes itself from sibling tools by focusing solely on import-related tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists actions but does not provide explicit guidance on when to use this tool versus alternatives or how to choose among actions. Usage is implied from the action names, but no exclusion criteria or context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
asset_storeA
Manages Unity Asset Store assets and Package Manager integration.
Actions:
list_my_assets: List all purchased/acquired assets from your Asset Store account
search_my_assets: Search your purchased assets by name
get_asset_details: Get details about a specific asset
download_asset: Download an asset to the local cache
import_asset: Import a downloaded asset into the project
download_and_import: Download and import in one step
get_download_progress: Check download progress
cancel_download: Cancel an ongoing download
list_cached_assets: List assets already downloaded to local cache
clear_cache: Clear the asset cache
refresh_my_assets: Refresh the list of purchased assets from server
search_store: Search the public Unity Asset Store catalog (no auth required)
Note: Most actions require Unity 2020.1+ and being logged into Unity Hub/Editor. search_store and list_cached_assets work without authentication. Assets must be purchased through the Asset Store website before downloading.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number for pagination | |
| action | Yes | Asset Store action to perform | |
| sortBy | No | Sort order for search_store results (default: relevance) | |
| assetId | No | Asset Store asset ID or package ID | |
| category | No | Filter by category | |
| pageSize | No | Results per page (default: 50) | |
| assetName | No | Asset name for searching | |
| free_only | No | Only return free assets in search_store results | |
| searchQuery | No | Search query for filtering assets | |
| importOptions | No | Options for importing assets |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that most actions are mutating (readOnlyHint=false) and mentions requirements and constraints. It aligns with annotations (readOnlyHint=false, openWorldHint=true) and adds context about caching and server interactions, though specific side effects per action are not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear summary, but the full list of all 12 actions repeats information from the schema enum. This makes it longer than necessary while still being organized. A more concise listing or referencing the schema would improve structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (10 parameters, multiple sub-actions, no output schema), the description covers overall purpose, prerequisite conditions, and which actions work without authentication. It lacks details on return values per action but provides sufficient context for an AI agent to understand the tool's capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal insight beyond parameter names; the note about Unity version and authentication is valuable but not linked directly to parameters. The nested importOptions object is only briefly described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages Unity Asset Store assets and Package Manager integration, with a specific verb and resource. It distinguishes from siblings like 'manage_asset' by focusing on the Asset Store, and the listed actions reinforce the scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit prerequisites (Unity 2020.1+, logged into Hub/Editor) and notes which actions need authentication and that assets must be purchased before downloading. It doesn't explicitly mention when not to use or alternatives, but the guidance is clear and helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audio_mixerB
Manage Unity AudioMixers and AudioSources. Actions:
list: List all AudioMixer assets in the project
get_groups: Get mixer groups (channels)
get_snapshots: Get mixer snapshots
set_float: Set an exposed parameter value
get_float: Get an exposed parameter value
transition_snapshot: Transition to a named snapshot over duration
get_exposed_parameters: List all exposed parameters with current values
get_audio_sources: List all AudioSource components in the scene
| Name | Required | Description | Default |
|---|---|---|---|
| value | No | Float value to set | |
| action | Yes | AudioMixer action to perform | |
| duration | No | Transition duration in seconds (default: 1) | |
| mixerName | No | Name of the AudioMixer to find | |
| mixerPath | No | Asset path to the AudioMixer | |
| snapshotName | No | Name of the snapshot to transition to | |
| parameterName | No | Name of the exposed parameter |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only show readOnlyHint=false, so description must disclose behavior. It lists actions but does not explain side effects, persistence, or error handling. Minimal behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise: one-line purpose followed by bullet list of actions. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite actions listing, the description lacks context on prerequisites, output expectations, or how actions chain. Complexity is moderate (7 params, 8 actions) and description is too sparse.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The description adds a list of actions but doesn't clarify which parameters correspond to each action. Baseline 3, no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages AudioMixers and AudioSources and lists 8 specific actions. It distinguishes from sibling tools which are unrelated to audio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs alternatives. The action list implies use for audio mixer operations, but no exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_pipelineC
Comprehensive Unity build pipeline control. Actions:
build: Execute a build with specified settings
get_settings: Get current build settings
set_settings: Modify build settings
get_scenes: Get scenes in build settings
set_scenes: Set scenes in build settings
get_report: Get last build report (sizes, errors, warnings)
get_player_settings: Get platform-specific player settings
set_player_settings: Modify player settings
switch_platform: Switch active build target
get_platforms: List available build platforms
validate: Validate build configuration without building
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Build pipeline action to perform | |
| scenes | No | Scenes for build settings | |
| platform | No | Target build platform | |
| buildPath | No | Output path for the build | |
| buildOptions | No | Build options | |
| reportFilter | No | Filter for build report | |
| playerSettings | No | Player settings to modify |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and openWorldHint=true, but the description does not disclose potential long-running operations, file size implications, or permissions needed. It merely lists actions without behavioral warnings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a front-loaded purpose and a bulleted list of actions. It could be more structured (e.g., grouping actions), but it is efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (many actions, nested objects, no output schema), the description is incomplete. It does not explain return values or side effects for actions like 'build', 'get_report', or 'validate', leaving the agent with gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions (100% coverage). The description does not add value beyond the schema, lacking context on defaults or inter-parameter relationships, but the schema is sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Comprehensive Unity build pipeline control' and lists multiple actions, making the tool's purpose clear. However, the tool name is a noun rather than a verb, and it doesn't differentiate from sibling build tools like build_xreal_apk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor when to use specific actions. For a multi-action tool, such guidance is critical but absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_xreal_apkA
Queues an asynchronous Android APK build for XREAL One Pro and returns immediately with a jobId. Unity's BuildPipeline.BuildPlayer blocks the editor for minutes; this tool dispatches the build via EditorApplication.delayCall so the MCP request doesn't time out. Poll get_build_status with the returned jobId to follow progress and pick up the final BuildReport summary (output path, size, build time, errors, warnings).
| Name | Required | Description | Default |
|---|---|---|---|
| scenes | No | Scene paths to include (defaults to scenes in build settings) | |
| buildType | No | Build configuration type | Development |
| outputPath | No | Output path for the APK. Defaults to Builds/AppName.apk | |
| strictMode | No | Enable strict mode for debugging | |
| runAfterBuild | No | Automatically deploy and run after successful build | |
| buildAppBundle | No | Build Android App Bundle (AAB) instead of APK | |
| scriptDebugging | No | Enable script debugging | |
| developmentBuild | No | Include development features (profiler, debug logs) | |
| compressionMethod | No | APK compression method | LZ4 |
| autoconnectProfiler | No | Auto-connect Unity profiler on start | |
| deepProfilingSupport | No | Enable deep profiling (slower builds) | |
| splitApplicationBinary | No | Split into base APK and expansion files |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes async dispatch via EditorApplication.delayCall to avoid timeout. Annotations indicate non-readOnly and open world (side effects), which align with starting a build. No contradictions, and description adds useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences efficiently convey purpose, rationale for async, and next steps. No redundant information. Excellent structure for agent consumption.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main workflow: request returns jobId, then poll. With 12 parameters and no output schema, additional details like error handling or prerequisites would improve completeness, but core behavior is well explained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions, so baseline is 3. Description does not add parameter-specific meaning beyond what schema provides, but that is acceptable given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool queues an asynchronous Android APK build for XREAL One Pro and returns a jobId immediately. Distinguishes from sibling 'get_build_status' by mentioning polling. The verb 'build' and resource 'APK for XREAL One Pro' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains why async is needed (Unity blocks) and instructs to poll 'get_build_status' with jobId. Does not explicitly mention when not to use or alternatives like 'build_pipeline', but the guidance is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calibrate_glassesB
Triggers calibration procedures for XREAL glasses including IPD (interpupillary distance) adjustment, display brightness, and tracking recalibration.
| Name | Required | Description | Default |
|---|---|---|---|
| ipdValue | No | Manual IPD value in millimeters (typical range 50-80mm). If not provided, uses automatic calibration. | |
| recenterPose | No | Reset the current pose as the new origin | |
| brightnessLevel | No | Display brightness percentage (0-100) | |
| calibrationType | Yes | Type of calibration to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint=false) and open-world effects (openWorldHint=true). The description adds no additional behavioral context, such as side effects, required device state, or result feedback.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that efficiently communicates the tool's function. No superfluous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite rich schema and annotations, the description lacks completeness. It does not explain return behavior (no output schema), failure modes, or expected outcomes, which is important for a mutation tool affecting device settings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents parameters. The description lists three calibration types but does not add new insights beyond what the schema provides (e.g., parameter interactions or default behaviors). Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool triggers calibration procedures for XREAL glasses, specifying three types (IPD, brightness, tracking). It uses a specific verb-resource combination and is distinct from sibling tools like 'set_tracking_mode' which are not calibration-focused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives. It does not mention prerequisites, when not to use, or differentiate from related tools like 'set_tracking_mode' or 'configure_hand_gestures'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_xr_screenshotARead-only
Captures a screenshot from the XR camera perspective. Can capture mono, stereo (side-by-side), or individual eye views. Useful for documentation and debugging.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Image format | PNG |
| fileName | No | Custom file name. Defaults to timestamp-based name | |
| includeUI | No | Include UI elements in screenshot | |
| jpgQuality | No | JPEG quality (if format is JPG) | |
| outputPath | No | Path to save the screenshot. Defaults to Assets/Screenshots/ | |
| resolution | No | Screenshot resolution | Native |
| captureMode | No | Eye view(s) to capture | Mono |
| customWidth | No | Custom width in pixels (if resolution is Custom) | |
| customHeight | No | Custom height in pixels (if resolution is Custom) | |
| superSampling | No | Super sampling multiplier for higher quality | |
| transparentBackground | No | Use transparent background (PNG only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description aligns by describing a capture operation without implying state modification. The description adds context about the type of captures (mono, stereo, etc.) beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with key information front-loaded. No unnecessary words or redundancies.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters and no output schema, the description covers the core purpose and modes. It could briefly mention file saving behavior (outputPath), but schema descriptions handle details sufficiently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description mentions capture modes (mono, stereo, etc.) which are already enumerated in the schema's captureMode parameter, adding no new meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool captures a screenshot from XR camera perspective, specifying mono, stereo, or individual eye views. This distinguishes it from sibling tools like get_camera_frame, which likely returns raw frame data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description mentions usefulness for documentation and debugging, implying appropriate use cases. However, it does not explicitly state when to use this tool versus alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_android_buildA
Configures Android build settings optimized for XREAL One Pro on Samsung S24. Sets up ARM64 architecture, IL2CPP scripting backend, minimum API level, and other required settings for mobile XR.
| Name | Required | Description | Default |
|---|---|---|---|
| gpuSkinning | No | Enable GPU skinning | |
| graphicsApis | No | Graphics APIs to use (OpenGLES3 recommended for XREAL) | |
| architectures | No | Target CPU architectures | |
| minSdkVersion | No | Minimum Android SDK version (default 29 for XREAL compatibility) | |
| internetAccess | No | Internet access requirement | Auto |
| staticBatching | No | Enable static batching | |
| dynamicBatching | No | Enable dynamic batching | |
| installLocation | No | APK install location preference | Auto |
| writePermission | No | Write access permission for storage | External |
| optimizeMeshData | No | Strip unused mesh data | |
| scriptingBackend | No | Scripting backend (IL2CPP recommended for release) | IL2CPP |
| targetSdkVersion | No | Target Android SDK version | |
| multithreadedRendering | No | Enable multithreaded rendering |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, and the description clearly states it configures settings, implying mutation. The description adds context about optimization for specific hardware but doesn't detail side effects or permissions. Still, it is fairly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. First sentence states purpose and target device, second lists key settings. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters with full schema coverage and no output schema, the description adequately covers the tool's purpose and key behaviors. It could mention that the tool sets recommended defaults customizable by parameters, but it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description highlights key parameters (ARM64 architecture, IL2CPP, minimum API level) but does not add significant meaning beyond what the schema already provides for all 13 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool configures Android build settings optimized for a specific device (XREAL One Pro on Samsung S24) and lists key settings (ARM64, IL2CPP, minimum API), clearly distinguishing it from sibling tools like 'build_pipeline' or 'build_xreal_apk'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for XREAL One Pro on Samsung S24 but does not explicitly state when not to use this tool or provide alternatives among siblings like 'setup_xreal_project' or 'build_pipeline'. Guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_hand_gesturesA
Configures which hand gestures are recognized and their sensitivity. Gestures include pinch, grab, point, open palm, thumbs up, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| grabThreshold | No | Grab detection threshold (0-1) | |
| continuousMode | No | Fire gesture events continuously while gesture is held | |
| pinchThreshold | No | Pinch detection threshold (0-1) | |
| enabledGestures | No | List of gestures to recognize | |
| gestureHoldTime | No | Time in seconds a gesture must be held before triggering | |
| smoothingFactor | No | Gesture detection smoothing (0=none, 1=max) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a write operation (readOnlyHint=false), consistent with 'configures'. The description adds no further behavioral traits beyond what annotations provide, such as side effects or persistence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, but could be slightly more structured to include key capabilities. It is front-loaded and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so the description should hint at return behavior or side effects. It lacks mention of prerequisites like hand tracking being enabled. Incomplete for a configuration tool with 6 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented in the schema. The description provides a high-level summary but adds minimal meaning beyond the existing parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures recognized hand gestures and sensitivity, listing examples like pinch, grab, point. It distinguishes from sibling tools like enable_hand_tracking and get_hand_state.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives or prerequisites (e.g., hand tracking must be enabled). The description implies configuration use but lacks context for proper selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_image_trackingC
Configures image tracking settings including how many images can be tracked simultaneously, tracking quality, and update frequency.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | Enable or disable image tracking | |
| autoFocus | No | Enable camera auto-focus for better detection | |
| trackingMode | No | Static: images don't move. Dynamic: continuous tracking of moving images | Dynamic |
| lightEstimation | No | Enable light estimation from tracked images | |
| maxSimultaneousImages | No | Maximum images to track at once | |
| requestedTrackingMode | No | Performance vs accuracy trade-off | Default |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool has readOnlyHint=false (mutation) and the description says 'configures', which implies changes. However, it does not disclose side effects like whether changes reset existing tracking, require the system to be running, or are persistent. The description adds minimal behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb. It avoids unnecessary details and is easy to parse, though it could be slightly more specific about the tool's domain.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-parameter configuration tool with no output schema, the description is sparse. It does not explain return behavior, error states, or whether settings are applied immediately. More context about the AR image tracking domain and configuration lifecycle would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains each parameter. The description only provides a high-level summary without adding new meaning, thus baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures image tracking settings and lists example parameters (how many images, quality, update frequency). This distinguishes it from sibling tools like 'add_tracking_image' or 'get_tracked_images', but does not explicitly contrast with other 'configure_*' tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as when to adjust tracking parameters instead of adding images. The description lacks context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_occlusionC
Configures depth-based occlusion settings. Occlusion allows real-world objects to properly hide virtual objects that are behind them, creating realistic mixed reality.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | Enable or disable depth occlusion | |
| depthMode | No | Depth estimation quality vs performance | Medium |
| smoothEdges | No | Apply edge smoothing to occlusion boundaries | |
| handOcclusion | No | Enable occlusion by tracked hands | |
| occlusionType | No | Type of occlusion to use | EnvironmentDepth |
| occlusionLayers | No | Specific layers that participate in occlusion | |
| temporalFiltering | No | Apply temporal filtering to reduce flickering | |
| humanBodyOcclusion | No | Enable human body segmentation for person occlusion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, and the description confirms it configures settings, but it does not disclose behavioral details such as whether changes take effect immediately, require a scene reload, or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core action, and no unnecessary words. Slightly more detail could be included without breaking conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 8 parameters, no output schema, and minimal annotations, the description is too brief. It does not explain how settings interact, return values, or side effects, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% parameter description coverage, so the tool description does not add further meaning. Baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it configures depth-based occlusion settings and explains the purpose of occlusion in mixed reality. However, it does not differentiate from sibling tools like configure_passthrough, which might have overlapping functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, or any prerequisites. It simply states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_passthroughA
Configures the camera passthrough for mixed reality mode. Passthrough shows the real world through the glasses with virtual content overlaid.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | Enable or disable passthrough | |
| contrast | No | Passthrough contrast adjustment | |
| blendMode | No | How virtual content blends with passthrough | AlphaBlend |
| brightness | No | Passthrough brightness multiplier | |
| saturation | No | Passthrough color saturation | |
| edgeRendering | No | Enable edge detection rendering for stylized look | |
| colorCorrection | No | Enable automatic color correction | |
| environmentDepth | No | Use environment depth for proper occlusion |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate write operation (readOnlyHint=false). Description adds context about passthrough concept but doesn't disclose behavioral details like immediate effect, side effects, or limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core purpose, no wasted words. Efficiently communicates the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, schema covers them all, and annotations provide readOnlyHint. Description explains the concept sufficiently. No output schema but not critical. Slightly lacking in operational context (e.g., persistence of settings).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides 100% coverage with descriptions for all 8 parameters. Description adds no parameter-specific meaning, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool configures camera passthrough for mixed reality, and explains what passthrough does (shows real world with virtual overlays). This distinguishes it from siblings like 'configure_occlusion' which handles a different aspect.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'configure_occlusion' or other configuration tools. Doesn't mention prerequisites or scenarios where passthrough should not be altered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_hand_interactableA
Adds hand interaction components to a GameObject, making it respond to hand gestures like pinch-to-grab, poke, or hover. Sets up the necessary colliders and interaction scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| grabType | No | How the object moves when grabbed | Kinematic |
| pokeDepth | No | Depth required for poke interaction (meters) | |
| hoverDistance | No | Distance at which hover detection activates (meters) | |
| twoHandedGrab | No | Allow grabbing with both hands simultaneously | |
| hapticFeedback | No | Enable haptic feedback on interaction (if supported) | |
| highlightColor | No | Highlight color in hex format | #FFD700 |
| throwOnRelease | No | Apply velocity when releasing grabbed object | |
| interactionType | Yes | Type of hand interaction to enable | |
| throwMultiplier | No | Velocity multiplier for thrown objects | |
| highlightOnHover | No | Visually highlight object when hand hovers over it | |
| targetGameObject | Yes | Instance ID, name, or path of the GameObject to make interactable |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so the tool is a mutation. The description adds context by stating it 'adds components' and 'sets up colliders and scripts', which reveals non-obvious side effects. However, it does not mention potential irreversible changes, performance impact, or required permissions. Given annotations already signal mutation, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, each adding value: first states the primary action, second clarifies what it sets up. No redundant words. Optimal length for conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 11 parameters and no output schema, the description provides adequate context for the overall behavior. The schema handles parameter details. It could mention interaction types briefly, but the description remains sufficient for basic understanding. Missing usage guidelines are the main gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with descriptions and defaults. The tool description does not add further detail about parameters beyond the schema. This meets the baseline expectation but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it adds hand interaction components to a GameObject, enabling hand gesture responses like pinch-to-grab, poke, or hover. It specifies it sets up colliders and interaction scripts, making the tool's purpose unmistakable. Among sibling tools, none directly duplicate this functionality, so it distinguishes well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., add_xr_interactor) or any prerequisites (e.g., GameObject must exist). It does not mention when not to use it or what happens if parameters are omitted. The agent lacks 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.
create_prefabB
Creates a prefab with optional MonoBehaviour script and serialized field values
| Name | Required | Description | Default |
|---|---|---|---|
| prefabName | Yes | The name of the prefab to create | |
| fieldValues | No | Optional JSON object of serialized field values to apply to the prefab | |
| componentName | No | The name of the MonoBehaviour Component to add to the prefab (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutability (readOnlyHint=false), so the description adds value by mentioning optional components and fields. However, it does not disclose side effects, permissions, or return behavior, leaving gaps for a creation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 12 words, front-loaded with the action and resource. No superfluous content. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 parameters (one required with nested objects), the description is too brief. It lacks context on what a prefab is, how field values are applied, or what happens after creation. Incomplete for an agent to use without additional knowledge.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description aligns with the parameters but does not add extra meaning or clarify the format for 'fieldValues' or how 'componentName' is used beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (creates), the resource (prefab), and the optional features (MonoBehaviour script and serialized field values). It is specific and distinguishes from sibling tools like 'prefab' or 'create_scene'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'create_scene', 'scriptable_object', or other asset creation tools. The description does not provide context for selection or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sceneB
Creates a new scene and saves it to the specified path
| Name | Required | Description | Default |
|---|---|---|---|
| sceneName | Yes | The name of the scene to create (without extension) | |
| folderPath | No | The folder path under 'Assets' to save into (default: Assets) | |
| makeActive | No | Whether to open/make the new scene active after creating it | |
| addToBuildSettings | No | Whether to add the scene to Build Settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a mutation (readOnlyHint=false, idempotentHint=false). The description adds that it saves to a path, but omits error conditions (e.g., if scene already exists), side effects, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with no wasted words, but slightly too terse for a mutation tool. Could include more context without harming conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks information about output (return values), error handling, and behaviors around parameter interactions. With no output schema and minimal annotations, the description should cover more for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description adds no extra meaning beyond what the schema already provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('creates') and resource ('new scene'), and adds the detail 'saves it to the specified path', clearly distinguishing from sibling tools like 'load_scene' or 'delete_scene'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., 'duplicate_gameobject' or 'load_scene'), nor prerequisites or consequences like overwriting existing scenes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_spatial_anchorA
Creates a spatial anchor at a specified position or on a detected plane. Spatial anchors persist across sessions and maintain their position in the real world.
| Name | Required | Description | Default |
|---|---|---|---|
| metadata | No | Custom key-value metadata to store with the anchor | |
| position | No | World position for the anchor | |
| rotation | No | Rotation quaternion for the anchor | |
| anchorName | Yes | Unique name for this spatial anchor | |
| persistent | No | Save anchor for persistence across sessions | |
| planeOffset | No | Offset from the plane center when attaching to a plane | |
| cloudEnabled | No | Enable cloud sharing of this anchor | |
| attachToPlane | No | ID of a detected plane to attach the anchor to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds persistence and real-world positioning beyond the readOnlyHint annotation. However, it does not disclose error behavior on duplicate names, side effects, or required settings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two succinct sentences with no wasted words. Could be more structured but is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, no mention of return value. Lacks behavioral context for 8 parameters, such as what happens if anchorName already exists or if attachToPlane fails.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are documented. Description provides a high-level summary but adds minimal detail beyond what's in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (creates), resource (spatial anchor), and options (specified position or detected plane). It distinguishes from sibling tools like 'manage_spatial_anchors' which handle existing anchors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage for creation, but no explicit guidance on when to use this vs alternatives (e.g., manage_spatial_anchors). Missing prerequisites like plane detection being enabled for attachToPlane.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_xr_rigA
Creates an XR Origin (camera rig) configured for XREAL One Pro. Sets up the head-mounted display camera, hand tracking origins, and interaction components.
| Name | Required | Description | Default |
|---|---|---|---|
| rigName | No | Name for the XR Origin GameObject | XR Origin (XREAL) |
| position | No | Initial position for the XR Origin | |
| prefabPath | No | Path to save prefab (if createAsPrefab is true) | |
| cameraYOffset | No | Camera Y offset for floor-level tracking (typically 1.36m for standing) | |
| createAsPrefab | No | Save the rig as a prefab after creation | |
| addUIInteraction | No | Add UI interaction components | |
| addRayInteractors | No | Add ray interactors for distant selection | |
| addHandControllers | No | Add hand tracking controller objects | |
| trackingOriginMode | No | Tracking origin reference | Device |
| addLocomotionSystem | No | Add locomotion system components | |
| addDirectInteractors | No | Add direct interactors for touch/grab |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description accurately indicates the tool creates a new GameObject (write operation) without contradicting the readOnlyHint=false annotation. It specifies the components set up, but could add more detail about scene impact (e.g., 'adds to current scene'). No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences covering the core action and key setup details. It front-loads the purpose but could improve by listing configurable aspects more explicitly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (11 parameters, nested objects) and absence of an output schema, the description adequately summarizes the creation scope. However, it omits what the tool returns (e.g., the GameObject) and scene-level implications.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add extra semantic meaning beyond the schema; it only provides a high-level overview without parameter-specific detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool creates an XR Origin configured for XREAL One Pro, naming specific components (HMD camera, hand tracking origins, interaction components). This clearly distinguishes it from sibling tools like create_scene or create_prefab.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool versus alternatives like setup_xreal_project or create_xr_ui. While the purpose is clear, no usage context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_xr_uiA
Creates a world-space UI canvas configured for XR interaction. Sets up proper scaling, interaction raycasting, and visual settings for comfortable viewing in mixed reality.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Canvas width in meters | |
| height | No | Canvas height in meters | |
| position | No | World position for the canvas | |
| rotation | No | Euler rotation for the canvas | |
| canvasName | No | Name for the UI Canvas GameObject | XR Canvas |
| followHead | No | UI follows head movement (tag-along behavior) | |
| curveRadius | No | Curve radius in meters (if curved) | |
| curvedCanvas | No | Use curved canvas for better peripheral visibility | |
| lookAtCamera | No | UI always faces the camera | |
| followDistance | No | Distance to maintain when following head | |
| pixelsPerMeter | No | UI resolution (pixels per meter) | |
| interactionType | No | How users interact with this UI | Both |
| addSampleContent | No | Add sample UI elements (button, slider, text) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=false, indicating a write operation. The description adds behavioral context (sets up scaling, raycasting, visual settings) but does not disclose side effects, permissions, or error conditions. Sufficient but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no redundancy. The first sentence states the primary action, the second adds key behavioral details. Efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 parameters and no output schema, the description provides a reasonable overview but omits details about return values, failure modes, or confirmation of creation. Adequate but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has its own description. The tool description adds high-level context but no additional parameter-level details beyond the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a world-space UI canvas for XR interaction, with specific details about scaling and raycasting. This differentiates it from sibling tools like create_hand_interactable or create_xr_rig.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating XR UI canvases but offers no explicit guidance on when to use this tool versus alternatives, nor does it state prerequisites or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debuggerB
Unity debugging utilities for inspection and troubleshooting. Actions:
evaluate_expression: Evaluate a C# expression in the current context
get_stack_trace: Get current stack trace (when paused or from last exception)
list_breakpoints: List all breakpoints (requires external debugger)
dump_object: Get detailed dump of an object's fields and properties
invoke_method: Invoke a method on a GameObject or component
get_static_field: Get value of a static field from a type
set_static_field: Set value of a static field
call_static_method: Call a static method on a type
debug_log: Log structured debug information
get_component_values: Get all serialized values from a component
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Debugger action to perform | |
| maxDepth | No | Maximum depth for object dump (default: 3) | |
| objectId | No | Instance ID of the object | |
| typeName | No | Full type name including namespace (e.g., "UnityEngine.Application") | |
| debugData | No | Structured data for debug_log | |
| fieldName | No | Static field name | |
| expression | No | C# expression to evaluate | |
| fieldValue | No | Value to set for static field | |
| methodArgs | No | Arguments for method invocation | |
| methodName | No | Method name to invoke | |
| objectPath | No | Hierarchy path of the object | |
| componentType | No | Component type name (e.g., "Transform", "MyScript") | |
| includePrivate | No | Include private fields in dump |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint=false) indicate possible mutations. The description includes notes like 'when paused or from last exception' for get_stack_trace and 'requires external debugger' for list_breakpoints, adding some context beyond annotations. However, it doesn't detail side effects or auth requirements for other actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose. It uses a list format which is efficient for a composite tool. However, the list is somewhat lengthy but structured well.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (13 parameters, 10 sub-actions, no output schema), the description is incomplete. It lacks details on output formats, how parameters combine with actions, and typical usage patterns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional parameter-specific meaning beyond listing actions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Unity debugging utilities for inspection and troubleshooting' and lists specific actions, clearly indicating the tool's purpose as a composite debugging meta-tool. However, it doesn't differentiate from sibling tools like get_console_logs or watch_console.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs. alternatives. It lists actions but does not explain context or exclusions. For example, it doesn't advise when to use debugger over get_console_logs for logging.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_gameobjectADestructive
Deletes a GameObject from the scene by path, name, or instance ID
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | No | The instance ID of the GameObject to delete | |
| objectName | No | The name of the GameObject to delete | |
| objectPath | No | The path of the GameObject to delete (e.g. "Canvas/Panel/Button") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, and the description adds value by specifying identification methods (path, name, instance ID). It does not contradict annotations and provides behavioral context beyond the annotation flags.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It conveys the core purpose and identification methods efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's purpose and input methods. For a simple destructive tool with no output schema, it is reasonably complete, though it could mention implications like irreversibility or prerequisites.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all three parameters. The tool description summarizes the methods but adds no new semantic details beyond the schema, meeting the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete), resource (GameObject from the scene), and identification methods (path, name, or instance ID), distinguishing it from siblings like duplicate_gameobject or select_gameobject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use (to delete a GameObject) but provides no explicit guidance on when not to use or alternatives. It lacks prerequisites or context for choosing this over other deletion tools like delete_scene.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_sceneADestructive
Deletes a scene by path or name and removes it from Build Settings
| Name | Required | Description | Default |
|---|---|---|---|
| sceneName | No | Scene name without extension (used if scenePath not provided) | |
| scenePath | No | Full asset path to the scene (e.g., 'Assets/Scenes/MyScene.unity') | |
| folderPath | No | Optional folder scope to resolve sceneName under 'Assets' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, so the description's mention of deletion aligns. It adds the context of removing the scene from Build Settings. However, it does not clarify whether deletion is permanent or if the scene file is removed from the project entirely, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence of 12 words, front-loading the action and object. Every word is necessary and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with annotations indicating destructiveness, the description covers the primary action and a secondary effect (Build Settings removal). It could be enhanced by explicitly stating irreversibility, but overall it is sufficient for understanding the tool's purpose and effect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with clear parameter descriptions. The description reiterates that deletion can be 'by path or name' but does not add new semantic meaning beyond what the schema already provides, so it meets the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Deletes a scene' and the specific method 'by path or name', differentiating it from sibling tools like `load_scene` or `create_scene` which have different purposes. It also notes the additional effect of removing from Build Settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives or provide context for exclusion. It is implicit that you use it to delete scenes, but no guidance is given on prerequisites or scenarios where other tools might be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_gameobjectB
Duplicates a GameObject in the scene, optionally with a new name
| Name | Required | Description | Default |
|---|---|---|---|
| newName | No | Optional new name for the duplicated GameObject | |
| instanceId | No | The instance ID of the GameObject to duplicate | |
| objectName | No | The name of the GameObject to duplicate | |
| objectPath | No | The path of the GameObject to duplicate (e.g. "Canvas/Panel/Button") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, so mutation is expected. The description adds 'Duplicates' and 'optionally with a new name', but does not disclose side effects like position, hierarchy, or component copying. Behavior is minimally transparent beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, 11-word sentence that is front-loaded and concise. Every word adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite simple duplication, the description omits details on parameter interaction (e.g., instanceId vs objectName conflict), hierarchy behavior, return values, and selection outcome. Given 4 parameters and no output schema, the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 4 parameters. The description only adds 'optionally with a new name', which aligns with the newName parameter but does not add significant meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Duplicates' and the resource 'GameObject', and distinguishes from siblings by mentioning 'optionally with a new name', which sets it apart from tools like delete_gameobject or update_gameobject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for duplicating a GameObject, but does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives or restrictions. The context is clear but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
editor_controlB
Controls Unity Editor windows and UI elements. Actions:
focus_window: Focus a specific editor window (Inspector, Hierarchy, Project, Scene, Game, Console, Profiler)
get_windows: List all open editor windows
open_window: Open an editor window
close_window: Close an editor window
inspector_lock: Lock/unlock the Inspector
inspector_mode: Set Inspector to Normal or Debug mode
ping_asset: Ping/highlight an asset in the Project window
frame_selected: Frame selected object in Scene view
set_scene_view: Configure Scene view settings (2D, orthographic, etc.)
get_editor_state: Get current editor state (play mode, paused, compiling, etc.)
refresh: Force refresh of Project window and AssetDatabase
clear_console: Clear the Console window
take_screenshot: Capture editor window screenshot
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Editor control action | |
| locked | No | Lock state for Inspector | |
| assetPath | No | Asset path for ping_asset | |
| debugMode | No | Debug mode for Inspector | |
| windowType | No | Type of editor window | |
| windowIndex | No | Window index when multiple of same type exist | |
| screenshotPath | No | Path to save screenshot | |
| sceneViewSettings | No | Scene view configuration |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint: false (mutation allowed). The description lists actions like open/close and lock, implying mutations, but lacks details on side effects, permissions, error handling, or return values. For a tool with many actions, more transparency is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is fairly long with a bullet list of 13 actions, which is necessary but could be more concise. The structure is clear but not front-loaded; the key purpose is stated first, but the list could be trimmed by removing redundant phrasing like 'List all open editor windows' for get_windows.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, nested objects, and no output schema, the description should explain what each action returns and how to use parameters. It only gives one-line descriptions of actions, omitting return values and parameter details. This is insufficient for an agent to use the tool correctly without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, with descriptions for all parameters. The tool description adds little beyond listing action names; it does not elaborate on parameter usage or the complex sceneViewSettings object. Baseline score of 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it controls Unity Editor windows and UI elements, and enumerates 13 specific actions. This distinguishes it from sibling tools like editor_selection or play_mode, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives. It lists actions but does not explain when to choose this over other editor control tools or provide context for selecting specific actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
editor_selectionBIdempotent
Gets or sets the current Unity Editor selection (GameObjects, assets, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Single path to add to selection (for add action) | |
| paths | No | Array of GameObject paths or asset paths to select (for set action) | |
| action | No | Action to perform (default: get) | |
| instanceId | No | Single instance ID to add to selection (for add action) | |
| instanceIds | No | Array of instance IDs to select (for set action) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and readOnlyHint=false; the description adds that it gets or sets the selection but does not disclose the clear/add capabilities or any side effects beyond what is inferred.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, but it is concise; however, it could be more precise by listing all supported actions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, multiple actions, no output schema), the description is too brief, lacking details on return values, usage examples, or action-specific guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds no extra meaning to parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool operates on the Unity Editor selection with verbs 'gets or sets', but it does not mention the 'clear' and 'add' actions from the schema, and it fails to differentiate from the sibling 'select_gameobject' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'select_gameobject', nor does it specify prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_hand_trackingA
Enables or disables hand tracking on XREAL glasses. When enabled, the system tracks hand poses, joint positions, and recognizes gestures. Required for hand-based interactions.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | Enable or disable hand tracking | |
| trackedHands | No | Which hands to track | Both |
| trackingMode | No | Basic: faster, less accurate. Advanced: full joint tracking with higher accuracy | Advanced |
| gestureRecognition | No | Enable gesture recognition (pinch, grab, point, etc.) | |
| jointVisualization | No | Enable debug visualization of hand joints | |
| handMeshVisualization | No | Enable visual mesh rendering of tracked hands |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation (false): it explains what happens when enabled (tracks hand poses, joint positions, recognizes gestures). It does not mention destructive actions, authorization needs, or rate limits, but the mutation nature is clear. The description adds moderate value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose and quickly adding context. Every word is informative, and no extraneous details are present. Excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters, all well-documented in the schema, and no output schema. The description provides a general overview but does not explain key parameters like 'trackedHands', 'trackingMode', or visualization options. For a complex tool, additional context about parameter defaults or use cases would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 6 parameters. The tool description does not add new meaning to parameters; it only summarizes the overall behavior. Since the schema is thorough, the description adds minimal additional semantic value, matching the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: enabling or disabling hand tracking on XREAL glasses. It specifies the resource ('hand tracking') and the action ('enables or disables'), and distinguishes from sibling tools like 'configure_hand_gestures' and 'get_hand_state' by focusing on the master toggle.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is 'Required for hand-based interactions,' implying when to use it. However, it does not explicitly state when not to use it or provide alternatives among siblings (e.g., 'configure_hand_gestures' for gesture-specific settings). Usage guidance is implied but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_meshingA
Enables or disables spatial meshing to generate 3D mesh geometry of the real environment. Used for occlusion, physics collisions, and spatial understanding.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | Enable or disable spatial meshing | |
| updateRate | No | Mesh update rate in seconds | |
| volumeSize | No | Meshing volume size in meters (centered on camera) | |
| meshDensity | No | Mesh triangle density | Medium |
| classifyMesh | No | Classify mesh regions (floor, wall, ceiling, furniture) | |
| meshMaterial | No | Material type for mesh visualization | Occlusion |
| visualizeMesh | No | Render the spatial mesh visibly | |
| enableOcclusion | No | Use mesh for real-world occlusion of virtual objects | |
| generateColliders | No | Generate mesh colliders for physics |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the toggle behavior (enable/disable) and use cases, which aligns with the readOnlyHint=false annotation. However, it lacks deeper behavioral context such as whether disabling removes existing meshes, performance impact, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the action and resource, the second lists use cases. It is concise, front-loaded, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters including a nested object, the description is succinct but covers the core functionality. The full schema documentation compensates for lack of detail about optional parameters. Slightly more context about when to adjust parameters would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the schema already fully documents all parameters. The description adds no additional insight beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Enables or disables) and resource (spatial meshing), and explicitly lists use cases (occlusion, physics collisions, spatial understanding). It distinguishes from sibling tools like 'enable_hand_tracking' or 'configure_occlusion' by focusing on mesh generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. It simply states the function, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_plane_detectionA
Enables or disables plane detection for spatial mapping. Detects horizontal surfaces (floors, tables) and vertical surfaces (walls) in the real environment.
| Name | Required | Description | Default |
|---|---|---|---|
| enabled | Yes | Enable or disable plane detection | |
| maxPlanes | No | Maximum number of planes to track | |
| planeColor | No | Visualization color in hex format | #00FF00 |
| planeTypes | No | Types of planes to detect | |
| updateMode | No | How planes are updated | Continuous |
| mergePlanes | No | Merge nearby coplanar surfaces | |
| minPlaneArea | No | Minimum plane area in square meters | |
| classifyPlanes | No | Classify planes as floor, ceiling, wall, table, etc. | |
| visualizePlanes | No | Show debug visualization of detected planes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, consistent with the mutation described. However, the description does not disclose behavioral traits such as side effects on the spatial mapping system, whether prior state matters, or if enabling plane detection impacts performance. With only one annotation, the description should provide more context but remains minimally adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundant information. It is front-loaded with the primary action and then details the surfaces detected. This is efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 9 parameters, no output schema, and the description does not explain return values or state changes (e.g., whether previously detected planes are cleared), the description is somewhat sparse. It covers the basic toggle action but lacks completeness for an AI agent to fully understand the tool's impact without additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Since schema description coverage is 100%, the parameters are fully documented in the schema. The description adds no additional parameter-level details beyond the overview of detection types. Baseline 3 is appropriate as the description does not reduce cognitive load but also does not mislead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool enables or disables plane detection for spatial mapping, specifying detection of horizontal (floors, tables) and vertical (walls) surfaces. This is a specific verb+resource with clear scope, and it distinguishes from sibling tools like enable_meshing or get_detected_planes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when plane detection is needed, but it provides no explicit guidance on when to use this tool vs alternatives (e.g., when to use enable_meshing instead), no prerequisites, and no conditions where it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_codeADestructive
Execute arbitrary C# code in the Unity Editor context. This is the most powerful tool — it can do anything the Unity Editor API allows.
The code runs with full access to UnityEngine, UnityEditor, System, and all project assemblies.
For simple expressions, just provide the expression (e.g., "Selection.activeGameObject.name"). For multi-statement code, write full C# statements. A return statement determines the output. For void operations, the code runs and any Debug.Log output is captured.
Pre-imported namespaces: System, System.Collections.Generic, System.Linq, System.Reflection, System.IO, UnityEngine, UnityEditor, UnityEditor.SceneManagement, UnityEngine.SceneManagement, UnityEngine.UI
Examples:
"PlayerSettings.productName" → returns product name
"GameObject.FindObjectsOfType().Length" → returns camera count
"var go = new GameObject("MyObject"); return go.name;" → creates object, returns name
"Debug.Log("Hello"); return Selection.objects.Length;" → logs + returns count
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | C# code to execute. Can be a single expression, multiple statements, or a full class with an Execute method. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructiveHint=true. Description reinforces this by stating it can do anything the Unity Editor API allows, and provides details on namespaces, execution modes, and capture of Debug.Log output. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with key information first (powerful, access) followed by details and examples. It is slightly verbose but every sentence adds value; could be more concise but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's power and lack of output schema, the description covers all necessary aspects: how to write code, namespaces, examples, and what outputs to expect. It is fully complete for effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'code' with 100% schema coverage. The description adds significant meaning by explaining how the code is evaluated (expression vs statements), the role of return statements, and pre-imported namespaces, going far beyond the schema's basic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it executes arbitrary C# code in the Unity Editor context. It distinguishes itself from sibling tools which are specific, targeted operations, making it clear this is the general-purpose code execution tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on how to use it (expression vs multi-statement, examples) and implies it's for tasks not covered by sibling tools. However, it does not explicitly state when NOT to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_operationsADestructive
Read, write, list, and search files within the Unity project.
Actions:
read: Read the contents of a file (scripts, shaders, configs, etc.)
write: Write/create a file in the project (auto-imports to AssetDatabase)
list: List files in a directory with optional pattern filtering
exists: Check if a file or directory exists
search: Search file contents for a text query (grep-like)
get_script_classes: Analyze a C# script to get its classes, methods, and fields
Paths can be absolute or relative to the project root. Examples:
"Assets/Scripts/MyScript.cs" (relative)
"Assets/Shaders/" (directory)
"ProjectSettings/ProjectSettings.asset" (project settings)
Security: All paths must be within the Unity project directory.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | File or directory path (relative to project root or absolute). Examples: "Assets/Scripts/MyScript.cs", "Assets/" | |
| query | No | Search text for search action | |
| action | Yes | File operation to perform | |
| content | No | File content to write (required for write action) | |
| pattern | No | File name pattern for list action (e.g., "*.cs", "*.shader"). Default: "*.*" | |
| extension | No | File extension filter for search action (e.g., ".cs", ".shader"). Default: ".cs" | |
| recursive | No | Recurse into subdirectories for list action. Default: false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive and non-readOnly behavior. The description adds that write actions auto-import to AssetDatabase and enforces security constraints (all paths must be within project directory). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-organized with a clear action list, path examples, and security note. It is concise yet informative, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema), the description covers all actions and provides examples. It lacks return value details, but that is acceptable without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds path examples but does not significantly enhance understanding beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs file operations (read, write, list, etc.) and distinguishes it from sibling tools by enumerating specific file-related actions. The verb+resource pairing is explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides path examples and a security note, giving users guidance on how to use the tool. While it does not explicitly state when to avoid it, the clarity of actions and context signals are sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_gameobjectsARead-onlyIdempotent
Finds GameObjects in the scene by name pattern, tag, layer, or component type
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Tag to filter by (e.g. "Player", "Enemy") | |
| layer | No | Layer number to filter by | |
| maxResults | No | Maximum number of results to return (default: 100) | |
| namePattern | No | Name pattern to search for (supports * wildcard, e.g. "Player*", "*Enemy*") | |
| componentType | No | Component type to filter by (e.g. "Camera", "Rigidbody", "BoxCollider") | |
| includeInactive | No | Whether to include inactive GameObjects (default: true) |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | Human-readable summary or error |
| success | No | Whether the search succeeded |
| gameObjects | No | Matching GameObjects |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to cover those. The description adds that it searches by multiple criteria, which is useful but does not disclose behavioral details like wildcard support, pagination (maxResults), or whether inactive objects are included by default (these are in schema but not description). With annotations, the bar is lower, and the description is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the key action and resources. Every part is essential, no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and full parameter documentation, the description is mostly complete. It clearly conveys the core functionality. However, it does not explicitly mention that results are returned as a list or how maxResults affects pagination, though these could be inferred from the schema. Slight room for improvement, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already documented in the schema. The description only lists the parameter categories (name pattern, tag, layer, component type) without adding new meaning or format details beyond what the schema provides. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'finds', the resource 'GameObjects', and the filtering criteria (name pattern, tag, layer, or component type). It effectively distinguishes itself from sibling tools like 'get_gameobject' or 'select_gameobject' by focusing on search/filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives (e.g., when to use 'get_gameobject' instead), nor does it mention any prerequisites or exclusions. It simply states what the tool does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_statusARead-only
Returns the current status of an asynchronous build started by build_xreal_apk. Provide the jobId returned from that tool. State transitions: Queued -> Building -> Succeeded | Failed. When state is Succeeded the response includes outputPath, fileSizeMb, buildSeconds, and (if runAfterBuild was set) a deployment summary. When state is Failed the response includes an errors array. Omit jobId to get a list of every known build job in this editor session.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | No | The jobId returned from build_xreal_apk. Omit to list all jobs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes state transitions (Queued -> Building -> Succeeded | Failed), response fields per state, and the effect of omitting jobId. Annotations confirm read-only behavior; no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise (3 sentences), front-loaded with main purpose. Every sentence adds value: purpose, how to use, and behavior variations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only 1 parameter and no output schema, the description fully covers behavior, state machine, response fields, and edge cases. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage (jobId described). Description adds that jobId comes from build_xreal_apk and that omitting it lists all jobs, plus response details per state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns the status of an asynchronous build, linking it to build_xreal_apk via jobId. It distinguishes from siblings like build_xreal_apk by being the status checker.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use (after build_xreal_apk with jobId) and when not (omit jobId to list all jobs). Provides clear context for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_camera_frameARead-only
Captures a frame from the XREAL RGB camera for computer vision or AR development. Returns image data or saves to a file. Useful for debugging image tracking and mixed reality features.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Image format for saved file | PNG |
| filePath | No | Custom file path to save the image. If not provided, saves to Assets/CapturedFrames/ | |
| cameraType | No | Type of camera data to capture | RGB |
| resolution | No | Resolution of captured frame | Full |
| saveToFile | No | Save the captured frame to a file | |
| includeMetadata | No | Include camera intrinsics and pose in response |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds that it returns image data or saves to a file, which is useful but does not elaborate on side effects like file creation or performance impact. Behavioral disclosure is adequate but not detailed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences cover the main action and use cases with no wasted words. The description is front-loaded with the core purpose, making it efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, no output schema, and many siblings, the description covers the key aspects: core function, use cases, and behavior. It lacks details on return format when not saving, but annotations and schema compensate partially.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description adds minimal value beyond restating the save-to-file behavior. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool captures a frame from the XREAL RGB camera, with specific verb and resource. It distinguishes itself from siblings like capture_xr_screenshot and get_tracked_images by focusing on raw camera frames for computer vision and AR development.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context (for computer vision, debugging image tracking) but does not explicitly state when to use this tool instead of alternatives like capture_xr_screenshot or get_tracked_images. Usage is implied rather than clearly delineated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_connected_devicesARead-only
Lists all Android devices connected via ADB. Shows device IDs, models, Android versions, and connection status. Useful for verifying device setup before deployment.
| Name | Required | Description | Default |
|---|---|---|---|
| refreshDevices | No | Refresh device list before returning | |
| includeEmulators | No | Include Android emulators in the list | |
| checkXrealSupport | No | Check if devices support XREAL glasses | |
| includeUnauthorized | No | Include devices pending USB debugging authorization |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds that it lists via ADB and shows specific fields, but does not disclose other behaviors like caching or performance characteristics. Given annotation coverage, a score of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, no wasted words. It is front-loaded with the verb and resource, making it easy to understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description sufficiently explains what is returned (device IDs, models, versions, connection status). It is complete for a list tool, though it could mention pagination or ordering.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add information about parameters beyond what the schema already provides in its descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists Android devices connected via ADB, specifying the verb 'Lists' and resource. It differentiates from siblings like get_xreal_device_info by focusing on general Android devices, not specifically XREAL.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: 'useful for verifying device setup before deployment'. However, it does not explicitly mention when not to use or alternatives, leaving partial guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_console_logsARead-onlyIdempotent
Retrieves logs from the Unity console with pagination support to avoid token limits
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of logs to return (defaults to 50, max 500 to avoid token limits) | |
| offset | No | Starting index for pagination (0-based, defaults to 0) | |
| logType | No | The type of logs to retrieve (info, warning, error) - defaults to all logs if not specified | |
| includeStackTrace | No | Whether to include stack trace in logs. Set to false to save 80-90% tokens. Default: true |
Output Schema
| Name | Required | Description |
|---|---|---|
| logs | No | Console log entries |
| limit | No | Pagination limit used |
| total | No | Total number of matching logs available |
| offset | No | Pagination offset used |
| message | No | Human-readable summary or error |
| success | No | Whether the logs were retrieved |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds context about pagination preventing token limits, which is useful but does not contradict annotations. Lacks disclosure of any additional behavior such as rate limits or return format, but output schema covers return structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. Every element serves a purpose: states the action, resource, and key feature (pagination for token limits).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a comprehensive input schema (100% coverage) and an output schema, the description adequately summarizes the tool's core purpose. It does not need to explain return values due to the output schema. Slightly missing mention of optional filtering by log type, but this is evident from the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description only reiterates the token-saving aspect already detailed in parameter descriptions (e.g., limit, includeStackTrace). It adds no new semantic meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves logs from the Unity console with pagination support. It effectively distinguishes from siblings like 'send_console_log' (sending) and 'watch_console' (real-time monitoring) by focusing on retrieval and pagination, though it doesn't explicitly contrast with alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when logs are needed and token limits are a concern, but provides no explicit guidance on when not to use this tool or alternatives. No prerequisites or context for selection among siblings like 'watch_console' for real-time logs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_detected_planesARead-only
Gets information about all currently detected planes in the environment. Returns plane positions, orientations, boundaries, and classifications.
| Name | Required | Description | Default |
|---|---|---|---|
| minArea | No | Minimum plane area filter (square meters) | |
| planeType | No | Filter by plane type | All |
| includePose | No | Include plane pose (position and rotation) | |
| classification | No | Filter by plane classification | All |
| coordinateSpace | No | Coordinate space for positions | World |
| includeVertices | No | Include boundary vertex positions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and openWorldHint=true, so the description adds value by detailing the returned data (positions, orientations, boundaries, classifications). It does not contradict the annotations and provides context beyond what annotations alone offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences with no redundancy. It is front-loaded with the purpose and follows with specifics. Every sentence contributes meaningfully.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description lists the returned data types. However, it does not mention preconditions (e.g., that plane detection must be enabled) or potential performance considerations. Given the tool's simplicity and good annotations, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for all six parameters, so the description adds little new information about parameters. It indirectly relates to some parameters (e.g., classification) but does not directly explain them. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Gets information about all currently detected planes in the environment.' It specifies what is returned (positions, orientations, boundaries, classifications), making it easy for an AI agent to understand the action and resource. The sibling tools are unrelated, so no confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives. It is implied that it should be used when plane detection data is needed, but no exclusions or conditions are mentioned. With many siblings not related to plane detection, this is a minor gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_gameobjectARead-onlyIdempotent
Retrieves detailed information about a specific GameObject by instance ID, name, or hierarchical path (e.g., 'Parent/Child/MyObject'). Returns all component properties including Transform position, rotation, scale, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| idOrName | Yes | The instance ID (integer), name, or hierarchical path of the GameObject to retrieve. Use hierarchical paths like 'Canvas/Panel/Button' for nested objects. |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | Human-readable summary or error |
| success | No | Whether the GameObject was found |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint. The description adds context about returning all component properties including Transform, which is useful beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and includes an example. Every word adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with output schema and annotations, the description covers input format and output scope sufficiently. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description repeats the same information about the parameter (instance ID, name, path). No additional semantic detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about a specific GameObject, specifying the identifiers (instance ID, name, hierarchical path). It distinguishes from sibling tools like delete_gameobject or update_gameobject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indirectly implies usage for retrieving details of a single known object, but does not explicitly contrast with siblings like find_gameobjects (for searching) or explain when not to use. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hand_stateBRead-only
Gets the current state of tracked hands including joint positions, detected gestures, pinch strength, and tracking confidence. Returns detailed hand pose data.
| Name | Required | Description | Default |
|---|---|---|---|
| hand | No | Which hand(s) to query | Both |
| coordinateSpace | No | Coordinate space for position data | World |
| includeGestures | No | Include detected gesture information | |
| includeVelocity | No | Include hand velocity data | |
| includeJointPositions | No | Include all joint world positions | |
| includeJointRotations | No | Include joint rotation quaternions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true (no side effects) and openWorldHint=true (data may vary). The description adds that it returns joint positions, gestures, pinch strength, and confidence, which supplements the parameters. However, it doesn't mention that results depend on tracking state or that openWorldHint implies variability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary action, no filler words. Efficient and clear, though a slightly more structured format (e.g., bullet list of returned fields) could improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but parameters are well-documented. The description covers core return data but omits error conditions, required setup (e.g., hand tracking enabled), and doesn't address the implications of openWorldHint. Adequate for a simple getter, but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all 6 parameters described). The description includes some data fields (e.g., pinch strength) not directly in param descriptions, but doesn't elaborate on parameter behavior or defaults beyond the schema. Baseline 3 applies as schema already does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the current state of tracked hands and lists included data (joint positions, gestures, pinch strength, tracking confidence). It distinguishes from sibling hand-configuration tools like 'configure_hand_gestures' or 'enable_hand_tracking', but does not explicitly differentiate from other getters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, prerequisites (e.g., hand tracking must be enabled), or conditions that affect results. The description merely states functionality without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tracked_imagesARead-only
Gets the current state of tracked images including which images are detected, their poses, and tracking quality.
| Name | Required | Description | Default |
|---|---|---|---|
| imageFilter | No | Filter by image name (supports wildcards) | |
| includePose | No | Include position and rotation data | |
| includeSize | No | Include detected size information | |
| trackingState | No | Filter by tracking state | All |
| coordinateSpace | No | Coordinate space for pose data | World |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's claim of 'Gets' is consistent. The description adds detail on returned data (detected, poses, quality) but no additional behavioral context like auth requirements or rate limits, which is acceptable given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with the core action and resource, containing no filler. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only query tool with 5 parameters and no output schema, the description covers the main purpose and outputs. It could mention the return format or filtering options, but the parameters handle filtering implicitly. Overall, adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds minimal extra meaning beyond what the schema already provides. It mentions 'poses' and 'tracking quality', which maps to parameters like includePose and trackingState, but does not elaborate on syntax or usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Gets' and the resource 'current state of tracked images', listing specific aspects: which images are detected, poses, and tracking quality. It distinguishes from sibling tools like 'add_tracking_image' (adds) and 'configure_image_tracking' (configures).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for querying tracking state but lacks explicit guidance on when to use versus alternatives like 'get_detected_planes' or 'get_hand_state'. No exclusions or context are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xreal_device_infoARead-only
Gets information about the connected XREAL device including model, connection status, tracking state, battery level, and supported features. Works in both Editor simulation and on-device.
| Name | Required | Description | Default |
|---|---|---|---|
| includeBatteryInfo | No | Include battery status if available | |
| includeDisplayInfo | No | Include display resolution and refresh rate | |
| includeCapabilities | No | Include device capability information (hand tracking, eye tracking, etc.) | |
| includeTrackingState | No | Include current tracking state and quality |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds context about specific data fields (battery, tracking) but does not disclose additional behavioral traits beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences that are clear, front-loaded, and contain no extraneous words. Every sentence provides value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only information tool with no output schema, the description fully covers its purpose, scope, and environment. Parameters are adequately documented in schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter already described. The description adds no extra meaning beyond the schema, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool name 'get_xreal_device_info' and description clearly state it retrieves information about a connected XREAL device, specifying exact data like model, battery, tracking. It is distinct from sibling 'get_connected_devices' which lists devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it works in both Editor simulation and on-device, indicating appropriate context. However, it does not explicitly state when not to use or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_xr_performance_metricsARead-only
Gets real-time XR performance metrics including frame rate, frame times, GPU/CPU usage, thermal state, and memory usage. Essential for optimizing mobile XR experiences.
| Name | Required | Description | Default |
|---|---|---|---|
| averageOverFrames | No | Number of frames to average metrics over | |
| includeCpuMetrics | No | Include CPU utilization by thread | |
| includeGpuMetrics | No | Include GPU utilization and timing | |
| includeFrameMetrics | No | Include FPS, frame times, dropped frames | |
| includeThermalState | No | Include device thermal throttling state | |
| includeMemoryMetrics | No | Include memory usage statistics | |
| includeTrackingMetrics | No | Include tracking quality metrics |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds that metrics are 'real-time' but does not disclose other behavioral traits (e.g., whether a running XR session is required, if data comes from device or simulation). Not contradictory, but minimal added value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. The second sentence is somewhat generic but not wasteful. Could be slightly more efficient, but overall concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description lists the types of metrics. It does not mention the return format or clarify that all parameters are optional (though defaults are in schema). Adequate but could provide more operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have 100% schema coverage with descriptions and defaults. The tool description does not add any extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool 'gets real-time XR performance metrics' and lists specific metrics (frame rate, GPU/CPU usage, etc.), making the purpose unambiguous and distinct from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions it is 'essential for optimizing mobile XR experiences,' implying when to use, but does not specify when not to use or provide alternatives like profile_xr_scene. Lacks explicit guidance on prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_nrsdkA
Imports the NRSDK (XREAL SDK) into the Unity project. Can import from a local unitypackage file or download a specific version. Configures initial SDK settings after import.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to download NRSDK from (required if source is "url") | |
| path | No | Local file path to NRSDK .unitypackage file (required if source is "local") | |
| source | Yes | Import source: "local" for a unitypackage file path, "url" for download URL | |
| version | No | SDK version being imported (for reference) | |
| importExamples | No | Import example scenes and scripts | |
| importStreamingAssets | No | Import streaming assets required for device operation | |
| configurePlayerSettings | No | Automatically configure Player Settings for NRSDK |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, potentially side-effect operation. The description adds that the tool 'configures initial SDK settings after import', which provides behavioral context beyond the annotations. It does not detail what settings or potential destructive actions, but the added context is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three clear sentences, no wasted words. The first sentence states the core purpose, and the following sentences add significant detail efficiently. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool complexity and rich input schema, the description covers the essential aspects (import, source options, configuration). It does not mention return values or error behavior, but for an import tool, the purpose and parameters are sufficiently clear. The annotation 'openWorldHint' hints at side effects, which the description acknowledges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, the baseline is 3. The description adds meaning by explaining the two import modes ('local' vs 'url'), which maps to the 'path' and 'url' parameters, and the optional import of examples and streaming assets. This goes beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Imports' and the resource 'NRSDK (XREAL SDK)', and distinguishes two import modes (local file or download). It sets the tool apart from siblings like 'setup_xreal_project' or 'add_package' by focusing specifically on importing and configuring the NRSDK.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions two import sources (local file or download a specific version), giving clear context on when to use each. However, it does not exclude alternatives or provide when-not-to-use guidance relative to sibling tools, which would improve the score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lightingC
Controls Unity lighting and rendering environment. Actions:
get_settings: Get current lighting settings
set_settings: Modify lighting settings
bake_lighting: Start lightmap baking
cancel_bake: Cancel ongoing bake
get_bake_status: Get baking progress
clear_baked_data: Clear baked lighting data
get_light_probes: Get light probe data
update_light_probes: Refresh light probes
set_ambient: Set ambient lighting
set_fog: Configure fog settings
set_skybox: Set skybox material
get_reflection_probes: Get reflection probe data
render_reflection_probes: Re-render reflection probes
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Lighting action to perform | |
| skyboxPath | No | Asset path to skybox material | |
| bakeOptions | No | Options for baking | |
| fogSettings | No | Fog settings | |
| ambientSettings | No | Ambient lighting settings | |
| lightingSettings | No | Lighting settings to modify | |
| reflectionProbeId | No | Specific reflection probe instance ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, implying mutation. The description does not disclose whether actions are synchronous, have side effects, require specific permissions, or any other behavioral traits beyond the action names. For a complex tool with many actions, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, starting with a one-sentence summary followed by a clear list of actions. It avoids unnecessary text and is well-structured for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks information about parameter-action mappings, return values for getters, or process details for long-running actions like bake_lighting. Given the tool's complexity (7 parameters, nested objects, no output schema), the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter has a description in the schema. The tool description adds the action list but adds no additional meaning beyond what the enum already provides. Thus, the description adds marginal value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Controls Unity lighting and rendering environment' and lists specific actions like get_settings, set_settings, bake_lighting, etc. It clearly identifies the tool's domain and primary actions, distinguishing it from sibling tools that are unrelated topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It simply enumerates actions without explaining under what circumstances each action should be chosen or any prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_sceneBIdempotent
Loads a scene by path or name. Supports additive loading (default: false)
| Name | Required | Description | Default |
|---|---|---|---|
| additive | No | Load additively if true; default false | |
| sceneName | No | Scene name without extension (used if scenePath not provided) | |
| scenePath | No | Full asset path to the scene (e.g., 'Assets/Scenes/MyScene.unity') | |
| folderPath | No | Optional folder scope to resolve sceneName under 'Assets' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide idempotentHint=true and readOnlyHint=false. The description adds that additive loading is supported with a default false, which is useful. However, it does not disclose side effects like unloading the previous scene when additive=false, nor does it explain error conditions or folderPath resolution behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences convey the essential purpose and a key behavioral option with no unnecessary words. The description is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given four optional parameters and no output schema, the description covers the basic mechanism but omits important details: precedence when both scenePath and sceneName are provided, behavior when additive=false (unloads current scene), folderPath usage, and potential errors. Not fully complete for complex contexts.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters. The description mentions loading by path or name and additive loading, but these concepts are already covered in parameter descriptions. No additional meaning is added beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Loads a scene by path or name', which identifies the verb (loads), resource (scene), and two resolution methods. However, it does not explicitly differentiate from sibling tools like create_scene or delete_scene, so it misses some sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives such as add_asset_to_scene or create_scene. The description lacks context for selecting this tool over siblings, leaving the agent to guess usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_assetBDestructive
Manages assets in the project: move, delete, rename, copy, create_folder, get_path
| Name | Required | Description | Default |
|---|---|---|---|
| guid | No | Asset GUID (for get_path) | |
| action | Yes | The asset management action to perform | |
| newName | No | New name for the asset (for rename) | |
| destPath | No | Destination asset path (for move, copy) | |
| assetPath | No | Asset path (for delete, rename, get_path) | |
| folderName | No | New folder name (for create_folder) | |
| instanceId | No | Instance ID (for get_path) | |
| sourcePath | No | Source asset path (for move, copy) | |
| parentFolder | No | Parent folder path (for create_folder) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint: true, and the description adds the list of actions, most of which are mutating. However, it does not disclose that get_path is read-only, nor does it explain authorization needs or side effects beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: a single sentence listing actions. Front-loaded with purpose. No wasted words, making it efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 parameters, no output schema), the description is too minimal. It does not explain how actions are selected, parameter dependencies, or what happens on success/failure. Leaves significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description's role is reduced. It groups actions but does not map parameters to actions (e.g., which parameters are required for each action). The schema handles detail, but the description could add relational clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages assets and lists specific actions (move, delete, rename, copy, create_folder, get_path), providing a specific verb and resource. It distinguishes from sibling tools by enumerating these actions, but does not explicitly contrast with other asset-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool vs alternatives like add_asset_to_scene or asset_import. The description lists actions but does not advise on which action to choose based on task context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_spatial_anchorsA
Manages spatial anchors: load from persistence, save current anchors, delete anchors, or query anchor information. Essential for persistent MR experiences.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on spatial anchors | |
| filter | No | Filter criteria for list action | |
| anchorId | No | Specific anchor ID for load/delete/query actions | |
| anchorName | No | Anchor name for load/delete/query actions (alternative to anchorId) | |
| includeMetadata | No | Include custom metadata in query results | |
| includeTransform | No | Include position/rotation in query results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, consistent with the write operations described. The description lists actions but does not elaborate on side effects, authentication needs, or error conditions. It adds moderate context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that are front-loaded with the core purpose. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description does not explain return values or behavior for each action. For a tool with 6 parameters and nested objects, more context (e.g., what happens on save/delete) would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning beyond what the schema already provides for parameters like 'action', 'filter', etc.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'manages' and the resource 'spatial anchors', listing specific actions (load, save, delete, query). This distinguishes it from sibling tools like 'create_spatial_anchor' which focuses on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Essential for persistent MR experiences' implies usage context but does not explicitly state when to use this tool versus alternatives like 'create_spatial_anchor'. No when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
material_shaderC
Manages Unity materials and shaders. Actions:
get_material: Get material properties from a renderer
set_material_property: Set a material property value
create_material: Create a new material
assign_material: Assign material to a renderer
get_shader_properties: List all properties of a shader
get_available_shaders: List available shaders
set_shader: Change shader on a material
copy_material: Copy material properties
get_global_shader_property: Get global shader property
set_global_shader_property: Set global shader property
get_keywords: Get enabled shader keywords
enable_keyword: Enable a shader keyword
disable_keyword: Disable a shader keyword
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Material/shader action to perform | |
| keyword | No | Shader keyword name | |
| objectId | No | Instance ID of the GameObject with renderer | |
| colorValue | No | Color value (0-1 range) | |
| objectPath | No | Hierarchy path of the GameObject | |
| shaderName | No | Shader name (e.g., "Standard", "Universal Render Pipeline/Lit") | |
| texturePath | No | Asset path to texture | |
| vectorValue | No | Vector4 value | |
| materialPath | No | Asset path to material | |
| propertyName | No | Name of the material/shader property | |
| propertyType | No | Type of the property | |
| searchFilter | No | Filter for shader search | |
| materialIndex | No | Material index on the renderer (default: 0) | |
| propertyValue | No | Value to set for the property | |
| newMaterialName | No | Name for new material | |
| newMaterialPath | No | Path to save new material | |
| useSharedMaterial | No | Use shared material vs instance (default: false = instance) | |
| sourceMaterialPath | No | Source material to copy from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so mutation is expected. However, the description does not disclose side effects, required permissions, or undo behavior for actions like assign_material or set_shader. No detail on what gets modified or how changes are applied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the general purpose, but the bullet list of 13 actions is lengthy and duplicates the action enum from the schema. Could be more concise by grouping or omitting the full list and focusing on behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description does not explain what each action returns (e.g., 'get_material returns material properties'). With 18 parameters and varied actions, the agent lacks information on expected outcomes, making the description incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a description. The tool description does not add semantic meaning beyond the schema. Baseline of 3 is appropriate, as the description neither enhances nor degrades parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Manages Unity materials and shaders' and lists 13 specific actions, clearly indicating the scope. It is distinguishable from sibling tools that cover different domains. However, it lacks a concise overall statement of what the tool does (e.g., 'Provides operations to create, modify, and query materials and shaders').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. No when-to-use, when-not-to-use, or prerequisite information is given. The lengthy list of actions assumes the agent knows which action to choose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
particle_systemA
Manage Unity ParticleSystems in detail. Actions:
create: Create a new ParticleSystem GameObject
get_info: Get full particle system state (main, emission, shape modules)
set_main: Configure main module (duration, looping, lifetime, speed, size, gravity, etc.)
set_emission: Configure emission (rate over time/distance)
set_shape: Configure shape module (type, radius, angle, arc)
set_renderer: Configure renderer (render mode, material, sorting order)
play/stop/pause/restart: Playback control
list: List all ParticleSystems in scene
set_color_over_lifetime: Set start/end color gradient
set_size_over_lifetime: Set start/end size curve
set_velocity_over_lifetime: Set velocity min/max per axis
get_modules: Check which modules are enabled
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Position X | |
| y | No | Position Y | |
| z | No | Position Z | |
| arc | No | Shape arc | |
| name | No | Name for new particle system (create) | |
| xMax | No | Velocity X max | |
| xMin | No | Velocity X min | |
| yMax | No | Velocity Y max | |
| yMin | No | Velocity Y min | |
| zMax | No | Velocity Z max | |
| zMin | No | Velocity Z min | |
| angle | No | Cone angle | |
| action | Yes | ParticleSystem action to perform | |
| radius | No | Shape radius | |
| enabled | No | Enable/disable module (true/false) | |
| endSize | No | End size for size-over-lifetime curve | |
| looping | No | Enable looping (true/false) | |
| duration | No | Duration in seconds | |
| endColor | No | End color JSON: {"r":0,"g":0,"b":1,"a":0} | |
| objectId | No | Instance ID of the ParticleSystem | |
| shapeType | No | Shape type (Sphere, Hemisphere, Cone, Box, Circle, etc.) | |
| startSize | No | Start size | |
| objectPath | No | Hierarchy path of the ParticleSystem | |
| parentPath | No | Parent path (create) | |
| renderMode | No | Billboard, Stretch, HorizontalBillboard, VerticalBillboard, Mesh | |
| startColor | No | Start color JSON: {"r":1,"g":0,"b":0,"a":1} | |
| startSpeed | No | Start speed | |
| playOnAwake | No | Play on awake (true/false) | |
| startSizeOL | No | Start size for size-over-lifetime curve | |
| materialPath | No | Path to material asset | |
| maxParticles | No | Maximum particles | |
| rateOverTime | No | Emission rate over time | |
| sortingOrder | No | Sorting order | |
| startLifetime | No | Start lifetime in seconds | |
| gravityModifier | No | Gravity modifier | |
| simulationSpace | No | local, world, or custom | |
| rateOverDistance | No | Emission rate over distance |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, so description carries burden. It enumerates actions (create, set, play, etc.) that imply modification, but does not disclose side effects, authorization needs, or other behavioral traits beyond the action names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Bullet-pointed list of actions is well-structured and front-loaded with purpose. Some redundancy (e.g., 'Configure' repeated), but overall efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 37 parameters and no output schema, description covers all actions and modules. Agent can infer which parameters apply to which action from context, making it complete for invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, baseline 3. Description adds value by grouping actions and including example JSON for color parameters, which helps interpret the input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages Unity ParticleSystems in detail, listing specific actions. It distinguishes from siblings which cover other aspects of Unity (animation, lighting, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists all possible actions but does not provide explicit when-to-use or when-not-to-use guidance. It implies usage for particle system management, but lacks comparisons to alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
physicsB
Unity Physics system control and queries. Actions:
raycast: Perform a raycast and return hit info
raycast_all: Raycast returning all hits
spherecast: Sphere-based raycast
boxcast: Box-based raycast
overlap_sphere: Find colliders in a sphere
overlap_box: Find colliders in a box
simulate: Step physics simulation manually
get_contacts: Get contact points between colliders
set_gravity: Set physics gravity
get_layer_collision: Get layer collision matrix
set_layer_collision: Set layer collision matrix
add_force: Add force to a Rigidbody
add_torque: Add torque to a Rigidbody
set_velocity: Set Rigidbody velocity
get_rigidbody_state: Get Rigidbody physics state
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Force vector to apply | |
| action | Yes | Physics action to perform | |
| layer1 | No | First layer index for collision matrix | |
| layer2 | No | Second layer index for collision matrix | |
| origin | No | Ray/query origin point | |
| radius | No | Radius for sphere cast/overlap | |
| collide | No | Whether layers should collide | |
| gravity | No | New gravity vector | |
| objectId | No | Instance ID of the Rigidbody object | |
| velocity | No | Velocity vector to set | |
| direction | No | Ray direction (will be normalized) | |
| forceMode | No | Force application mode | |
| layerMask | No | Layer mask for filtering (default: all layers) | |
| maxResults | No | Maximum results for multi-hit queries | |
| objectPath | No | Hierarchy path of the Rigidbody object | |
| halfExtents | No | Half extents for box cast/overlap | |
| maxDistance | No | Maximum raycast distance | |
| orientation | No | Rotation quaternion for box queries | |
| queryTriggers | No | Include trigger colliders | |
| angularVelocity | No | Angular velocity to set | |
| simulationSteps | No | Number of physics simulation steps |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description names both read (raycast) and write (add_force) actions but does not expand on behavioral traits like side effects, permissions needed, or state persistence. Given readOnlyHint=false, the description could have added context about what modifications entail (e.g., gravity changes affect all objects). The lack of such detail limits transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: one header sentence followed by a compact list of actions with one-line descriptions. It front-loads the purpose. However, the list format could be better structured (e.g., grouping reads vs writes). Still, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity (21 parameters, 15 actions, no output schema), the description lacks information on return structures, error handling, or behavior of unmentioned combinations. The schema covers parameters well, but the description doesn't fully compensate for missing output schema or complex interactions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for all parameters. The tool description adds no additional parameter meaning beyond listing actions in the description, which maps to the action enum. Baseline of 3 applies because schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it controls Unity Physics system and lists 15 specific actions (raycast, simulate, add_force, etc.), distinguishing it from siblings like physics2d. The verb-resource pair is specific: 'Unity Physics system control and queries'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description lists actions but doesn't indicate which action to choose for a given scenario or when to use this tool over other physics-related tools (e.g., physics2d). The agent must infer usage from action names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
physics2dA
Manage Unity 2D Physics: rigidbodies, colliders, raycasts, joints, effectors. Actions:
get_settings: Get Physics2D global settings (gravity, iterations, etc.)
set_settings: Modify Physics2D settings
raycast: Cast a 2D ray and return hit info
overlap_circle: Find all colliders within a circle
overlap_box: Find all colliders within a box
get_rigidbodies: List all Rigidbody2D components in scene
set_rigidbody: Add/configure Rigidbody2D on a GameObject
add_force: Apply force to a Rigidbody2D
get_colliders: List all Collider2D components in scene
add_collider: Add a 2D collider to a GameObject
get_joints: List all Joint2D components in scene
get_effectors: List all Effector2D components in scene
get_layers: Get 2D collision layer matrix
set_layer_collision: Enable/disable collision between two layers
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Center X | |
| y | No | Center Y | |
| dirX | No | Ray direction X | |
| dirY | No | Ray direction Y | |
| mass | No | Rigidbody mass | |
| angle | No | Box rotation angle | |
| sizeX | No | Box half-width | |
| sizeY | No | Box half-height | |
| action | Yes | Physics2D action to perform | |
| forceX | No | Force X component | |
| forceY | No | Force Y component | |
| ignore | No | Ignore collision between layers (true/false) | |
| layer1 | No | First layer name or index | |
| layer2 | No | Second layer name or index | |
| radius | No | Circle radius | |
| originX | No | Ray origin X | |
| originY | No | Ray origin Y | |
| bodyType | No | dynamic, kinematic, or static | |
| distance | No | Max ray distance | |
| gravityX | No | Gravity X component | |
| gravityY | No | Gravity Y component | |
| objectId | No | Instance ID of a GameObject | |
| forceMode | No | Force or Impulse | |
| isTrigger | No | Whether collider is a trigger (true/false) | |
| simulated | No | Whether rigidbody is simulated (true/false) | |
| objectPath | No | Hierarchy path of a GameObject | |
| colliderType | No | box, circle, capsule, polygon, or edge | |
| gravityScale | No | Gravity scale | |
| linearDamping | No | Linear damping | |
| angularDamping | No | Angular damping | |
| positionIterations | No | Position solver iterations | |
| queriesHitTriggers | No | Whether queries hit triggers (true/false) | |
| velocityIterations | No | Velocity solver iterations | |
| defaultContactOffset | No | Default contact offset | |
| queriesStartInColliders | No | Whether queries start in colliders (true/false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists actions but does not disclose behavioral traits beyond what the annotations already provide. Annotations indicate readOnlyHint=false, consistent with write actions. However, the description lacks details on side effects (e.g., permanent changes to physics settings), authorization needs, or limitations (e.g., physics engine must be enabled). With only a list of action names and one-line summaries, transparency is low.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief intro followed by a bullet list of actions. It front-loads the core purpose. While the list is long, it is necessary given the tool's complexity. Every sentence adds value; no redundancy. Slightly verbose but efficient for the scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all actions but lacks context on how to sequence them, prerequisites (e.g., existing GameObjects for adding components), or return values. Without an output schema, the description does not explain what each action returns. For a complex tool with 35 parameters, more guidance on typical usage patterns would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter has a basic description. The tool description adds no additional parameter-level detail beyond listing action options. Baseline of 3 is appropriate because the schema already provides the necessary semantics, and the description does not enhance understanding of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Manage Unity 2D Physics: rigidbodies, colliders, raycasts, joints, effectors.' clearly stating the tool's purpose and domain. It distinguishes from the sibling tool 'physics' by explicitly mentioning 2D, which is the key differentiator. The list of actions further specifies what can be done, leaving no ambiguity about the tool's scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides usage by labeling the tool as '2D Physics,' which tells an agent to use this for 2D physics tasks and likely the sibling 'physics' for 3D. However, it does not explicitly state when not to use this tool or provide direct comparisons with alternatives. The list of actions itself gives context for which action to pick based on the task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
play_modeA
Controls Unity Editor play mode: enter, exit, pause, unpause, step, or get current state
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The play mode action to perform |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies mutation (controls) consistent with annotations (readOnlyHint: false). However, it does not disclose behavioral traits beyond what annotations provide, such as whether entering play mode recompiles scripts or affects unsaved scenes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence that lists all actions efficiently. It is front-loaded with the verb 'controls' and provides a clear list. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description adequately covers the actions. It does not explain return values for 'get_state', but given the lack of output schema, this is a minor gap. Overall, it is complete enough for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the single parameter 'action' with an enum and description. The tool description repeats the enum values but adds no additional meaning beyond what the schema provides. Schema coverage is 100%, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly lists the specific actions ('enter', 'exit', 'pause', 'unpause', 'step', 'get_state') and states it controls Unity Editor play mode. It clearly distinguishes from sibling tools like 'editor_control' which likely has a broader scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'debugger', 'playtest', or 'execute_menu_item'. There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
playtestB
Autonomous playtesting: observe game state, simulate taps, click UI elements, capture screenshots, and interact with game objects during Unity play mode
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Screen X coordinate for tap action | |
| y | No | Screen Y coordinate for tap action | |
| args | No | Comma-separated method arguments for interact action | |
| col1 | No | Source column for swap_tiles action (0-based) | |
| col2 | No | Target column for swap_tiles action (0-based) | |
| name | No | UI element name for click_ui action (deep search across all canvases) | |
| row1 | No | Source row for swap_tiles action (0-based) | |
| row2 | No | Target row for swap_tiles action (0-based) | |
| text | No | Text to search for in wait_for 'text' condition | |
| end_x | No | End screen X for swipe action | |
| end_y | No | End screen Y for swipe action | |
| value | No | Value to set for Slider (float) or InputField (text) in click_ui | |
| width | No | Screenshot width in pixels (default 540) | |
| action | Yes | observe: full game state snapshot (scene, UI text, buttons, camera) | tap: simulate tap at screen coordinates (tries UI, Physics2D, Physics3D) | click_ui: click a UI element by name (Button, Toggle, Slider, InputField) | screenshot: capture camera view to PNG file | get_ui: list all active UI elements with types and state | wait_for: check if a condition is met (scene, text, object, playing, paused) | interact: call a method on a game object component via reflection | get_grid: read tile grid state (frequencies, positions, static status) for match-3 games | swap_tiles: swap two tiles by grid coordinates (col1,row1 <-> col2,row2) | swipe: simulate swipe gesture via screen coordinates (start_x,start_y -> end_x,end_y) | |
| height | No | Screenshot height in pixels (default 960) | |
| start_x | No | Start screen X for swipe action | |
| start_y | No | Start screen Y for swipe action | |
| condition | No | Condition type for wait_for: scene, text, object, playing, paused | |
| sceneName | No | Expected scene name for wait_for 'scene' condition | |
| methodName | No | Method to invoke for interact action | |
| objectName | No | GameObject name for wait_for 'object' condition | |
| objectPath | No | GameObject path for interact action (e.g. 'GameManagers') | |
| componentType | No | Component type name for interact (e.g. 'GameFlowManager') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, consistent with mutation. The description adds no extra behavioral context (e.g., side effects, error conditions); it merely lists actions already detailed in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence efficiently captures the tool's purpose and capabilities, though it could be slightly more structured or bulleted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description could explain return values or state after actions. It adequately describes the tool's scope but lacks completeness for a complex 23-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The tool description adds no further parameter details beyond the schema's per-action descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for autonomous playtesting in Unity play mode, listing core actions. It distinguishes from sibling tools like play_mode or scene management by focusing on in-play interactions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like find_gameobjects or execute_code. The description omits context for when playtesting is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prefabB
Advanced Unity prefab operations. Actions:
get_info: Get prefab status (instance/asset type, variant, overrides)
create_variant: Create a prefab variant from a base prefab
get_overrides: List property modifications, added/removed components
apply_overrides: Apply all instance overrides back to the prefab asset
revert_overrides: Revert all instance overrides
unpack: Unpack a prefab instance (outermost or completely)
open: Open prefab in prefab editing mode
close: Close prefab editing mode, return to main stage
instantiate: Instantiate a prefab into the scene with optional position/parent
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Prefab action to perform | |
| objectId | No | Instance ID of a prefab instance | |
| position | No | JSON position object for instantiate, e.g. {"x":0,"y":1,"z":0} | |
| assetPath | No | Path to the prefab asset (e.g. Assets/Prefabs/Player.prefab) | |
| completely | No | For unpack: "true" to unpack completely, "false" for outermost only | |
| objectPath | No | Hierarchy path of a prefab instance in the scene | |
| parentPath | No | Hierarchy path of parent for instantiate | |
| variantPath | No | Destination path for create_variant |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description names actions like 'apply_overrides' and 'revert_overrides', which imply mutability, but does not elaborate on side effects, permissions, or destructive potential beyond the annotation 'readOnlyHint: false'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with a clear list of actions. Every sentence serves a purpose with no unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity with 9 actions and 8 parameters, the description lacks essential mapping of required parameters per action, leaving the agent without enough context to correctly invoke sub-actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with descriptions for each parameter, so the tool description adds no additional meaning. The description merely lists actions without linking parameters to specific actions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Advanced Unity prefab operations' and lists 9 specific actions, effectively communicating the tool's purpose and distinguishing it from sibling tools like 'create_prefab' which focuses on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. The description lists actions but does not compare with siblings such as 'create_prefab' or 'update_gameobject', leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profilerCRead-only
Controls Unity's Profiler for performance analysis. Actions:
start: Begin profiling session
stop: End profiling session
get_frame_data: Get detailed frame timing data
get_memory_snapshot: Capture memory usage snapshot
get_render_stats: Get rendering statistics (draw calls, triangles, batches)
get_cpu_usage: Get CPU time breakdown by area
get_gc_allocs: Get garbage collection allocations
save_report: Save profiler data to file
clear: Clear profiler data
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Profiler action to perform | |
| sortBy | No | Sort profiler results by this metric | |
| minTime | No | Minimum time in ms to include in results (filter small items) | |
| savePath | No | File path for saving profiler report | |
| frameCount | No | Number of frames to analyze (default: 1, max: 300) | |
| profileGPU | No | Include GPU profiling data | |
| deepProfile | No | Enable deep profiling for detailed call stacks (slower) | |
| profileEditor | No | Include editor overhead in profiling | |
| memoryCategories | No | Memory categories to include in snapshot | |
| includeCallStacks | No | Include call stacks in GC allocation data |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes mutating actions (start, stop, clear) yet the annotation declares readOnlyHint: true, which is a contradiction. The description does not disclose side effects or behavioral traits beyond the annotation's implication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the purpose and a list of actions. It avoids unnecessary words but could benefit from grouping related actions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 10 parameters and no output schema, the description is insufficient. It does not explain return values, default behaviors, or how parameters interact with different actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds minimal additional meaning. It does not elaborate on parameter usage or relationships beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool controls Unity's Profiler for performance analysis, and lists specific actions (start, stop, get_frame_data, etc.), making the tool's purpose distinct from siblings like profile_xr_scene.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., profile_xr_scene for XR-specific profiling). There is no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
profile_xr_sceneBRead-only
Analyzes the current scene for XR performance issues. Checks draw calls, triangle counts, texture memory, shader complexity, and provides optimization recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| analyzeAssets | No | Analyze asset sizes and compression | |
| analyzeMemory | No | Analyze memory usage and allocations | |
| analyzePhysics | No | Analyze physics complexity | |
| analyzeScripts | No | Analyze script performance impact | |
| generateReport | No | Generate detailed report with recommendations | |
| highlightIssues | No | Highlight problematic objects in Scene view | |
| targetFrameRate | No | Target frame rate for recommendations (XREAL typical: 60-90) | |
| analyzeRendering | No | Analyze rendering performance (draw calls, batching, overdraw) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the tool is clearly read-only and safe. The description adds specific analysis areas but no additional behavioral traits (e.g., permissions, side effects, or limitations).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence that efficiently conveys purpose and scope. It is front-loaded with the core action, but the list of checks could be more structured. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 optional parameters and no output schema, the description lacks details on default behavior (all analyses run by default) and output format (just 'recommendations'). It is adequate but leaves important context unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 8 parameters with descriptions, achieving 100% coverage. The tool description does not add new information about parameters beyond the schema, so it meets the baseline but does not enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool analyzes the current scene for XR performance issues and lists specific checks. It distinguishes itself from sibling tools like 'get_xr_performance_metrics' by offering recommendations beyond raw metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., 'profiler', 'get_xr_performance_metrics'). The description implies usage for performance profiling but does not state when not to use it or provide comparative context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_settingsA
Manages Unity Project Settings including PlayerSettings, QualitySettings, GraphicsSettings, PhysicsSettings, and more. Actions: get (read settings), set (modify settings), list_categories (show available categories). Categories: player, quality, graphics, physics, time, audio, editor, input, tags_layers, preset_manager
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The action to perform | |
| filter | No | Filter settings by name pattern (supports * wildcard) | |
| category | No | Settings category to read/modify | |
| platform | No | Target platform for platform-specific settings | |
| settings | No | Key-value pairs of settings to modify | |
| qualityLevel | No | Quality level index (0-5 typically) for quality settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint: false indicates potential write operations, and the description confirms 'set (modify settings)'. However, it does not disclose possible destructive consequences of modifying settings, whether changes are reversible, or if specific permissions are required. With no further annotations, the description should provide more behavioral context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two short sentences. The first sentence states the purpose, the second lists actions and categories. No redundant information. Front-loaded with essential info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having a clear purpose and schema, the description lacks details about the output format for 'get' and 'list_categories' actions. Given no output schema, the agent does not know what shape of data to expect. Additionally, there is no mention of how to use the 'settings' parameter (key-value pairs) in the description, although the schema covers it. The description should provide more complete guidance for a tool with multiple actions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all parameters, so the baseline is 3. The description adds value by listing the actions and categories, which correspond to the 'action' and 'category' parameters, but it does not add meaning beyond what the schema already provides. The mapping is clear but not enhanced.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages Unity Project Settings, lists the exact actions (get, set, list_categories), and enumerates the supported categories (player, quality, etc.). It distinguishes itself from sibling tools which are more specific to individual features (e.g., physics, animation) by covering a broad umbrella of settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists the actions and categories, so an agent knows what operations are possible. However, it does not explicitly state when to use this tool versus more specific tools (e.g., for physics settings, should one use project_settings or the physics tool?). It provides clear context but lacks explicit exclusion criteria or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recompile_scriptsB
Recompiles all scripts in the Unity project.
| Name | Required | Description | Default |
|---|---|---|---|
| logsLimit | No | Maximum number of compilation logs to return | |
| returnWithLogs | No | Whether to return compilation logs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, signaling a write operation. The description confirms it triggers recompilation, but does not elaborate on potential side effects like blocking, error messages, or changes to the project state. It adds minimal value beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that is concise and front-loaded. However, it could be slightly more informative without sacrificing brevity, e.g., by mentioning that recompilation may take time.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 optional parameters, no output schema), the description covers the basic action. However, it lacks important context such as the duration of recompilation, that it forces a full rebuild, or how logs are structured when returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters 'logsLimit' and 'returnWithLogs' are already documented. The description adds no additional meaning or context for these parameters, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the verb 'Recompiles' and the resource 'all scripts in the Unity project', clearly identifying the tool's action and scope. It distinguishes from sibling tools like 'execute_code' or 'execute_menu_item' by directly addressing script recompilation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, expected outcomes, or scenarios where other tools (e.g., 'execute_menu_item') might be more appropriate for triggering compilation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_serverA
Rebuild TypeScript and restart the MCP server to pick up code changes. Use after modifying TS tools, C# handlers, or prompts. The server will exit and be auto-restarted by the host (Claude Code).
| Name | Required | Description | Default |
|---|---|---|---|
| rebuild | No | Run npm build before restarting (default: true) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description discloses that server will exit and be auto-restarted by the host. This is key behavioral information. Could mention potential brief downtime, but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. Every sentence adds value: purpose, usage context, side effect. Front-loaded with most critical info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple restart tool with one optional parameter and no output schema, description covers purpose, when to use, and behavioral effect. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (one boolean parameter). Description adds no extra meaning beyond 'Run npm build before restarting (default: true)', which matches schema description. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (rebuild and restart), resource (MCP server), and purpose (pick up code changes). Distinct from sibling Unity tools, which are all scene/asset/editor operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use after modifying TS tools, C# handlers, or prompts.' This provides clear context. Doesn't mention when not to use or alternatives, but siblings are unrelated so it's sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_testsC
Runs Unity's Test Runner tests
| Name | Required | Description | Default |
|---|---|---|---|
| testMode | No | The test mode to run (EditMode or PlayMode) - defaults to EditMode (optional) | EditMode |
| testFilter | No | The specific test filter to run (e.g. specific test name or class name, must include namespace) (optional) | |
| returnWithLogs | No | Whether to return the test logs in the results (optional) | |
| returnOnlyFailures | No | Whether to show only failed tests in the results (optional) |
Output Schema
| Name | Required | Description |
|---|---|---|
| message | No | Human-readable summary or error |
| results | No | Per-test results |
| success | No | Whether the test run completed |
| failCount | No | Number of failing tests |
| passCount | No | Number of passing tests |
| skipCount | No | Number of skipped tests |
| testCount | No | Total tests executed |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so the tool is expected to mutate state. The description 'runs tests' implies execution but provides no additional behavioral context such as side effects (modification of project files), resource consumption, or output format. Beyond the annotations, the description adds minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, making it very concise and front-loaded. It contains no unnecessary words. However, it could be slightly longer to include key context (e.g., test modes) without losing conciseness. The sentence earns its place but could be more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 optional parameters, output schema exists), the description is too sparse. It does not mention that it runs in the Unity Editor, requires a test setup, or that logs and failure details are configurable via parameters. The output schema exists but the description doesn't complement it. A more complete description would help agents understand the tool's scope and usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each of the 4 parameters (testMode, testFilter, returnWithLogs, returnOnlyFailures) having a functional description. The tool description repeats no parameter details and adds no extra meaning. According to rubric, baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Runs Unity's Test Runner tests' clearly states the verb ('runs') and the resource ('Unity's Test Runner tests'), making the basic function understandable. However, it does not distinguish this tool from sibling tools like 'playtest' or 'execute_code', which could also involve running tests. The description lacks specificity about test modes or filters, which are covered only in the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of when to use it (e.g., for unit tests vs. integration tests), when not to use it, or any prerequisites. Siblings like 'playtest' exist, but the description offers no comparison or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scriptable_objectB
Manage Unity ScriptableObjects. Actions:
create: Create a new ScriptableObject asset
get_properties: Inspect all serialized properties
set_property: Set a serialized property value
list: List ScriptableObjects in a folder
find_by_type: Find all assets of a specific SO type
duplicate: Duplicate a ScriptableObject asset
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ScriptableObject action to perform | |
| folder | No | Folder to search in (default: Assets) | |
| destPath | No | Destination path for duplicate | |
| typeName | No | Full or short type name of the ScriptableObject class | |
| assetPath | No | Path to the ScriptableObject asset | |
| propertyName | No | Name of the serialized property | |
| propertyValue | No | Value to set |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, and the description lists mutating actions (create, duplicate, set_property), but lacks additional behavioral details like permission requirements, side effects, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with a clear introductory sentence followed by a list of actions; it is efficient but could be slightly more structured (e.g., grouping actions).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main actions but lacks comprehensive context for each action's behavior, return values, or edge cases; no output schema, so more detail would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already documented. The description adds no extra semantics or examples beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages Unity ScriptableObjects and lists specific actions (create, get_properties, etc.), distinguishing it from generic asset or script management tools like 'manage_asset' or 'script_management'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives; it does not mention when not to use it or provide context for selecting among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
script_managementB
Manages Unity scripting configuration including:
Scripting Define Symbols (#define directives)
Assembly Definitions (asmdef files)
Script Execution Order
Script compilation state Actions: get_defines, set_defines, add_define, remove_define, get_assemblies, create_assembly, get_execution_order, set_execution_order, get_compilation_state
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The script management action to perform | |
| define | No | Single define symbol for add_define/remove_define | |
| defines | No | Array of define symbols for set_defines | |
| platform | No | Target platform for define symbols (defaults to active build target) | |
| assemblyName | No | Name for the assembly definition | |
| assemblyPath | No | Path for the assembly definition file | |
| executionOrder | No | Script execution order entries | |
| assemblySettings | No | Settings for assembly definition |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With only readOnlyHint=false in annotations, the description fails to disclose behavioral traits such as destructive side effects, permission requirements, or whether actions trigger recompilation, leaving significant gaps for safe agent decision-making.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear verb phrase, bulleted categories, and action list, but it could be more concise by avoiding redundant listing of actions already in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with 8 parameters, no output schema, and diverse actions, the description lacks critical context such as return format for get actions, required parameter combinations per action, and behavioral nuances like platform defaults.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions, so the description adds no additional meaning beyond the schema. Baseline of 3 is appropriate as it neither harms nor helps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it manages Unity scripting configuration and lists specific categories (define symbols, assembly definitions, execution order, compilation state) and actions, clearly distinguishing from sibling tools like execute_code and recompile_scripts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through listing actions but does not provide explicit when-to-use or when-not-to-use guidance, nor does it differentiate from similar tools like recompile_scripts or scriptable_object.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_unity_knowledgeARead-onlyIdempotent
Search the Unity knowledge base for relevant documentation and assets.
Args: query: The search query string to find relevant Unity knowledge. filter_source: Optional filter to limit results by source type. Valid values: 'api', 'manual', 'local_asset', 'reach_ui'. If not provided, searches all sources.
Returns: Formatted string containing relevant search results with source info.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query string to find relevant Unity knowledge | |
| filter_source | No | Optional filter to limit results by source type. Valid values: 'api', 'manual', 'local_asset', 'reach_ui' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint. The description adds that the tool returns a formatted string with source info, providing behavioral context beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear purpose sentence followed by structured Args and Returns sections. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the function, parameters, and return format. Given the presence of annotations and the absence of an output schema, it provides sufficient context. Minor improvement could be noting result ordering or pagination, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions identical to the tool description. The description adds no new meaning beyond what the schema provides, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the Unity knowledge base for documentation and assets, with a specific verb and resource. It is distinct from sibling tools, which are mostly action-oriented like creating or modifying scene objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through parameter documentation (e.g., optional filter) but does not explicitly state when to use this tool versus alternatives or when not to use it. No specific exclusions or alternative tool references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_gameobjectAIdempotent
Sets the selected GameObject in the Unity editor by path, name or instance ID
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | No | The instance ID of the GameObject to select | |
| objectName | No | The name of the GameObject to select | |
| objectPath | No | The path or name of the GameObject to select (e.g. "Main Camera") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and readOnlyHint=false, so the description adds no additional behavioral context beyond confirming the mutation. The description does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, complete sentence that efficiently conveys the tool's action without unnecessary words. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, the description is sufficient. It lacks any mention of return value, but that is acceptable since no output schema exists and the action is inherently a set operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters are fully described in the schema. The description merely echoes that selection is by path, name, or instance ID, adding no extra syntax or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets the selected GameObject in the Unity editor using path, name, or instance ID. It is a specific verb-resource pair that distinguishes it from sibling tools like get_gameobject or delete_gameobject.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as get_gameobject or update_gameobject. The agent receives no context about prerequisites or situations where this tool should be chosen over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_console_logB
Sends console log messages to the Unity console
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | The type of message (info, warning, error) - defaults to info (optional) | |
| message | Yes | The message to display in the Unity console |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, matching the description's 'Sends' action. The description adds no further behavioral details (e.g., side effects, rate limits, or confirmation). With annotations already covering the write nature, a score of 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence with no unnecessary words. Every word adds value, and it front-loads the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no output schema, 2 params), the description is mostly complete. It captures the purpose and the schema handles parameter details. The only minor gap is the lack of explicit mention of Unity console, but it's implied by the name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both parameters adequately described in the schema. The tool description adds no additional meaning beyond the schema, so baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Sends' and resource 'console log messages', making the tool's purpose clear. However, it does not explicitly differentiate from sibling tools like get_console_logs, though the name and context imply it's for sending.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like get_console_logs or watch_console. The description does not mention prerequisites, typical use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_render_modeB
Sets the rendering mode for the XREAL experience. VR mode renders only virtual content, AR mode overlays on passthrough, MR mode enables full mixed reality with occlusion.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Rendering mode: VR (virtual only), AR (overlay), MR (full mixed reality) | |
| occlusionMode | No | Occlusion quality mode | EnvironmentDepth |
| backgroundType | No | Background rendering type | Passthrough |
| backgroundColor | No | Background color when using solid color (hex) | #000000 |
| enableOcclusion | No | Enable real-world occlusion of virtual objects (MR mode) | |
| stereoRenderingMode | No | Stereo rendering mode for performance | SinglePassInstanced |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate destructive mutation (readOnlyHint=false). The description adds context by explaining each rendering mode's visual behavior, but does not disclose side effects on occlusion, background, or other settings when changing modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core purpose. It is efficient with no filler, though it could be slightly more structured (e.g., bullet points) for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters (1 required), the description covers only the mode parameter. The interplay of occlusionMode, backgroundType, etc., is not explained. Schema covers definitions, but behavioral interactions are missing, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good enum descriptions. The description adds no new parameter details beyond the main 'mode' enumeration; it merely restates what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets rendering mode for XREAL and briefly explains VR, AR, MR. It distinguishes the main function from sibling tools like configure_passthrough or set_tracking_mode, but does not explicitly differentiate itself beyond the mode focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool vs alternatives, nor any prerequisites or exclusions. It only states the modes, leaving the agent to infer context from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_tracking_modeA
Sets the tracking mode for the XREAL glasses. 0DoF provides rotation only, 3DoF adds positional tracking relative to start, and 6DoF provides full positional and rotational tracking.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | Yes | Tracking mode to set | |
| trackingOrigin | No | Tracking origin reference point | Device |
| recenterOnSwitch | No | Recenter the tracking origin when switching modes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate write operation (readOnlyHint=false) and dynamic environment (openWorldHint=true). Description confirms mutation but adds no additional behavioral context beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. First sentence states purpose, second explains modes. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the primary purpose and mode meanings. No output schema exists, but for a setter this is acceptable. Could mention return values or side effects, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%. Description adds meaning by explaining the implications of each tracking mode (e.g., 'rotation only'), which goes beyond the schema's enum descriptions. However, 'trackingOrigin' and 'recenterOnSwitch' are not explained in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Sets' and the resource 'tracking mode for the XREAL glasses', and explains each mode value. It distinguishes from sibling tools like 'set_render_mode' by focusing on tracking modes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains what each mode does (0DoF, 3DoF, 6DoF) but does not explicitly state when to use this tool versus alternatives or mention prerequisites like device connection. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_xreal_projectA
Sets up a Unity project for XREAL One Pro development. Configures Android build target, XR Plugin Management, and imports NRSDK. This is the first step for any new XREAL mixed reality project.
| Name | Required | Description | Default |
|---|---|---|---|
| companyName | No | Optional company name for the bundle identifier | |
| packageName | No | Custom package name (e.g., com.company.app). If not provided, will be generated from company and project names | |
| projectName | No | Optional project name to set in Player Settings | |
| nrsdkVersion | No | NRSDK version to import (default: latest). Examples: "2.2.0", "2.1.0" | |
| targetDevices | No | Target XREAL devices to support | |
| enableHandTracking | No | Enable hand tracking support in NRSDK configuration | |
| enableImageTracking | No | Enable image tracking support | |
| enablePlaneDetection | No | Enable plane detection for spatial mapping |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the description's job is to add behavioral context. It does so by listing the configuration steps (Android build target, XR Plugin Management, NRSDK import). However, it does not mention whether the tool overwrites existing settings or is idempotent, but this is acceptable for a setup tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. The key action and usage are front-loaded. Every sentence adds necessary context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 optional parameters and no output schema, the description explains the overall purpose and steps. It could benefit from mentioning the result (e.g., modifies the current project), but it is still reasonably complete for a setup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description, so baseline is 3. The description does not add parameter-specific semantics beyond the schema; it names the high-level steps but does not map them to the individual parameters. No extra value beyond the schema is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Sets up'), identifies the resource ('Unity project for XREAL One Pro development'), and lists key actions (configure Android build, XR Plugin Management, import NRSDK). It distinguishes itself from siblings like import_nrsdk by being a broader setup tool and explicitly stating it's the first step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'This is the first step for any new XREAL mixed reality project,' which tells the agent when to use it. It does not list when not to use or name alternatives, but the context is clear enough given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_xr_interactionB
Sets up the XR Interaction Toolkit for XREAL development. Configures interaction systems, input actions, and default interactors for hand-based or controller-based interaction.
| Name | Required | Description | Default |
|---|---|---|---|
| installXRIT | No | Install XR Interaction Toolkit package if not present | |
| xritVersion | No | Specific XR Interaction Toolkit version (defaults to latest compatible) | |
| enableSnapTurn | No | Enable snap turn rotation | |
| hapticFeedback | No | Enable haptic feedback for interactions | |
| interactionMode | No | Primary interaction mode | HandTracking |
| createInputActions | No | Create default XR input action mappings | |
| locomotionProvider | No | Locomotion system to configure | None |
| enableTeleportation | No | Enable teleportation locomotion system | |
| setupDefaultInteractors | No | Add default ray and direct interactors |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies state changes (installation, configuration) matching the readOnlyHint=false annotation. However, it does not detail potential side effects like overwriting existing configurations or dependency requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, clear and free of fluff. Could benefit from bullet points but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Does not explain return values, success indicators, or expected outcomes. Missing context about how this tool relates to sibling tools like setup_xreal_project or enable_hand_tracking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter described. The tool's description adds no further insight into parameter usage or relationships beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets up the XR Interaction Toolkit and configures interaction systems, input actions, and interactors. It is specific about the resource and actions, though it does not explicitly differentiate from sibling tools like configure_hand_gestures.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, such as configure_hand_gestures or enable_hand_tracking. No prerequisites or context about the setup order are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spriteA
Manage Unity Sprites and SpriteAtlases. Actions:
get_info: Get sprite import settings and sub-sprites
list: List sprite assets in a folder
set_import_settings: Configure texture type, pixels per unit, filter, compression
slice: Slice a sprite sheet into multiple sprites (grid mode)
get_sprite_renderers: List all SpriteRenderer components in scene
set_sprite: Set the sprite on a SpriteRenderer
get_atlases: List SpriteAtlas assets
create_atlas: Create a new SpriteAtlas
add_to_atlas: Add sprites/folders to a SpriteAtlas
pack_atlas: Pack a SpriteAtlas for the active build target
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | Alpha (0-1) | |
| b | No | Blue (0-1) | |
| g | No | Green (0-1) | |
| r | No | Red (0-1) | |
| action | Yes | Sprite action to perform | |
| folder | No | Folder to search (default: Assets) | |
| offsetX | No | Grid offset X | |
| offsetY | No | Grid offset Y | |
| padding | No | Atlas padding in pixels | |
| objectId | No | Instance ID of a GameObject | |
| paddingX | No | Grid padding X | |
| paddingY | No | Grid padding Y | |
| assetPath | No | Path to the sprite/texture asset | |
| atlasPath | No | Path to a SpriteAtlas asset | |
| cellWidth | No | Grid cell width in pixels | |
| sliceMode | No | Slice mode: grid | |
| cellHeight | No | Grid cell height in pixels | |
| filterMode | No | point, bilinear, or trilinear | |
| objectPath | No | Hierarchy path of a GameObject with SpriteRenderer | |
| spriteMode | No | single, multiple, or polygon | |
| spritePath | No | Path to a sprite asset to assign | |
| compression | No | none, low, normal, or high | |
| spritePaths | No | Comma-separated sprite paths to add to atlas | |
| textureType | No | sprite or default | |
| pixelsPerUnit | No | Pixels per unit | |
| enableRotation | No | Allow rotation in atlas packing | |
| maxTextureSize | No | Max texture size (e.g. 1024, 2048) | |
| enableTightPacking | No | Enable tight packing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists both read actions (get_info, list) and write actions (set_import_settings, create_atlas, etc.), which aligns with the annotation readOnlyHint=false. However, it does not disclose potential side effects (e.g., destructive slicing, permanent atlas packing) or prerequisites (e.g., asset existence). The behavioral traits are implied but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence followed by a bulleted list of actions. It is front-loaded with the purpose. While the list is long, it efficiently conveys all capabilities without unnecessary words. A minor improvement would be to group read and write actions, but overall it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (28 parameters, no output schema, 10 actions), the description is incomplete. It does not explain return values for any action, nor does it provide workflow examples or context on when each action is appropriate. The list of actions alone is insufficient for an agent to understand usage patterns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage (all 28 parameters have descriptions), so the schema alone provides parameter meaning. The tool description adds no extra parameter details—it only lists actions, which correspond to the action enum already in the schema. Thus it meets the baseline expectation but adds no additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Manage Unity Sprites and SpriteAtlases.' It then lists ten specific actions covering read and write operations, which leaves no ambiguity about what the tool does. It distinguishes itself from sibling tools by being the only sprite-focused tool among many.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly defines usage by listing all sprite-related actions, suggesting the tool is for any sprite or atlas operation. However, it provides no explicit guidance on when to use this tool versus alternatives like 'asset_import' for texture imports, nor does it specify when not to use it (e.g., for non-sprite textures).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
terrainA
Manage Unity Terrains. Actions:
create: Create a new terrain with specified size and resolution
get_info: Get terrain details (size, resolution, layers, trees, details)
set_height: Set terrain height at a world position with brush radius
get_height: Sample terrain height at a world position
flatten: Flatten entire terrain to a uniform height
set_detail: Paint detail/grass density at a position
paint_texture: Paint a terrain layer/texture at a position
add_tree: Add a tree instance at a normalized (0-1) position
get_layers: List all terrain layers (textures)
add_layer: Add a new terrain layer from a texture asset
set_settings: Modify terrain rendering settings
list: List all terrains in the scene
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | World X position or detail/alphamap X coordinate | |
| z | No | World Z position or detail/alphamap Z coordinate | |
| layer | No | Terrain layer index or detail layer index | |
| scale | No | Tree scale | |
| width | No | Terrain width (create) | |
| action | Yes | Terrain action to perform | |
| height | No | Terrain height / max elevation (create/set_height/flatten) | |
| length | No | Terrain length (create) | |
| radius | No | Brush radius | |
| density | No | Detail density value | |
| strength | No | Paint strength 0-1 | |
| tileSize | No | Texture tile size for add_layer | |
| assetPath | No | Path to save terrain data asset | |
| layerPath | No | Path to save the TerrainLayer asset | |
| terrainId | No | Instance ID of the terrain | |
| terrainName | No | Name of the terrain GameObject | |
| texturePath | No | Texture asset path for add_layer | |
| treeDistance | No | Max tree rendering distance | |
| drawHeightmap | No | Enable/disable heightmap rendering | |
| prototypeIndex | No | Tree prototype index | |
| basemapDistance | No | Distance for basemap rendering | |
| drawTreesAndFoliage | No | Enable/disable trees and foliage | |
| heightmapPixelError | No | Heightmap pixel error for LOD | |
| heightmapResolution | No | Heightmap resolution (create, power of 2 + 1) | |
| detailObjectDistance | No | Max detail object distance | |
| treeBillboardDistance | No | Distance to switch trees to billboards |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Each action has a one-line description that indicates its effect (e.g., 'flatten' says it flattens to uniform height). The readOnlyHint annotation is false, consistent with the mutating actions. However, deeper behavioral details (e.g., performance, undo support) are absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single introductory line followed by a bullet list of actions. Every sentence provides useful information with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (26 parameters, 12 actions), the description lacks explicit mapping of parameters to actions. The schema partially compensates by noting which action a parameter applies to (e.g., 'width (create)'), but the description could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema describes each parameter. The description adds no additional parameter semantics; it only lists actions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manage Unity Terrains' and lists 12 specific actions, each with a brief explanation. It distinguishes this tool from siblings as the only terrain-related tool among many.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives, but since no sibling tool handles terrain, usage is implied. There is no guidance on which action to choose or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tilemapA
Manage Unity Tilemaps for 2D level design. Actions:
create: Create a new Tilemap under a Grid (creates Grid if needed)
get_info: Get tilemap details (bounds, tile count, orientation)
set_tile: Place a tile at a cell position
erase_tile: Remove a tile at a cell position
fill_area: Fill a rectangular area with a tile
clear: Remove all tiles from a tilemap
get_tile: Inspect what tile is at a cell position
get_bounds: Get the used cell bounds
list: List all tilemaps in the scene
list_tiles: List TileBase assets in a folder
create_tile: Create a Tile asset from a sprite
set_color: Set the color tint of a tile at a position
compress_bounds: Compress tilemap bounds to remove empty space
| Name | Required | Description | Default |
|---|---|---|---|
| a | No | Alpha color component (0-1) | |
| b | No | Blue color component (0-1) | |
| g | No | Green color component (0-1) | |
| r | No | Red color component (0-1) | |
| x | No | Cell X position | |
| y | No | Cell Y position | |
| endX | No | Fill area end X | |
| endY | No | Fill area end Y | |
| name | No | Name for new tilemap (create) | |
| color | No | Color JSON for create_tile: {"r":1,"g":1,"b":1,"a":1} | |
| action | Yes | Tilemap action to perform | |
| folder | No | Folder to search for tiles (default: Assets) | |
| startX | No | Fill area start X | |
| startY | No | Fill area start Y | |
| tilePath | No | Asset path to a TileBase or Tile | |
| tilemapId | No | Instance ID of the Tilemap | |
| parentPath | No | Parent Grid path (create) | |
| spritePath | No | Sprite path for create_tile | |
| tilemapName | No | Name of the Tilemap GameObject | |
| sortingOrder | No | Sorting order (create) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, and the description lists both read and write actions, disclosing mutability. No contradictions with annotations. However, it does not explicitly state which actions are destructive or their side effects beyond the brief action descriptions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description opens with a clear one-line purpose, followed by a structured list of actions. While the list is somewhat lengthy, it is well-organized and front-loaded. Each action description is concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (20 parameters, 13 actions) and lack of output schema, the description provides only high-level action summaries. It does not specify parameter requirements per action or return values, leaving gaps for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The description adds context by grouping parameters under actions, but does not explain parameter relationships or provide additional meaning beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Manage Unity Tilemaps for 2D level design' and enumerates 13 specific actions, making the tool's purpose unambiguous. It distinguishes itself from sibling tools, none of which target tilemaps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for tilemap operations but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusion criteria. The sibling list is diverse, so the tool is clearly specialized, but no usage context is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undo_redoA
Controls Unity's Undo/Redo system. Actions:
undo: Perform undo operation
redo: Perform redo operation
get_history: Get undo/redo history stack
clear: Clear all undo history
begin_group: Begin an undo group (combine multiple operations)
end_group: End an undo group
set_group_name: Set name for current undo group
record_object: Record object state for undo
flush: Flush all recorded operations
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Undo/Redo action to perform | |
| objectId | No | Instance ID of object to record | |
| groupName | No | Name for undo group | |
| objectPath | No | Path of object to record | |
| historyLimit | No | Maximum number of history items to return (default: 20) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description enumerates actions that modify state (undo, redo, clear, record_object, flush) and a read-only action (get_history), going beyond the annotation readOnlyHint=false. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately sized with a clear bulleted list of actions. It could be more concise by grouping similar actions, but it is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has multiple actions and no output schema, the description covers each action's purpose adequately. It provides enough context for an agent to understand the tool's capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema adequately describes parameters. The description adds no additional meaning beyond the action list. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool controls Unity's Undo/Redo system, listing all supported actions. This verb+resource description distinguishes it from sibling tools like animation or play_mode.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of when to prefer undo_redo over other tools that might affect scene state.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unity_hubA
Controls Unity Hub to create projects, manage installations, and open projects. This tool works INDEPENDENTLY of the Unity Editor connection. Editor installs use the Unity Hub CLI; project creation and template listing use the installed Editor and its bundled templates directly (the Hub CLI has no create/templates subcommands).
Actions:
create_project: Create a new Unity project
open_project: Open an existing project in Unity Editor
list_projects: List recent projects from Unity Hub
list_installations: List installed Unity Editor versions
install_editor: Install a Unity Editor version
add_module: Add a module to an installed editor (Android, iOS, WebGL, etc.)
list_templates: List available project templates
get_hub_path: Get the Unity Hub installation path
Note: Unity Hub must be installed. Default paths:
Windows: C:\Program Files\Unity Hub\Unity Hub.exe
macOS: /Applications/Unity Hub.app/Contents/MacOS/Unity Hub
Linux: ~/Unity Hub/UnityHub.AppImage
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Unity Hub action to perform | |
| hubPath | No | Custom path to Unity Hub executable (auto-detected if not provided) | |
| modules | No | Modules to install with editor or add to existing | |
| template | No | Project template (e.g., "com.unity.template.3d", "com.unity.template.urp-blank") | |
| projectName | No | Name for the new project (used with projectPath parent directory) | |
| projectPath | No | Full path for the new/existing project | |
| waitForExit | No | Wait for Unity Editor to exit after opening project (default: false) | |
| editorVersion | No | Unity Editor version (e.g., "2022.3.20f1", "6000.0.0f1") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and openWorldHint=true. The description adds behavioral context: it states that editor installs use the Hub CLI while project creation uses the installed Editor directly. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with a clear overview, bullet-list of actions, and default paths note. It is concise without unnecessary repetition, though slightly verbose in listing actions that are already in the schema enum.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, multiple actions) and lack of output schema, the description covers the high-level functionality and action types. However, it does not describe return values or error conditions, which would enhance completeness for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 8 parameters described. The description adds marginal value beyond the schema, such as noting that projectPath is used with projectName for project creation, but does not provide additional semantic depth for most parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool controls Unity Hub for project creation, installation management, and project opening. It lists all 8 actions explicitly, distinguishing it from sibling tools like editor_control which deal with the Unity Editor itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description explains that the tool works independently of the Unity Editor connection and notes default installation paths. However, it does not explicitly state when to use this tool versus alternatives like editor_control or file_operations, though the context makes it reasonably clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_componentA
Updates component fields on a GameObject or adds it to the GameObject if it does not contain the component
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | No | The instance ID of the GameObject to update | |
| objectPath | No | The path of the GameObject in the hierarchy to update (alternative to instanceId) | |
| componentData | No | An object containing the fields to update on the component (optional) | |
| componentName | Yes | The name of the component to update or add |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate mutation (readOnlyHint=false). Description adds value by explaining the add-if-missing behavior, which is a key behavioral trait not inferred from annotations. Discloses that the tool may create a component, which is important for agent understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise, informative, and front-loaded. No unnecessary words. Every part contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and description does not hint at return value (e.g., success/error, updated component). With a nested object parameter (componentData), more guidance on expected structure would improve completeness. Overall adequate for basic use but leaves some gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. Description does not add detailed semantics beyond schema, but effectively summarizes the overall purpose. For componentData, schema defines it as an object, but description offers no additional guidance on structure or constraints. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it updates component fields or adds the component if missing. Specific verb 'updates' and resource 'component on a GameObject' with clear dual behavior. Distinguishes from sibling tools like update_gameobject that handle other properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like update_gameobject or delete_gameobject. Does not indicate scenarios where adding is preferred over updating, nor how to choose between instanceId and objectPath. Usage is implied but not clearly delineated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_gameobjectA
Updates properties of a GameObject in the Unity scene by its instance ID or path. If the GameObject does not exist at the specified path, it will be created.
| Name | Required | Description | Default |
|---|---|---|---|
| instanceId | No | The instance ID of the GameObject to update | |
| objectPath | No | The path of the GameObject in the hierarchy to update (alternative to instanceId) | |
| gameObjectData | Yes | An object containing the fields to update on the GameObject (name, tag, layer, activeSelf, isStatic). If the GameObject does not exist at objectPath, it will be created. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds the creation behavior (if GameObject missing), which is good. However, it does not disclose side effects, error handling, or behavior when both instanceId and objectPath are provided. Annotations indicate non-read-only, but the description carries most of the burden.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no filler. The key information (verb, resource, alternative identifiers, creation behavior) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters and no output schema, the description covers basic purpose and creation nuance but omits return value, error conditions, and behavior for missing instanceId. It is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter already has a description. The description adds context about creation tied to objectPath, but does not further clarify the relationship between instanceId and objectPath or the structure of gameObjectData.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool updates GameObject properties via instance ID or path, and includes the notable creation behavior. This distinguishes it from sibling tools like get_gameobject, delete_gameobject, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool vs alternatives like get_gameobject or delete_gameobject. It does not mention prerequisites, when-not to use, or alternative approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_xreal_setupARead-only
Validates the Unity project configuration for XREAL development. Checks NRSDK installation, Android build settings, XR Plugin Management, required permissions, and reports any issues that need to be fixed.
| Name | Required | Description | Default |
|---|---|---|---|
| autoFix | No | Attempt to automatically fix any issues found | |
| checkNrsdk | No | Validate NRSDK is properly installed | |
| checkSceneSetup | No | Validate current scene has required XREAL components | |
| checkPermissions | No | Validate required Android permissions are set | |
| checkAndroidSettings | No | Validate Android build configuration | |
| checkXrPluginManagement | No | Validate XR Plugin Management settings |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description confirms read-only behavior by stating 'validates' and 'reports issues'. No contradictions. Description adds context about what is checked beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states overall purpose, second enumerates checks. No redundant information. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's function but does not specify the output format or what 'reports issues' means (e.g., list of strings, success/failure). Given no output schema, the description could be more explicit about return value structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all parameters described. The description lists checks but does not add new information beyond the schema's parameter descriptions. Baseline 3 is appropriate since schema already provides full semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates Unity project configuration for XREAL development and lists specific checks (NRSDK, Android settings, XR Plugin Management, permissions). It distinguishes from sibling tools like setup_xreal_project or build_xreal_apk.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking configuration before development or deployment, but does not explicitly mention when not to use or alternative tools. However, the purpose is clear enough for an agent to infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
watch_consoleARead-only
Monitors the Unity console for new logs with filtering and waiting capabilities. Perfect for recursive iteration - wait for specific messages, errors, or compilation results. Actions:
wait_for_message: Block until a message matching pattern appears (with timeout)
wait_for_error: Block until an error occurs (with timeout)
wait_for_silence: Block until no new logs for specified duration
wait_for_compilation: Block until scripts finish compiling
wait_for_play_mode: Block until play mode state changes
get_new_logs: Get logs since last check (uses internal cursor)
reset_cursor: Reset the log cursor to current position
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Watch action to perform | |
| logType | No | Type of logs to watch (default: all) | |
| maxLogs | No | Maximum number of logs to return (default: 100) | |
| pattern | No | Regex pattern to match in log messages | |
| timeout | No | Maximum time to wait in milliseconds (default: 30000, max: 300000) | |
| targetState | No | Target play mode state to wait for | |
| silenceDuration | No | Duration of silence to wait for in milliseconds (default: 1000) | |
| includeStackTrace | No | Include stack traces in returned logs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and the description adds important behavioral details such as 'Block until' for wait actions, timeouts, and internal cursor management. This fully informs the agent about blocking behavior and statefulness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, starts with the main purpose, and uses a bullet list for actions. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, multiple actions), the description provides a good overview of capabilities and behaviors. However, it lacks details about return value format (e.g., structure of log entries) and error handling, leaving some gaps despite no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description briefly restates actions but does not add significant semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it monitors the Unity console for new logs with filtering and waiting capabilities, listing specific actions. It distinguishes itself from sibling tools like get_console_logs by focusing on waiting and iterative log checking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly mentions 'Perfect for recursive iteration' and lists use cases like waiting for messages, errors, or compilation results. However, it does not provide explicit when-not-to-use guidance or compare to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
With 84 tools, many have overlapping purposes, such as multiple tools for adding objects (add_asset_to_scene, create_prefab, instantiate) and multiple ways to execute code (execute_code, call_static_method). Descriptions are detailed but the high number of tools with similar functions causes confusion.
Tool names follow inconsistent patterns: some use verb_noun (add_asset_to_scene), others are simple nouns (animation, debugger), and some are verb-only (execute_code). Mixing of patterns and lack of a predictable scheme reduces coherence.
84 tools is excessively high for a single MCP server. While the server covers a broad Unity domain, the count makes navigation difficult and suggests many tools could be combined or eliminated. A more focused scope would improve usability.
The server covers many Unity areas (XR, animation, physics, terrain, etc.), but has notable gaps like missing standard UI tools (non-XR canvas, buttons) and lack of direct GameObject hierarchy management. It is comprehensive in XR but incomplete for general Unity workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Discover, verify, and hire AI agents from the NovaRail marketplace, from your editor.
Build, validate, and deploy multi-agent AI solutions from any AI environment.
Discover AI tools for game development — 100+ tools indexed by engine, task, and pricing.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to interact with Unity projects through multimodal vision, code analysis, asset management, and scene manipulation. Supports real-time Unity editor control, project search, script creation, and visual debugging through screenshots.33MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to interact with Unity Editor through the Model Context Protocol, allowing natural language control of Unity projects including scene manipulation, GameObject creation, component updates, package management, and test execution.
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to interact with Unity Editor projects through 68+ tools for manipulating scenes, GameObjects, components, and assets, plus live access to console logs, hierarchies, and test results.179MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Unity Editor, managing scenes, game objects, animations, materials, scripts, and more via natural language commands.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/joel-wehr/unity-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server