o3de-mcp
o3de-mcp is an MCP server that lets AI assistants automate Open 3D Engine (O3DE) — controlling the editor, managing projects/builds, and inspecting engine internals through 66 tools.
Capability detection: Check editor connectivity, CLI availability, and dynamically discovered tool categories before acting.
Editor automation: Run arbitrary Python in the editor via azlmbr; list/create/delete/duplicate entities; add/remove/get/set components and properties; assign assets; get/set transforms; reparent entities.
Scene tools: Get full scene snapshots, entity trees, and scene validation served natively by the AiCompanion gem.
Level & prefab management: Create/load/save/list levels; create and instantiate prefabs; enter/exit game mode; undo/redo.
Viewport & camera control: Get/set viewport camera, focus entities, capture screenshots (with fallback paths).
Console & CVARs: Run console commands, get and set console variables.
Persistent Python sessions: Begin/end sessions, execute code with state kept alive, list session variables.
Engine introspection: Discover EBus schemas statically or live from the editor; trigger RenderDoc frame captures.
Project & build management: Discover/register/select engines; list projects, gems, templates; create projects and gems; register/enable/disable gems; edit project properties; build via CMake (blocking or background with status polling); export projects.
Asset pipeline: Check Asset Processor status, refresh assets, wait for processing; tail editor/AP logs and extract errors.
Click on "Deploy 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., "@o3de-mcplist registered projects"
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.
o3de-mcp
Automate Open 3D Engine (O3DE) with AI, an MCP server for editor control, project & build management.
See the architecture documentation for a detailed system diagram and communication flow.
Features
66 tools across five categories. See docs/tool-reference.md for every parameter.
Capability Detection (1 tool):
get_capabilities: check editor connectivity, whether the AiCompanion gem's AgentServer is answering (with its gem, API and protocol versions), and CLI availability before using other toolsDynamic tool discovery: new tools are automatically reported
Editor Automation (40 tools, requires a running O3DE Editor with the AiCompanion + EditorPythonBindings gems):
Execute arbitrary Python scripts inside the editor (
azlmbrAPI)Scene snapshot, entity tree and scene validation served natively by the AiCompanion gem's C++ (
get_scene_snapshot/get_entity_tree/validate_scene), no editor Python involved, available even in the gem's secure modeList, create, delete, and duplicate entities; reparent with
set_parentAdd and remove components, get/set component properties, assign assets by path
Get and set transforms
Create, save, and instantiate prefabs
Create, load, save, and query levels
Viewport camera control, entity focus, and screenshot capture
Run console commands, get/set CVARs
Enter/exit game mode, undo/redo
Persistent scripting sessions (
begin_session/exec_in_session/get_session_vars/end_session) that keep Python state alive across callsFast-fail when editor is unreachable (avoids repeated timeouts)
Engine Introspection (3 tools):
EBus schema discovery, both from generated
azlmbrstubs and live from the editorRenderDoc frame capture
Project & Build Management (17 tools, CLI-based, no editor required):
Discover local O3DE engine installations (multi-engine support), register engines, select the active one
List registered projects, gems, and available templates
Create projects and gems from templates
Register, enable, and disable gems
Edit project properties
Build projects via CMake, either blocking (
build_project) or in the background (start_build/get_build_status)Export projects for distribution
Asset Pipeline (5 tools, no editor required):
Asset Processor status, asset refresh, and wait-for-completion
Tail editor and Asset Processor logs, filter for errors
Related MCP server: mcp-bridge
Prerequisites
Python 3.10+
O3DE installed and registered (engine path in the O3DE manifest or
O3DE_ENGINE_PATHenv var)Linux/macOS:
~/.o3de/o3de_manifest.jsonWindows:
%USERPROFILE%\.o3de\o3de_manifest.json
For editor tools (optional): O3DE Editor running with the o3de-ai-companion-gem and EditorPythonBindings gems enabled. The companion gem provides the AgentServer that o3de-mcp connects to for real-time editor automation. Project tools work without the editor; call
get_capabilities()to check what's available.
Installation
pip install o3de-mcpOr run it without installing, straight from an MCP client config, with uv:
uvx o3de-mcpTo work on o3de-mcp itself, install from a checkout instead:
pip install -e . # or: uv pip install -e .Usage
As a standalone MCP server
o3de-mcpWith Claude Code
Add to your MCP config (or use a project-level .mcp.json):
Linux/macOS:
~/.claude/mcp.jsonWindows:
%USERPROFILE%\.claude\mcp.json
{
"mcpServers": {
"o3de": {
"command": "o3de-mcp"
}
}
}Agent skill: headless verification and editor automation
skills/o3de-headless-and-editor-automation/
is an Agent Skill (a SKILL.md plus reference notes
and scripts) that teaches an agent the repeatable workflow around this server on
Windows and Linux: AssetProcessor-first launch order and how to tell when it is
idle, rendering a level on the real GPU and capturing it with ffmpeg (Xvfb when
there is no monitor), in-renderer screenshots from editor Python, driving the
editor through o3de-mcp and the AiCompanion gem, wiring asset GUIDs into prefab
JSON offline, and proving engine changes with a ScriptContext test. It records
the traps that cost hours (the prefab segfault on a missing template, killing
your own shell by command-line pattern, the AP idle line living in AP_GUI.log).
The Linux path has been run end to end; the Windows path is written from the
engine layout and still needs a run on a Windows machine.
Install it by copying or symlinking the directory into your skills folder, then
invoke it with /o3de-headless-and-editor-automation:
ln -s "$(pwd)/skills/o3de-headless-and-editor-automation" ~/.claude/skills/Other clients that read the Agent Skills layout can point at the same directory.
With Claude Desktop
Add to your Claude Desktop config:
{
"mcpServers": {
"o3de": {
"command": "o3de-mcp"
}
}
}Testing with MCP Inspector
MCP Inspector provides a web UI for interactively testing tools without an AI assistant. Useful for verifying tool behavior, inspecting responses, and debugging.
npx @modelcontextprotocol/inspector o3de-mcpThis opens the Inspector UI at http://localhost:6274. From there you can browse all registered tools, invoke them with custom parameters, and see raw responses.
To pass environment variables (e.g., a custom engine path or editor port):
npx @modelcontextprotocol/inspector -e O3DE_ENGINE_PATH=/path/to/engine -e O3DE_EDITOR_PORT=4600 o3de-mcpDevelopment
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Run a single test
pytest tests/test_project.py::TestValidateName::test_valid_simple
# Lint and format
ruff check src/ tests/
ruff format src/ tests/
# Type checking
mypy src/SBOM (Software Bill of Materials)
A CycloneDX SBOM is generated on every CI run and uploaded as a build artifact. To generate one locally:
python scripts/generate-sbom.py # JSON + XML
python scripts/generate-sbom.py --format json # JSON onlyThe script creates an isolated virtual environment with only runtime dependencies, so the SBOM accurately reflects what ships, without the dev and build tooling.
CI
GitHub Actions runs lint, type checking, tests, and SBOM generation on every push and PR to main. See .github/workflows/ci.yml.
Security
Editor tool inputs (entity IDs, component types) are validated against strict regex patterns before use.
User-supplied strings are serialized via
json.dumps/json.loadswhen passed into editor scripts, never raw string interpolation.Project and gem names are validated against O3DE naming conventions.
Filesystem paths are resolved and validated before being passed to subprocesses.
Documentation
Document | Audience | Description |
AI agents | Token-efficient usage guide, decision trees, error handling | |
Developers & agents | System architecture diagram and communication flows | |
Agents & developers | Compact parameter reference for all 66 tools | |
Agents & developers | Composable patterns for scenes, physics, lighting, scripting | |
Agents & developers | O3DE component name catalog with dependency chains | |
AI agents | Installable skill (Windows and Linux): render capture, editor automation, offline asset GUIDs, ScriptContext proofs, and the traps around each |
Examples
Progressive walkthroughs from project creation to a complete game:
New Project: create, configure, and build a project
Build a Scene: sky, lights, ground, camera, static objects
Physics Playground: dynamic bodies, triggers, stacking
Scripted Game: complete mini-game with player, obstacles, goals
Batch Operations: efficient bulk entity creation patterns
CLI-Only Workflow: project management without the editor
Gem Development: create and integrate custom gems
MCP Inspector: interactively test tools via a web UI
Configuration
Environment Variable | Description | Default |
| Override automatic engine discovery | Auto-detected from manifest |
| Select engine by name when multiple are registered | First valid engine |
| Select the project for asset and introspection tools | Single registered project |
| Editor AgentServer host |
|
| Editor AgentServer port |
|
| Per-command editor execution timeout (seconds) |
|
| Editor TCP connect timeout (seconds) |
|
| How long to wait for a viewport capture to reach disk (seconds) |
|
| Wrap the editor connection in TLS ( |
|
| Verify the editor's certificate and hostname |
|
| CA bundle used when verification is enabled | System defaults |
| CMake generator for builds | Auto-detected per platform |
| CMake configure timeout (seconds) |
|
| CMake build timeout (seconds) |
|
| Project export timeout (seconds) |
|
Editor timeouts: the editor runs each submitted script synchronously and does not reply until it finishes, so
O3DE_EDITOR_TIMEOUTis effectively "how long an editor operation may take." It defaults to 600s because real operations (level loads, game-mode entry, on-demand asset compilation) routinely exceed tens of seconds, and a too-short value cuts them off while the editor is still working. An unreachable editor is caught in milliseconds by the separateO3DE_EDITOR_CONNECT_TIMEOUTand the fast-fail window, so a large command timeout costs nothing on the healthy path.run_editor_pythonalso accepts a per-calltimeoutargument.
Editor TLS: the connection is plaintext by default, which is the right default for the normal case of an editor on
127.0.0.1. If you pointO3DE_EDITOR_HOSTat a remote machine, setO3DE_EDITOR_TLS=1andO3DE_EDITOR_TLS_VERIFY=1. Enabling TLS on its own leaves certificate and hostname checking off, which encrypts the channel but does not authenticate the peer.
The server also reads the O3DE manifest for registered engines, projects, and gems:
Linux/macOS:
~/.o3de/o3de_manifest.jsonWindows:
%USERPROFILE%\.o3de\o3de_manifest.json
Related Projects
o3de-ai-companion-gem: O3DE Gem that provides the AgentServer for editor-side communication. Required for editor automation tools. Enable it alongside EditorPythonBindings in your O3DE project.
O3DE (Open 3D Engine): the open-source game engine.
License
This project is dual-licensed under Apache 2.0 or MIT (your choice), matching the O3DE engine license. Free for commercial and non-commercial use.
SPDX-License-Identifier: Apache-2.0 OR MIT
Available Tools
66 toolsadd_componentA
Add a component to an entity.
Args: entity_id: The entity ID to add the component to. component_type: Component type name (e.g. 'Mesh', 'PhysX Dynamic Rigid Body').
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| component_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It only says 'Add a component' and gives parameter descriptions; it does not disclose that this is a mutating operation, whether duplicate components are allowed, whether the entity must exist, what happens on failure, or any side effects. This is a significant gap 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 short and front-loaded with the one-line purpose, followed by a compact Args list. All sentences contribute meaning, though the Args list partially mirrors schema fields; its added value justifies its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool, the description covers what the tool does and all arguments, but it omits behavioral context such as preconditions, error handling, and effect on existing components. With no annotations, this is a minimum-viable description rather than a fully complete one.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description is the only source of parameter meaning. It clearly defines both required parameters: entity_id identifies the target entity, and component_type names the component with concrete examples such as 'Mesh' and 'PhysX Dynamic Rigid Body'. This fully compensates for the empty 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?
States a specific action ('Add'), a direct object ('a component'), and a target ('an entity'). The verb and resource make it distinct from sibling tools like remove_component or get_entity_components, so the agent knows what operation this performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to use when you want to attach a component to an existing entity, but it does not explicitly state when to prefer it over alternatives, nor does it mention prerequisites like the entity existing or the component type being valid. No exclusions or edge-case guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
assign_assetC
Assign an asset to a component property by resolving the asset path.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| asset_path | Yes | ||
| property_path | Yes | ||
| component_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a mutating operation and mentions path resolution, but it does not explain side effects, failure modes, required asset readiness, or whether the operation is reversible.
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, compact sentence with no wasted words, and it front-loads the core action. However, for a four-parameter mutation tool with no supporting details, it is under-specified rather than optimally 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?
For a tool with no annotations and four required parameters, the description does not provide enough context for correct invocation. It omits prerequisites, path resolution semantics, and any distinction from the many related component-property tools. The presence of an output schema helps, but the input semantics remain unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning beyond the parameter names already in the schema. Terms like 'property_path' and 'component_type' are self-explanatory at a surface level, but path formatting and how asset resolution relates to the parameters are left undocumented.
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 ('assign') and the resource ('asset to a component property'), giving an agent a high-level understanding of the operation. It does not explicitly differentiate from sibling tools like set_component_property, but the asset-focused phrasing provides reasonable distinctness.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance about when to use this tool versus alternatives such as set_component_property or instantiate_prefab, and no mention of prerequisites or conditions. The description only states what the tool does, not when it should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
begin_sessionA
Begin a persistent Python session in the O3DE editor.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the key behavioral trait—that the session is persistent—but omits other important behaviors such as whether an existing session must be ended first, whether calling it twice creates multiple sessions, or what lifecycle cleanup is required.
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 sentence that states the essential purpose without filler. Every word earns its place, and the most important qualifier ('persistent') 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?
Given the zero-parameter schema, the presence of an output schema, and a relatively simple operation, the description is mostly sufficient. It could be slightly stronger by referencing the session lifecycle (e.g., using end_session), but nothing critical is missing for an agent to invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is complete by nature. The description adds nothing about parameters, but none are needed; the 0-parameter baseline of 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Begin'), a specific resource ('a persistent Python session'), and the environment ('in the O3DE editor'). It clearly distinguishes this from one-off execution tools like run_editor_python by emphasizing persistence.
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 word 'persistent' implies that this tool is for stateful, multi-step Python workflows rather than single commands, but the description does not explicitly say when to choose begin_session over run_editor_python or exec_in_session, nor does it mention pairing with end_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_projectB
Build an O3DE project using CMake.
This runs CMake configure followed by CMake build. Timeouts are
configurable via O3DE_CONFIGURE_TIMEOUT and O3DE_BUILD_TIMEOUT
environment variables.
Args: project_path: Path to the O3DE project. config: Build configuration -- profile, debug, or release (default: profile).
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | profile | |
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does add genuine value by revealing the two-stage behavior (CMake configure followed by CMake build) and the configurable timeout environment variables. However, it does not disclose whether the call blocks until completion, how long a build might take, what happens on failure, or whether the result can be tracked via get_build_status.
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 tight and front-loaded: the main statement comes first, the process detail second, and the timeout note third. The Args section is warranted because the schema provides zero parameter descriptions. Every sentence earns its place, though the overall structure could arguably fold the second sentence into the first.
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 build operation that configures and compiles a project, the description covers the core invocation needs: what it does, the parameters, and timeout controls, and the output schema covers return values. But it omits behavioral expectations an agent needs — whether the call is synchronous or long-running, whether the build is tracked elsewhere, and how this relates to sibling tools start_build and get_build_status. These gaps are significant for a tool with zero annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully, and it largely does. The Args section documents both parameters: project_path is explained as 'Path to the O3DE project,' and config is given concrete allowed values ('profile, debug, or release') plus its default. The only shortfall is that project_path lacks details like absolute-vs-relative or whether the project must be registered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement, 'Build an O3DE project using CMake,' and clarifies the mechanism by stating it 'runs CMake configure followed by CMake build.' This makes the tool's function unambiguous. However, it never explicitly differentiates itself from sibling build-related tools like start_build, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance or comparison against alternatives such as start_build, get_build_status, or export_project. The only usage-adjacent information is the timeout environment-variable configuration, which is a tuning detail rather than a directive about when this tool is the right choice. The agent is left to infer which build tool to select.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_renderdoc_frameA
Trigger a RenderDoc frame capture in the O3DE editor.
Attempts to trigger a RenderDoc capture via GraphicsProfilerBus
(reflected in the BehaviorContext but not exposed as a Python bus
function in O3DE 2.7.0). If the bus call is not available, reports
the limitation and suggests manual alternatives.
Returns:
JSON with status ok if the capture was triggered, error
on failure, or manual_required if the Python API cannot
trigger the capture and manual action is needed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It transparently states that the bus call may not be available, reports a fallback 'manual_required' status, and indicates the possible JSON statuses. This goes beyond a simple 'captures a frame' statement and prepares the agent for failure without being overly verbose.
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 the core purpose, then explains the technical mechanism and limitation, and ends with return statuses. Each sentence serves a purpose, though the middle paragraph about BehaviorContext and O3DE 2.7.0 is somewhat technical and could be trimmed without losing essential meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool, the description is complete: it states what it does, how it attempts it, what can go wrong, and what the return values mean. The output schema exists and the Returns section aligns with it. A minor gap is the lack of prerequisites such as 'RenderDoc must be installed and configured,' but this is not critical for a basic call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there are no parameter semantics to document. The description correctly focuses on behavior and return statuses rather than inventing parameter details. This meets the baseline expectation for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Trigger a RenderDoc frame capture in the O3DE editor.' This clearly distinguishes it from sibling tools like capture_viewport, which captures a viewport image, and run_editor_python, which is a general-purpose execution tool. The purpose is unambiguous and immediately actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains that the tool attempts to trigger a capture via the GraphicsProfilerBus and covers the failure case where the bus is not available in O3DE 2.7.0, suggesting manual alternatives. It does not explicitly name which alternative tool to use instead, but since no sibling tool is a direct substitute, the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_viewportA
Capture a screenshot of the editor viewport.
Tries PySide6 widget grab first (captures the viewport widget
including UI overlays). Falls back to azlmbr.atom
FrameCaptureRequestBus.CaptureScreenshot which captures the
actual rendered frame and works on platforms where PySide6 is not
importable in the editor's embedded interpreter.
Args: output_path: File path for the screenshot (.png, .jpg, .jpeg, .bmp, or .tga). width: Optional width to scale the screenshot to (PySide6 path only). height: Optional height to scale the screenshot to (PySide6 path only).
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | ||
| height | No | ||
| output_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It transparently explains the two capture mechanisms, that PySide6 includes UI overlays while the fallback captures the rendered frame, and that width/height only apply to the PySide6 path. It does not mention file-overwrite behavior or error handling, but the disclosed fallback behavior is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: a clear purpose sentence, a behavior paragraph explaining the fallback logic, and a scannable Args list. Every sentence earns its place, with no fluff 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?
An output schema exists, so return values are covered elsewhere. The description covers purpose, capture mechanisms, platform compatibility, and parameter semantics well. Minor gaps like explicit alternative-tool routing and overwrite/error behavior prevent a perfect score, but overall it is complete for a 3-parameter screenshot 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 description coverage is 0%, leaving the description to explain all parameters. The Args block does this thoroughly: output_path includes supported extensions, and width/height are marked optional and limited to the PySide6 path. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence 'Capture a screenshot of the editor viewport' names a specific verb and resource, making the tool's purpose immediately clear. It does not explicitly differentiate from sibling tools like capture_renderdoc_frame, so it falls short of a 5 on 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?
The description implies the tool should be used when a viewport screenshot is needed and mentions the fallback works on platforms without PySide6, providing some context. However, it never explicitly states when to prefer this tool over alternatives or which sibling tools are relevant, so guidance is mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_entityA
Create a new entity in the current O3DE level.
Args: name: Name for the new entity. parent_id: Optional entity ID of the parent. None for root-level.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| parent_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It discloses the core mutation ('create') and the target scope, but it does not mention prerequisites like having an active level, whether the new entity is empty, hierarchy implications, or side effects such as selection changes. For a mutating tool with zero annotation coverage, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded, with the primary purpose in the first sentence and the parameter details in a compact list. There is no redundant or filler 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?
For a low-complexity tool with two fully explained parameters and an output schema, the description is mostly adequate. However, it omits practical context such as requiring an open/current level and any assumptions about the newly created entity, which leaves some room for an agent to call it in an invalid state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain the parameters, and it does. For 'name' it says it is the entity name, and for 'parent_id' it clarifies it is an optional parent entity ID and that 'None' means root-level. This adds meaningful semantics beyond the bare JSON 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 a specific operation, 'Create a new entity in the current O3DE level', with a clear verb and resource. It also scopes the operation to the current level, which helps an agent distinguish it from level-management and querying siblings.
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 about when to use this tool versus alternatives such as duplicate_entity, instantiate_prefab, or set_parent. The description provides no conditions, prerequisites, or exclusions, so the agent has to infer the appropriate context from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_gemB
Create a new O3DE gem.
Args: name: Gem name (alphanumeric, hyphens, underscores). path: Directory where the gem will be created. template: Gem template to use (default: DefaultGem).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes | ||
| template | No | DefaultGem |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It states that a new gem is created and takes a path, implying filesystem writes, but it does not mention side effects, overwrite behavior, template resolution, or any permissions needed. This is minimal for a creation tool with no annotation safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the one-sentence purpose, and uses a compact argument list. There is no filler, though the argument documentation is terse and could integrate more context without becoming bloated.
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 create operation, the description covers the required parameters (name, path) and the optional template with default. An output schema exists, so return values need not be described. However, without annotations, it lacks any note about side effects or prerequisites, leaving some behavioral context 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?
The input schema has 0% description coverage, so the description must compensate. It does add meaning: name constraints (alphanumeric, hyphens, underscores), path as the target directory, and template with a default. This is useful but not rich; valid template values and path forms are not clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a new O3DE gem.' The word 'new' clearly distinguishes this from sibling tools like register_gem or list_gems, so an agent can recognize what operation is intended.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as register_gem, list_gems, or create_project. The description explains what the tool does but does not specify the context or exclude cases where another sibling would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_levelA
Create a new empty level in the current O3DE project.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description must disclose behavior on its own. It honestly states that a new, empty level is created in the current project, but it does not cover side effects such as name collisions, whether an existing level can be overwritten, or any required project/session state. This 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?
A single front-loaded sentence that states the verb, object, and location with no filler or repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter create operation with an output schema available, the description covers the essential context: what is created ('empty level'), where it is created ('current O3DE project'), and the action. It could add failure-mode or naming-constraint details, but nothing critical is missing for a basic call.
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 for the only parameter is 0%, and the description adds no explicit explanation of the 'name' parameter beyond the schema's title. The parameter is simple enough that an agent can infer it is the level's name, but the low-coverage rule expects the description to compensate, and it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Create') and resource ('a new empty level'), and scopes it to 'the current O3DE project'. This clearly differentiates it from sibling operations such as load_level, save_level, and list_levels.
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 stated action implies its use case: creating a brand-new level in the current project. It gives clear context but does not explicitly mention exclusions or alternatives, such as using save_level to persist or load_level to open an existing level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_prefab_from_entityA
Write a prefab file to disk from an existing entity.
The path is relative to the project root. The level is not modified;
use instantiate_prefab afterwards to place the saved prefab.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| prefab_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It clearly states the primary side effect (writing a file to disk), a key constraint (path relative to project root), and an important non-effect (the level is not modified). It does not mention whether an existing file at the path is overwritten, but the disclosed behavior is otherwise solid and honest.
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 primary action is front-loaded, and the two most important operational details—relative path and non-modification of the level—are placed immediately after. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a low-complexity tool with two simple string parameters and an output schema present, so return-value documentation is not needed. The description covers what the tool does, how to interpret the path, and the recommended next step. It is slightly incomplete regarding overwrite behavior, but it is otherwise sufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides only parameter names and types with 0% coverage in descriptions, so the description must compensate. It adds meaningful semantics for both parameters: entity_id is the existing source entity, and prefab_path is a path relative to the project root. It could add more detail such as expected file extension, but the core meaning of both parameters is clarified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action—'Write a prefab file to disk from an existing entity'—with a clear resource (prefab file) and source (existing entity). It also distinguishes the operation from related tools by noting that the level is not modified, which separates it from save_prefab and similar workflow steps.
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 operational context: the path is relative to the project root, and the tool does not modify the level. It also gives a direct follow-up instruction—'use instantiate_prefab afterwards to place the saved prefab'—which tells the agent what to do next. It does not explicitly name alternatives or when-not-to-use conditions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_projectA
Create a new O3DE project.
Args: name: Project name (alphanumeric, hyphens, underscores). path: Directory where the project will be created. template: Project template to use (default: DefaultProject).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes | ||
| template | No | DefaultProject |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the core create action and parameter meanings; it does not describe filesystem side effects, prerequisites such as an active engine, whether an existing path will be overwritten, or failure 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?
The description is a single clear opening sentence plus a compact Args list with no redundant text. It is front-loaded and every line contributes parameter meaning.
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 parameter information is sufficient to make a basic call, and an output schema exists so return-value documentation is less critical. However, for a mutating tool with no annotations, the description omits usage boundaries, prerequisite conditions, and side-effect behavior, leaving an agent without guidance for failure or setup cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description compensates by documenting all three parameters. It adds useful meaning: name constraints (alphanumeric, hyphens, underscores), path as target directory, and template with its default. It does not enumerate valid template values or clarify path format, so it is not exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with a specific verb and resource: 'Create a new O3DE project.' This clearly distinguishes it from sibling creation tools like create_entity, create_level, and create_gem because the resource type (O3DE project) is explicit and unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the resource type: use this tool when a new O3DE project is needed. However, the description gives no explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives such as list_templates for finding template options or list_projects for existing projects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_entityB
Delete an entity from the current O3DE level.
Args: entity_id: The entity ID to delete.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden. It identifies the operation as deletion but does not disclose whether deletion is permanent, undoable via the sibling undo tool, or what happens to child entities or attached components.
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 text is short and front-loaded with the core operation. The Args section is redundant with the input schema but harmless, and there is no irrelevant prose.
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 one-parameter tool with an output schema, the essential invocation information is present: delete the entity named by entity_id in the current level. However, the lack of any destructive-behavior caveat or ID source note leaves the definition only minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should add meaning beyond the field name. 'The entity ID to delete' essentially restates the schema's 'Entity Id' title and does not specify the ID format, how to obtain valid IDs, or whether the ID is a UUID, name, or editor identifier.
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 the specific verb 'Delete' with the entity resource and scopes it to 'the current O3DE level.' That wording is enough to separate it from sibling tools like create_entity, duplicate_entity, and remove_component, which target different operations or a different granularity.
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 for when to invoke this tool instead of alternatives, and no prerequisites are stated. For example, it does not mention that list_entities can supply valid entity IDs or that remove_component is the choice for deleting a component rather than the whole entity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disable_gemB
Disable a gem in an O3DE project.
Args: gem_name: Name of the gem to disable. project_path: Path to the project.
| Name | Required | Description | Default |
|---|---|---|---|
| gem_name | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states that the gem is disabled, without mentioning side effects, reversibility, what files are modified, or whether the operation depends on project state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded with the main action, and includes a simple args list without unnecessary fluff. It could add more behavioral context, but as written it is clean and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no schema-level parameter descriptions, and an unknown output schema, the description is too thin. It does not explain when disabling is appropriate, what the expected result is, or what conditions must be met before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description does add basic semantics by explaining that gem_name is the name of the gem to disable and project_path is the path to the project. This is minimal but does provide meaning beyond the raw schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Disable a gem in an O3DE project.' This clearly states what the tool does and is easily distinguishable from sibling tools like enable_gem, register_gem, or create_gem.
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 action is clear enough to imply the tool is used when a gem in an O3DE project should be disabled. However, there is no explicit guidance on when to prefer this over alternatives, no prerequisites, and no mention of whether the gem must already be enabled.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_entityA
Duplicate an entity (and its children) in the current O3DE level.
Args: entity_id: The entity ID to duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavior disclosure. It adds that duplication includes children and happens in the current level, but it does not explain side effects such as new entity IDs, whether the original remains unchanged, undo behavior, or what exactly happens to child relationships. This falls short for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The core action and scope are front-loaded, and the argument semantics follow directly. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter and an output schema, the description covers the action, scope, and argument adequately. It lacks usage-alternative guidance and deeper side-effect details, but an agent can reasonably select and invoke the tool correctly based on the provided 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 0%, so the description must compensate. The Args section defines entity_id as 'The entity ID to duplicate', which adds clear semantic meaning beyond the schema's bare string type. It is minimal, but sufficient for a single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Duplicate'), a specific resource ('entity'), and an important scope detail ('and its children', 'current O3DE level'). This clearly distinguishes it from siblings like create_entity and delete_entity, so an agent can understand what the tool does at a glance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives like create_entity, nor does it mention exclusions or prerequisites. It only describes the operation itself, leaving the agent to infer use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_project_propertiesB
Edit properties of an existing O3DE project.
Args: project_path: Path to the project. project_name: New name for the project (optional). origin: New origin URL or description (optional).
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | ||
| project_name | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It only says 'Edit' and lists arguments; it does not disclose side effects, whether both optional arguments can be omitted, validation behavior, or what files are modified. For a mutating tool, this is insufficient 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 compact, front-loaded purpose sentence followed by a minimal Args list with no filler. Every line carries useful information and the format is 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?
For a simple tool with three string parameters and an output schema, the description is nearly sufficient: it states the target and defines each parameter. However, it leaves behavioral gaps such as whether at least one optional property must be provided, what happens on invalid paths, and side effects on the project manifest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the Args section is the only source of parameter meaning. It clarifies that project_name and origin are optional and explains their roles ('New name', 'New origin URL or description'), adding value beyond the bare schema property titles. It covers all parameters, though tersely.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Edit properties of an existing O3DE project'), clearly indicating the tool's intent and distinguishing it from creation/listing tools. It does not explicitly name or contrast sibling tools, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies when to use the tool—when project-level metadata such as name or origin needs changing—but there is no explicit guidance about alternatives or when not to use it. Given the large sibling set of project and component tools, this is only implied usage, not directed guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enable_gemC
Enable a gem in an O3DE project.
Args: gem_name: Name of the gem to enable. project_path: Path to the project.
| Name | Required | Description | Default |
|---|---|---|---|
| gem_name | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It states the action 'Enable a gem' but does not disclose that enabling likely mutates project configuration, whether it overwrites an existing enabled state, how it handles a missing gem, or what happens on failure. It is minimally transparent but omits important behavioral context for a mutating operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded with the main purpose, followed by a compact argument list. There is no unnecessary prose. The Args section somewhat duplicates the schema property titles, but the whole definition is easy to scan and quickly parse. It could be slightly more informative without losing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, two undocumented parameters, and no behavioral details, the description is not complete enough to ensure correct invocation. It does not state prerequisites, side effects, error behavior, or when to choose this tool over related gem-management tools. An output schema exists and may cover return values, but nothing in the description explains the operational context, so an agent is left guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must clarify the parameters. It provides 'gem_name: Name of the gem to enable' and 'project_path: Path to the project,' which add only slight meaning beyond the parameter names and schema titles. It does not explain expected path format, whether paths should be absolute, how gem names are resolved, or any constraints on the values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and object: 'Enable a gem in an O3DE project.' This is a clear verb+resource pair and is easy to distinguish from sibling tools like disable_gem, register_gem, or create_gem by name and behavior. However, it does not explicitly explain how 'enable' differs from 'register' or mention that this modifies the project's gem configuration.
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 register_gem, create_gem, list_gems, or disable_gem. There are no prerequisites stated, such as whether the gem must already be registered, whether the project path must exist, or whether enable_gem should be called before other gem operations. The usage context is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
end_sessionB
End a persistent Python session and clean up its namespace.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose that ending the session cleans up its namespace, which signals destructive state removal. However, it does not mention consequences like irreversible variable loss, invalid session_id behavior, or interaction with active sessions.
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 focused sentence with no filler. The core action and resource are front-loaded, making it easy to scan and understand.
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 one-parameter teardown tool, the description is mostly adequate, and an output schema exists to document return values. However, it lacks explicit session_id semantics and usage context, so an agent would need to infer how to obtain and provide the session correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for the session_id parameter. It does not explicitly explain that session_id identifies the persistent Python session to terminate, though this can be inferred from the tool name and description. No format, source, or lifecycle detail 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 ('End') and a clear resource ('persistent Python session'), and adds 'clean up its namespace' to define the scope. It clearly differentiates from sibling tools like begin_session and exec_in_session, so an agent can tell what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as begin_session, exec_in_session, or run_editor_python. The intended context of ending a session created via begin_session is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enter_game_modeA
Enter game mode (play-in-editor) in the O3DE Editor.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It states the core behavior accurately, but does not reveal side effects such as starting simulation, pausing editing, or the ability to revert via exit_game_mode. The parenthetical 'play-in-editor' adds useful context, though the consequences of entering the mode are left implicit.
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 short, front-loaded sentence says exactly what the tool does without filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, single-action tool, the description is largely complete, and an output schema exists so return values need not be spelled out. It could be improved by noting the paired exit_game_mode or any prerequisites, but an agent can invoke it correctly from the current description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema already reflects that. With no parameters requiring explanation, the baseline is 4 and the description does not need to add parameter 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 combines a specific verb ('Enter') with a specific resource ('game mode (play-in-editor) in the O3DE Editor'), making the tool's action unmistakable. It also differentiates naturally from the sibling exit_game_mode by naming the opposite operation.
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 about when to invoke this tool versus sibling tools. It does not mention that this is the entry counterpart to exit_game_mode, nor does it state prerequisites such as a loaded level or active editor session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exec_in_sessionB
Execute Python code in a persistent session.
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only mentions 'persistent session,' implying statefulness, but does not disclose side effects of executing arbitrary code, whether variables persist across calls, security implications, or what happens if the session is invalid or expired.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, clearly front-loading the action and context. It is concise while still conveying the essential 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?
For a tool that executes arbitrary code in a persistent session, the description is under-specified. It lacks details about side effects, session lifecycle requirements, error behavior, and how it differs from run_editor_python. The presence of an output schema helps, but the description itself does not provide enough safety or context information for an agent to invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has no property descriptions (0% coverage), but the parameter names are fairly self-explanatory: script is the Python code and session_id identifies the persistent session. The description reinforces that script contains Python code and the session is persistent, but it does not clarify session_id format or how script output is returned.
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 'Execute' and the resource 'Python code in a persistent session.' The phrase 'persistent session' differentiates this from siblings like run_editor_python or one-off execution tools, so an agent can understand what the tool does at a glance.
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 about when to use this tool versus alternatives like run_editor_python, begin_session, or get_session_vars. There is no mention of prerequisites such as whether the session must already exist, or when persistent execution is preferred over other execution modes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exit_game_modeA
Exit game mode and return to edit mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It clearly states the state transition (exiting game mode and entering edit mode) and is honest about the operation's effect. It does not detail edge cases like calling it while already in edit mode, but for a parameterless mode toggle this is 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 a single, front-loaded sentence with no filler. Every word 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?
This is a simple, parameterless tool with an output schema present. The description fully explains the tool's purpose and expected state change, leaving no critical gap for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, and the baseline for zero-parameter tools is 4. The description correctly focuses on behavior rather than parameters, and no parameter explanation is needed.
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 ('exit') with a clear resource ('game mode') and a clear target state ('return to edit mode'). It also differentiates itself from the sibling enter_game_mode by describing the opposite action.
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 usage context is implied: call this when in game mode and wanting to return to editing. However, the description does not explicitly state when not to use it or mention alternatives such as enter_game_mode, leaving the agent to infer the appropriate circumstance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_projectA
Export an O3DE project for distribution.
This is a long-running operation. Timeout is configurable via
the O3DE_EXPORT_TIMEOUT environment variable (default: 3600s).
Args: project_path: Path to the O3DE project to export. output_path: Directory where the exported project will be written. config: Build configuration -- profile, debug, or release (default: profile).
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | profile | |
| output_path | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond annotations (none provided) by disclosing that this is a long-running operation, the default timeout of 3600s, and the configurable environment variable for timeout. This is important behavioral context that the schema alone doesn't provide. It doesn't mention potential side effects or whether it blocks, but the timeout warning 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?
The description is tight and front-loaded. The first sentence states the core purpose, then the long-running warning, then an Args list. Every sentence adds useful information with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, the description covers the key aspects: purpose, parameters with defaults, and a critical behavioral warning about long runtime. An output schema exists, so return values don't need extensive explanation. The only minor gap is not specifying whether the tool blocks or returns immediately, but overall it's complete enough 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 schema has 0% description coverage, so the description must compensate. The Args section explains each parameter: project_path, output_path, and config with valid values (profile, debug, release) and a default. This adds meaning beyond the raw parameter titles and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Export an O3DE project for distribution') that clearly indicates what the tool does. It distinguishes itself from build-related siblings because it explicitly focuses on exporting for distribution, not building or creating projects.
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 clearly states that this is a long-running operation with configurable timeout, which helps an agent understand when to invoke it. However, it does not explicitly name alternatives or state when NOT to use this tool compared to build_project or start_build.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
focus_entityB
Focus the viewport camera on an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the primary effect and does not indicate whether the focus operation alters persistent scene state, requires an existing viewport, or has side effects such as changing selection.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, and the operative verb is front-loaded. It is concise and immediately readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple and an output schema exists, so return-value documentation is not required here. However, with no annotations and one sentence, the description lacks surrounding operational context—such as whether this is an editor-only camera operation or whether it affects the runtime viewport.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must clarify the parameter. It does map entity_id to the target entity, but it adds no detail about ID format, how to obtain it, or valid values beyond what the schema already makes obvious.
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 ('Focus') plus a precise resource ('viewport camera') and a target ('entity'), making the action unambiguous. It also differentiates the tool from siblings like get_viewport_camera and set_viewport_camera by describing a focus-on-entity operation rather than raw camera access.
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 about when to use this tool instead of alternatives. There is no mention of prerequisites, such as having an active viewport or loaded level, and no exclusions compared with set_viewport_camera or capture_viewport.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_asset_processor_statusB
Check whether the O3DE Asset Processor is running.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly presents the operation as a non-mutating status query, which is useful, but it does not mention potential side effects, prerequisites, or how project_path affects the check.
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 sentence with no filler; the key subject and action are front-loaded. Every word contributes to meaning.
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 status-check tool with an output schema, the description is mostly adequate, but it is incomplete around parameter semantics and when this tool should be preferred over related asset-processing siblings. The missing usage and parameter guidance prevent it from being fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain the optional project_path parameter at all, despite schema description coverage being 0%. The parameter name in the schema offers only a minimal hint; the description should clarify whether it selects a specific project or is ignored.
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 a clear verb ('Check') and a concrete resource ('O3DE Asset Processor'), making the tool's purpose immediately obvious. This sets it apart from related siblings like wait_for_assets or refresh_assets, which imply different 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?
No guidance is given about when to check status versus using alternatives such as wait_for_assets or refresh_assets. The description only states what the tool does, leaving the agent to infer when it should be invoked.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_statusA
Check the status of a background build.
Args:
build_id: Build ID returned by start_build.
| Name | Required | Description | Default |
|---|---|---|---|
| build_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavior disclosure. 'Check' clearly indicates a non-mutating read operation, and 'background build' signals an asynchronous workflow. It does not describe error cases, but there is no indication of hidden destructive side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and front-loaded: one sentence states the purpose, and the only parameter is documented in a minimal, useful way. No redundant or filler content exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter status-check tool with an output schema, so the description does not need to explain return values. It provides the essential workflow link to start_build and fully covers what an agent needs to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the schema only labels build_id as a string. The description compensates by explaining that build_id is 'returned by start_build', giving critical provenance that helps an agent locate the correct 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 states a specific action and resource: 'Check the status of a background build.' This is clear and unambiguous, but it does not explicitly contrast itself with siblings like get_asset_processor_status, so it relies on the reader to infer the 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?
The description gives clear context by stating that build_id comes from start_build, implying the tool is used after starting a build to poll its status. It does not mention alternatives or exclusions, but the workflow context is sufficiently clear for this simple tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bus_schemaB
Discover the scripting API of any O3DE gem's reflected EBuses.
| Name | Required | Description | Default |
|---|---|---|---|
| bus | No | ||
| module | No | ||
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavior disclosure. It identifies the tool as a discovery/read-type operation, but it does not say whether it scans the project, requires a built gem, or what output shape to expect. The input parameters (bus, module, project_path) hint at scoping but the description doesn't explain how they affect behavior. An output schema exists, which provides some return information, but behavioral details like side effects or prerequisites are not disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence and is reasonably concise, with the core action and resource named. It could earn a 5 if it also differentiated from 'get_bus_schema_live' or noted scoping behavior, but it's efficient and front-loaded with the main verb and object.
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 discovery tool with no annotations, 0% schema description coverage, and a sibling named almost identically, the description is incomplete. It does not tell the agent how the three optional parameters interact, which project/gem scope is used, whether this is a static vs live API query, or when to choose the sibling 'get_bus_schema_live'. The output schema may define the return type, but selection guidance and behavioral context are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for all three parameters. It mentions 'any O3DE gem' and the tool name includes 'get_bus_schema', but it doesn't explain what 'bus', 'module', or 'project_path' individually mean or how they scope the query. The description adds almost no parameter-level meaning beyond the schema itself, which only provides names and null-ability. This is a clear gap: an agent would not know whether parameters are filters, required inputs, or alternatives.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Discover') and resource ('scripting API of any O3DE gem's reflected EBuses'). It is reasonably clear about its purpose. However, it does not explicitly differentiate from the very similar sibling tool 'get_bus_schema_live', which likely has the same discovery purpose but perhaps a different mode or context, leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use it when you need to discover the scripting API of a gem's reflected EBuses. It does not state when to prefer the alternative 'get_bus_schema_live' over this one, nor does it give conditions or exclusions. Basic context is present but no explicit routing to or away from siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bus_schema_liveC
Query the running editor's BehaviorContext for a bus schema.
| Name | Required | Description | Default |
|---|---|---|---|
| bus | Yes | ||
| module | Yes | ||
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'Query' implies a read-only operation and 'running editor's BehaviorContext' adds useful runtime context, but the description does not mention failure behavior, whether the editor must be running, or how project_path affects the query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no redundant words, and it front-loads the action and target. While it is sparse, it is structurally clean and easy 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?
The core intent is clear and an output schema exists to document return values, so result format does not need explanation. However, the description lacks usage guidance, sibling differentiation, failure context, and parameter semantics, leaving an agent with an incomplete picture for a tool that has a closely related sibling, get_bus_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 0%, and the description does not mention any of the parameters: module, bus, or project_path. The param names are somewhat suggestive, but the description adds no meaning about their formats, required values, or relationships, so it fails to compensate for the schema's lack of documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies a specific verb ('Query'), a resource ('the running editor's BehaviorContext'), and the result ('a bus schema'). It implies a distinction from the sibling get_bus_schema through the 'live' qualifier, though it does not explicitly contrast them.
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 about when to use this tool versus get_bus_schema or other siblings. 'Running editor' suggests a runtime prerequisite, but the description does not state when this tool is preferred, what conditions are required, or when another tool should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesA
Check what O3DE MCP capabilities are currently available.
Call this first to determine whether the editor is connected (for editor tools) and whether the O3DE CLI is available (for project tools). This avoids wasting tokens on tools that will fail.
Tool categories are discovered dynamically — any new tools added to the server will automatically appear in the response.
Returns:
JSON object with editor, cli, and tool_categories
sections describing current availability and configuration.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden. It discloses that capabilities are discovered dynamically, that new tools will automatically appear, and that the response contains editor, cli, and tool_categories sections. It does not explicitly state 'read-only' or 'no side effects,' but the checking/availability framing makes that clear enough for a capability probe.
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 appropriately compact and front-loaded: the core purpose appears in the first sentence, followed by usage context, a note on dynamic discovery, and a clear returns block. Every sentence contributes distinct value with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter capability-check tool with an output schema present, the description is complete. It explains when to call it, what it checks, how dynamic discovery works, and what the response contains. Additional return-format detail would be redundant given the 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?
This tool has zero parameters and schema coverage is 100%, so the baseline is 4. There is nothing for the description to add about parameter meaning, and it correctly focuses on behavior and return structure instead.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Check what O3DE MCP capabilities are currently available.' It clearly identifies this as a capability-discovery tool and distinguishes it from the long list of editor, project, and session tools by framing it as the first call to determine availability.
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 gives explicit when-to-use guidance: 'Call this first' to determine editor connection and CLI availability. It also explains the benefit—'avoids wasting tokens on tools that will fail'—which tells an agent exactly why this should precede other operations. No alternatives exist for this discovery function, so no exclusion is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_component_propertyA
Get a property value from a component on an entity.
Args: entity_id: The entity ID. component_type: Component type name (e.g. 'Transform'). property_path: Property path using '|' separator (e.g. 'Controller|Configuration|Model Asset').
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| property_path | Yes | ||
| component_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral burden. It communicates the read-only nature through the verb 'Get' and explains the property path separator, but it does not disclose error behavior, prerequisites like entity existence, or what happens when a property path is invalid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main purpose, and uses a clean Args block. Every sentence contributes useful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with an output schema, the description covers the parameters, path format, and component type adequately. It lacks explicit comparison to sibling tools and does not mention failure scenarios, but these are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description fully compensates by documenting all three parameters with meaningful explanations and concrete examples, including the '|' separator format for property_path and the 'Transform' example for component_type.
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: 'Get a property value from a component on an entity,' with a specific verb and resource. It is easy to distinguish from the sibling set_component_property, but it does not explicitly name or contrast any 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?
There is no guidance about when to use this tool versus alternatives such as get_entity_components or set_component_property. The description only explains parameters, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cvarB
Get the value of an O3DE console variable (CVAR).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Get the value', which implies a read operation, but it does not disclose behavior for missing CVARs, types of returned values, or any error conditions. For a tool with no annotation safety hints, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. The key action and resource are both front-loaded, making it easy for an agent to parse 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?
The tool is simple, with one parameter and an output schema available, so the description does not need to explain return structure. However, it lacks behavioral context such as error handling, side effects, or any usage caveats, which matters because no annotations are present to cover these concerns.
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 only provides a required string parameter named 'name' with no description, and schema description coverage is 0%. The tool description clarifies that 'name' refers to an O3DE console variable, which adds meaning, but it does not explain naming conventions, valid formats, or whether names are case-sensitive. It minimally compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('value of an O3DE console variable (CVAR)'), making the tool's purpose immediately clear. It also naturally contrasts with the sibling 'set_cvar', so an agent can distinguish the two without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to use this tool versus alternatives such as 'set_cvar' or 'run_console_command'. There are no explicit conditions, exclusions, or references to sibling tools, 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.
get_engine_infoA
Get information about the local O3DE engine installation.
Returns: JSON object with engine metadata, or an error message if no engine is found.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states the return format (JSON object with engine metadata) and the error condition (if no engine is found), which is useful for a simple getter 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 compact and front-loaded, with no filler. The action and resource appear first, followed by a concise return/error note. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-argument getter with an output schema present, the description is sufficiently complete. It explains what information will be retrieved, the return shape, and the failure mode, leaving no critical gap for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema fully covers all argument needs. The description correctly does not attempt to document nonexistent parameters, earning the baseline 4 for a zero-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Get information') and the resource ('local O3DE engine installation'). This distinguishes it from sibling tools like get_level_info or get_capabilities by focusing on engine installation metadata.
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 about when to use this tool versus alternatives. There are no exclusions, prerequisites, or explicit context clues beyond the description itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_componentsA
List all components attached to an entity.
Args: entity_id: The entity ID to inspect.
Returns: JSON array of objects with 'component_id' and 'type' fields.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only action with 'List' and specifies the return shape as a JSON array with 'component_id' and 'type' fields. However, it does not describe behavior for invalid entity IDs, empty component lists, or whether any side effects occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the primary purpose, and uses a clear Args/Returns structure. Every sentence adds useful information, and there is no redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read-only tool, the description covers the essential call contract: what the tool does, what argument is required, and what the response looks like. It lacks edge-case behavior like handling of nonexistent entities, but the low complexity and clear return format make it adequately 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 only defines entity_id as a required string with no description. The tool description adds minimal semantic value by stating 'The entity ID to inspect,' which clarifies the parameter's purpose. Since there is only one parameter, this is sufficient, but it does not explain how to obtain the ID or any format expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action: 'List all components attached to an entity.' The verb 'List', the resource 'components', and the scope 'attached to an entity' make the tool's purpose immediately clear. It is easily distinguished from sibling tools like get_component_property or add_component.
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 clearly indicates this is the tool for enumerating all components on an entity, which implies it is not for reading a single component property or modifying components. It does not explicitly name alternatives or say when not to use it, but the 'all components' phrasing gives strong contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_treeA
Return the entity hierarchy as a nested JSON tree.
Served natively by the AiCompanion gem, without editor Python.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden; 'Return' implies a read-only operation and the method of serving is disclosed. However, it does not mention side effects, permissions, or performance characteristics, though for a simple getter these may be less critical.
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 short sentences with the core action front-loaded. The second sentence adds a relevant execution detail without padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a zero-parameter input schema and an existing output schema, the description sufficiently explains what is returned. It is slightly incomplete only in not addressing when to choose this over sibling entity/list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the description has no parameter meanings to add. Baseline 4 applies for a no-parameter tool; schema coverage is trivially complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action ('Return') and resource ('entity hierarchy') with an explicit output shape ('nested JSON tree'). It is clear, though it does not explicitly contrast itself with siblings like list_entities or get_scene_snapshot.
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 prefer this tool over alternatives or when not to use it. The note about being served natively by AiCompanion gem is implementation context, not usage criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_level_infoA
Get information about the currently loaded level.
Returns: JSON object with 'level_name' and 'level_path' fields.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly identifies the operation as read-only ('Get information') and discloses the exact return structure ('level_name' and 'level_path' fields). It does not mention potential failure when no level is loaded, but this is a minor gap for a zero-parameter getter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two compact sentences with no filler. The core purpose is front-loaded, and the return format is presented in a clear, structured way.
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, zero-parameter, read-only tool with an output schema available, the description covers the essential purpose and return fields. It is complete enough for an agent to invoke the tool and interpret the result. The only minor omission is explicit error behavior when no level is loaded.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the 0-parameter baseline of 4 applies. The description correctly focuses on the output rather than inputs, since there are no parameters to document.
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 ('Get') and resource ('currently loaded level'), making the tool's purpose immediately clear. It is easily distinguished from sibling tools like list_levels or load_level because it targets the current level rather than listing or loading. The mention of exact return fields adds precision.
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 'currently loaded level' provides clear context for when to use this tool, and the zero-parameter signature implies it is a simple getter. However, it does not explicitly state when not to use it or mention alternatives, leaving some differentiation to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_log_errorsC
Extract error lines from an O3DE log file.
| Name | Required | Description | Default |
|---|---|---|---|
| log_name | No | Editor | |
| since_lines | No | ||
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. 'Extract' implies a read/filter operation, but the description does not state side effects, how error lines are determined, what since_lines controls, or how project_path/log_name affect behavior. This is too thin for a tool with no safety 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 one tightly written sentence with no filler. It is front-loaded with the core action and resource. It is concise, though the brevity leaves behavioral and parameter gaps that hurt other dimensions.
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 three parameters with zero schema coverage and no annotations, so the description needs to explain more than just 'extract error lines.' The output schema covers return values, but the agent still lacks enough information about parameter semantics and operational behavior to invoke the tool confidently in varying 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 description coverage is 0%, so the description must compensate by explaining parameter behavior. It mentions a log file as a general context but does not clarify log_name, since_lines, or project_path. The parameter names are self-descriptive, but the description itself adds no 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 states a specific verb ('extract') and resource ('O3DE log file'), and makes the tool's purpose clear: pulling error lines from a log. It is distinguishable from the sibling tail_log by its explicit focus on errors, though it does not name or compare against 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?
No guidance is given about when to use get_log_errors versus alternatives like tail_log, nor about when this tool would be inappropriate. The description provides no usage context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_snapshotA
Return the full scene state as JSON, served natively by the AiCompanion gem.
Entities, components, transforms and hierarchy in one call, produced
by the gem's C++ SceneSnapshotProvider rather than an editor Python
script. Cheaper than list_entities plus per-entity queries, and it
still works when the AgentServer runs in secure mode.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it delivers: it states the return format, the implementation source (C++ SceneSnapshotProvider), the performance characteristic (cheaper), and secure-mode compatibility. The verb 'Return' also makes the non-mutating nature clear.
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 the core purpose in the first sentence, followed by differentiating detail. Each sentence contributes useful information: contents, implementation, cost, and secure-mode caveat, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema covers return-value details, and the tool has no parameters. The description covers the essential operating context: what it returns, what it contains, how it is produced, its cost relative to alternatives, and when it remains available. Nothing critical is missing for a zero-parameter read-only snapshot call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there is no parameter semantic gap for the description to fill. Per the rubric, 0 parameters gets a baseline of 4; the description adds no parameter-specific detail because none is needed.
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 and resource: 'Return the full scene state as JSON', and enumerates the contained data (entities, components, transforms, hierarchy). It further differentiates itself from siblings by highlighting that it is a single native call and cheaper than list_entities plus per-entity 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?
It explicitly positions the tool against alternatives: 'Cheaper than list_entities plus per-entity queries' and 'rather than an editor Python script'. It also gives a specific compatibility condition: 'still works when the AgentServer runs in secure mode', which tells an agent when this tool is preferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_varsA
List the variable names in a persistent Python session.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. 'List' strongly implies a non-mutating, read-only operation, and 'persistent Python session' adds useful state context. However, it does not disclose behavior for invalid or expired session IDs, or clarify that only names are returned rather than values, though the output schema likely covers return shape.
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 efficient sentence with no filler and the key action is front-loaded. It is appropriately concise for a simple tool, though it could have used one additional clause to explain session_id provenance.
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 low-complexity tool with an output schema, the description provides the core purpose but leaves some context gaps. It does not mention session lifecycle dependencies, how to obtain session_id, or when this tool is preferable to related session tools. Still, the parameter name and sibling context make the intended use reasonably inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented session_id parameter. It does not explain where session_id comes from or that it should be the ID returned by begin_session. The parameter name is somewhat self-explanatory, but the description adds no real semantic detail beyond the schema itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a clear resource ('variable names in a persistent Python session'). This clearly distinguishes it from sibling tools like begin_session, exec_in_session, and end_session, since none of those are about listing existing Python variables.
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 'persistent Python session' implies the tool is meant to be used while a session is active, but the description does not explicitly state when to use it versus alternatives like exec_in_session or get_cvar. There is no precondition mentioned, such as needing a session ID from begin_session.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transformA
Get the world transform of an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It communicates a read operation via 'Get', but it does not disclose details such as how hierarchy is resolved, failure modes, or whether the result is computed on demand. For a simple getter this is adequate but minimal.
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 short, front-loaded sentence with no filler. It states the action and the object of that action directly, which is appropriately concise for a single-parameter getter.
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 low complexity, a required single entity_id parameter, and an available output schema, the description is nearly complete. It clearly identifies the target and what is returned; only format details and explicit alternative routing are left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage and the tool description adds only that the operation applies to 'an entity'. It does not explain accepted formats for entity_id (e.g., path, UUID, name), though the parameter is clearly the target entity.
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 ('Get') and resource ('world transform of an entity'), making the tool's function unmistakable. It is clearly distinct from sibling tools like set_transform and set_parent, which mutate or relate entities.
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 when the caller needs an entity's world-space transform, but it does not explicitly name alternatives or state when not to use it. With only one sentence, the usage context is present but not elaborated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewport_cameraA
Get the position and rotation of the active editor viewport camera.
Returns JSON with position (3 floats) and rotation (3 Euler
angles in degrees). FOV is not available via the Python bindings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It discloses the return format (JSON with position and rotation Euler angles in degrees) and a notable limitation (FOV is not available via Python bindings). This goes beyond a bare description, though it doesn't mention potential failures or side effects, which are unlikely for a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the core action, and provides essential return details in a clear second sentence. Every sentence adds useful information, and there is no repetition of the tool name or obvious filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless getter, the description is complete: it states what is returned, the format of the values, and one known limitation. An output schema exists, so return-value details are covered both structurally and descriptively. No critical information needed to invoke this tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter behavior to document. Schema coverage is trivially complete. The description appropriately does not waste space discussing parameters, and the baseline of 4 applies for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('get'), a precise resource ('active editor viewport camera'), and the exact data returned (position and rotation). It clearly distinguishes itself from sibling tools like set_viewport_camera and capture_viewport, so an agent can select it without 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 makes it clear this is for reading the active editor viewport camera's transform, which implies when to use it: whenever the agent needs the camera's position or orientation. It doesn't explicitly mention alternatives or exclusions, but the scope is sufficiently clear for a simple getter with no parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instantiate_prefabC
Instantiate a prefab in the current level.
| Name | Required | Description | Default |
|---|---|---|---|
| position | No | ||
| parent_id | No | ||
| prefab_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Instantiate' implies a mutating operation, but the description does not state whether it modifies the current scene, whether it is undoable, what happens if the prefab_path is invalid, or what the return value/output represents. This is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no filler. It is front-loaded with the core action. However, it is so brief that it underspecifies the tool's behavior, so it loses one point for being under-developed rather than merely 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?
At 0% parameter coverage, no annotations, and a one-line description, an agent has too little information to invoke this tool correctly. There is no guidance on coordinate systems, parent relationships, or level-loading requirements. The description is minimally viable for purpose but not for correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain any of the three parameters. prefab_path, position, and parent_id have no added meaning beyond their raw schema definitions. With such low coverage, the description was expected to compensate and does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('instantiate') and resource ('prefab') with a scoping qualifier ('in the current level'). It is easy to understand what the tool does. However, it does not explicitly differentiate itself from sibling tools like create_entity or create_prefab_from_entity, so it does not fully earn a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as create_entity, duplicate_entity, or create_prefab_from_entity. It also does not mention any prerequisites like needing a level loaded or how it differs from related creation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_entitiesA
List all entities in the currently open O3DE level.
Returns a JSON array of objects with 'id' and 'name' fields.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure and does state the return shape ('JSON array of objects with 'id' and 'name' fields'), which is the key behavior an agent needs. It does not address edge conditions like calling with no level open or whether hidden entities are included, but for a simple read-only list operation the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two tight, front-loaded sentences with zero filler. The action verb and scoping appear first, and the return-format note occupies a single short sentence that 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?
For a zero-parameter read-only listing tool with an output schema present, the description covers the essentials: scope and return shape. Minor gaps remain around failure behavior when no level is open and how this tool relates to entity-focused siblings, but nothing blocks a correct first call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline of 4 applies — there is no parameter semantics for the description to clarify. The 'currently open O3DE level' wording functions as an execution-context constraint rather than a call argument, which is appropriate given the empty 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 uses a specific verb ('List'), names the resource ('entities'), and scopes it to 'the currently open O3DE level.' Within a large sibling set that includes create_entity, delete_entity, duplicate_entity, and list_levels, a read-only entity listing is unambiguously distinct without needing to open any 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 implies its use case — enumerate all entities in the current level — but names no alternatives, exclusions, or prerequisites. An agent receives no routing guidance such as preferring get_entity_components for per-entity detail, so the context is clear but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_gemsA
List all external gems registered on this machine.
Returns: JSON array of gem objects, or a message if none are found.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly states the return format (JSON array) and the empty case (a message if none are found). The verb 'List' implies a read-only operation, so no destructive behavior is expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, purposeful sentences. The core purpose is front-loaded, and the return behavior is stated without any filler or redundant detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read-only list tool with an output schema, the description provides everything needed: scope, return type, and empty-case behavior. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema coverage is 100%, so there is nothing for the description to clarify. This matches the baseline for no-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a precise resource ('external gems registered on this machine'), which clearly distinguishes it from the sibling list_project_gems. An agent can immediately understand the tool's scope without opening any 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 clearly states the context: external gems registered on this machine. It implies that project-level gems belong to list_project_gems, though it does not explicitly name that alternative or say when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_levelsC
List all levels available in an O3DE project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool lists levels, which implies a read-only operation, but it does not mention what happens when project_path is omitted, whether the current project is used by default, or any potential side effects or failure modes. The optional parameter is entirely unexplained.
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, focused sentence with no filler or redundant wording. It front-loads the core action and object. This is appropriately concise for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description leaves important gaps: the project_path parameter is undocumented, and there is no guidance on how this tool relates to sibling level operations. The presence of an output schema helps with return values, but it does not compensate for missing parameter semantics and usage 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 0%, and the description does not mention project_path at all. Although the parameter name and title 'Project Path' are somewhat self-explanatory, the description does not explain how the path is used, what format is expected, or what the default behavior is when it is null. This is insufficient given the low 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 'List all levels available in an O3DE project' clearly states a specific verb ('list'), a resource ('levels'), and a scope ('in an O3DE project'). It is easy to distinguish from siblings like load_level or create_level based on the verb, but it does not explicitly name or differentiate from alternatives, so it falls short of a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_level_info or load_level. There is no mention of prerequisites, fallback behavior, or which sibling tools are more appropriate for other scenarios. This is a clear gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_project_gemsA
List gems enabled in a specific O3DE project.
Args: project_path: Path to the O3DE project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the behavioral burden. 'List' indicates a read-only operation scoped to a specific project, but it discloses no further traits such as side effects, error behavior, or whether the project must be active.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the core behavior is stated in the first sentence, and the only parameter is documented in one clear line. No superfluous text is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter listing tool with an output schema present, the description covers the essential call details: what it returns conceptually and what the project_path argument means. It is slightly incomplete in not addressing the relationship to sibling listing tools, but nothing critical is missing for a straightforward invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must define the parameter. It does so with 'project_path: Path to the O3DE project,' which adds meaning beyond the raw string type and title, though it leaves format details unspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action and object: 'List gems enabled in a specific O3DE project.' It clearly identifies the tool's scope, distinguishing it from a generic gems listing, though it does not explicitly name or contrast sibling list_gems.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to choose this tool over alternatives. It does not mention list_gems, enable_gem, or disable_gem, and it does not state conditions or prerequisites such as requiring an existing project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List all O3DE projects registered on this machine.
Returns: JSON array of project objects, or a message if none are found.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It clearly conveys a read-only listing operation and discloses the return behavior: a JSON array of project objects, or a message when no projects exist. It does not claim any side effects or destructive behavior, matching the implied read-only nature.
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 filler. The core action is front-loaded in the first sentence, and the return behavior is stated clearly in the second. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool with an output schema, the description is almost complete: it identifies the resource, scope, and empty-case return behavior. It lacks only explicit context on when to select this tool over related list_* siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4 and there is no parameter information for the description to add. The schema fully covers the empty parameter set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('List'), a specific resource ('O3DE projects'), and a scope ('registered on this machine'). It clearly distinguishes this from sibling tools like list_gems, list_levels, and list_project_gems by domain and 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 states the tool's function but gives no guidance about when to choose it over alternatives such as list_gems or list_levels, nor any use conditions or exclusions. The when-to-use context is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templatesA
List available O3DE project and gem templates.
Scans the engine's Templates directory for template definitions.
Returns: JSON array of template objects with name, summary, and path.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden. It discloses what the tool does (scans the Templates directory) and exactly what it returns (JSON array with name, summary, and path). For a zero-parameter read-only listing tool, this is sufficient behavioral disclosure; only minor gaps remain around failure modes or prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences/sections with no wasted words: purpose, scanning behavior, return format. The most important information is front-loaded in the first line.
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 0-parameter tool with an output schema, this is nearly complete: it gives the source directory and the structure of the result. It does not mention whether an engine must be active or registered, but that is a minor omission given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts no parameters, so the baseline is 4. The description adds value by declaring the return object fields, though no parameter-specific semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'List available O3DE project and gem templates.' It further narrows the resource by saying the tool scans the engine's Templates directory for template definitions, making it clearly distinct from sibling tools that list actual projects or gems.
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 purpose implies when to use this tool: when the agent needs template definitions rather than actual projects or gems. However, it never explicitly states exclusions or alternatives, and with siblings like list_projects, list_gems, and list_project_gems nearby, explicit guidance would help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_levelB
Open a level in the O3DE Editor.
Args: level_path: Path to the level relative to the project (e.g. 'Levels/MyLevel').
| Name | Required | Description | Default |
|---|---|---|---|
| level_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Open a level' and does not mention side effects such as replacing the current level, discarding unsaved changes, or requiring an active project. This is minimal and not misleading, but it is far from transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the action, followed by a focused parameter explanation. Every sentence earns its place, and there is no redundant repetition of 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 one-parameter tool, the description covers the essential purpose and parameter semantics, and an output schema exists so return values need not be described. However, it omits important contextual details such as whether loading a level replaces the current one, what happens to unsaved changes, or any required editor state. This makes it adequate but 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 0%, but the description compensates by explaining that level_path is relative to the project and providing a concrete example ('Levels/MyLevel'). This adds real meaning beyond the bare string property in the schema, though it could be more detailed about accepted formats or dependencies.
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 ('Open a level') and the resource ('in the O3DE Editor'), so an agent can tell this is a load operation. It does not explicitly compare itself to sibling tools like create_level or save_level, so differentiation relies on the verb 'open' rather than direct contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool instead of related level tools such as create_level, save_level, or list_levels. There are no prerequisites, exclusions, or alternative tool references, leaving the agent to infer usage from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redoA
Redo the last undone editor action.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It communicates the state-changing effect (reapplying a previously undone action) but does not disclose potential failure/no-op behavior when no undone action exists or any side effects on the undo/redo stack. This is adequate but has clear gaps.
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 filler. Every word is necessary and directly contributes to understanding the tool.
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 low complexity (zero parameters, output schema provided), the one-sentence description captures the core operation. The main omission is explicit guidance on the precondition (a prior undo), but that is strongly implied by 'last undone editor action.'
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is no parameter semantics for the description to add beyond the empty input schema. The baseline for 0-param tools is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Redo') and a precise object ('the last undone editor action'), making the operation unmistakable. The word 'undone' semantically distinguishes it from the sibling 'undo' even without naming it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'last undone editor action' implies this tool should be used after an undo, but the description does not explicitly state when to use it, when not to, or name alternatives. Usage context is only implied, so it meets the 'implied usage' level.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
refresh_assetsC
Trigger an Asset Processor rescan for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose side effects, asynchrony, and safety. 'Trigger' hints at an asynchronous action, but the description does not say whether the call blocks, how long it may take, whether it affects in-flight asset processing, or what the response looks like. The behavioral profile is largely 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 one short sentence with no filler and a clear front-loaded action verb. It is appropriately concise for a tool with one optional parameter, though it sacrifices informative content for brevity, preventing a perfect score.
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 no annotations and one optional parameter, the description is too thin: it omits the meaning of null project_path, whether the operation is asynchronous, how to observe completion (notably via wait_for_assets), and any side effects. The output schema exists, but the description does not hint at what is returned, leaving an agent with significant 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 single parameter, project_path, has no schema description (0% coverage), and the description never explains what it represents or what passing null means. The phrase 'for a project' vaguely implies a relationship but does not clarify valid values, defaults, or behavior when omitted. The description fails to compensate for the schema gap.
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 ('Trigger') and a specific resource ('Asset Processor rescan' for a project), making the core action clear. It is semantically distinct from siblings like get_asset_processor_status or wait_for_assets, but does not explicitly name an alternative or differentiate itself, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_asset_processor_status or wait_for_assets. It does not mention prerequisites (e.g., an open project), conditions that call for a rescan, or what to do after triggering. This is effectively no usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_engineA
Register an O3DE engine installation with the O3DE manifest.
Args: engine_path: Path to the engine root directory (must contain engine.json).
| Name | Required | Description | Default |
|---|---|---|---|
| engine_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations available, the description carries the full burden of behavioral disclosure. It mentions that engine_path must contain engine.json but does not explicitly state the side effect of modifying the manifest, whether registration is idempotent, or whether write permissions are 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 compact and front-loaded with the core purpose. The Args section is directly useful and contains 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?
For a single-parameter tool, the description is largely complete: it names the action, target, and required parameter constraint. With an output schema present, return-value details are not necessary, though a brief note on manifest mutation would improve it further.
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 itself provides only the parameter name and type, so the description's Args section adds meaningful detail: 'Path to the engine root directory (must contain engine.json)'. This compensates for the 0% schema description 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 the action ('Register') and the resource ('an O3DE engine installation with the O3DE manifest'). This distinguishes it from the sibling register_gem tool, which operates on gems rather than engine installations.
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 by naming the resource and the required engine.json condition, but it does not explicitly state when to prefer this tool over alternatives such as register_gem or set_active_engine. Some context is present but no exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_gemA
Register an external gem with an O3DE project.
Args: gem_path: Path to the gem directory. project_path: Path to the project to add the gem to.
| Name | Required | Description | Default |
|---|---|---|---|
| gem_path | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are available, so the description must carry behavioral disclosure. It states the action but does not disclose side effects such as modifying project registration files, prerequisites, or reversibility, leaving the agent under-informed about the mutation's impact.
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 compact sentence plus two concise argument definitions; every part is functional. There is no redundant detail or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-string-parameter tool, the arguments are sufficiently documented and an output schema is present. However, because this is a mutation with no annotations and no mention of side effects or prerequisites, the behavioral context 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?
The input schema provides only parameter names and types with 0% description coverage. The description compensates by defining gem_path as 'Path to the gem directory' and project_path as 'Path to the project to add the gem to', making the relationship between both parameters clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb ('Register'), a resource ('external gem'), and a destination ('O3DE project'), so it is clear what this tool does. This distinguishes it from sibling tools like create_gem, enable_gem, and list_gems, which operate on gems in different ways.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to choose this tool over alternatives or what conditions are required, such as whether the gem must already exist or whether the project must be active. The only guidance is the action itself, which is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_componentC
Remove a component from an entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| component_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states what the operation does, but not whether it is destructive, undoable, or what happens if the component or entity does not exist. For a mutation-like operation, this is a notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no wasted words. It is front-loaded and easy to parse, though its brevity leaves out important information that other dimensions penalize.
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 two required parameters, no annotations, and no parameter documentation, the description is too thin to fully support correct invocation. It lacks details on parameter formats, error behavior, reversibility, or relation to sibling operations, leaving the agent to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning beyond the raw parameter names. It does not explain what entity_id refers to (name vs. GUID) or how component_type is interpreted (class name, type string, etc.). The description merely restates the operation without clarifying either parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Remove') and a clear object ('a component from an entity'). This unambiguously distinguishes it from sibling tools like add_component and get_entity_components, making the tool's core purpose immediately evident.
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 set_component_property or delete_entity. It does not mention prerequisites (e.g., component must exist, entity must be loaded), typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_console_commandC
Execute an O3DE console command in the running editor.
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that a console command is executed, but does not mention potential side effects, whether arbitrary commands can modify editor state, how output is returned, or any safety considerations. For a generic command execution tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word adds meaning, and the core execution target and context are immediately 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?
This is a simple one-parameter tool with an output schema, so structural details like return values need not be described. However, given the open-ended nature of console commands and the absence of annotations, the description would benefit from noting that commands are executed verbatim and may have arbitrary side effects on editor state. It is minimally adequate but incomplete for safe use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It clarifies that the 'command' parameter is an O3DE console command rather than a shell command, but it does not explain command syntax, argument formatting, or where to find valid commands. This is minimal added meaning beyond the schema's own 'Command' property name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Execute'), a clear resource ('O3DE console command'), and the execution context ('in the running editor'). This is clear enough to distinguish it from siblings like run_editor_python, though it does not explicitly contrast itself 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 gives no guidance about when to prefer this tool over similar sibling tools such as run_editor_python, exec_in_session, or get_cvar/set_cvar. It only says commands are executed in the running editor, with no exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_editor_pythonA
Execute a Python script inside the running O3DE Editor.
The script runs in the editor's embedded Python interpreter and has access to the full azlmbr (EditorPythonBindings) API. Use this for custom editor automation that isn't covered by other tools.
Args: script: Python code to execute. Has access to azlmbr modules. timeout: Optional per-call execution timeout in seconds. The editor runs the script synchronously and does not reply until it finishes, so raise this for known-heavy operations. Omit to use the O3DE_EDITOR_TIMEOUT default (600s).
| Name | Required | Description | Default |
|---|---|---|---|
| script | Yes | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the script runs synchronously in the editor's embedded interpreter, that the editor 'does not reply until it finishes,' and that the timeout can be raised for heavy operations. It also signals the powerful scope of access to the 'full azlmbr API,' which implies arbitrary editor state changes, though it does not warn about side effects explicitly.
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 and front-loaded with the core purpose. Every sentence adds useful information: execution context, API access, use case, and timeout behavior. There is 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 output schema exists, return values need not be explained. The description covers what the tool does, when to use it, how scripts execute, and both parameters in sufficient detail. It is complete enough for an agent to invoke it correctly without additional inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description fully compensates. It explains that the script parameter is Python code with access to azlmbr modules, and it gives detailed timeout semantics including synchrony, per-call behavior, when to raise it, and the 600-second O3DE_EDITOR_TIMEOUT default. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Execute a Python script inside the running O3DE Editor.' It further distinguishes the tool from siblings by stating it is for 'custom editor automation that isn't covered by other tools,' which separates it from the many targeted editor tools listed nearby.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: 'Use this for custom editor automation that isn't covered by other tools.' It implies a when-not-to-use condition but does not name specific alternative tools or explicitly enumerate exclusions, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_levelA
Save the currently open level.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. 'Save' clearly conveys a persistent write operation, but the description does not mention overwrite semantics, failure behavior if no level is open, or other side effects. It is not misleading, just minimally 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?
One sentence with no filler; the verb is front-loaded and every word adds meaning. The description is appropriately sized for a no-argument save operation.
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 no parameters and an output schema, the description is the minimum viable: it identifies the action and the object. However, it leaves unstated whether the operation overwrites an existing save or how errors are surfaced, and there are no annotations to cover these details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the schema fully covers parameter semantics. A baseline of 4 is appropriate because there is nothing for the description to add.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific action (save), the resource (level), and the state condition (currently open). This cleanly distinguishes it from sibling tools like save_prefab and load_level without requiring the agent to inspect schemas.
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 'currently open' implies the tool is for persisting the active level, but the description gives no explicit guidance about when to use it versus alternatives or what preconditions must hold. Usage is inferred rather than clearly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_prefabA
Report where a prefab instance came from.
Propagating live entity edits back to a .prefab file is not reachable
from the editor's Python API: PrefabPublicRequestBus reflects no
save event, and the only serialiser, SaveTemplateToString, is keyed
by template id with nothing exposed to map an entity to one. This
returns the owning prefab path and says so, rather than reporting a
success that never happened. To get a prefab onto disk, use
create_prefab_from_entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, and it does so excellently. It explains the technical limitation, clarifies that the tool returns the owning prefab path, and explicitly states it will not report a false success. This is exactly the kind of honest, non-obvious behavior an agent needs to know.
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 the core purpose and includes necessary behavioral caveats. The middle sentence contains fairly deep API internals (PrefabPublicRequestBus, SaveTemplateToString) that may be more detail than an agent needs, but it does justify why the tool behaves as it does. Overall it is well-structured with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's unusual behavior, an output schema exists, and only one parameter is required, the description covers the essential selection and invocation context. The main gap is the under-explained entity_id parameter, but the agent can still reasonably infer it refers to the prefab instance whose origin should be reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented entity_id parameter. It only implicitly suggests that entity_id identifies the prefab instance whose origin should be reported, but it doesn't explain the expected format, whether it is a persistent ID, or how it relates to other entity IDs in sibling tools. The compensation is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb and resource: 'Report where a prefab instance came from.' It immediately distinguishes itself from the misleading name 'save_prefab' and explicitly names the sibling alternative create_prefab_from_entity, leaving no ambiguity about its actual behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool and when not to: it cannot propagate live edits to a .prefab file, and it directs the agent to use create_prefab_from_entity when the goal is writing a prefab to disk. This is direct, unambiguous routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_engineA
Set the active O3DE engine by name (in-process, not persistent).
Args: name: Name of the registered engine to activate.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure, and it does disclose the key non-persistence behavior ('in-process, not persistent'), which is valuable. It does not mention what happens to the previously active engine, whether activation fails for unregistered names, or what the success response contains.
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 compact lines: a clear purpose statement followed by a short Args block. Every sentence contributes, and the in-process caveat is front-loaded with the main purpose rather than buried.
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 single-parameter, low-complexity setter, the description provides the necessary action, scope, and parameter meaning. The main omissions are edge behaviors such as error handling or replacing an existing active engine, but the output schema covers return details and the tool is otherwise simple enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only names the parameter as a string, while the description adds that it must be the name of a 'registered engine,' which is essential for correct invocation. This compensates for the 0% schema description coverage and fully explains the single required parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a direct verb-resource pair: 'Set the active O3DE engine by name,' which immediately identifies both the action and the target. The parenthetical '(in-process, not persistent)' further disambiguates it from persistent engine/project registration operations in the sibling set.
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 states the operation is in-process and not persistent, implying this is the tool for temporary session-level engine activation rather than permanent configuration. However, it does not explicitly name alternatives such as register_engine for persistent registration or get_engine_info for discovery, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_component_propertyB
Set a property value on a component.
Args: entity_id: The entity ID. component_type: Component type name (e.g. 'Transform'). property_path: Property path using '|' separator (e.g. 'Controller|Configuration|Model Asset'). value: The value to set (as a string — booleans as 'true'/'false', numbers as their string representation).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| entity_id | Yes | ||
| property_path | Yes | ||
| component_type | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It implies mutation by saying 'set', but does not disclose side effects, error behavior, permissions, reversibility, or whether the component must already exist. The value serialization note is useful but mostly parameter-oriented, not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with a one-sentence summary, and uses a structured argument list that makes each parameter easy to parse. No filler or repeated schema information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The parameter documentation is strong enough for a straightforward call, and an output schema exists so return values are not a major gap. However, the description does not explain when to use this tool relative to transform/property siblings or what happens after the set, leaving moderate contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description fully compensates by explaining every parameter. It gives component_type an example, property_path a separator convention and example, and value critical string-encoding rules for booleans and numbers. This is exactly the kind of detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: setting a property value on a component. It is specific enough to distinguish from read-style siblings like get_component_property, though it does not explicitly name any alternative or exclusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as set_transform, add_component, or get_component_property. The description jumps straight into arguments, leaving the agent to infer appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cvarB
Set the value of an O3DE console variable (CVAR).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears the full burden of behavioral disclosure. It only conveys that the tool mutates a CVAR; it does not mention side effects, persistence, type coercion, whether the CVAR must already exist, or error 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?
A single, front-loaded sentence with no filler. Every word contributes to stating the core operation clearly and 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 tool is simple with two required parameters and an output schema, so the description is minimally adequate. However, with no annotations, the agent still lacks guidance on runtime impacts, value validation, and when to prefer this over run_console_command.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no parameter-specific meaning beyond what the schema field names already imply. It does not clarify that value is a string representation, what formats are valid, or whether name refers to an existing registered CVAR.
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 and resource: 'Set the value of an O3DE console variable (CVAR).' It clearly identifies the exact operation and distinguishes this tool from its read counterpart, get_cvar.
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 is provided, and no alternatives such as run_console_command or get_cvar are mentioned. The intended use is only implied by the verb 'Set', leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_parentA
Set the parent of an entity (reparent in the hierarchy).
| Name | Required | Description | Default |
|---|---|---|---|
| entity_id | Yes | ||
| parent_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that the parent is changed, but does not mention side effects such as child behavior, whether the previous parent relationship is removed, or whether the operation can fail.
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 immediately communicates the operation and the domain in which it operates.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two required parameters, and an output schema exists, so return values need not be explained. Still, the description omits behavioral details that would help an agent understand the full impact of reparenting, such as whether the parent must exist or what happens to existing children.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. The natural language 'Set the parent of an entity' implies entity_id is the child and parent_id is the new parent, and the parenthetical adds the concept of reparenting. However, it does not define the parameters explicitly or clarify edge cases like detaching from a parent.
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 a specific action and resource: 'Set the parent of an entity' with the clarifying parenthetical '(reparent in the hierarchy)'. This uniquely distinguishes it from sibling tools like set_transform or set_component_property, since 'parent' is a different hierarchy concept.
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 'reparent in the hierarchy' implies the tool is used when changing an entity's parent-child relationship. However, it does not explicitly state when to choose this over alternatives, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_transformA
Set the world transform of an entity (only provided components are changed).
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| position | No | ||
| rotation | No | ||
| entity_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral burden. It discloses the most non-obvious behavior—unspecified transform components are left unchanged—and scopes the mutation to world space. It does not mention failure behavior, but the output schema covers return values and the partial-update caveat is the important part.
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 focused sentence with the key behavioral caveat embedded in a parenthetical. Every word earns its place and the core operation 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?
Despite the output schema, the definition is not complete enough for correct invocation: an agent cannot know the array conventions for the three numeric parameters or whether a transform component must already exist. The short description is clear but under-specified for a setter with no annotations and no schema descriptions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate. It never explains the expected array shapes/order or rotation convention for position, rotation, and scale, and does not say what 'provided' means for component creation. The partial-update phrase is useful but leaves almost all parameter-level details to inference.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation ('Set the world transform of an entity') and adds a key distinguishing constraint ('only provided components are changed'). This clearly differentiates it from read-only get_transform and general set_component_property.
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 intended use is inferable: use it when you need to modify an entity's world transform. However, the description gives no explicit guidance about when to prefer it over set_component_property, no prerequisites, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_viewport_cameraC
Set the active editor viewport camera transform.
| Name | Required | Description | Default |
|---|---|---|---|
| position | No | ||
| rotation | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only states that the transform is set. It does not disclose whether this modifies persisted editor state, whether null parameters mean 'keep current value', or what coordinate conventions are used.
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, tightly worded sentence with no filler. It is appropriately front-loaded and easy to scan, though its brevity contributes to missing behavioral and parameter details.
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 lack of annotations and 0% parameter description coverage, this definition is too thin for an agent to invoke correctly. An agent cannot determine whether position and rotation are expected simultaneously, what units to use, or how null values behave. The existence of an output schema does not make up for the missing input semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has two parameters with 0% description coverage, and the description does not compensate. It never mentions position or rotation explicitly, and it does not explain array length, units, rotation ordering, or what null means for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly names a specific verb ('Set') and a specific resource ('active editor viewport camera transform'). This distinguishes it from sibling tools like get_viewport_camera, which reads the camera, and set_transform, which likely targets an entity rather than the editor viewport camera.
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 versus alternatives such as get_viewport_camera, set_transform, or capture_viewport. The only context is implied by the tool's name and phrasing, with no exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_buildA
Start a CMake build in the background and return a build ID.
Unlike build_project, this returns immediately with a build ID
that can be polled via get_build_status. Output is drained on a
background thread to prevent pipe stalls on large builds.
Args: project_path: Path to the O3DE project. config: Build configuration -- profile, debug, or release (default: profile). target: Optional CMake target to build (default: all targets).
| Name | Required | Description | Default |
|---|---|---|---|
| config | No | profile | |
| target | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the behavioral burden, and it does so well: it discloses the background execution, immediate return, pollable build ID, and background output draining to prevent pipe stalls. It does not mention error behavior or side effects beyond the build itself, but the core async behavior is clearly disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and payoff, then adds a concise contrast with build_project and an Args section. Every sentence carries distinct information, and there is no repetition of schema fields in prose.
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 supplies the async workflow, the polling mechanism, pipe-stall prevention rationale, and parameter semantics. With an output schema available and no annotations, nothing needed to invoke the tool correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does: project_path is explained as the O3DE project path, config is given the allowed values profile/debug/release plus a default, and target is described as optional with a default of all targets. All three parameters receive meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Start a CMake build in the background and return a build ID.' It differentiates itself from the sibling build_project by noting it returns immediately instead of blocking, so an agent can distinguish the tool without inspecting the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly names build_project as the alternative and gives the deciding context: unlike build_project, this returns immediately with a pollable build ID. It also tells the agent how to follow up via get_build_status, making the intended async workflow clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tail_logB
Read the last N lines of an O3DE log file.
| Name | Required | Description | Default |
|---|---|---|---|
| lines | No | ||
| filter | No | ||
| log_name | Yes | ||
| project_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, 'Read' conveys a non-mutating operation and 'last N lines' clarifies it does not return the full log, so the core behavioral trait is present. It does not disclose edge cases such as missing log files or path resolution behavior, and it does not mention that filtering exists, leaving some behavior implicit.
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 filler; the resource, operation, and scope are all front-loaded and every word contributes. This is an appropriately sized description for a simple read tool.
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 the output schema covering return values and the property names being intuitive, the tool has four parameters and zero schema descriptions. An agent cannot tell what filter matches against, how project_path resolves the log, or how log_name identifies the log, so the description is not complete enough for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description must compensate for all four parameters, but it only hints at 'lines' through 'last N lines'. The required log_name and the optional filter/project_path semantics are left entirely to inference from property names and defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Read') and resource ('O3DE log file') and adds the tail behavior ('last N lines'), making the tool's purpose immediately clear. It is distinct enough from siblings like get_log_errors or create_level, though it does not explicitly name a sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance about when to choose tail_log over related log tools such as get_log_errors, nor any exclusions or prerequisites. The only usage signal is the implied 'when you need the tail of an O3DE log,' which is not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undoB
Undo the last editor action.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavior. It only states the basic mutation, without saying what happens when there is no prior action, whether undo is limited to one step, or whether it can destroy work that redo could restore.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no filler; the core action is stated directly and front-loaded. It is appropriately sized for a parameterless tool.
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 is minimally viable for a simple undo action: it identifies the action and what it reverts. But with no annotations and no usage/edge-case guidance, it is incomplete around undo depth and interaction with redo.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters and the schema is empty, so there is nothing for the description to add. Per the 0-params baseline, no parameter documentation is needed.
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?
States a clear verb and resource: undo the last editor action. It is unambiguous and uses 'last' to delimit scope. However, it doesn't explicitly contrast with the sibling redo tool, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus redo or other editor tools. There is no mention of prerequisites, error cases, or when not to call it; the sibling redo requires the same context and the description doesn't route the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_sceneA
Run the AiCompanion gem's scene validation and return the report as JSON.
Flags common problems (missing cameras, entities without transforms, physics bodies without colliders, and similar) without executing any editor Python.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden, and it does well by explicitly stating that the tool does not execute editor Python, implying safe, read-only validation. It also discloses the kind of problems it flags, making its behavior predictable.
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 only two sentences with no filler: it states the action, the return format, the problem categories, and the key behavioral constraint. It is front-loaded and every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no required parameters and an output schema is present, so the return structure is already covered. The description supplies the missing context: what kind of validation is run, what issues it flags, and that it is safe to invoke without editor Python side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema coverage is 100%, so there are no parameter semantics to document. Per the baseline for zero-parameter tools, the description appropriately does not attempt to add irrelevant parameter 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 names a specific verb ('Run'), a specific resource ('AiCompanion gem's scene validation'), and the concrete output ('report as JSON'). It also differentiates itself from scene inspection siblings like get_scene_snapshot and get_entity_tree by focusing on validation and flagging common problems.
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 this tool: when you want a validation report of common scene problems. However, it does not explicitly mention alternatives or state when not to use it, leaving some routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_assetsB
Wait for the Asset Processor to finish processing (or until timeout).
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the blocking behavior and the timeout fallback, but it does not say what happens on timeout, whether failure is surfaced, or whether calling it with no pending work is safe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no filler. It front-loads the action and includes the key timeout qualifier 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?
For a one-parameter tool, the description is mostly adequate, especially with an output schema present. The main gap is the missing timeout unit and behavior on timeout, which leaves minor but real ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, and the tool description does not explain the timeout parameter. The integer default of 300 is ambiguous without units or semantics, so an agent cannot confidently know whether this is seconds or milliseconds.
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 and resource: 'Wait for the Asset Processor to finish processing'. This makes the core purpose clear and distinct from sibling tools like get_asset_processor_status, though it does not explicitly call out the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent should use this after triggering asset processing and before relying on processed assets. However, there is no explicit guidance about when not to use it or how it compares to alternatives like get_asset_processor_status or refresh_assets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.4.0- Added
get_entity_tree - Added
get_scene_snapshot - Added
validate_scene
63 tool updates
v0.3.0- First observed
add_component - First observed
assign_asset - First observed
begin_session - First observed
build_project - First observed
capture_renderdoc_frame - First observed
capture_viewport - First observed
create_entity - First observed
create_gem - First observed
create_level - First observed
create_prefab_from_entity - First observed
create_project - First observed
delete_entity - First observed
disable_gem - First observed
duplicate_entity - First observed
edit_project_properties - First observed
enable_gem - First observed
end_session - First observed
enter_game_mode - First observed
exec_in_session - First observed
exit_game_mode - First observed
export_project - First observed
focus_entity - First observed
get_asset_processor_status - First observed
get_build_status - First observed
get_bus_schema - First observed
get_bus_schema_live - First observed
get_capabilities - First observed
get_component_property - First observed
get_cvar - First observed
get_engine_info - First observed
get_entity_components - First observed
get_level_info - First observed
get_log_errors - First observed
get_session_vars - First observed
get_transform - First observed
get_viewport_camera - First observed
instantiate_prefab - First observed
list_entities - First observed
list_gems - First observed
list_levels - First observed
list_project_gems - First observed
list_projects - First observed
list_templates - First observed
load_level - First observed
redo - First observed
refresh_assets - First observed
register_engine - First observed
register_gem - First observed
remove_component - First observed
run_console_command - First observed
run_editor_python - First observed
save_level - First observed
save_prefab - First observed
set_active_engine - First observed
set_component_property - First observed
set_cvar - First observed
set_parent - First observed
set_transform - First observed
set_viewport_camera - First observed
start_build - First observed
tail_log - First observed
undo - First observed
wait_for_assets
TDQS
Scored across 66 tools
The toolset covers many distinct areas, but several near-overlapping pairs exist: build_project/start_build, run_editor_python/exec_in_session, get_bus_schema/get_bus_schema_live, and get_scene_snapshot/get_entity_tree/list_entities. Descriptions help clarify the differences, but the sheer number of similarly-purposed tools makes misselection likely.
The dominant verb_noun snake_case pattern is consistent and predictable across most tools (list_*, create_*, get_*, set_*, enable_*, disable_*). Minor outliers like undo, redo, exec_in_session, and wait_for_assets break the pattern slightly without causing major confusion.
66 tools is far beyond what is typically appropriate for a coherent MCP surface, even for a complex engine. Many tools could be consolidated, such as blocking vs background builds, one-off vs persistent Python execution, and multiple scene/entity listing variants, making the set heavy and difficult for an agent to navigate.
The surface is remarkably comprehensive for the O3DE domain: engine registration, project and gem management, builds, asset processing, logs, levels, entities, components, prefabs, viewport control, Python sessions, bus schemas, and console commands are all covered. Minor lifecycle gaps exist, such as no delete project/gem/level or entity rename, but core workflows do not hit dead ends.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Build, run and publish 3D games in the Zero engine from Claude Code, Cursor or Codex, over MCP.
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server for controlling Unreal Engine 5 from AI agents, providing 120+ commands for spawning actors, editing Blueprints, managing assets, and more via CLI or MCP.25 PyPI211MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Cocos Creator that enables AI tools to automate scene editing, resource management, and project operations via HTTP and stdio interfaces.7 npm225MIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables AI agents to control the Unity Editor externally, providing tools for scene, GameObject, component, and other editor operations.1MIT
- AlicenseBqualityCmaintenanceAn MCP server that gives AI agents broad control over Unreal Engine 5.7, enabling actor/asset/level management, Blueprint and material creation, screenshots, automation, and arbitrary editor Python execution.35MIT