Skip to main content
Glama

o3de-mcp

License

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

96 tools across seven 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 tools

  • Dynamic tool discovery: new tools are automatically reported

Editor Automation (41 tools, requires a running O3DE Editor with the AiCompanion + EditorPythonBindings gems):

  • Execute arbitrary Python scripts inside the editor (azlmbr API)

  • Scene snapshot, entity tree, single entity and scene validation served natively by the AiCompanion gem's C++ (get_scene_snapshot / get_entity_tree / get_entity / validate_scene), no editor Python involved, available even in the gem's secure mode

  • List, create, delete, and duplicate entities; reparent with set_parent

  • Add and remove components, get/set component properties, assign assets by path

  • Get and set transforms

  • create_entity, set_transform and delete_entity try the gem's native request types first (gem 0.5.0 or later, validated in C++, available in secure mode) and fall back to editor Python on older gems or the legacy transport

  • Create and instantiate prefabs (saving edits back into an existing prefab is not exposed to editor Python; save_prefab reports that and names the owning prefab)

  • 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 calls

  • Fast-fail when editor is unreachable (avoids repeated timeouts)

Engine Introspection (3 tools):

  • EBus schema discovery, both from generated azlmbr stubs and live from the editor

  • RenderDoc frame capture (on O3DE 26.10.0 the editor does not expose it to Python, so the tool reports the manual steps)

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 (9 tools; 5 need no editor):

  • Asset Processor status, asset refresh (AssetProcessorBatch), and waiting for an Asset Processor run to exit

  • Tail editor and Asset Processor logs, filter for errors

  • With the editor running (AiCompanion gem 0.6.0+): one asset's build status, its jobs with failure logs, and wait_for_asset, which waits until a specific asset is built or reports why it failed

Track View (8 tools, requires a running editor):

  • Cinematic sequence authoring: create, list, describe, and delete sequences; set a sequence's time range

  • Add nodes (Director, Event, entity, component) and control playback (play, stop)

  • Editor Python over azlmbr.legacy.trackview, no gem needed. Track and keyframe authoring are not exposed (the reflected API makes them unreliable to drive)

Animation (17 tools, requires a running editor):

  • List the EMotion FX anim graphs the engine holds and describe one in full: nodes, ports and connections, transitions with conditions, parameters

  • Author anim graphs: create, load, save and remove graphs; add, edit and remove nodes (state machines, motion nodes, blend trees); set a state machine's entry state; add and remove parameters

  • Wire them: transitions between states with conditions (parameter, time, play time, motion, state, tag, vector), and blend-tree port connections

  • Native requests through the AiCompanion gem (gem 0.6.0+, plus the EMotionFX gem); they work in the gem's secure mode

Related MCP server: mcp-bridge

Prerequisites

  • Python 3.10+

  • O3DE installed and registered (engine path in the O3DE manifest or O3DE_ENGINE_PATH env var)

    • Linux/macOS: ~/.o3de/o3de_manifest.json

    • Windows: %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-mcp

Or run it without installing, straight from an MCP client config, with uv:

uvx o3de-mcp

To 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-mcp

With Claude Code

Add to your MCP config (or use a project-level .mcp.json):

  • Linux/macOS: ~/.claude/mcp.json

  • Windows: %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-mcp

This 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-mcp

Development

# 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 only

The 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.loads when 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

AGENTS.md

AI agents

Token-efficient usage guide, decision trees, error handling

docs/architecture.md

Developers & agents

System architecture diagram and communication flows

docs/tool-reference.md

Agents & developers

Compact parameter reference for all 96 tools

docs/recipes.md

Agents & developers

Composable patterns for scenes, physics, lighting, scripting

docs/components.md

Agents & developers

O3DE component name catalog with dependency chains

skills/o3de-headless-and-editor-automation/

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:

  1. New Project: create, configure, and build a project

  2. Build a Scene: sky, lights, ground, camera, static objects

  3. Physics Playground: dynamic bodies, triggers, stacking

  4. Scripted Game: complete mini-game with player, obstacles, goals

  5. Batch Operations: efficient bulk entity creation patterns

  6. CLI-Only Workflow: project management without the editor

  7. Gem Development: create and integrate custom gems

  8. MCP Inspector: interactively test tools via a web UI

Configuration

Environment Variable

Description

Default

O3DE_ENGINE_PATH

Override automatic engine discovery

Auto-detected from manifest

O3DE_ENGINE_NAME

Select engine by name when multiple are registered

First valid engine

O3DE_PROJECT_PATH

Select the project for asset, introspection and list_levels tools

Single registered project

O3DE_EDITOR_HOST

Editor AgentServer host

127.0.0.1

O3DE_EDITOR_PORT

Editor AgentServer port

4600

O3DE_EDITOR_TIMEOUT

Per-command editor execution timeout (seconds)

600

O3DE_EDITOR_CONNECT_TIMEOUT

Editor TCP connect timeout (seconds)

5

O3DE_CAPTURE_WAIT

How long to wait for a viewport capture to reach disk (seconds)

15

O3DE_EDITOR_TLS

Wrap the editor connection in TLS (1 or true to enable)

0 (disabled)

O3DE_EDITOR_TLS_VERIFY

Verify the editor's certificate and hostname

0 (disabled)

O3DE_EDITOR_TLS_CA

CA bundle used when verification is enabled

System defaults

O3DE_CMAKE_GENERATOR

CMake generator for builds

Auto-detected per platform

O3DE_CONFIGURE_TIMEOUT

CMake configure timeout (seconds)

600

O3DE_BUILD_TIMEOUT

CMake build timeout (seconds)

1800

O3DE_EXPORT_TIMEOUT

Project export timeout (seconds)

3600

Editor timeouts: the editor runs each submitted script synchronously and does not reply until it finishes, so O3DE_EDITOR_TIMEOUT is 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 separate O3DE_EDITOR_CONNECT_TIMEOUT and the fast-fail window, so a large command timeout costs nothing on the healthy path. run_editor_python also accepts a per-call timeout argument.

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 point O3DE_EDITOR_HOST at a remote machine, set O3DE_EDITOR_TLS=1 and O3DE_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.json

  • Windows: %USERPROFILE%\.o3de\o3de_manifest.json

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

96 tools
add_anim_graph_nodeA

Add a node to an anim graph.

Returns the new node object exactly as get_anim_graph emits it. An unknown node_type is refused with the list of known types.

Args: anim_graph_id: Graph id (number or digit string). node_type: RTTI or palette name, case-insensitive (for example AnimGraphMotionNode, AnimGraphStateMachine, BlendTree, BlendTreeBlend2Node). parent_id: Parent node id (a state machine or blend tree). Defaults to the root state machine. name: Node name. The engine generates one when omitted. position: [x, y] graph-canvas position in integer pixels.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
positionNo
node_typeYes
parent_idNo
anim_graph_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does reasonably well: it discloses the return value (the new node as get_anim_graph emits it), the error path (unknown node_type refused with the list of known types), the name-generation default, and the parent default (root state machine). It stops short of stating permission/auth requirements or whether the node can be undone.

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

Conciseness4/5

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

Front-loaded with the purpose, then the return contract and error behavior, then a clean Args section. Given the 0% schema coverage, the length is justified; almost every sentence adds information an agent needs.

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

Completeness4/5

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

For a mutation tool with no annotations and a totally undescribed schema, the description covers purpose, arguments, defaults, and error behavior thoroughly. It even restates the return contract despite an output schema existing. The main residual gap is permission/undo semantics, which the sibling undo/redo tools make relevant.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and it does: it explains formats for all five parameters, including accepted id forms (number or digit string), case-insensitive RTTI/palette node_type names with concrete examples, the parent-id domain (state machine or blend tree), and the position array as [x, y] integer pixels.

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

Purpose4/5

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

States a specific verb+resource ("Add a node to an anim graph") that an agent can readily distinguish from sibling operations like add_anim_graph_parameter, add_anim_graph_transition, and connect_anim_graph_ports. It does not explicitly name which sibling to prefer, but the resource is unambiguous.

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

Usage Guidelines3/5

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

Usage is implied by the description (you call it to create a new node, with node_type/parent_id selecting what kind and where). However, there is no explicit when-to-use guidance, no mention of set_anim_graph_node for modifying an existing node, and no exclusions. It leaves the routing to inference.

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

add_anim_graph_parameterA

Add a value parameter to an anim graph.

Returns the parameter object as get_anim_graph emits it. The gem checks each value against the type; min and max are only valid for ranged types (Float, Int, Vector2/3/4, Color, Rotation).

Args: anim_graph_id: Graph id (number or digit string). name: Parameter name. parameter_type: Float (a FloatSlider), FloatSpinner, Int (an IntSlider), IntSpinner, Bool, String, Tag, Vector2, Vector3, Vector3Gizmo, Vector4, Color, Rotation, or the full class name. default: Default value: a number, bool, string, or a list of numbers for vector, color and rotation types. min: Range minimum (ranged types only). max: Range maximum (ranged types only). description: Optional description. group: Group to put the parameter in; created when missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
maxNo
minNo
nameYes
groupNo
defaultNo
descriptionNo
anim_graph_idYes
parameter_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the gem type-checks each value, that min/max are only valid for ranged types, that group is auto-created when missing, and what the return value resembles. It omits failure behavior when validation fails and any permission/session requirements.

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

Conciseness4/5

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

Well front-loaded: purpose first, then return/validation notes, then a structured Args block. Every line carries information, though the prose is slightly more verbose than strictly needed.

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

Completeness3/5

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

For a mutation tool with zero annotation coverage, the description documents inputs thoroughly and can lean on the existing output schema for return shape. However it says nothing about permissions/session state, whether the operation is destructive or reversible, or what happens when type validation fails.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: every one of the 8 parameters is documented, including the full list of accepted parameter_type values (effectively an enum absent from the schema), value formats for default per type, and the ranged-type constraint on min/max.

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

Purpose4/5

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

The opening sentence states a specific verb and resource ('Add a value parameter to an anim graph'), which cleanly separates it from the sibling remove_anim_graph_parameter and the various set_anim_graph_* tools. It doesn't explicitly name a sibling, but the add/remove polarity is unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no prerequisites (does the graph need to be loaded/created first?), and no routing to alternatives. The Args section explains fields, not usage context.

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

add_anim_graph_transitionA

Add a state-machine transition, optionally with conditions.

Returns the transition object as get_anim_graph emits it. Source and target must share a state-machine parent; an exit node cannot be a source. All conditions are added as one Animation Editor undo step.

Args: anim_graph_id: Graph id (number or digit string). target_node_id: The state to transition to. source_node_id: The state to transition from. Required unless wildcard is true. wildcard: True for a wildcard transition (from any state). Then omit source_node_id. blend_time: Blend time in seconds, 0 or more. priority: Higher wins when several transitions are ready (0 to 2**32-1). disabled: Create the transition disabled. sync_mode: 0 disabled, 1 track based, 2 clip based. interpolation: 0 linear, 1 ease curve. conditions: List of {"condition_type": ..., "attributes": {...}}. Types: ParameterCondition, TimeCondition, PlayTimeCondition, MotionCondition, StateCondition, TagCondition, Vector2Condition (or the RTTI name). For example {"condition_type": "ParameterCondition", "attributes": {"parameterName": "Speed", "function": "GREATER", "testValue": 0.1}}. Enum attributes take the integer or the name; an unsupported attribute is refused with the supported list.

ParametersJSON Schema
NameRequiredDescriptionDefault
disabledNo
priorityNo
wildcardNo
sync_modeNo
blend_timeNo
conditionsNo
anim_graph_idYes
interpolationNo
source_node_idNo
target_node_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden, and it delivers well: it discloses the return shape (transition object as get_anim_graph emits it), the undo grouping ('all conditions added as one Animation Editor undo step'), and refusal behavior ('an unsupported attribute is refused with the supported list'). It omits any permission/auth prerequisites, which keeps it from a 5 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.

Conciseness5/5

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

Front-loaded with the one-line purpose, then a constraints paragraph, then an Args block keyed to parameter names. Despite covering 10 parameters, every sentence carries load (constraints, enums, example, refusal semantics) with no filler.

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

Completeness5/5

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

For a 10-parameter mutation tool with zero annotation coverage, the definition supplies the invariants (shared parent, exit-node restriction), the wildcard path, enum legends, condition-type enumeration, and undo semantics. An output schema exists and is correctly referenced rather than re-explained, so nothing an agent needs to invoke it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate entirely, and it does: the Args section documents all 10 parameters, including enum value mappings (sync_mode 0/1/2, interpolation 0/1), priority range, blend_time units, and a full condition-type taxonomy with a worked example JSON. This adds decisive meaning the bare schema cannot convey.

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

Purpose5/5

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

The opening sentence names a specific verb+resource: 'Add a state-machine transition, optionally with conditions.' It is immediately distinguishable from sibling operations like set_anim_graph_transition (modify existing) and add_anim_graph_node (node, not transition). An agent can identify the exact artifact being created without opening a schema.

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

Usage Guidelines4/5

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

Gives concrete preconditions: source and target must share a state-machine parent, and an exit node cannot serve as a source. It also explains the wildcard branch (omit source_node_id). However, it never explicitly contrasts this with set_anim_graph_transition or states when NOT to use it, so it stops short of full when/when-not routing.

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes
component_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters5/5

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

Schema description coverage is 0%, so the description 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

add_sequence_nodeA

Add a node to a Track View sequence.

Add a Director node first; most other node types need a Director present.

Args: name: Sequence name. node_type: One of Director, Event, AzEntity, Component, CVar, Material, Group, Layer, Comment. node_name: Name for the new node.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
node_nameYes
node_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the Director dependency, which is valuable, but says nothing about whether the change persists to disk, whether it is undoable (an undo/redo sibling exists), or what happens on failure. Implied mutation via "Add" is the only safety signal.

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

Conciseness4/5

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

Purpose is front-loaded, the prerequisite follows immediately, and the arg list is compact. The RST double-backtick markup is slightly noisy for a machine reader but costs little.

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

Completeness4/5

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

An output schema exists, so return values need no explanation, and all three parameters are documented. The remaining gap is failure/edge behavior (e.g., adding a non-Director node without a Director present, or referencing a nonexistent sequence name).

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

Parameters5/5

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

Schema description coverage is 0% and the schema declares no enums, so the description must compensate — and it does. It documents all three parameters and supplies the full allowed value set for node_type (Director, Event, AzEntity, Component, CVar, Material, Group, Layer, Comment), which the schema itself lacks.

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

Purpose4/5

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

The first sentence states a specific verb and resource ("Add a node to a Track View sequence"), which is clearly distinguishable from the anim-graph node siblings like add_anim_graph_node. It doesn't explicitly name a sibling to route against, but the "Track View sequence" scope does the disambiguation work.

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

Usage Guidelines4/5

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

The second sentence gives a concrete prerequisite: add a Director node first because most other node types require one present. That is real when-to-use guidance an agent needs for call ordering. It stops short of naming alternatives or exclusions, so it isn't a 5.

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

assign_assetA

Assign an asset to a component property by resolving the asset path.

asset_path is the product path in the asset catalog (for example objects/thing.fbx.azmodel). The property is read back after setting, and only an assignment that holds is reported as done; an unknown asset, component or property, or a value that does not stick, is returned as an error.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes
asset_pathYes
property_pathYes
component_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful behavior beyond the name: the property is read back after setting, only a persistent assignment is reported as done, and failures (unknown asset/component/property or a value that does not stick) surface as errors. It stops short of naming permission/auth requirements or any failure modes around concurrent edits.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the core action and followed by the verification/error semantics. The asset_path example is placed exactly where it disambiguates, and no sentence is filler.

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

Completeness3/5

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

An output schema exists, so return values needn't be explained, and the read-back/error contract is covered. The gaps are the three undocumented parameters and the absence of any permission or sibling-selection guidance for a mutation tool with no annotations.

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

Parameters2/5

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

Schema description coverage is 0% and the schema has no descriptions, so the description must compensate — but it only documents asset_path (with a concrete format example). entity_id, component_type, and property_path remain entirely unexplained in both the schema and the description.

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

Purpose4/5

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

States a specific verb and resource — assigning an asset to a component property — and clarifies the mechanism ('by resolving the asset path'). It is clear what the tool does, but it never contrasts itself with the close sibling set_component_property, so an agent must infer which to pick.

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

Usage Guidelines3/5

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

Usage is implied by the asset-specific framing and the error conditions listed (unknown asset/component/property). However, there is no explicit 'use this instead of X' guidance versus set_component_property or add_component, and no prerequisites are stated.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

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

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
configNoprofile
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate 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.

Purpose4/5

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

The description opens with a specific verb+resource 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.

Usage Guidelines2/5

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. That bus is not exposed to editor Python on O3DE 26.10.0, so there the tool returns manual_required with the manual alternatives (F12 in RenderDoc, or the editor's GPU capture menu).

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does so well: it discloses the underlying bus dependency, the version-specific limitation, and the exact failure mode (manual_required with fallbacks). It does not mention whether the capture affects editor state or performance, a minor remaining gap.

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

Conciseness5/5

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

Front-loads the purpose in the first sentence, then layers mechanism, limitation, and return behavior in short, well-structured paragraphs. No filler sentences.

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

Completeness5/5

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

For a parameterless capture tool, the description covers the trigger mechanism, the environment-specific caveat, and the fallback path. An output schema exists, so the added Returns section is bonus context rather than a required burden.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4; there is nothing to document and the description adds no misleading parameter information.

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

Purpose5/5

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

States a specific verb ('Trigger') and resource ('RenderDoc frame capture') scoped to the O3DE editor, and the mechanism (GraphicsProfilerBus) is named. It is clearly distinguishable from siblings like capture_viewport and 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.

Usage Guidelines4/5

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

Explains the conditions under which the tool works versus fails (bus not exposed on O3DE 26.10.0) and points to the manual alternatives (F12, GPU capture menu). It gives clear context for invocation, though it does not explicitly compare itself against a sibling tool.

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.

Captures the rendered frame with Atom's FrameCaptureRequestBus.CaptureScreenshot, then waits on the client for a new, fully written file (O3DE_CAPTURE_WAIT, default 15 s). A level must be open: without one the engine accepts the capture and never writes a file, which is reported as capture_not_written. A PySide6 widget grab is tried first, but it cannot run in the editor's embedded interpreter on O3DE 26.10.0 (QApplication.instance() is None).

Args: output_path: File path for the screenshot (.png, .jpg, .jpeg, .bmp, or .tga). width: Scale width for the PySide6 grab only; ignored by the Atom capture, so it has no effect on 26.10.0. height: Scale height for the PySide6 grab only; ignored like width.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNo
heightNo
output_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it explains the Atom capture path, the wait/timeout semantics (O3DE_CAPTURE_WAIT, default 15 s), the silent-failure mode reported as capture_not_written, and the PySide6 fallback that cannot run under 26.10.0. Latency, side effect (file write), and environment caveats are all disclosed.

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

Conciseness4/5

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

Front-loaded with a one-line summary, then mechanism, caveats, and a clean Args block. It is fairly long and the PySide6 explanation is repeated between the prose and the two scale args, but nearly every sentence carries actionable detail.

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

Completeness5/5

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

An output schema exists, so return values need not be described, and for a tool with zero annotation coverage the description covers preconditions, timeout configuration, failure reporting, and platform limitations. Nothing needed 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.

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: output_path is documented with accepted extensions, and width/height are explicitly flagged as no-ops on 26.10.0 ('ignored by the Atom capture'). This meaning exists nowhere in the schema and prevents the agent from relying on width/height.

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

Purpose4/5

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

States a specific verb and resource: 'Capture a screenshot of the editor viewport.' An agent immediately knows this produces an image. However, it never distinguishes itself from the related siblings capture_renderdoc_frame and get_scene_snapshot, so it stops short of the sibling-aware 5.

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

Usage Guidelines3/5

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

It gives an important precondition ('A level must be open') and its failure consequence, which is real usage context. But it never says when to prefer this over capture_renderdoc_frame or get_scene_snapshot, so the when-to-use guidance is only implied.

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

connect_anim_graph_portsA

Connect an output port to an input port (blend trees).

Returns the target node's input port object. Refused: a target inside a state machine (use add_anim_graph_transition), incompatible port types, an occupied input, a duplicate, and a cycle. An unknown port name is refused with the node's ports listed as "name" (index).

Args: anim_graph_id: Graph id (number or digit string). source_node_id: Node whose output to connect. source_port: Output port index or name. target_node_id: Node whose input to connect. target_port: Input port index or name.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_portYes
target_portYes
anim_graph_idYes
source_node_idYes
target_node_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it names the return value (target node's input port object) and five distinct failure modes (state-machine target, incompatible port types, occupied input, duplicate, cycle) plus the error format for unknown port names. This is unusually rich behavioral disclosure 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.

Conciseness4/5

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

Front-loaded with purpose, then refusals, then Args – a sensible order with no filler. Slightly verbose in restating the return value that the output schema already covers, but nothing is wasted.

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

Completeness5/5

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

For a 5-required-param mutation tool with an output schema, the description covers purpose, refusal semantics, alternatives, and per-parameter meaning. The output schema handles return structure, so no explanation gap remains.

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

Parameters4/5

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

Schema coverage is 0%, so the Args block must compensate, and it largely does: each of the 5 parameters gets a role description, port args are clarified as 'index or name', and ids are noted as 'number or digit string'. Minor gap: node ids lack the same number/string note given to the graph id.

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

Purpose5/5

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

States a specific verb+resource ('Connect an output port to an input port') and adds the domain qualifier '(blend trees)'. An agent can distinguish it from disconnect_anim_graph_ports and add_anim_graph_transition 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.

Usage Guidelines5/5

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

Explicitly enumerates refusal conditions and, crucially, routes the agent to the correct sibling: a state-machine target is refused with 'use add_anim_graph_transition'. This is a clear when-not plus alternative, not just context.

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

create_anim_graphA

Create a new, empty, in-memory EMotion FX anim graph to author.

Returns {"id": <graph id>, "file_name": ""}. The graph starts with only its root state machine. Save it with save_anim_graph; remove it with remove_anim_graph.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that the graph is in-memory, starts empty with only a root state machine, and is not persisted until saved. The return shape is restated from the output schema rather than adding new information, and there is no note on permissions or failure modes.

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

Conciseness5/5

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

Three short sentences with zero filler, front-loading the creation action before the return value and lifecycle pointers. Every sentence earns its place.

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

Completeness5/5

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

For a zero-argument creation tool with an output schema, the description covers the initial state, persistence requirement, and teardown path. Nothing an agent needs to invoke it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly adds no parameter discussion, which is appropriate here.

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

Purpose5/5

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

States a specific verb and resource ('Create a new, empty, in-memory EMotion FX anim graph') and scopes it as an authoring target. Sibling tools like save_anim_graph, remove_anim_graph, and load_anim_graph are named, so an agent can immediately tell which operation this is.

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

Usage Guidelines4/5

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

Explicitly routes the agent to the follow-up lifecycle tools ('Save it with save_anim_graph; remove it with remove_anim_graph'), which gives clear usage context for what comes next. It stops short of saying when to prefer this over load_anim_graph for an existing graph.

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.

Tries the AiCompanion gem's native create_entity request first (gem 0.5.0 or later, works in the gem's secure mode) and returns its JSON verbatim: {"entity_id": ..., "name": ..., "position": [...]}. The name is checked here with the gem's own rule (a letter first, then letters, digits, _ or -, at most 128 characters) before either path, and the gem validates the parent; a refusal is returned as an error. Older gems and the legacy transport fall back to editor Python, which prints Created entity [<id>].

Args: name: Name for the new entity. parent_id: Optional entity ID of the parent. Omit (or pass null) for root-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
parent_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden and does so well: it discloses the native gem path first, secure-mode support, verbatim JSON return, the exact name-validation rule, parent validation by the gem, error-on-refusal behavior, and a legacy Python fallback with its specific output string. It does not cover reversibility (undo) or any permission requirements beyond secure mode, keeping it from a 5.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence, followed by the transport/validation behavior and an Args block. It is a little long for a two-parameter tool because of the gem-version history, but nearly every sentence conveys real behavioral information.

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

Completeness4/5

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

For a mutation tool with no annotations but a present output schema, the description covers validation, error behavior, and both invocation paths adequately; the return-value recap is redundant given the output schema. The remaining gap is the absence of any level/context prerequisite and reversibility note.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it meaningfully does: it defines parent_id's omit-or-null root-level semantics and supplies a concrete name-validation rule the schema omits. The name parameter itself is only described tautologically, and the stated null semantics sit slightly oddly against the schema's empty-string default.

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

Purpose4/5

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

States a specific verb and resource ("Create a new entity in the current O3DE level") that clearly separates it from delete_entity or duplicate_entity by implication. It is easy to identify what the tool produces, but it never names or contrasts with the closest siblings, so it stops just 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.

Usage Guidelines2/5

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

The description explains implementation paths and transport fallbacks but gives no when-to-use guidance, no prerequisites (e.g. an active level must be loaded), and no direction toward alternatives like duplicate_entity or instantiate_prefab. The only actionable direction is the parent_id omit/null note, which is parameter-level, not usage-level.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pathYes
templateNoDefaultGem

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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 level in the current O3DE project and open it in the editor.

Args: name: Level name (alphanumeric, hyphens or underscores, starting with a letter). The level is written to <project>/Levels/<name>/. template: Level template prefab, as a path relative to an asset scan folder. Defaults to the editor's own New Level default, Prefabs/Default_Level.prefab (camera, sun, grid). Pass an empty string for a bare level with no entities.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
templateNoPrefabs/Default_Level.prefab

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations, so the description carries the full burden, and it does disclose real behavior: where the level is written (<project>/Levels/<name>/), what the default template contains (camera, sun, grid), and that an empty template string yields a bare level with no entities. It omits what happens if a level of that name already exists and any error/permission behavior, which keeps it from a 5.

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

Conciseness4/5

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

The primary action is front-loaded in the first sentence, and the per-argument notes each earn their place by adding constraints and semantics not present in the schema. Slightly verbose but no wasted sentences.

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

Completeness4/5

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

For a two-parameter mutation tool with an output schema, the description covers naming rules, destination, template default, and the empty-string edge case, so an agent can call it confidently. The remaining gap is collision/overwrite behavior when the target name already exists.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate, and it does: it gives the naming constraint (alphanumeric, hyphens or underscores, starting with a letter), the destination path for name, and for template the resolution base (relative to an asset scan folder), the default value, and the special empty-string semantics.

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

Purpose5/5

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

States a specific verb and resource ('Create a new level in the current O3DE project') plus a secondary effect ('open it in the editor'). This clearly separates it from sibling load_level and save_level without needing the schema.

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

Usage Guidelines3/5

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

Usage context is implied by 'current O3DE project' and the editor-opening behavior, and the template arg hints at the create workflow. However, it never states when to use this versus load_level or list_levels, nor any prerequisites or state requirements.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes
prefab_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
pathYes
templateNoDefaultProject

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

create_sequenceA

Create a new Track View cinematic sequence in the current level.

Creates a modern Sequence Component sequence (on its own entity). A new sequence has no nodes; add a Director node with add_sequence_node before adding other nodes. An existing name is reported as an error.

Args: name: Sequence name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the initial state (no nodes) and the error behavior on duplicate names, but says nothing about persistence, undo behavior, permissions, or whether the current level must be loaded/saved.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by the node-workflow caveat and the duplicate-name constraint. Efficient overall, though the 'Args' block adds little and is somewhat redundant.

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

Completeness4/5

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

An output schema exists so return values need not be explained. For a simple single-parameter creation tool, the description covers creation, initial state, follow-up call, and the duplicate-name error – the main omission is any note on persistence or level context.

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

Parameters3/5

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

Schema description coverage is 0% for the single 'name' parameter, and the 'Args' block only restates 'Sequence name'. The uniqueness constraint mentioned in the body ('An existing name is reported as an error') does add real semantic value about the parameter.

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

Purpose5/5

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

States a specific verb ('Create') and resource ('Track View cinematic sequence'), scoped to the current level, and notes it produces a Sequence Component on its own entity. This clearly distinguishes it from siblings like list_sequences, get_sequence, and delete_sequence.

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

Usage Guidelines4/5

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

Gives explicit workflow guidance: a new sequence has no nodes, so add a Director node with add_sequence_node before adding others. It names the follow-up tool and the condition for using it, though it does not state when a caller should prefer creating a new sequence over reusing an existing one.

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

delete_entityA

Delete an entity from the current O3DE level.

Tries the gem's native delete_entity request first (gem 0.5.0 or later, works in secure mode) and returns its JSON verbatim: {"deleted": <id>}. A missing entity or the level's root entity is refused by the gem and returned as an error. Older gems and the legacy transport fall back to editor Python, which prints Deleted entity [<id>].

Args: entity_id: The entity ID to delete.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses the two execution paths, the verbatim JSON return shape, and the error cases (missing entity and root entity are refused). It omits whether the deletion is reversible/undoable and any permission requirements, which are material for a destructive operation.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by escalation detail and a compact Args block. It is slightly verbose on output formatting, but nearly every sentence carries operational information.

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

Completeness4/5

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

An output schema exists, yet the description still usefully previews the return shapes for both paths. Combined with the error-case coverage it is nearly complete for a one-parameter destructive tool, though it should flag irreversibility/undo availability given the sibling undo tool.

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

Parameters3/5

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

Schema coverage is 0% and the only argument is glossed as 'the entity ID to delete', which mostly restates the parameter name. It does add some semantics by noting that missing IDs and the root entity ID are rejected, giving a hint about valid values.

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

Purpose5/5

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

States a specific verb ('Delete') and resource ('an entity from the current O3DE level'), which is unambiguous against siblings like create_entity, duplicate_entity, and remove_component. An agent can identify exactly what the tool does without opening the schema.

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

Usage Guidelines3/5

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

The description explains the execution paths and their preconditions (gem 0.5.0+, secure mode; older gems fall back to editor Python), which is useful operational context. However, it never states when to prefer this over an alternative or what prerequisites (e.g., level loaded) must hold before calling.

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

delete_sequenceC

Delete a Track View cinematic sequence from the current level.

Args: name: Sequence name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Delete' implies a destructive, likely irreversible operation, but the description says nothing about permission requirements, reversibility, or what happens to sequences bound to nodes or currently playing.

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

Conciseness4/5

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

The purpose sentence is front-loaded and the Args block is minimal with no wasted prose. It is appropriately sized for a one-parameter tool, though the Args line is redundant.

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

Completeness2/5

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

An output schema exists, so return values need not be described. However, for a destructive tool with zero annotation coverage and 0% parameter description coverage, the definition omits critical behavioral context (reversibility, preconditions, effect on running/related sequences).

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

Parameters2/5

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

Schema coverage is 0% for the single 'name' parameter. The description only restates 'Sequence name.', which adds essentially no meaning beyond the schema's own title. It does not explain accepted formats, prefixes, or whether the name must already exist.

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

Purpose4/5

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

States a specific verb (Delete) and resource (Track View cinematic sequence) plus scope (from the current level), which an agent can distinguish from create_sequence/get_sequence. It does not explicitly name a sibling to differentiate against, 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.

Usage Guidelines2/5

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

No guidance on when to use this versus create_sequence, get_sequence, or stop_sequence, and no prerequisites such as whether the sequence must be stopped first. The agent is left to infer usage context entirely.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
gem_nameYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines3/5

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.

disconnect_anim_graph_portsA

Remove the connection feeding an input port.

Returns {"removed": "<connection id>"}; a free port is not_found.

Args: anim_graph_id: Graph id (number or digit string). target_node_id: Node whose input to free. target_port: Input port index or name.

ParametersJSON Schema
NameRequiredDescriptionDefault
target_portYes
anim_graph_idYes
target_node_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that a free port returns not_found (an idempotency-style behavior), which is valuable, and 'remove' signals mutation. However, it says nothing about permissions, reversibility, or effects on the rest of the graph, and the successful return payload is also covered by the output schema.

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

Conciseness5/5

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

Front-loads the action and return semantics in two short sentences, then a compact Args block. No filler; every line earns its place.

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

Completeness4/5

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

An output schema exists, so return values needn't be re-explained, and params plus the not_found behavior are covered. The main gap is the missing mutation/destructive framing that would matter with no annotations, but overall it is sufficient to call the tool correctly.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by defining all three parameters: anim_graph_id (number or digit string), target_node_id (the node whose input to free), and target_port (input port index or name). It adds real meaning beyond the bare anyOf schemas, though it doesn't detail port-name format.

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

Purpose5/5

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

States a specific verb+resource ('Remove the connection feeding an input port') and scopes it to an input port, which cleanly distinguishes it from the inverse sibling connect_anim_graph_ports. An agent can tell what it does 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.

Usage Guidelines3/5

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

Usage is implied by the tool's function (free an input port by removing its incoming connection) and by the sibling connect_anim_graph_ports, but there is no explicit when-to-use/when-not guidance or named alternative. Adequate but leaves the routing to inference.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema coverage is 0%, so the description must 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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
originNo
project_nameNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description opens with a specific verb and resource ('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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
gem_nameYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

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

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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

Schema description coverage is 0%, so the description must 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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

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

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
configNoprofile
output_pathYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

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

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_anim_graphA

Describe one EMotion FX anim graph in full.

Returns the gem's JSON: nodes (with type, parent, position, ports and connections; state machines also carry entry_state_id), transitions (with blend time and conditions), parameters, node_groups and the root_state_machine_id. Pass exactly one selector. An unknown graph is returned as an error. Needs the AiCompanion gem's native request (gem 0.6.0+) and the EMotionFX gem.

Args: anim_graph_id: Graph id from list_anim_graphs (number or digit string). file_name: Graph file name, matched exactly first, then by its tail case-insensitively (for example Character.animgraph).

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameNo
anim_graph_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses error behavior for unknown graphs, the exact-one-selector constraint, matching semantics, and hard prerequisites (AiCompanion gem native request 0.6.0+ and EMotionFX gem). It never explicitly states the operation is read-only, but 'Describe' plus the documented failure mode makes the safety profile clear.

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

Conciseness3/5

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

Purpose and selector constraint are front-loaded and the Args block is tight, but the middle paragraph enumerates return fields (nodes, transitions, parameters, node_groups, root_state_machine_id) that an output schema already covers, which is redundant for an agent and dilutes the high-value sentences.

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

Completeness4/5

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

For a two-parameter read tool with an output schema, the description covers dependencies, selector exclusivity, id sourcing, name-matching rules and error behavior. The only unaddressed aspects are pagination/size expectations and an explicit read-only statement.

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

Parameters5/5

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

Schema description coverage is 0%, but the Args section fully compensates: anim_graph_id accepts a number or digit string and is sourced from list_anim_graphs; file_name is matched exactly first, then by tail case-insensitively, with an example. This is meaning the bare schema does not provide.

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

Purpose5/5

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

States a specific verb ('Describe') and singular resource ('one EMotion FX anim graph'), and the phrase 'in full' contrasts it with the sibling list_anim_graphs, which enumerates graphs rather than returning one graph's contents.

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

Usage Guidelines4/5

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

Gives a concrete selection rule ('Pass exactly one selector') plus the origin of the id ('from list_anim_graphs'), which tells the agent how to obtain the input. It does not explicitly name the alternative tools or when not to use this one, so it falls short of a full when/when-not statement.

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

get_asset_jobsA

List the Asset Processor jobs for one source file, with failure logs.

Returns {"source_path", "jobs": [{"job_key", "platform", "builder", "status", "error_count", "warning_count", "job_run_key", "source_file", "watch_folder", "log"?, "truncated"?}]} with status one of queued, in_progress, failed, completed or missing. A source the Asset Processor has not registered answers the error code engine_error. Needs the AiCompanion gem 0.6.0+; works in secure mode.

Args: source_path: The source file, relative to the project or a full path. escalate: Move the file's queued jobs to the front of the queue. include_logs: Attach each failed job's log (cut at 64 KB).

ParametersJSON Schema
NameRequiredDescriptionDefault
escalateNo
source_pathYes
include_logsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burdens, and it discloses a lot: the engine_error code returned for unregistered sources, the AiCompanion gem 0.6.0+ prerequisite, and secure-mode compatibility. It does not flag that escalate mutates queue ordering or that include_logs truncates logs, but overall the behavioral disclosure is strong.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence and the Args block is tight and well-organized. The return-structure block is somewhat redundant since a consumed output schema already exists, but the overall length is reasonable and every section is legible.

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

Completeness5/5

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

For a 3-parameter read tool with an output schema, the description covers purpose, prerequisites, error behavior, enum values, and per-parameter semantics. Nothing an agent needs to select or invoke it correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: it explains source_path accepts a project-relative or full path, escalate moves queued jobs to the front of the queue, and include_logs attaches failed-job logs truncated at 64 KB. All three parameters gain meaning beyond their bare titles.

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

Purpose4/5

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

The first sentence states a specific verb and resource with scope: listing Asset Processor jobs for one source file, including failure logs. It is clear enough to distinguish from broad siblings like get_asset_processor_status, but it never explicitly names or contrasts those siblings, 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.

Usage Guidelines2/5

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

There is no when-to-use guidance or routing against alternatives such as get_asset_status, wait_for_asset, or get_asset_processor_status. The agent must infer from the description alone that this is the tool for per-file job inspection, and there are no exclusions or preconditions stated beyond a passing gem-version note.

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

get_asset_processor_connectionA

Report whether the editor is connected to the Asset Processor.

Returns {"connected", "ping_ms"}. Unlike get_asset_processor_status, which checks for the process on this machine without the editor, this asks the editor itself. Needs the AiCompanion gem 0.6.0+.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations, so the description carries the burden, and it does add real context: the return payload shape and, importantly, the prerequisite 'Needs the AiCompanion gem 0.6.0+'. It does not describe failure behavior when the gem is absent or when the connection is down, so it falls just short of full disclosure.

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

Conciseness4/5

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

Front-loaded with the purpose, then the return shape, then the sibling contrast, then the prerequisite. Tight and well ordered, though the inline return-field listing partially duplicates the existing output schema.

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

Completeness5/5

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

Given an output schema already documents the return values, the description supplies exactly the missing pieces: the sibling disambiguation and the gem version prerequisite. Nothing an agent needs to call it correctly is absent.

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

Parameters4/5

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

Zero parameters, so the baseline of 4 applies. The description correctly adds no parameter detail because none exist.

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

Purpose5/5

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

States a specific verb and resource ('Report whether the editor is connected to the Asset Processor') and explicitly names the sibling it must not be confused with (get_asset_processor_status), explaining the semantic difference. An agent can route between the two without opening either schema.

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

Usage Guidelines5/5

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

Explicitly distinguishes this tool from the alternative: get_asset_processor_status checks the process on the machine, whereas this asks the editor itself. The selecting condition is stated, leaving nothing to inference.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_asset_statusA

Ask the Asset Processor, through the editor, for one asset's build status.

Returns {"path", "status", "connected"} with status one of unknown, missing, queued, compiling, compiled or failed (plus query_path when the gem rewrote the path). The query also escalates the asset in the build queue. A source whose build failed has no products and answers missing; use get_asset_jobs or wait_for_asset to tell that apart from a file not registered yet. Needs the AiCompanion gem 0.6.0+; works in secure mode.

Args: path: A source or product path, relative to the project, or a full path. flush_io: Flush the file monitor first. Use right after writing the file.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
flush_ioNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description carries full burden and delivers: a disclosed side effect ('the query also escalates the asset in the build queue'), the failed-build-answers-missing behavior, and gem-version/auth requirements. This is exactly the behavioral context annotations would otherwise provide.

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

Conciseness4/5

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

Front-loaded with the core purpose and return shape, then Args. The full status-enum listing is useful but somewhat verbose when an output schema exists; still, every sentence is relevant and there is no filler.

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

Completeness5/5

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

Given an output schema exists (so return values are optional), the description still adds side-effect, prerequisite, and failure-mode detail. Nothing needed to invoke it correctly is missing.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and does: path accepts 'a source or product path, relative to the project, or a full path', and flush_io means 'Flush the file monitor first' with timing guidance. Both params gain meaning absent from the bare schema.

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

Purpose5/5

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

States a specific verb (get) and resource (one asset's build status) and clarifies the mechanism ('through the editor', 'Ask the Asset Processor'). Distinguishes itself from the whole-processor sibling get_asset_processor_status by scoping to 'one asset'.

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

Usage Guidelines5/5

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

Explicitly routes the agent: use get_asset_jobs or wait_for_asset to disambiguate a failed build from an unregistered file. Also states prerequisites ('Needs the AiCompanion gem 0.6.0+; works in secure mode') and a when-to-use for flush_io ('right after writing the file').

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
build_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
busNo
moduleNo
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate 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.

Purpose4/5

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.

Usage Guidelines3/5

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_liveB

Query the running editor's BehaviorContext for a bus schema.

Tries the AiCompanion gem's native get_bus_schema request first (gem 0.4.0 or later): it reads the live C++ reflection and includes each event's argument names and tooltips, which the Python bindings do not expose, and it works in the gem's secure mode. Older gems, the legacy RemoteConsole transport, or an unknown bus fall through to the editor-Python query, and that in turn falls back to the stub files.

ParametersJSON Schema
NameRequiredDescriptionDefault
busYes
moduleYes
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does well: it discloses the gem version dependency (0.4.0+), secure-mode compatibility, transport-specific fallbacks (legacy RemoteConsole), and the gradual degradation to stub files. It omits error/latency behavior, but the fallback semantics are unusually well documented.

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

Conciseness4/5

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

Front-loaded with the core action in the first sentence, followed by a well-organized fallback explanation. Slightly long, but each clause (version gate, transport alternatives, stub fallback) adds actionable information rather than filler.

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

Completeness3/5

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

An output schema exists so return values need not be described, and the fallback/version behavior is covered. However, the total absence of parameter semantics and any guidance on choosing this over the sibling get_bus_schema leaves meaningful gaps for a 3-parameter tool.

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

Parameters2/5

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

Schema description coverage is 0% and none of the three parameters (module, bus, project_path) is explained. The word 'bus' appears in the purpose sentence but its format/meaning is never clarified, and module and project_path are entirely unaddressed, so the description fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource: 'Query the running editor's BehaviorContext for a bus schema', and elaborates that it reads live C++ reflection including event argument names and tooltips. It never explicitly contrasts itself with the sibling get_bus_schema, so an agent must infer the 'live' variant's role from the name alone.

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

Usage Guidelines3/5

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

The description lays out an environment-conditional fallback chain (native gem request, then editor-Python, then stub files), which tells the agent what happens at runtime but not when to prefer this tool over the sibling get_bus_schema. Usage is implied rather than stated as a routing rule.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

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

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines5/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes
property_pathYes
component_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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

Schema description coverage is 0%, but the description 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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

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

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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

The description states a specific verb ('Get') 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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

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

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_entityA

Return one entity's name, transform, parent and component list as JSON.

Served natively by the AiCompanion gem's C++ (get_entity request type, gem 0.4.0 or later) with no editor Python, so it is the cheapest way to look at a single entity and works in the gem's secure mode. On gem 0.6.0 the reply also carries non_uniform_scale and effective_scale, and ids are decimal strings. An unknown id is the error not_found (gem 0.5.0 and earlier answered with the gem's own {"entity_id": ..., "error": ...} object instead).

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations the description carries the full burden, and it does so well: native C++ execution with no editor Python, secure-mode compatibility, version-gated response fields, decimal-string ids on 0.6.0, and explicit error behavior for an unknown id ('not_found'). The only gaps are permissions/auth requirements and any rate or size limits.

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

Conciseness3/5

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

The first sentence is an excellent front-loaded summary. The remainder is dense with gem-version history (0.4.0/0.5.0/0.6.0) and legacy error-shape detail, some of which is useful but much of which is marginal for an agent selecting the tool.

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

Completeness4/5

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

An output schema exists, so return values need not be spelled out, yet the description still characterizes them and adds error and version behavior. For a simple one-parameter read tool, the definition is largely complete; only the entity_id format/derivation is left unaddressed.

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

Parameters3/5

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

Schema description coverage is 0% for the single required 'entity_id' parameter, so the description must compensate. It only indirectly adds meaning by noting that ids are decimal strings on gem 0.6.0; it never states what an entity_id is or how to obtain one, leaving a real gap.

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

Purpose4/5

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

The first sentence names a specific verb and resource and enumerates exactly what is returned (name, transform, parent, component list) as JSON. It also calls itself 'the cheapest way to look at a single entity,' which implicitly contrasts with heavier siblings like get_entity_tree, but it never names those alternatives explicitly.

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

Usage Guidelines3/5

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

'The cheapest way to look at a single entity' implies a use case, and 'works in the gem's secure mode' hints at context, but there is no explicit when-to-use vs when-not, and no sibling (get_entity_tree, get_entity_components, get_transform, list_entities) is named as the alternative. Guidance is present but left to inference.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
log_nameNoEditor
since_linesNo
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

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

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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_sequenceA

Describe one Track View sequence: its time range and its nodes.

Returns JSON with the time range and the node names at the sequence root. A sequence with no Director node yet reports an empty node list.

Args: name: Sequence name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so the description carries the burden. It does disclose return content (time range, root node names) and a useful edge case (empty node list when no Director node exists), but says nothing about read-only safety, error behavior, or missing-name handling.

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

Conciseness4/5

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

Front-loaded with the essential purpose, then return details, then the edge case. Efficient and free of filler, though the 'Args:' block is somewhat redundant for a single self-evident parameter.

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

Completeness4/5

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

With an output schema present, the return values need not be explained, yet the description helpfully summarizes them. Coverage is adequate for a simple single-parameter read tool; only failure/error semantics are unaddressed.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate; it only offers 'name: Sequence name,' which essentially restates the schema's parameter title. The single required param is obvious, but no format, case, or path semantics are added.

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

Purpose4/5

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

States a specific verb+resource ('Describe one Track View sequence') and scopes it to a single sequence versus the sibling list_sequences. Clear, though it doesn't explicitly name the alternative to differentiate when to pick which.

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

Usage Guidelines3/5

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

Usage is only implied: inspect the details of one already-known sequence. No explicit when-to-use vs. list_sequences or when-not guidance, and no precondition that the name must already exist.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate 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.

Purpose5/5

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.

Usage Guidelines3/5

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_transformB

Get the world transform of an entity.

Returns position, rotation (an [x, y, z, w] quaternion) and scale, the effective [x, y, z] scale: the Transform's uniform scale times the entity's Non-uniform Scale component, if it has one. uniform_scale and non_uniform_scale (null without the component) give the two parts.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations to lean on, the description still discloses meaningful semantics beyond structure: rotation is returned as an [x, y, z, w] quaternion, scale is the effective scale computed as uniform times the Non-uniform Scale component, and uniform_scale/non_uniform_scale are null when that component is absent. It does not cover error behavior for an invalid entity_id or permission requirements, which keeps it out of 5 territory.

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

Conciseness4/5

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

The purpose sentence is front-loaded and the return-value detail follows in a compact block. Since an output schema exists, some of the return description is redundant, but it is short enough not to be wasteful.

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

Completeness4/5

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

For a single-parameter read getter with an output schema and no annotations, the description supplies the semantics the schema cannot (coordinate frame, quaternion ordering, effective-scale derivation). The only real omission is any hint about entity_id's format or what happens when the entity does not exist.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter entity_id, so the description must carry the burden and does not. It never explains what an entity_id is, what format it takes, or how to obtain one (e.g., via list_entities or get_entity), leaving the only input undocumented.

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

Purpose4/5

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

States a specific verb and resource ('Get the world transform of an entity') and clarifies scope with 'world' transform, which implicitly separates it from the local-space behavior an agent might assume. It does not explicitly name set_transform as the write counterpart, but the read/write split is unambiguous from the verb.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no reference to alternatives despite set_transform being the obvious inverse operation in the sibling list. The agent must infer the context of use entirely from the tool name.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

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

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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

The description states a specific verb ('get'), a 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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
parent_idNo
prefab_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only says the prefab is placed in the current level. It does not disclose side effects (new entity created), permission requirements, whether the operation is undoable, or how parent/position affect the result.

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

Conciseness4/5

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

A single front-loaded sentence with no filler or redundancy. It is tight, though arguably too terse given the undocumented parameters.

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

Completeness2/5

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

For a mutation tool with no annotations and three undocumented parameters, the description is far too thin. An output schema exists so return values need not be explained, but the lack of parameter and behavioral detail leaves the agent under-informed.

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

Parameters1/5

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

Schema description coverage is 0% across three parameters (prefab_path required, position, parent_id), and the description explains none of them. It adds no meaning about path format, coordinate space, or parenting semantics, so it fails to compensate for the total coverage gap.

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

Purpose4/5

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

The description gives a specific verb ('Instantiate') and resource ('prefab') plus scope ('in the current level'), so an agent can distinguish it from save_prefab or create_prefab_from_entity. It stops short of explicitly differentiating from those siblings, so it is clear but not fully disambiguating.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the many sibling prefab/entity tools (create_prefab_from_entity, create_entity, duplicate_entity). No prerequisites, no conditions, no exclusions are given.

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

list_anim_graphsA

List every EMotion FX anim graph the engine holds.

Returns the gem's JSON: editor_mode and an anim_graphs array with each graph's id, file_name, ownership and dirty flags, node and parameter counts, and the actor instances using it. Needs the AiCompanion gem's native request (gem 0.6.0+) and the EMotionFX gem.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations exist, so the description carries the full burden. It discloses prerequisites, version requirements, and the exact shape of returned data, but is silent on failure modes (missing gems) and does not explicitly state that the operation is non-mutating, though 'List' implies it.

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

Conciseness4/5

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

Front-loaded with the purpose in sentence one, followed by return contents and prerequisites. The enumeration of return fields partially duplicates the output schema, but the prose stays tight and each sentence carries information.

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

Completeness4/5

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

A zero-parameter list tool with an output schema and stated gem/version prerequisites needs little more. The description covers scope, source, and availability conditions; an agent has everything required to call it correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies. There is nothing for the description to disambiguate, and it correctly avoids inventing parameter semantics.

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

Purpose4/5

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

States a specific verb and resource ('List every EMotion FX anim graph the engine holds'), and the word 'every' scopes it clearly against the single-graph sibling get_anim_graph. It does not name any sibling explicitly, so the differentiation is inferred rather than stated.

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

Usage Guidelines4/5

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

Provides concrete prerequisites ('Needs the AiCompanion gem's native request (gem 0.6.0+) and the EMotionFX gem'), which tells the agent when the call will actually work. It gives no explicit when-not or alternative routing, but the read-all scope makes usage unambiguous.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

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

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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 the error no_gems if none are registered.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape and the no_gems error, which is useful, but it does not explicitly state that the operation is read-only or describe any authorization or side-effect characteristics.

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

Conciseness5/5

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

The description is front-loaded and compact. The return-value sentence adds the no_gems error case, which is useful despite the presence of an output schema, and no sentence is wasted.

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

Completeness4/5

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

For a zero-parameter list tool with an output schema, the description is nearly complete. It identifies the resource scope and the error condition, though it could have been more explicit about when to choose this over list_project_gems.

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

Parameters4/5

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

The tool has zero parameters, so there is no parameter semantics for the description to clarify. With no parameters and an empty schema, the baseline score of 4 applies.

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

Purpose5/5

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

The description states a specific verb and resource: 'List all external gems registered on this machine.' The scope phrase 'external gems registered on this machine' differentiates it from sibling list_project_gems, which likely lists project-scoped gems.

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

Usage Guidelines2/5

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

The description gives no explicit when-to-use guidance, no prerequisites, and no named alternatives. An agent must infer that this should be used when inspecting registered external gems rather than project gems.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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

Schema description coverage is 0%, so the description must 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.

Purpose4/5

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.

Usage Guidelines2/5

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 the error no_projects if none are registered.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the return shape (JSON array of project objects) and an error case (no_projects when none are registered), but does not mention permissions, ordering, or whether the list is filtered by engine context.

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

Conciseness5/5

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

The description is front-loaded with the purpose, then adds a compact Returns block that names the error case. Every sentence earns its place and there is no wasted wording.

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

Completeness5/5

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

For a zero-parameter list tool with an output schema, the description covers purpose, return format, and the no-projects error condition. Nothing essential for correct invocation is missing, and the output schema handles detailed return structure.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. The description does not need to explain parameter meaning because there are none, and it appropriately omits parameter details.

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

Purpose4/5

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

The description states a specific verb and resource ('List all O3DE projects') and adds a clear scope ('registered on this machine'). It distinguishes the tool from create_project and export_project, though it does not explicitly name alternatives among siblings such as list_project_gems.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance is provided. The description does not mention alternatives like create_project or list_project_gems, nor does it explain in what context an agent should call this tool versus other listing tools.

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

list_sequencesA

List the Track View cinematic sequences in the current level.

Returns {"sequences": [{"name", "start", "end"}, ...], "count": N}, with each sequence's time range in seconds.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a read-only operation and the return structure with time units in seconds is disclosed, which is useful. However, nothing is said about permissions, whether a level must be loaded, or pagination/limits for large sequence sets.

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

Conciseness4/5

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

Two tight sentences with the core purpose front-loaded. The second sentence describing return shape is partly redundant given an output schema exists, but it does add the non-obvious detail that time ranges are in seconds, which earns its place.

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

Completeness4/5

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

For a zero-argument read tool with an output schema and no annotations, the description covers purpose, scope, and the key unit semantics. The only meaningful gap is the absence of any prerequisite state (e.g., a level must be loaded) or guidance versus the single-sequence get_sequence sibling.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. There is nothing for the description to disambiguate, and it correctly does not pad with meaningless argument prose.

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

Purpose4/5

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

States a specific verb and resource with domain qualifier and scope: 'List the Track View cinematic sequences in the current level.' An agent can distinguish this from list_levels, list_entities, or get_sequence. It stops short of explicitly naming which sibling to use instead, so it is clear but not sibling-routing.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or when-not-to-use guidance and no alternative named (get_sequence for a single sequence, create_sequence for mutation). The phrase 'in the current level' implicitly scopes the call to an open level, which is the only usage signal present.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines3/5

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_anim_graphA

Load an .animgraph file into the engine so it can be authored.

Returns {"id", "file_name"}. Loading a file that is already loaded this way returns the existing graph's id.

Args: file_name: Absolute path, an @alias@ path, or a path relative to the project.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose the non-obvious idempotency behavior plus the return shape. It still omits error behavior (missing file) and whether the load mutates or replaces current authoring state, so it falls short of fully transparent.

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

Conciseness5/5

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

Front-loads the action, then return value, then idempotency behavior, then the argument. Every sentence adds information, and nothing is padded.

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

Completeness4/5

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

An output schema exists so return values need not be explained, and for a single-parameter tool the description covers purpose, path formats, and idempotency adequately. Only the routing versus sibling anim-graph tools is missing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does by enumerating the accepted path forms: absolute, @alias@, or project-relative. That is the main ambiguity an agent would face with a bare 'file_name' string.

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

Purpose4/5

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

States a specific verb and resource (load an .animgraph file into the engine so it can be authored), which implicitly separates it from create_anim_graph and save_anim_graph. The distinction from those siblings is left implicit rather than named, so it lands just 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.

Usage Guidelines3/5

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

The idempotency note ('loading a file that is already loaded returns the existing id') gives a usable hint, but there is no explicit when-to-use-this-vs-create_anim_graph guidance or prerequisite statement. Usage 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.

load_levelB

Open a level in the O3DE Editor.

Args: level_path: Path to the level relative to the project (e.g. 'Levels/MyLevel').

ParametersJSON Schema
NameRequiredDescriptionDefault
level_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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

Schema description coverage is 0%, but the description 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

play_sequenceC

Start playing a Track View sequence in the editor.

Args: name: Sequence name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. 'Start playing' implies a state mutation, but nothing is said about whether playback blocks the editor, whether it must be stopped manually with stop_sequence, what editor mode is required, or what side effects occur. An output schema exists, so return values are partly covered, but the interaction behavior is undisclosed.

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

Conciseness4/5

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

Front-loaded and free of padding; the core purpose is in the first sentence. The trailing 'Args: name: Sequence name.' largely restates the schema but is brief enough not to hurt.

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

Completeness3/5

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

For a single-parameter playback trigger with an output schema, the description covers the minimum. It is missing the lifecycle context that matters here: how playback ends, whether stop_sequence is required, and any preconditions on the named sequence.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It adds only that the 'name' is a sequence name, which mildly exceeds the schema's bare 'Name' string, but gives no identifier format, lookup rules, or whether it must match an existing sequence.

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

Purpose4/5

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

States a specific verb and resource: 'Start playing a Track View sequence in the editor.' An agent can tell what it does, and the sibling set (stop_sequence, list_sequences, create_sequence) makes the play action distinguishable. It does not explicitly contrast itself with stop_sequence or get_sequence, 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.

Usage Guidelines2/5

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

No when-to-use guidance and no alternatives named. It does not say to use stop_sequence to halt playback, nor whether the sequence must already exist or be loaded. Usage is only weakly implied by the verb 'play'.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

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

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
engine_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
gem_pathYes
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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_anim_graphB

Remove an anim graph from the engine (not its file on disk).

Returns {"removed": <graph id>}.

Args: anim_graph_id: Graph id (number or digit string).

ParametersJSON Schema
NameRequiredDescriptionDefault
anim_graph_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries behavioral burden. It discloses two useful traits: it removes from the engine rather than disk, and it returns {'removed': <graph id>}. However, it does not disclose whether the removal is reversible (no undo hint), whether the graph must be loaded/unused, or what happens on an invalid id.

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

Conciseness4/5

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

The description is short and front-loaded: purpose, scope clarification, return value, then arg. Every sentence earns its place, though the return-value line repeats information that the output schema likely already provides.

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

Completeness4/5

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

Given a 1-param tool with a simple mutation and an output schema present, the description covers the essential scope distinction (engine vs disk) and the arg format. It leaves minor gaps around reversibility and prerequisite state, but is otherwise complete.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It documents the single parameter as 'Graph id (number or digit string)', which matches the schema's anyOf integer/string and clarifies the string must be digits. This is adequate but minimal for a 1-param tool.

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

Purpose4/5

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

States a specific verb+resource ('Remove an anim graph from the engine') and clarifies scope with the parenthetical '(not its file on disk)'. This distinguishes it semantically from save_anim_graph and delete-type siblings, though it does not name the sibling that deletes from disk.

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

Usage Guidelines2/5

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

No explicit when-to-use guidance or alternatives are given. The parenthetical implies you'd use a file-level operation for disk removal, but no sibling is named and no condition is stated for choosing this tool over list_anim_graphs/get_anim_graph or other anim graph operations.

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

remove_anim_graph_nodeA

Remove a node (and its children) from an anim graph. The root is refused.

Returns {"removed": "<node id>"}.

Args: anim_graph_id: Graph id (number or digit string). node_id: Node id from get_anim_graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYes
anim_graph_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description must carry the burden and it does disclose key behavior: deletion is destructive and cascades to children, the root node is protected, and the return payload is given. It does not cover failure modes (missing node id, permission needs) or reversibility/undo, which are relevant 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.

Conciseness4/5

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

Front-loaded with the action and its most important side effect (child removal), followed by the return shape and a compact Args block. Slightly redundant to state the return value when an output schema exists, but overall tight and well ordered.

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

Completeness4/5

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

For a two-parameter destructive editor tool with an output schema present, the description covers purpose, the child-cascade side effect, root protection, and where to get node ids. Missing only edge-case behavior (unknown node, reversibility), which is a minor gap.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: anim_graph_id is described as accepting a number or digit string, and node_id is sourced from get_anim_graph. That is real semantic value beyond the bare 'Node Id' / 'Anim Graph Id' schema titles.

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

Purpose4/5

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

States a specific verb and resource ('Remove a node ... from an anim graph') and clarifies scope by noting the cascade to children. It is distinguishable from remove_anim_graph (whole graph) and remove_anim_graph_parameter, though it never names those siblings explicitly to route the agent.

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

Usage Guidelines3/5

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

Gives one useful constraint ('The root is refused') and points to get_anim_graph as the source of node ids, which implies usage context. However, there is no explicit when-to-use / when-not-to-use guidance versus remove_anim_graph or the other node-mutating siblings.

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

remove_anim_graph_parameterB

Remove a value parameter from an anim graph. Groups are refused.

Returns {"removed": "<name>"}.

Args: anim_graph_id: Graph id (number or digit string). name: The parameter's name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
anim_graph_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that group parameters are rejected and what the return payload looks like, but says nothing about permissions, reversibility, or side effects on the graph, leaving meaningful gaps 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.

Conciseness4/5

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

Front-loaded with the core action and the key constraint, then the return shape and args. It is tight and well-ordered, with only minor redundancy in restating the return value that the output schema already covers.

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

Completeness3/5

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

An output schema exists, so the return explanation is not strictly needed. However, for a two-parameter mutation tool with zero annotation coverage, the description omits permission requirements, error modes beyond group refusal, and effects on references to the removed parameter.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It documents both parameters, and the anim_graph_id note ('number or digit string') clarifies the anyOf type beyond the raw schema, but 'name: The parameter's name' adds little and no format or validation detail is given.

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

Purpose4/5

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

States a specific verb (remove) and a precise resource (a value parameter from an anim graph), which also distinguishes it from remove_anim_graph_node and remove_anim_graph. It does not explicitly name those siblings, but the noun phrase 'value parameter' and the 'Groups are refused' scope note make the target unambiguous.

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

Usage Guidelines3/5

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

There is no explicit when-to-use or alternative-routing text. The 'Groups are refused' clause gives partial guidance on when the tool will not work (group parameters), implying usage for value parameters only, but the agent must infer the rest.

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

remove_anim_graph_transitionB

Remove a transition (and its conditions).

Returns {"removed": "<transition id>"}.

Args: anim_graph_id: Graph id (number or digit string). transition_id: Transition id from get_anim_graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
anim_graph_idYes
transition_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does disclose two real traits: the operation cascades to the transition's conditions, and it returns {"removed": "<id>"}. However it says nothing about persistence (whether save_anim_graph is required), reversibility via undo, or required permissions for a destructive mutation, so significant disclosure is still missing.

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

Conciseness4/5

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

The purpose is front-loaded in the first sentence, which is exactly right. The explicit Returns line is partly redundant given an output schema exists, but it is short and the args block is compact, so waste is minimal.

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

Completeness3/5

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

For a 2-parameter destructive tool with no annotations, the description covers purpose, params, and return shape. It is still thin on the operational context an agent needs: whether the change is persisted or requires a save/undo step, and where anim_graph_id should be sourced from. The output schema covers return values, so repeating them is not required but also not harmful.

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

Parameters4/5

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

Schema coverage is 0% (only bare titles), so the description must compensate, and it does for both parameters: anim_graph_id is explained as a graph id accepting number or digit string, and transition_id is tied to its source tool get_anim_graph. It stops short of describing the id format or what happens when a non-existent transition id is passed.

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

Purpose4/5

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

The description states a specific verb and resource ('Remove a transition') and adds scope detail ('and its conditions'), so an agent immediately knows what it does. It does not however differentiate itself from near siblings like remove_anim_graph_node, remove_anim_graph_parameter, or remove_anim_graph, which all follow the same 'remove a graph sub-object' pattern.

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

Usage Guidelines2/5

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

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The only invocation aid is the trailing note that transition_id comes from get_anim_graph, which helps locate the id but is not usage guidance in the sense of choosing this tool over set_anim_graph_transition or remove_anim_graph_node.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes
component_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations 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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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

Schema description coverage is 0%, so the description must 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.

Purpose5/5

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.

Usage Guidelines2/5

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

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

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It 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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
scriptYes
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

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.

Conciseness5/5

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

The description is well organized and front-loaded with the core purpose. 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.

Completeness5/5

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.

Parameters5/5

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

Schema description coverage is 0%, so the description 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.

Purpose5/5

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

The description opens with a specific verb and resource: '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.

Usage Guidelines4/5

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_anim_graphA

Save an anim graph to disk. Not undoable.

Returns {"id", "file_name"}. The file must land inside the project root; the gem refuses any other path.

Args: anim_graph_id: Graph id (number or digit string). file_name: Where to save. Omit to save to the graph's current file.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameNo
anim_graph_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: it discloses irreversibility (not undoable), a hard path restriction enforced by the gem, and the returned keys. It stops short of stating overwrite behavior (what happens if the target file already exists) or permission/error requirements.

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

Conciseness4/5

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

Front-loaded with the action, then the irreversibility caveat, then return shape and constraints, then per-arg notes. No filler sentences, though the return-value line partly duplicates the output schema.

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

Completeness4/5

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

For a two-parameter save tool that has an output schema and no annotations, the description covers purpose, irreversibility, path constraint, and both parameters. The remaining gap is edge-case behavior (existing file, failure modes), which is modest for this complexity.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it mostly does: it explains that anim_graph_id accepts a number or digit string (matching the anyOf) and that file_name defaults to the graph's current file (clarifying the opaque null default) and must resolve under the project root. Minor gap: no detail on path format (relative vs absolute) or overwrite semantics.

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

Purpose5/5

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

States a specific verb and resource ("Save an anim graph to disk"), which unambiguously separates it from sibling save tools like save_level/save_prefab and from get/load/remove_anim_graph. The scope of the write (single graph, to disk) is explicit.

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

Usage Guidelines3/5

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

Gives useful invocation guidance for the optional param ("omit to save to the graph's current file") and a hard constraint (path must be inside project root), plus a caution ("Not undoable"). However it names no alternative sibling or when-not-to-use condition, so the routing guidance is inferred rather than stated.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

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

Conciseness4/5

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.

Completeness4/5

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.

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate 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.

Purpose5/5

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.

Usage Guidelines5/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

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

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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

The description opens with a direct verb-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.

Usage Guidelines3/5

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_anim_graph_entry_stateB

Make a node the entry state of the state machine that contains it.

Returns {"entry_state_id": "<node id>"}.

Args: anim_graph_id: Graph id (number or digit string). node_id: The node to enter first; it must be able to act as a state.

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYes
anim_graph_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose the return value and a node-validity constraint. However, it does not say whether an existing entry state is overwritten, whether the change is reversible, or what permissions are required for this mutation — meaningful gaps for a state-mutating tool.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by the return shape and a compact Args block. Slightly redundant to state the return value when an output schema exists, but no sentence is wasted.

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

Completeness3/5

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

For a two-required-parameter mutation tool with an output schema, the definition covers purpose, return shape, and one constraint. It omits the when-to-use context and behavioral consequences of changing the entry state, leaving the definition adequate but not fully rounded out.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It clarifies that anim_graph_id accepts a number or digit string and adds real semantic meaning for node_id ('the node to enter first; it must be able to act as a state'). That is helpful but partial given both parameters lacked any schema documentation.

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

Purpose4/5

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

The description gives a specific verb+resource: it makes a node the entry state of its containing state machine. This clearly distinguishes it from sibling write operations like set_anim_graph_node or add_anim_graph_node. It stops short of 5 because it doesn't explicitly name which sibling to prefer in ambiguous cases.

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

Usage Guidelines2/5

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

There is a single precondition ('it must be able to act as a state'), which is useful, but no guidance on when to use this versus set_anim_graph_node or other state mutation tools, and no exclusions or alternatives named. Usage is left largely to inference.

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

set_anim_graph_nodeA

Edit a node: rename, move, enable/disable, or set reflected fields.

Returns the node object as get_anim_graph emits it. Pass at least one change. An unknown attribute is refused with the settable fields listed.

Args: anim_graph_id: Graph id (number or digit string). node_id: Node id from get_anim_graph. name: New node name. position: [x, y] graph-canvas position in integer pixels. enabled: Enable or disable the node. attributes: Reflected fields to set, for example a motion node's {"motionIds": ["<motion id>", ...]} (read back as the node's motion_ids).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo
enabledNo
node_idYes
positionNo
attributesNo
anim_graph_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose meaningful traits: mutation requires at least one field, invalid attributes are rejected with the settable list, and the return mirrors get_anim_graph. It omits concerned details like rename-collision or permission behavior, but the error and validation semantics are unusually well surfaced.

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

Conciseness5/5

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

Front-loads the purpose, then the return contract, then the one-change constraint, then a structured Args block. Every sentence earns its place; nothing is redundant against the schema.

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

Completeness5/5

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

Six parameters, two required, all documented, with error behavior and the return contract covered even though an output schema exists. An agent has everything needed to invoke this mutation correctly without further inspection.

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

Parameters5/5

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

Schema description coverage is 0% and only bare titles exist, so the description must compensate — and it does, documenting every parameter: anim_graph_id as number or digit string, node_id sourced from get_anim_graph, position as integer [x, y] pixels, enabled as toggle, and attributes as reflected fields with a concrete motionIds example and read-back note.

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

Purpose5/5

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

States a specific verb (edit) and resource (a node) and enumerates the exact operations: rename, move, enable/disable, set reflected fields. This enumeration cleanly separates it from siblings like add_anim_graph_node, remove_anim_graph_node, and get_anim_graph without needing to name them.

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

Usage Guidelines3/5

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

Gives a usage constraint ('Pass at least one change') and validation behavior ('An unknown attribute is refused with the settable fields listed'), which is helpful. However, it never states when to reach for this tool versus the many other anim-graph editing siblings (add/remove node, connect ports, set transitions), so routing is left to inference.

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

set_anim_graph_transitionA

Change a transition's settings. Pass at least one setting.

Returns the transition object as get_anim_graph emits it.

Args: anim_graph_id: Graph id (number or digit string). transition_id: Transition id from get_anim_graph. blend_time: Blend time in seconds, 0 or more. priority: Higher wins when several transitions are ready. disabled: Disable or re-enable the transition. sync_mode: 0 disabled, 1 track based, 2 clip based. interpolation: 0 linear, 1 ease curve.

ParametersJSON Schema
NameRequiredDescriptionDefault
disabledNo
priorityNo
sync_modeNo
blend_timeNo
anim_graph_idYes
interpolationNo
transition_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description carries the behavioral burden, and it does disclose a real constraint not encoded in the schema: at least one setting must be supplied (schema only requires the two ids). It also states the return shape and per-field value constraints. It stops short of covering persistence (does a save_anim_graph follow?), error behavior on invalid ids, or idempotency.

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

Conciseness5/5

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

Front-loads the action, then the key constraint, then the return contract, then a tight per-argument list. Every line earns its place and the Args block is scannable for a seven-parameter tool.

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

Completeness4/5

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

An output schema exists, so the return value need not be explained in depth, yet the description still usefully ties it to get_anim_graph's shape. All parameters are covered and the mutation constraint stated; the only meaningful gap for a no-annotation write tool is the absence of permission, error, and persistence notes.

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

Parameters5/5

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

Schema description coverage is 0% and the schema is bare 'anyOf' types, so the description must compensate — and it does, documenting all seven parameters including enum encodings for sync_mode (0/1/2) and interpolation (0/1) that are invisible in the schema. blend_time's '0 or more' bound and priority's 'higher wins' semantics add real meaning beyond the type declarations.

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

Purpose5/5

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

States a specific verb-plus-resource ('Change a transition's settings') that is unambiguous within the anim-graph family. The wording cleanly separates it from the add_anim_graph_transition / remove_anim_graph_transition siblings without needing to name them.

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

Usage Guidelines3/5

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

The constraint 'Pass at least one setting' is a useful usage rule, and pointing at get_anim_graph for the transition_id implies the read-before-write flow. However there is no explicit when-to-use versus alternatives guidance (e.g. add/remove transition, set_anim_graph_node) and no statement about when not to call it.

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

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes
entity_idYes
property_pathYes
component_typeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
entity_idYes
parent_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. 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.

Purpose5/5

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.

Usage Guidelines3/5

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_sequence_time_rangeB

Set a Track View sequence's play time range, in seconds.

Args: name: Sequence name. start: Range start in seconds. end: Range end in seconds (must be greater than start).

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
nameYes
startYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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 one real behavioral constraint ('end must be greater than start'), which guards invocation, but says nothing about mutation side effects such as whether changing the range during playback is valid, whether the change persists without a save, or what 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.

Conciseness4/5

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

Front-loaded single-sentence summary followed by a tight Args block; no filler. The per-argument lines largely mirror the schema keys, but they carry added meaning (units, ordering constraint), so they earn their place.

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

Completeness3/5

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

An output schema exists so return values need not be described. However, for a mutation tool with zero annotations there are unfilled gaps: preconditions on sequence state, how the change interacts with playback, and whether it needs saving before it takes effect.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does: all three parameters are explained, with units added for start/end (seconds) and a cross-parameter validation rule that the bare number schema cannot express. Only 'name' lacks detail (path vs. display name).

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

Purpose4/5

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

States a specific verb and resource ('Set a Track View sequence's play time range') and pins the unit to seconds, which is enough to separate it from play_sequence, stop_sequence, and get_sequence. It does not explicitly name a sibling or contrast with them, 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.

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites (must the sequence exist? must playback be stopped?), and no routing to alternatives such as play_sequence or create_sequence. The agent is left to infer the workflow context entirely.

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

rotation is an [x, y, z, w] quaternion and scale an [x, y, z] vector, the effective scale to end up with (each element in (0, 1000]). The call goes to the AiCompanion gem's native set_transform request (works in secure mode) and returns the updated entity's JSON, the same shape as get_entity. The gem refuses an unknown entity or out-of-bounds values, and that is returned as an error.

On gem API 0.5.0 and later (gem 0.6.0) the quaternion and the scale are sent as is. A non-uniform scale is applied through the engine's Non-uniform Scale component (each element at least 0.01); an O3DE Transform itself holds only a uniform scale. A later uniform scale sets that component back to 1. The reply carries scale (uniform), non_uniform_scale and effective_scale.

On older gems the quaternion is converted to XYZ Euler degrees, a rotation at a gimbal pole (pitch within 0.02 degrees of plus or minus 90) goes through editor Python instead, which prints Transform set for entity [<id>], and a non-uniform scale is refused with non_uniform_scale_unsupported. The legacy transport also uses the editor-Python path. An all-zero quaternion is rejected before any path.

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
positionNo
rotationNo
entity_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly: it discloses the quaternion/scale formats and bounds, error behavior (refuses unknown entities or out-of-bounds values), version-dependent behavior across gem API levels, gimbal-pole fallback via editor Python, non-uniform scale handling, and all-zero quaternion rejection. This is exceptionally rich behavioral context.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence, and the dense paragraphs that follow earn their place by covering version-specific and error-path behavior that an agent would otherwise get wrong. Slightly verbose but justified by genuine complexity.

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

Completeness5/5

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

The output schema exists and the description still notes the return shape ('the updated entity's JSON, the same shape as get_entity'), plus error semantics. For a mutation tool with version differences and no annotations, nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it defines rotation as an [x,y,z,w] quaternion and scale as an [x,y,z] vector with elements in (0,1000]. Position and entity_id receive no such treatment, leaving a minor gap, but the two most error-prone parameters are well documented.

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

Purpose5/5

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

States a specific verb and resource ('Set the world transform of an entity') and adds the partial-update scope ('only provided components are changed'). An agent can distinguish this from get_transform or set_parent 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.

Usage Guidelines3/5

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

Usage is implied through the semantics of a transform mutation and the partial-update note, but there is no explicit when-to-use or when-not-to-use guidance, and no naming of sibling alternatives such as get_transform or set_parent. The agent must infer routing.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
positionNo
rotationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters1/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
configNoprofile
targetNo
project_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does: 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.

Purpose5/5

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

The description begins with a specific verb and 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.

Usage Guidelines5/5

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.

stop_sequenceB

Stop the Track View sequence currently playing in the editor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full behavioral burden, yet it only restates the action. It does not say what happens to the sequence's playback position, whether it's a no-op when nothing is playing, or whether it requires editor-mode focus.

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

Conciseness4/5

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

A single efficient sentence with the action front-loaded and no filler. It is appropriately sized for the operation, though it is too terse to be exemplary.

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

Completeness4/5

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

For a zero-parameter, low-complexity operation with an output schema (so return values need no explanation) and no annotations, the description covers what is needed to invoke it. The main omission is edge-case behavior such as calling it when no sequence is playing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline of 4 applies. The input schema confirms an empty properties object, consistent with the description.

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

Purpose4/5

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

States a specific verb (stop) and a precisely scoped resource (the Track View sequence currently playing in the editor). This inherently separates it from siblings like play_sequence, though it never names an alternative explicitly.

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

Usage Guidelines2/5

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

There is no stated when-to-use, when-not-to-use, or fallback guidance. The qualifier 'currently playing' hints at the applicable state, but the agent must infer that calling it with nothing playing is the wrong move.

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
linesNo
filterNo
log_nameYes
project_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

No guidance on when to use this tool versus 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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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

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

Wait until one asset is built, or report why it failed.

Polls get_asset_status. compiled returns {"path", "status": "compiled", "ready": true, "elapsed"}. A failed build returns the error asset_build_failed with the failed jobs and their logs. A source whose build failed answers missing, just like one the Asset Processor has not seen yet, so after a short grace period a missing status is checked against get_asset_jobs. When timeout runs out the result is {"ready": false, "status": <last status>}, not an error. Needs the AiCompanion gem 0.6.0+.

Args: path: The asset to wait for: its source path (best, since the job check needs the source) or a product path. timeout: Seconds to wait (default 120, max 3600). just_written: True right after writing the file, so the first query flushes the file monitor. source_path: The source file to check for failed jobs, when path is a product path. poll_interval: Seconds between polls (0.1 to 10, default 1).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
timeoutNo
source_pathNo
just_writtenNo
poll_intervalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations to lean on, the description carries the full burden and does so well: it discloses the compiled return shape, the asset_build_failed error with logs, that 'missing' is ambiguous (unseen vs failed) and is disambiguated after a grace period, and critically that a timeout returns {ready: false} rather than an error. It also notes the AiCompanion gem 0.6.0+ dependency, a real operational prerequisite.

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

Conciseness4/5

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

The purpose is front-loaded and the Args block is compact and scannable. Some of the return-value prose is redundant since an output schema exists, making the block slightly longer than needed for a tool whose structured output already documents results.

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

Completeness5/5

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

For a 5-parameter, mutation-free polling tool with an output schema and no annotations, everything an agent needs is present: purpose, all parameter meanings and bounds, timeout/cancellation semantics, ambiguous-status handling, and the gem dependency. Nothing material is missing.

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

Parameters5/5

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

Schema description coverage is 0% and the schema gives no enums or descriptions, so the description must compensate entirely - and it does. The Args block explains path (source path preferred because the job check needs it), timeout bounds (default 120, max 3600), just_written's file-monitor flush purpose, source_path's role when path is a product path, and poll_interval's 0.1-10 range.

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

Purpose5/5

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

The first sentence gives a specific verb (wait), resource (one asset), and a secondary outcome (report why it failed). The singular 'one asset' implicitly separates it from the sibling wait_for_assets, and the description explicitly names the underlying get_asset_status/get_asset_jobs it wraps.

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

Usage Guidelines4/5

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

It establishes clear context: this is the blocking/polling alternative to get_asset_status, used when you need to wait for a build rather than snapshot status, and it explains the grace-period fallback to get_asset_jobs. It does not, however, state when NOT to use it versus get_asset_status or wait_for_assets, leaving that inference to the agent.

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

wait_for_assetsA

Wait for the Asset Processor process to exit (or until timeout).

This watches for the process to stop, not for it to go idle, so it suits a one-off AssetProcessorBatch run. A GUI Asset Processor running beside the editor stays up while idle, so with one running this waits out the timeout and reports completed: false.

Returns a progress result {"completed": bool, "elapsed": seconds}. completed is True when no Asset Processor process is running, or False when one was still running when timeout elapsed, with a message noting the timeout. A not-yet-finished wait is a result, not a failure, so this tool does not return the error envelope.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the exact watched condition (process stop, not idle), the GUI-process failure mode, the meaning of completed=true/false, and critically that a not-yet-finished wait is a result rather than an error envelope. This is behavioral context an agent could not infer from the schema.

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

Conciseness4/5

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

The core behavior is front-loaded in the first sentence, and the idle-vs-stop caveat earns its place. The return-value paragraph partially restates what the output schema already declares, making it slightly longer than necessary.

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

Completeness4/5

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

For a low-complexity one-parameter waiting tool with an output schema, the description covers behavior, failure semantics, and timeout behavior adequately. The main gap is the absence of any routing against the similarly named 'wait_for_asset' sibling.

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

Parameters3/5

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

The single 'timeout' parameter has 0% schema description coverage, so the description must compensate; it references timeout only contextually ('when timeout elapsed') and never states its unit or default (300). It adds some meaning but leaves the parameter under-specified.

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

Purpose4/5

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

The description gives a specific verb and resource ('Wait for the Asset Processor process to exit') plus a precise scope ('or until timeout'), and it sharpens the concept by distinguishing process-stop from idle. It never differentiates from the close sibling 'wait_for_asset' (singular) or 'get_asset_processor_status', so an agent cannot tell them apart from text alone.

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

Usage Guidelines4/5

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

It states a clear when-to-use condition ('suits a one-off AssetProcessorBatch run') and an implied when-not ('A GUI Asset Processor running beside the editor stays up while idle, so with one running this waits out the timeout'). However, it never names the alternative tools an agent might pick instead, so routing guidance is contextual rather than explicit.

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

Tool Schema Changelog

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

  1. 33 tool updatesv0.6.0
    • Addedadd_anim_graph_node
    • Addedadd_anim_graph_parameter
    • Addedadd_anim_graph_transition
    • Addedadd_sequence_node
    • Addedconnect_anim_graph_ports
    • Addedcreate_anim_graph
    • Changedcreate_entity3 fields changed
      • removedInput schema / properties / parent_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / parent_id / default
        Previous value: -nullNew value: +""
      • addedInput schema / properties / parent_id / type
        Added value: +"string"
    • Changedcreate_level1 field changed
      • addedInput schema / properties / template
        Added value: +{
        +  "default": "Prefabs/Default_Level.prefab",
        +  "title": "Template",
        +  "type": "string"
        +}
    • Addedcreate_sequence
    • Addeddelete_sequence
    • Addeddisconnect_anim_graph_ports
    • Addedget_anim_graph
    • Addedget_asset_jobs
    • Addedget_asset_processor_connection
    • Addedget_asset_status
    • Addedget_entity
    • Addedget_sequence
    • Changedinstantiate_prefab3 fields changed
      • removedInput schema / properties / parent_id / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • changedInput schema / properties / parent_id / default
        Previous value: -nullNew value: +""
      • addedInput schema / properties / parent_id / type
        Added value: +"string"
    • Addedlist_anim_graphs
    • Addedlist_sequences
    • Addedload_anim_graph
    • Addedplay_sequence
    • Addedremove_anim_graph
    • Addedremove_anim_graph_node
    • Addedremove_anim_graph_parameter
    • Addedremove_anim_graph_transition
    • Addedsave_anim_graph
    • Addedset_anim_graph_entry_state
    • Addedset_anim_graph_node
    • Addedset_anim_graph_transition
    • Addedset_sequence_time_range
    • Addedstop_sequence
    • Addedwait_for_asset
  2. 3 tool updatesv0.4.0
    • Addedget_entity_tree
    • Addedget_scene_snapshot
    • Addedvalidate_scene
  3. 63 tool updatesv0.3.0
    • First observedadd_component
    • First observedassign_asset
    • First observedbegin_session
    • First observedbuild_project
    • First observedcapture_renderdoc_frame
    • First observedcapture_viewport
    • First observedcreate_entity
    • First observedcreate_gem
    • First observedcreate_level
    • First observedcreate_prefab_from_entity
    • First observedcreate_project
    • First observeddelete_entity
    • First observeddisable_gem
    • First observedduplicate_entity
    • First observededit_project_properties
    • First observedenable_gem
    • First observedend_session
    • First observedenter_game_mode
    • First observedexec_in_session
    • First observedexit_game_mode
    • First observedexport_project
    • First observedfocus_entity
    • First observedget_asset_processor_status
    • First observedget_build_status
    • First observedget_bus_schema
    • First observedget_bus_schema_live
    • First observedget_capabilities
    • First observedget_component_property
    • First observedget_cvar
    • First observedget_engine_info
    • First observedget_entity_components
    • First observedget_level_info
    • First observedget_log_errors
    • First observedget_session_vars
    • First observedget_transform
    • First observedget_viewport_camera
    • First observedinstantiate_prefab
    • First observedlist_entities
    • First observedlist_gems
    • First observedlist_levels
    • First observedlist_project_gems
    • First observedlist_projects
    • First observedlist_templates
    • First observedload_level
    • First observedredo
    • First observedrefresh_assets
    • First observedregister_engine
    • First observedregister_gem
    • First observedremove_component
    • First observedrun_console_command
    • First observedrun_editor_python
    • First observedsave_level
    • First observedsave_prefab
    • First observedset_active_engine
    • First observedset_component_property
    • First observedset_cvar
    • First observedset_parent
    • First observedset_transform
    • First observedset_viewport_camera
    • First observedstart_build
    • First observedtail_log
    • First observedundo
    • First observedwait_for_assets

TDQS

B3.2/5.0

Scored across 96 tools

Disambiguation3/5

The set contains several tool clusters with overlapping purposes: seven asset-processor status/wait tools, multiple entity-query tools (list_entities, get_entity, get_entity_tree, get_scene_snapshot, get_entity_components), and several Python/session execution tools (run_editor_python, exec_in_session, run_console_command). The descriptions are unusually detailed and do explain the distinctions, but with 96 tools an agent still faces real misselection risk across these clusters.

Naming Consistency4/5

Nearly all names use a consistent snake_case verb_noun pattern (create_entity, delete_entity, get_transform, set_transform, add_anim_graph_node, remove_anim_graph_node). Minor deviations like undo/redo and the _live suffix on get_bus_schema_live are readable but not perfect matches for the pattern.

Tool Count1/5

96 tools is far beyond what an agent can reliably manage in one MCP surface and qualifies as an extreme mismatch, even for a broad game-engine editor. Many operations (asset status, entity queries, project/gem management) could be consolidated into fewer, more capable tools.

Completeness4/5

The surface is very broad, covering entity/component CRUD, transforms, levels, sequences, anim-graph authoring, assets, and project/gem lifecycle. There are some notable gaps and dead ends: no delete_level, delete_project, remove_gem, or deregister_engine, and save_prefab is documented as unable to propagate edits back to disk.

Maintenance

ActivityMaintained
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP 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.
    31 PyPI
    215
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Cocos Creator that enables AI tools to automate scene editing, resource management, and project operations via HTTP and stdio interfaces.
    11 npm
    236
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    An 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.
    35
    MIT