Skip to main content
Glama

FlaxMCP-Live

CI License: MIT

MCP (Model Context Protocol) server for Flax Engine projects, built with .NET 10 / C# on the official ModelContextProtocol C# SDK. An AI client uses it to work through the live editor without manual steps: check, compile, play, control the game, read the result.

FlaxMCP-Live is an independent fork of eXoz00rd/FlaxMCP by Sebastian Rokicki (MIT). It keeps all upstream tools and adds 16 tools. The code keeps the upstream names (FlaxMcp namespaces, the FlaxMcpBridge plugin). Thus you can merge upstream changes. See Staying in sync with upstream.

Why "Live": the added tools work on the running editor and the running game, not on files:

  • The bridge stays connected when the editor reloads the scripts.

  • A client waits for the editor's events. It does not poll.

  • A client calls commands in the game while the game plays.

The name tells you that this fork is about this live loop.

Status: 1.1 (see CHANGELOG). You install from source. There is no NuGet package yet.

What you get

From upstream FlaxMCP

Added in FlaxMCP-Live

Offline project, content and scene inspection

A bridge host that survives script reloads

Headless script compilation, game builds, structured logs

Long operations as jobs with progress notifications

Live editor tools: actors, selection, transforms, colliders, static models, save, play mode, screenshots

Editor events and waiting: no polling, no sleeps

Material creation and material instance parameters

Game commands: your game registers named commands, the client calls them

An optional gated C# execution tool

Compile checks in under a second, also while the editor plays

Read-only mode and toolset selection

Read and write any member of an actor or script. Find actors by name, type or script

An agent skill that teaches an AI agent to use the server (skills/flaxmcp-live)

Large-world engine support (double-precision vectors), Flax 1.13

Use an IDE-integrated MCP, such as Rider, for C# navigation and refactoring. FlaxMCP-Live does the engine operations, and it reads the editor state that a code model cannot see.

Related MCP server: OpenCode Unreal Engine MCP Bridge

An unattended loop

The main use: an AI client changes game code and checks the result in the running game. No step is manual.

build_check_scripts {}                                   # compile errors in under a second, as SARIF
editor_compile {}                                        # reload scripts; returns when the editor has settled
editor_open_scene { "path": "Scenes/Main.scene" }
editor_play_mode { "action": "start" }
editor_wait_for { "kind": "play_begin", "timeoutSeconds": 60 }
game_command { "name": "spawn", "args": "wave=1" }        # a command your game registered
editor_wait_for { "kind": "log", "textContains": "wave cleared", "timeoutSeconds": 300 }
editor_get_member { "actorId": "…", "member": "Score", "scriptType": "PlayerController" }
editor_play_mode { "action": "stop" }
logs_errors {}                                           # anything that went wrong on the way

Each step returns when its work is done. A script reload between the steps does not stop the connection.

Tools

The default configuration exposes 57 tools across ten toolsets. server is always enabled; every other toolset can be selected with FLAX_TOOLSETS. Tools added in FlaxMCP-Live are in bold.

Toolset

Tools

server

server_info, flax_status

project

project_info, project_targets, project_settings

content

content_search, content_asset_info, content_resolve_guid, content_material_details, content_create_material, content_create_material_instance, content_set_material_instance_parameter, content_create_material_transparent

scene

scene_list, scene_outline, scene_find_actor

build

build_check_scripts, build_generate_projects, build_compile_scripts, build_clear_cache, build_game

logs

logs_tail, logs_errors

editor

editor_scene_graph, editor_get_selection, editor_set_selection, editor_actor_details, editor_modify_actor, editor_create_actor, editor_duplicate_actor, editor_rename_actor, editor_reparent_actor, editor_delete_actor, editor_static_model_details, editor_set_static_model, editor_set_static_model_material, editor_box_collider_details, editor_create_box_collider, editor_set_box_collider, editor_save, editor_play_mode, editor_screenshot, editor_camera_screenshot, editor_compile, editor_open_scene, editor_host_status, editor_find_actors, editor_get_member, editor_set_member, editor_add_script

events

editor_events, editor_wait_for

jobs

editor_job_start, job_status, job_wait

game

game_commands, game_command

editor_execute_csharp and editor_invoke_method are additional editor tools that are absent by default. They appear only when FLAX_ALLOW_CODE_EXECUTION=true and read-only mode is disabled.

Upstream polls a build with build_status and build_result. FlaxMCP-Live replaces these two tools with the job tools. The job tools also run compiles, play mode changes and scene loads.

Offline inspection

project_info reads the .flaxproj; project_targets parses declarations from *.Build.cs; and project_settings returns structured settings assets. The content tools maintain an in-memory index under Content/, including GUID and type metadata read from binary asset headers (Storage format version 9, Flax 1.12 and 1.13). Unrecognized binary assets remain searchable by path without guessed metadata.

The scene tools parse .scene and .prefab files without starting the editor. Actor trees use ParentID relationships, attach scripts to their owners, and report when response limits truncate a result.

Builds, checks and logs

build_generate_projects, build_compile_scripts, and build_clear_cache run the editor headlessly and wait for the operation. Script compilation extracts structured diagnostics rather than returning a raw log.

build_check_scripts compiles the script modules outside the editor, with the compiler arguments Flax.Build last wrote (Cache/Intermediate/<EditorTarget>/<Platform>/<Arch>/<Config>/<Module>.CSharp.response) and the modules' current files. It uses the .NET SDK's compiler server and writes to a scratch folder. It returns the errors as SARIF, with file, line, column and code, in less than a second. It also works while the editor is open or in play mode. editor_compile runs this check first. Only a clean check continues to the editor.

Build tools refuse to start a second editor process while the same project has a live editor session. Close the GUI editor before using them. logs_tail and logs_errors only read the newest project log and remain available while it is running.

The diagnose_build_failure prompt combines build_compile_scripts with logs_errors to distinguish compiler failures from engine or project-configuration errors.

Jobs

build_game can take minutes. Thus it starts a background job and returns the job's handle immediately:

  1. Call build_game with a preset and target, for example Development and Windows.

  2. Call job_wait with the job ID. It sends progress notifications. It returns the state when the job ends or when the wait time ends. job_status reads the state and does not wait.

  3. The result of an ended job is the build outcome. A failed job has an error.

editor_job_start runs long editor operations in the same way: compile, play_start, play_stop, play_pause, play_resume or open_scene. It returns immediately. The editor runs one job at a time.

Live editor bridge

The editor tools communicate with the companion plugin over a local named pipe. flax_status reports whether the configured project has a reachable, protocol-compatible session. Live calls fail clearly when the editor or plugin is not running, or when the editor process that opened the session has exited.

Live scene reads include unsaved state. Write tools change selection and transforms, save modified scenes and assets, and control play mode with start, pause, resume, or stop. editor_screenshot writes a PNG of the visible scene viewport; it requires a GUI editor with a rendered viewport and does not work headlessly. Its destination directory must exist. editor_camera_screenshot renders a camera into its own render target instead: the given Camera actor, the main camera in play mode, or the editor viewport's view. It does not read an editor window, so it works with the editor covered, small or minimised, at any size from 16 to 8192 pixels per side. It shows the 3D scene with the game's post effects, without editor or screen-space UI.

It survives script reloads

When a script changes, the editor reloads its plugins. A usual plugin loses its pipe at that time. In FlaxMCP-Live, a bridge host (src/FlaxMcpBridge/Host) owns the pipe:

  • The plugin compiles the host one time for each editor process, into the Default load context. Thus a reload does not stop the host.

  • Each reloaded plugin attaches to the host again.

  • A request that arrives during a reload waits until the reload ends.

  • When a reload interrupts a request, the host answers interrupted_by_reload. The server sends read-only requests again.

  • A changed host takes control of the pipe from the old host.

editor_host_status reports the host, the plugin generation, the editor's memory and how many old plugin load contexts are still alive. Call it first when the memory increases over many reloads.

Events and waiting

The host records the editor's events in a ring buffer: managed log lines, compiles, reloads, play mode changes, scene loads and saves. editor_events reads the events after a sequence number. editor_wait_for waits until an event of a given kind arrives, for example play_begin, reload_end or log. It can also wait for an event with a given text. Thus a client waits for the event that it needs and does not sleep or poll. editor_compile waits until the editor has reloaded and is stable. The editor also compiles changed sources without a request.

Game commands

A game registers named commands. A client lists them with game_commands and calls them with game_command. The registration needs the FlaxMcpBridge module as a dependency of the game module (options.PrivateDependencies.Add("FlaxMcpBridge") in the .Build.cs file).

using FlaxMcpBridge;

var registration = GameCommands.Register(
    "spawn", "Spawns a wave. Argument: wave=<n>.", arg => SpawnWave(arg));
// Dispose the registration when the script is destroyed.

The handler gets the argument string and returns the result text. The tool shows the type that declares the handler as the owner of the command.

Members, actors and snippets

editor_find_actors finds actors by name, type or script type. editor_get_member and editor_set_member read and write a member path of an actor or of one of its scripts, for example Settings.Speed. editor_add_script attaches a script. editor_open_scene opens a scene. The server checks each tool result against its output schema.

editor_execute_csharp compiles a snippet in the bridge host and runs it on the editor main thread. The compiler stays loaded across reloads. editor_invoke_method calls one method by name. Both tools need FLAX_ALLOW_CODE_EXECUTION.

Large worlds and Flax 1.13

The bridge reads actor translations and vectors as double precision. It builds against engines with large worlds enabled. The minimum engine version is 1.13.7012.

Requirements

  • .NET 10 SDK

  • Flax Engine 1.13.7012 or newer installed locally

  • a Flax project (.flaxproj)

  • the companion plugin installed in that project for live editor tools

Setup from source

1. Get and validate the server

git clone https://github.com/meet-brad-ch/FlaxMCP-Live.git
cd FlaxMCP-Live
dotnet build FlaxMcp.slnx
dotnet test FlaxMcp.slnx
dotnet format --verify-no-changes

2. Install the editor bridge

Add the bridge project to the consumer project's References array, using an absolute path or one relative to the consumer .flaxproj:

{
  "References": [
    { "Name": "$(EnginePath)/Flax.flaxproj" },
    { "Name": "../FlaxMCP-Live/src/FlaxMcpBridge/FlaxMcpBridge.flaxproj" }
  ]
}

Keep existing references and adjust only the bridge path. Flax discovers the EditorPlugin from this reference; no consumer-side PrivateDependencies or Modules.Add entry is required. Start or reload the GUI editor and call flax_status to confirm connected: true.

3. Configure an MCP client

Publish the server with tools/publish.sh (it writes .publish/FlaxMcp.exe, which starts in under a second and does not lock bin/ while you build) and use the executable as the process target. dotnet run --project src/FlaxMcp works too. This JSON shape works for clients that accept an mcpServers map, including Claude Code configuration files:

{
  "mcpServers": {
    "flax": {
      "command": "D:/Tools/FlaxMCP-Live/.publish/FlaxMcp.exe",
      "env": {
        "FLAX_PROJECT_PATH": "D:/Projects/YourFlaxProject"
      }
    }
  }
}

In Rider's MCP server settings, create a stdio server with the same command and environment variables. tools/mcp_roundtrip.py runs tool calls against a server build over stdio from the command line. Prefer absolute paths because GUI clients do not necessarily inherit the shell working directory.

Call server_info, project_info, and flax_status as a basic verification.

4. Give your AI agent the usage skill

The folder skills/flaxmcp-live is an agent skill. It tells an AI agent how to use the server: the order of the calls, the two kinds of IDs, the traps of the live editor, worked workflows and all 59 tools with their parameters. For Claude Code, copy the folder to ~/.claude/skills/ (for all your projects) or to .claude/skills/ in your Flax project. Other agents that read SKILL.md files can use the same folder.

After a server change, make the tool reference again:

python skills/flaxmcp-live/scripts/dump_tools.py --project "D:/Projects/YourFlaxProject"

Configuration

Variable

Required

Description

FLAX_PROJECT_PATH

yes

Path to a .flaxproj, or a directory containing exactly one top-level .flaxproj

FLAX_ENGINE_PATH

no

Flax Engine root. When omitted, uses the Flax Launcher's %APPDATA%/Flax/Versions.txt registrations

FLAX_EDITOR_CONFIG

no

Editor binary configuration: Development (default), Debug, or Release

FLAX_TOOLSETS

no

Comma-separated selection from project, content, scene, build, logs, editor, events, jobs, and game; server is always included. Omit for all toolsets

FLAX_READ_ONLY

no

true, 1, or yes removes all tools that can alter files or editor state

FLAX_BRIDGE

no

Bridge mode placeholder; defaults to auto. It is parsed but does not currently change connection behavior

FLAX_ALLOW_CODE_EXECUTION

no

Enables editor_execute_csharp and editor_invoke_method only when true and FLAX_READ_ONLY is false

FLAX_LOG_LEVEL

no

Minimum server log level written to stderr; defaults to Warning

Unknown toolset names fail at startup and list valid values. With FLAX_READ_ONLY=true, the remaining tools are server_info, flax_status, the project and scene tools, build_check_scripts, content_search, content_asset_info, content_resolve_guid, content_material_details, both log tools, editor_scene_graph, editor_get_selection, editor_actor_details, editor_static_model_details, editor_box_collider_details, editor_host_status, editor_find_actors, editor_get_member, editor_events, editor_wait_for, job_status, job_wait, and game_commands.

Security

  • The bridge accepts local named-pipe connections and records discovery data under %APPDATA%/FlaxMcp/sessions; it does not require network credentials.

  • Build and editor write tools run with the current user's filesystem and process permissions. Use FLAX_READ_ONLY=true for inspection-only clients.

  • editor_execute_csharp compiles and runs arbitrary C# on the editor main thread with the Flax Editor process's full machine permissions, including access to files, processes, credentials, and the network. Enable it only for trusted clients and prompts.

Troubleshooting

flax_status reports connected: false

Confirm the configured project matches the project open in Flax, the bridge reference is present in its .flaxproj, and the editor has finished compiling scripts. Reload scripts or restart the editor after adding the plugin. Check the latest project log for [FlaxMcpBridge] Pipe server started or a plugin compilation error.

Protocol mismatch

The server and editor plugin came from incompatible revisions. Update both from the same checkout, let Flax recompile the plugin, and reload scripts. A mismatch is rejected explicitly rather than sent through an incompatible protocol.

A build says the editor is already running

Headless build operations intentionally refuse to race a GUI editor using the same project and Cache/ directory. Close that editor session normally, then retry. Log-reading and live-editor tools do not require this step.

Screenshot capture fails

Open a scene in the GUI editor and ensure its scene viewport is visible. Capture requires a rendered viewport, cannot run headlessly, only accepts a .png path, and does not create the destination directory.

Staying in sync with upstream

git fetch upstream --no-tags
git switch -c sync-upstream main
git merge upstream/main

The code of this fork is in files that upstream does not have. A few hook lines connect it to upstream code. A merge has a conflict only where upstream changes one of these lines. See MAINTAINING.

Versions

FlaxMCP-Live uses Semantic Versioning. The CHANGELOG lists each release. MAINTAINING gives the release steps. The server and the bridge plugin must come from the same release.

Contributing

License

MIT. Copyright (c) 2026 Sebastian Rokicki and Brad Chamberlain.

Available Tools

57 tools
build_check_scriptsA
Read-only

Compiles the project's script modules (and those of the projects it references) outside the editor, with the compiler arguments Flax.Build last used and the modules' current files, into a scratch folder. Returns passed, failed or unavailable (never built yet: Reason says why) with structured errors and warnings (file, line, column, code) and each module's outcome. Works while the editor is open, also during play mode; changes nothing in the project.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
errorsYes
reasonYes
statusYes
modulesYes
secondsYes
warningsYes

TDQS

A4/5.0
Behavior5/5

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

With only readOnlyHint available in annotations, the description carries the burden well: it discloses that output goes to a scratch folder, that nothing in the project is changed (consistent with readOnlyHint), that it can run while the editor is open and during play mode, and that an 'unavailable' result means the module was never built, with Reason explaining why. These are exactly the non-obvious behavioral traits an agent needs before calling a compile 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?

Three sentences, front-loaded with the action verb and scope, with no filler. Some return-value detail (passed/failed/unavailable, structured error fields) duplicates what the output schema already conveys and could be trimmed, but overall it is dense and purposeful.

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 tool with an output schema, this covers what the agent needs: what it does, where output goes, effect on the project, and result semantics. The one real gap is disambiguation from sibling compile tools in a crowded build-* and editor_* family.

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 the description could add. Baseline of 4 applies; the description implicitly confirms no targeting or argument options exist by saying it reuses the arguments Flax.Build last used.

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: it compiles the project's script modules plus those of referenced projects, outside the editor, into a scratch folder. The 'outside the editor' and 'with the compiler arguments Flax.Build last used' qualifiers give it real specificity. However, it never names the closely related siblings build_compile_scripts or editor_compile, so an agent must still infer which of the three compile-family tools 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 context is implied rather than stated: it works while the editor is open and during play mode, which suggests a check-without-disruption scenario. But there is no explicit 'use this when... instead of build_compile_scripts/editor_compile' guidance and no exclusions, despite three plausible compile alternatives among the siblings.

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

build_clear_cacheB

Runs FlaxEditor.exe -clearcache, and optionally -clearcooker too, to clear build caches.

NameRequiredDescriptionDefault
alsoClearCookerNo

Output Schema

NameRequiredDescription
errorsYes
exitCodeYes
timedOutYes
succeededYes
errorCountYes

TDQS

B3.3/5.0
Behavior3/5

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

The description usefully discloses the underlying command line flags being invoked, which is real behavioral context beyond the single readOnlyHint=false annotation. However it omits important traits: whether an editor instance is launched/blocked, whether clearing caches forces a full rebuild, and how long it takes.

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 zero filler; the primary action and the optional variant are both stated compactly.

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 process-spawning mutation tool, the definition is thin: it doesn't say whether the editor must be closed, what gets deleted, or expected duration, though the presence of an output schema reduces the need to describe returns.

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 sole parameter alsoClearCooker has no schema description. The prose 'optionally -clearcooker too' does map the parameter to its effect, partially compensating, but it adds no detail on cost or consequences of clearing the cooker cache.

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 action and mechanism: runs FlaxEditor.exe with -clearcache and optionally -clearcooker to clear build caches. An agent can tell this is a cache-clearing operation distinct from build_compile_scripts or build_generate_projects, though the description does not explicitly name those siblings.

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 phrase 'to clear build caches' hints at intent but gives no explicit when-to-use guidance, no prerequisites, and no alternatives among the many build_* siblings. The agent must infer that this is for stale-cache recovery situations.

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

build_compile_scriptsA

Compiles game scripts headlessly. Returns structured compiler errors (file/line/code/message) parsed from the engine log, not a raw log dump.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
errorsYes
exitCodeYes
timedOutYes
succeededYes
errorCountYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations only declare readOnlyHint=false, and the description usefully clarifies the output is parsed structured errors rather than a raw log dump, which is real added context. It does not disclose side effects of a non-read-only compile (artifact writes, project state changes, or prerequisites such as a prior build_generate_projects run), leaving a meaningful gap for a mutation-flagged 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?

Two tight sentences with zero waste; the core action is front-loaded and the output characteristic follows immediately. Nothing in the description is 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?

With an output schema present and no parameters, the description carries little burden and covers purpose plus the distinctive return-value character. The main omission is any indication of prerequisites or relation to the build pipeline siblings.

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 coverage is 100%, so there is nothing to disambiguate. Baseline 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.

Purpose4/5

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

States a specific verb and resource ("Compiles game scripts") plus a scope qualifier ("headlessly"), so the agent knows exactly what operation it performs. It does not, however, distinguish itself from sibling tools like build_check_scripts or editor_compile, leaving the agent to infer the difference.

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 when-to-use or when-not-to-use guidance. With build_check_scripts, editor_compile, build_generate_projects, and build_game all present as siblings, an agent has no stated criterion for choosing this tool over those.

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

build_gameA

Starts a game build (-build ., e.g. preset 'Development', target 'Windows') in the background and returns its job at once -- a real build can take minutes. Follow it with job_status or job_wait; the job's result is the build outcome.

NameRequiredDescriptionDefault
presetYes
targetYes

Output Schema

NameRequiredDescription
kindYes
jobIdYes
startedUtcYes

TDQS

A4.1/5.0
Behavior4/5

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

Adds genuinely useful behavior beyond the lone readOnlyHint=false: the call is asynchronous, returns a job handle immediately rather than the result, and the build outcome only surfaces later via job_status/job_wait. Permission requirements and failure modes are not covered, but the async contract is the key non-obvious trait and it is stated plainly.

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: the action and async return come first, then the follow-up workflow. No filler, and every clause adds either mechanics or routing 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?

With an output schema present, the description is not obliged to detail the returned job shape, and it correctly does not. Combined with the async explanation and parameter example, an agent has what it needs to invoke and then poll; only discovery of valid preset/target values is left unaddressed.

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 carry the load, and it does: it explains that preset and target compose a <preset>.<target> build string and gives a worked example ('Development' / 'Windows'). It misses where valid values come from (e.g. project_targets), which would have fully closed the 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 concrete verb+resource ("Starts a game build") and even shows the underlying command form with an example preset/target, which makes the action unambiguous. It does not explicitly contrast itself with near siblings like build_generate_projects or build_compile_scripts, so an agent must infer that this is the full game-build step rather than a project or script step.

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 clear follow-up guidance: use job_status or job_wait after calling, and explains why (a real build takes minutes). It does not state exclusions or when to prefer the sibling build_* steps instead, leaving that routing to the agent.

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

build_generate_projectsA

Runs FlaxEditor.exe -genprojectfiles to regenerate IDE project/solution files.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
errorsYes
exitCodeYes
timedOutYes
succeededYes
errorCountYes

TDQS

A4/5.0
Behavior3/5

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

readOnlyHint=false already signals a mutating operation; the description adds real value by disclosing the underlying process (spawns FlaxEditor.exe) and the artifact it rewrites (IDE project/solution files). It stops short of stating whether existing customized project files are overwritten, whether the editor must be closed first, or whether the call blocks until generation finishes.

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 the action and the literal command line; no filler, nothing that could be trimmed without losing 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 zero-parameter tool with an output schema and a declared mutation hint, the description covers what it does and how. The only gaps are operational preconditions (editor state, overwrite behavior), which keep it from being fully self-sufficient.

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 and the baseline applies. The description correctly implies the build target is implicit rather than configurable.

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?

Names a specific action (regenerate IDE project/solution files) and the exact mechanism (FlaxEditor.exe -genprojectfiles). This is clearly distinct from sibling build_* tools such as build_compile_scripts or build_game, so an agent can pick it 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?

Usage is only implied: an agent can infer it should be run when project/solution files are stale (e.g., after adding scripts), but the description never states when to use it, when not to, or how it relates to build_compile_scripts. No prerequisites or ordering guidance are given.

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

content_asset_infoB
Read-only

Returns metadata (Id, TypeName, RelativePath, Extension) for the content asset with the given GUID.

NameRequiredDescriptionDefault
idYes

Output Schema

NameRequiredDescription
idYes
typeNameYes
extensionYes
relativePathYes

TDQS

B3.4/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes this as a safe, non-mutating read. The description adds value by naming the exact metadata fields returned, but says nothing about behavior on an invalid or missing GUID (error vs empty result) or about path formatting/casing.

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 the return fields enumerated inline; every clause earns its place and there is no 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?

An output schema exists, so return-value shape need not be restated in prose. For a simple one-parameter read tool this is nearly sufficient; the only missing piece is failure behavior for a bad GUID and a pointer to how GUIDs are obtained.

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 carry the load; it does clarify that the opaque 'id' string is the asset's GUID. However, it gives no hint on where a GUID comes from (content_search/content_resolve_guid) or its format, so the single parameter remains only partially disambiguated.

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 (Returns) and resource (metadata for the content asset with the given GUID) and enumerates the returned fields (Id, TypeName, RelativePath, Extension). It is clearly distinct from content_search or content_resolve_guid in intent, though it does not explicitly name those siblings as 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?

There is no guidance on when to use this tool versus siblings like content_search (find an asset) or content_resolve_guid (obtain a GUID). The only implied rule is that the caller must already hold a GUID, which is already encoded by the required 'id' parameter in the schema.

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

content_create_materialC

Creates a surface Material asset through the live Flax Editor. Paths are relative to Content/ and must end in .flax.

NameRequiredDescriptionDefault
metallicYesSurface metallic value in the 0-1 range.
uvTilingNoOptional positive UV tiling applied to supplied textures.
baseColorYesUniform RGBA base color, with every component in the 0-1 range.
roughnessYesSurface roughness in the 0-1 range.
relativePathYesDestination path relative to Content/, ending in .flax.
emissiveColorNoOptional emissive RGBA color, with every component in the 0-1 range.
normalTextureIdNoOptional normal-map FlaxEngine.Texture GUID.
baseColorTextureIdNoOptional FlaxEngine.Texture GUID used for base color.

Output Schema

NameRequiredDescription
metallicYes
uvTilingYes
baseColorYes
roughnessYes
materialIdYes
parametersYes
mainThreadIdYes
materialPathYes
emissiveColorYes
normalTextureIdYes
baseColorTextureIdYes

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 and mostly doesn't. 'Through the live Flax Editor' hints at an editor-session dependency, but it never says whether an existing asset at that path is overwritten or errors, whether the editor must be in a specific state, or what side effects occur — all critical for a create/mutate 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?

Two tight sentences, front-loaded with the action and followed by the one hard constraint. Nothing is padded or 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?

For an 8-parameter creation tool with nested color objects and optional texture GUIDs, the description is thin: it omits overwrite semantics, editor-session prerequisites, and how texture GUIDs are obtained (presumably via content_resolve_guid). The presence of an output schema excuses return-value documentation but not these gaps.

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 100%, so the baseline of 3 applies. The description only restates the relativePath constraint already documented in the schema and adds no meaning for the texture GUIDs, UV tiling, or emissive parameters.

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

Purpose4/5

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

States a specific verb and resource: creates a surface Material asset via the live Flax Editor. The qualifier 'surface' implicitly separates it from content_create_material_transparent, but the description never names that sibling or content_create_material_instance, so differentiation is left to inference.

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 is given. The only constraint offered ('paths are relative to Content/ and must end in .flax') is a parameter rule, not a routing rule, and nothing tells the agent when to prefer this over content_create_material_transparent or content_create_material_instance.

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

content_create_material_instanceA

Creates a MaterialInstance asset from a live surface material and applies validated parameter overrides atomically.

NameRequiredDescriptionDefault
parametersYesParameter overrides keyed by public parameter name.
relativePathYesDestination path relative to Content/, ending in .flax.
baseMaterialIdYesBase FlaxEngine.Material GUID from content_search.

Output Schema

NameRequiredDescription
parametersYes
mainThreadIdYes
baseMaterialIdYes
baseMaterialPathYes
materialInstanceIdYes
materialInstancePathYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does contribute real behavioral facts: overrides are validated and applied atomically, so a failed override should not leave a half-configured asset. It omits other mutation-critical behavior such as what happens if relativePath already exists, whether the asset is saved/registered immediately, and what errors surface.

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 the verb and resource front-loaded and no filler. Every clause (source material, validation, atomicity) carries information an agent needs.

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 creation tool with 100% schema coverage and an output schema (so return values needn't be described), the description covers source, destination semantics, and failure atomicity. The remaining gap is overwrite behavior and sibling routing, which is a usage-guideline issue rather than incompleteness.

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 100%, so the baseline is 3, but the description adds meaning the schema does not: overrides are keyed by public parameter names, are validated, and are applied atomically as a set. That tells the agent failures are all-or-nothing rather than per-parameter, which is genuine added 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?

States a specific verb and resource ("Creates a MaterialInstance asset") plus its source ("from a live surface material") and its effect ("applies validated parameter overrides atomically"). This is enough to distinguish it from content_create_material and content_set_material_instance_parameter, though it never names those siblings to make the distinction explicit.

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 choose this tool versus content_create_material (plain material creation) or content_set_material_instance_parameter (updating an existing instance). The phrase "from a live surface material" implies baseMaterialId must reference an existing material, but the agent must infer that rather than being told.

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

content_create_material_transparentA

Creates a transparent surface Material (blend mode Transparent, Lit) through the live Flax Editor, for glass, water or film. Opacity 0 is fully clear. Refraction is the material's Refraction input: 1 bends nothing. Flax applies it as a strong screen distortion: 1.03 already shrinks objects behind a bottle-sized surface to about 40 % of their width, as through thick glass. Use 1.0 for thin glass with something inside (a bottle with liquid), and values above 1 only for a lens effect. The material traces screen-space reflections. Its four values are public parameters named BaseColor, Opacity, Roughness and Refraction, so content_create_material_instance makes variants (a tint, frosted or thicker glass, water) of one material. Paths are relative to Content/ and must end in .flax. No asset may exist at the path.

NameRequiredDescriptionDefault
opacityYesOpacity in 0..1. 0 is fully clear, 1 is opaque. Clear glass: about 0.1 to 0.25.
baseColorYesUniform RGBA base color, every component in 0..1. Near white for clear glass.
roughnessYesSurface roughness in 0..1. Polished glass: about 0.05.
refractionNoRefraction input in 1..3. 1 bends nothing. Even 1.03 visibly shrinks what is behind the surface.
relativePathYesDestination path relative to Content/, ending in .flax.

Output Schema

NameRequiredDescription
opacityYes
baseColorYes
blendModeYes
roughnessYes
materialIdYes
parametersYes
refractionYes
mainThreadIdYes
materialPathYes

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 well: it discloses the blend mode and lighting model, that the material traces screen-space reflections, and the precondition that 'No asset may exist at the path' (i.e. no overwrite). It does not state what happens on a path collision, nor whether the editor/project must be open, which keeps it below 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?

Front-loaded with the core purpose, then layered detail on refraction and instances. Dense but nearly every sentence carries actionable information; the refraction explanation runs slightly long relative to the rest.

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?

Output schema exists so return values need no explanation, all five parameters are documented in-schema and reinforced in prose, and the description covers creation semantics, effect behavior, and the path precondition. An agent has enough to call this correctly without further context.

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 100%, so the baseline is 3, but the description genuinely adds meaning: opacity 0 is fully clear, refraction 1 bends nothing, and it quantifies the effect (1.03 shrinks background objects to ~40% width). It also names the four public parameters (BaseColor, Opacity, Roughness, Refraction), which the schema alone does not label as material inputs.

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 with distinguishing attributes: 'Creates a transparent surface Material (blend mode Transparent, Lit)'. The use cases (glass, water, film) and the contrast with content_create_material_instance for variants make it unambiguous versus the generic content_create_material sibling.

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 selection guidance for the refraction value ('Use 1.0 for thin glass with something inside... values above 1 only for a lens effect') and routes variant creation to content_create_material_instance. It stops short of explicitly saying when to choose content_create_material over this tool for opaque materials, so it is clear context rather than a full when/when-not map.

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

content_material_detailsA
Read-only

Returns typed values, texture references, UV tiling, and exposed parameters for a live surface Material asset.

NameRequiredDescriptionDefault
materialIdYesFlaxEngine.Material asset GUID from content_search.

Output Schema

NameRequiredDescription
metallicYes
uvTilingYes
baseColorYes
roughnessYes
materialIdYes
parametersYes
mainThreadIdYes
materialPathYes
emissiveColorYes
normalTextureIdYes
baseColorTextureIdYes

TDQS

A3.5/5.0
Behavior3/5

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

The readOnlyHint annotation already covers the safety profile, and an output schema exists, so the return payload is documented elsewhere. The description's main added value is the word 'live,' which implies a prerequisite that the material be currently loaded in the editor and may fail otherwise, but this constraint is not spelled out with any failure mode or permission detail.

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 clause maps to a distinct category of returned data.

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?

With annotations covering read-only safety and an output schema covering return values, the definition is functional but thin: it never clarifies the 'live' prerequisite's implications or how it relates to content_asset_info for the same asset, leaving an agent to infer those boundaries.

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 100% and the materialId property already documents that it is a FlaxEngine.Material GUID sourced from content_search. The description adds nothing about the parameter, so the baseline 3 is appropriate when the schema does all the work.

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 verb (Returns) and enumerates concrete outputs: typed values, texture references, UV tiling, and exposed parameters for a Material asset. This clearly differentiates it from mutation siblings like content_create_material, though it doesn't explicitly distinguish itself from content_asset_info, which likely also returns asset metadata.

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 scope ('live surface Material asset'), hinting that the material must be loaded in the editor, but there is no explicit when-to-use or when-not guidance, and no sibling (e.g., content_asset_info) is named as an alternative for non-live inspection.

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

content_resolve_guidB
Read-only

Resolves a content asset GUID to its path relative to Content/.

NameRequiredDescriptionDefault
idYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

readOnlyHint=true already declares the safe-read profile, so the description's marginal contribution is the relative-path normalization convention, which is useful. It says nothing about behavior for an unknown/stale GUID (error vs. empty) or whether paths use forward slashes, which are the realistic failure modes for a resolver.

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, no filler, and the output contract is placed immediately after the verb+resource so it 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?

An output schema exists, so return values need no explanation, and the input is a single documented-in-prose parameter. The only meaningful omission is not-found/error behavior for a resolver, which is a small gap for a tool this simple.

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 single parameter is a bare 'id' string, so the description carries real weight by clarifying that it is a content asset GUID rather than an actor/asset-registry id. It stops short of stating the GUID format or where to obtain one.

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 (resolves) and resource (content asset GUID) plus the exact output shape (path relative to Content/). An agent knows precisely what it does, though it never contrasts itself with siblings such as content_asset_info or content_search that also take asset identifiers.

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 content_search/content_asset_info, and no precondition noted (e.g. needing a GUID already in hand from another call). Usage is only inferable 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.

content_set_material_instance_parameterB

Sets one validated parameter override on an existing MaterialInstance and saves the asset.

NameRequiredDescriptionDefault
valueYesValue matching the parameter's declared type.
parameterNameYesExisting public parameter name on the base material.
materialInstanceIdYesFlaxEngine.MaterialInstance asset GUID from content_search.

Output Schema

NameRequiredDescription
parametersYes
mainThreadIdYes
baseMaterialIdYes
baseMaterialPathYes
materialInstanceIdYes
materialInstancePathYes

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 full burden. It does usefully disclose that the value is validated and that the asset is saved (a persistent side effect), but it does not say what happens on validation failure, whether other existing overrides are preserved, or what the save touches.

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 sentence with no filler, and the mutation plus its persistence effect are front-loaded. Slightly clipped for a state-changing tool, but every clause earns 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?

Output schema exists and all three params are documented, so return values need no explanation. However, for an unannotated mutation the description should say more about validation failure behavior and whether unrelated overrides are disturbed.

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 100%, and the schema already explains materialInstanceId (GUID from content_search), parameterName (existing public parameter), and value (matching declared type). The description adds only the 'one parameter' framing, so the baseline 3 applies.

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 ('Sets'), a specific resource ('parameter override on a MaterialInstance'), and the persistence side effect ('saves the asset'). It is clearly distinct from content_create_material_instance or editor_set_member, though it does not name those siblings 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?

'on an existing MaterialInstance' and 'one validated parameter override' imply preconditions (instance must already exist, one parameter per call), but the description never states when to prefer this over content_create_material_instance or editor_set_member, nor any exclusions.

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

editor_actor_detailsA
Read-only

Returns live identity, hierarchy, activation, layer, tags, world/local transforms, and scripts for one actor loaded in the Flax Editor.

NameRequiredDescriptionDefault
actorIdYesActor GUID from editor_scene_graph or editor_get_selection.

Output Schema

NameRequiredDescription
idYes
nameYes
tagsYes
layerYes
sceneIdYes
scriptsYes
isActiveYes
parentIdYes
typeNameYes
layerNameYes
transformYes
mainThreadIdYes
localTransformYes
isActiveInHierarchyYes

TDQS

A3.6/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes the safety profile, so the description only needs to add context. It contributes the useful 'live' qualifier (a snapshot of current editor state rather than cached data) and names the data domains returned, but says nothing about failure behavior for an unknown actorId, edit-mode vs play-mode requirements, or read cost.

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, front-loaded with the verb and scope, then a dense enumeration of returned data. No filler, no restatement of the tool name, and no duplication of schema content.

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 covering return values, a fully documented parameter, and a readOnlyHint annotation, the description only needed to convey scope and data domains, which it does. The remaining gap is that error/precondition behavior is unstated, which is minor for a single-actor read 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 description coverage is 100% and the single actorId parameter is already documented with its source (editor_scene_graph or editor_get_selection). The description adds no further parameter semantics such as format validation or whether partial GUIDs are accepted, so the baseline 3 applies.

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 ('Returns') and a precisely enumerated payload (identity, hierarchy, activation, layer, tags, transforms, scripts) scoped to 'one actor loaded in the Flax Editor'. The field enumeration implicitly separates it from component-specific siblings like editor_static_model_details and editor_box_collider_details, though no sibling is named 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?

Usage is only implied: 'one actor loaded in the Flax Editor' signals it operates on an existing actor, and 'live' signals current editor state. The description never says when to prefer it over editor_static_model_details, editor_box_collider_details, or scene_find_actor, nor any precondition such as needing an ID from editor_scene_graph (that routing lives only in the schema).

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

editor_add_scriptA

Adds a script of a type to an actor (nothing when it has one already) and, in edit mode, marks the scene edited so editor_save keeps it. The type is resolved by full or short name in the loaded assemblies.

NameRequiredDescriptionDefault
actorIdYesThe actor's id.
scriptTypeYesThe script type, e.g. Game.Testing.TestDriver.
orderInParentNoThe script's place among the actor's scripts.

Output Schema

NameRequiredDescription
addedYes
actorIdYes
scriptsYes
scriptIdYes
scriptTypeYes
mainThreadIdYes
orderInParentYes

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 does well: it discloses idempotency ('no-op if already present'), the dirty-scene side effect that makes editor_save persist the change, and that componentType is fuzzy-resolved against the type registry. What it omits is whether the operation is undoable or what the failure mode looks like when the type resolves ambiguously, keeping it at 4 rather than 5.

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 sentences, front-loaded with the verb and resource, then the caveat and side effect. Zero filler and nothing 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?

With an output schema present, the description need not explain return values, and it covers the two non-obvious behaviors (no-op semantics, dirty-scene marking) plus type resolution. It could say more about execution context requirements (e.g., whether a scene must be open), but it is close to complete for a 3-parameter tool.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds real semantics the schema lacks: componentType accepts short names resolved by fuzzy match, not just exact type strings as the schema's example implies. orderInParent is left to the schema, which fully documents it.

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 says exactly what the tool does: 'Adds a script-type component to an actor', with the idempotency caveat and the edit-mode side effect. An agent can immediately distinguish it from editor_remove_component or editor_set_component_property.

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

Usage Guidelines5/5

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

It gives an explicit routing rule: use this to add a component, but use editor_set_component_property instead when the goal is to change properties on an existing component. The named alternative actually exists among the siblings, so the guidance is actionable rather than decorative.

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

editor_box_collider_detailsA
Read-only

Returns the local size, center, trigger mode, and actor details for a loaded BoxCollider.

NameRequiredDescriptionDefault
actorIdYesBoxCollider actor GUID from editor_scene_graph.

Output Schema

NameRequiredDescription
sizeYes
actorYes
centerYes
isTriggerYes
mainThreadIdYes

TDQS

A3.6/5.0
Behavior3/5

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

The read-only framing matches readOnlyHint=true, so no contradiction. It adds the meaningful condition that the collider must be 'loaded' and names the returned fields, but says nothing about behavior on a missing/non-collider actor, which matters for a lookup tool keyed on a GUID.

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, front-loaded with the action and resource, with the field list attached rather than split into filler prose. Nothing 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 simple single-parameter read tool with an annotation and an output schema, the description covers what is returned and the loaded-collider precondition. Only failure-mode behavior is missing, which is a minor gap here.

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 100% for the single actorId parameter, including the note that the GUID comes from editor_scene_graph. The description adds no additional meaning about the parameter, so the baseline 3 applies.

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 ('Returns') and resource (BoxCollider details for a loaded actor) and enumerates the fields returned, so it is clearly distinguishable from mutation siblings like editor_set_box_collider. It does not explicitly contrast with editor_actor_details or editor_static_model_details, 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 Guidelines3/5

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

Usage is only implied: the word 'loaded' hints at a prerequisite, and the schema points to editor_scene_graph for the actorId. There is no explicit statement of when to choose this over editor_actor_details or what to do if the actor has no BoxCollider.

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

editor_camera_screenshotA

Renders a camera into its own render target and saves a PNG. It does not read an editor window, so it works with the editor covered, small or minimised, in play mode and in edit mode. Camera: the given Camera actor. Without one: the main camera in play mode, else the editor viewport's view. The picture shows the 3D scene with the game's post effects, without editor or screen-space UI. Not available in headless mode. Replaces an existing file. Read the PNG to see it.

NameRequiredDescriptionDefault
pathYesAbsolute or current-working-directory-relative output path ending in .png. The folder must exist.
widthNoPicture width in pixels, 16..8192.
heightNoPicture height in pixels, 16..8192.
cameraIdNoA Camera actor's id (from editor_scene_graph or editor_find_actors). Empty: the main camera in play mode, else the editor viewport's view.
warmUpFramesNoFrames the camera renders before the capture, 1..60, so that auto exposure settles.

Output Schema

NameRequiredDescription
pathYes
bytesYes
widthYes
cameraYes
heightYes
isPlayModeYes

TDQS

A4.5/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: it discloses the destructive side effect ('Replaces an existing file'), the environment prerequisite (folder must exist, per schema), the unavailability in headless mode, and what the image will and will not contain (post effects included, editor and screen-space UI excluded).

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 core action, then scope, then camera selection, then output characteristics, then constraints. Terse fragments are used deliberately and each sentence contributes a distinct fact; nothing is padding.

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 tool with an output schema (so return values need not be explained) and no annotations, the description covers action, scope, defaults, environment limits, and file side effects. An agent has everything needed to invoke it correctly, plus the 'Read the PNG to see it' hint that the result must be inspected separately.

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 100%, so the schema already documents path, width, height, cameraId and warmUpFrames with ranges and defaults. The description's camera sentence ('Camera: the given Camera actor. Without one: the main camera...') largely restates the cameraId schema text rather than adding new meaning. Baseline 3 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?

States a specific verb and resource: 'Renders a camera into its own render target and saves a PNG'. The follow-up clause 'It does not read an editor window' explicitly separates it from the sibling editor_screenshot, so an agent can route between them 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 Guidelines4/5

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

Gives clear when-it-works context (editor covered, small, minimised, play mode, edit mode) and an explicit exclusion ('Not available in headless mode'), plus the default camera selection rule. It stops short of naming the alternative tool (editor_screenshot) outright, so the alternative 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.

editor_compileA

Compiles the project's scripts and returns when the editor has reloaded and settled. The scripts are first compiled outside the editor with the compiler arguments Flax.Build last used (build_check_scripts): errors come back at once, structured (file, line, column, code), and the editor is not touched. A clean check goes on to the editor's compile; its outcome is reloaded, unchanged or failed (build tool lines in BuildErrors). Check says how the check went (passed, failed, or unavailable with the reason). Stops play mode first.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
checkNo
errorsYes
outcomeYes
reloadsYes
secondsYes
buildErrorsYes

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses the blocking wait for editor reload, the side effect 'Stops play mode first', the fact the editor is untouched on an early check failure, the structured error shape (file, line, column, code), and the three outcome classes reported via Check. These are the exact traits an agent needs before invoking a disruptive 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 core action and the stop-play-mode warning are front-loaded and every sentence adds information. It is dense and slightly garbled in one spot ('its outcome is reloaded, unchanged or failed'), which costs a little readability without wasting space.

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 tool with an output schema and no annotations, the description covers the whole behavioral story: prerequisites, side effects, sequencing, failure modes, and where error detail surfaces. Nothing an agent needs in order to call it safely 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 for the description to disambiguate; the baseline is 4 by rule. The description's references to compiler arguments and BuildErrors fields are descriptive context, not parameter explanation.

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?

Opens with a specific verb+resource ('Compiles the project's scripts') plus a precise completion condition ('returns when the editor has reloaded and settled'). It then distinguishes the two internal phases, so an agent can tell it apart from the pure-check siblings build_check_scripts and build_compile_scripts.

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 clear operating context: the check runs outside the editor first, and only a clean check proceeds to the editor compile that reloads the editor. It never explicitly routes the agent among the near-identical siblings (build_check_scripts, build_compile_scripts, build_generate_projects), so the choice still requires inference.

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

editor_create_actorB

Creates an allowlisted EmptyActor or StaticModel in a loaded scene and returns its live details.

NameRequiredDescriptionDefault
nameYes
scaleYes
sceneIdYes
parentIdYes
actorTypeYesAllowlisted actor type: EmptyActor or StaticModel.
orientationYes
translationYes

Output Schema

NameRequiredDescription
idYes
nameYes
tagsYes
layerYes
sceneIdYes
scriptsYes
isActiveYes
parentIdYes
typeNameYes
layerNameYes
transformYes
mainThreadIdYes
localTransformYes
isActiveInHierarchyYes

TDQS

B3/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 carry the full behavioral burden. It discloses that creation happens in a loaded scene and returns live details, but omits permissions, side effects, reversibility, failure modes for invalid sceneId/parentId, and what happens on name collisions.

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 single sentence is front-loaded with the core action and resource, and every clause contributes useful information without filler.

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 explained. However, for a 7-parameter mutation tool with nested objects and no annotations, the description is far too sparse regarding parameter semantics, preconditions, and side effects to be complete.

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 only 14%, with just actorType documented in the schema. The description adds no meaningful semantics for name, sceneId, parentId, translation, orientation, or scale, leaving most required parameters undocumented beyond their types.

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 ('Creates') and precise resource ('allowlisted EmptyActor or StaticModel') within a loaded scene, plus the return behavior. It is clearly a creation tool rather than duplication or modification, though it does not explicitly name sibling alternatives.

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 'in a loaded scene' implies a precondition and 'allowlisted' hints at constraints, but there is no explicit guidance on when to use this versus editor_duplicate_actor, editor_add_script, or other creation siblings. Usage is inferable but not well delineated.

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

editor_create_box_colliderB

Creates a BoxCollider under a loaded parent actor and returns its effective properties.

NameRequiredDescriptionDefault
nameYes
sizeYesPositive collider dimensions in local space.
centerYesCollider center offset in local space.
parentIdYesLoaded parent actor GUID from editor_scene_graph.
isTriggerYes

Output Schema

NameRequiredDescription
sizeYes
actorYes
centerYes
isTriggerYes
mainThreadIdYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It usefully notes the operation is scoped to a loaded parent and that the response returns the collider's effective properties, but says nothing about name collisions, reversibility, permissions, or whether the collider is immediately active in play mode.

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 well-formed sentence with the action front-loaded and zero filler. Its brevity is close to under-specification rather than verbosity, so it earns a 4 rather than a 5.

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 value needn't be described, and the nested size/center shapes are covered by the schema. However, for a 5-required-param mutation tool with no annotations, the description omits isTrigger semantics, name uniqueness behavior, and any guidance on obtaining a valid parentId beyond what the schema says.

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 60%: size, center, and parentId are documented in-schema, but the description adds no parameter meaning at all. The two undocumented params, name and isTrigger, get no clarification — in particular isTrigger's behavioral effect (trigger volume vs solid collision) is left unexplained in both places.

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 ("Creates a BoxCollider") and the placement target ("under a loaded parent actor"), which separates it from the sibling modifier editor_set_box_collider and reader editor_box_collider_details. It does not explicitly name those siblings, so it stops short of full differentiation.

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: the verb "creates" signals this is for adding a new collider rather than editing an existing one, and "loaded parent actor" hints at a precondition. There is no explicit when-to-use vs editor_set_box_collider / editor_box_collider_details, and no stated failure conditions.

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

editor_delete_actorA

Deletes a loaded actor through the editor Undo/Redo history. Set deleteDescendants to true to explicitly delete its complete hierarchy; false rejects actors with children.

NameRequiredDescriptionDefault
actorIdYesActor GUID from editor_scene_graph.
deleteDescendantsYes

Output Schema

NameRequiredDescription
actorIdYes
mainThreadIdYes
deletedActorIdsYes
deletedDescendantsYes

TDQS

A3.9/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 disclose important behavior: deletion goes through editor Undo/Redo history, and the boolean controls whether child actors cause rejection or are deleted. It does not cover every edge case, such as invalid actor IDs or undo limits, but it gives substantial behavioral context 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.

Conciseness5/5

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

The description is two tight sentences with no wasted text. It front-loads the action and then immediately clarifies the only ambiguous parameter behavior.

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 tool with an output schema and no annotations, the description covers the essential behavioral details: undo/redo integration and hierarchy handling. It could be slightly more complete with explicit preconditions or failure behavior, but it is sufficient 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?

Schema coverage is only 50%, and the description compensates by fully explaining the otherwise undocumented deleteDescendants parameter, including both true and false behavior. The actorId parameter is documented in the schema as coming from editor_scene_graph, so the description does not need to repeat it.

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: 'Deletes a loaded actor.' It also adds the meaningful scope detail that deletion happens through the editor Undo/Redo history. It is clear, but it does not explicitly differentiate this delete operation from nearby actor-modification siblings.

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 key conditional behavior of deleteDescendants: true deletes the hierarchy, while false rejects actors with children. However, it does not explicitly state when to choose this tool over alternatives or list preconditions such as an open scene or loaded actor context.

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

editor_duplicate_actorC

Duplicates a loaded actor into a loaded scene or parent and returns the duplicate's live details.

NameRequiredDescriptionDefault
nameYes
scaleYes
actorIdYes
sceneIdYes
parentIdYes
orientationYes
translationYes

Output Schema

NameRequiredDescription
idYes
nameYes
tagsYes
layerYes
sceneIdYes
scriptsYes
isActiveYes
parentIdYes
typeNameYes
layerNameYes
transformYes
mainThreadIdYes
localTransformYes
isActiveInHierarchyYes

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 full behavioral burden. It discloses only that the result is the duplicate's 'live details'; it says nothing about whether the source actor is untouched, how the duplicate is named, whether the operation is undoable, or what happens if the target scene/parent 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.

Conciseness4/5

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

A single well-formed sentence with no padding, front-loading the action and resource. Efficient, though it could have spent the saved space on parameter or usage detail.

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 output schema excuses it from explaining return values, but for a 7-required-parameter mutation with nested transform objects and an ambiguous nullable sceneId/parentId pair, the description leaves too much for the agent to infer on its own.

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% across 7 required parameters, so the schema gives only types and names. The description does not explain any of them, and critically does not clarify the required-but-nullable sceneId/parentId pair (presumably pass one and null the other) or how translation/orientation/scale are interpreted relative to the parent.

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 ('duplicates') and resource ('a loaded actor') plus the destination ('into a loaded scene or parent'), which differentiates it from editor_create_actor (create new) in the sibling list. It stops short of explicitly naming that sibling, but the duplicate-vs-create distinction is inferable.

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?

Implies the prerequisite that both source actor and destination scene/parent must already be loaded, and the verb 'duplicates' hints at the use case. However, it never states when to choose this over editor_create_actor or editor_reparent_actor, nor any exclusions.

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

editor_eventsA
Read-only

Returns the editor's recorded events after a sequence number, oldest first. Kinds: log (managed log lines only; the engine's native lines such as compiler output stay in the log file), exception, compile_begin, compile_succeeded, compile_failed, reload_begin, reload_end, play_begin, play_end, scene_loaded, scene_load_error, scene_saved, scene_save_error, scene_unloaded. The bridge host keeps the last 4096 events across script reloads; Truncated is true when some after sinceSeq were overwritten. A new HostStartedUtc means the editor restarted and the sequence began again.

NameRequiredDescriptionDefault
kindsNoOnly these kinds; omit for all.
limitNoAt most this many events, 1 to 500.
sinceSeqNoOnly events after this sequence number (LastSeq of an earlier call); 0 for all held.
waitSecondsNoWhen none match yet, wait up to this long for one, 0 to 2 seconds.

Output Schema

NameRequiredDescription
eventsYes
lastSeqYes
oldestSeqYes
truncatedYes
hostStartedUtcYes

TDQS

A4.4/5.0
Behavior5/5

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

With readOnlyHint already covering safety, the description adds substantial non-structured behavior: a 4096-event rolling buffer held across script reloads, Truncated=true when events after sinceSeq were overwritten, and HostStartedUtc signaling an editor restart that reset the sequence. It also clarifies that 'log' covers managed lines only, with native engine lines (compiler output) remaining in the log file.

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 and ordering in the first clause, then operational caveats. The long kind list is dense but load-bearing since no enum exists; no sentence is filler, though the block is heavier than ideal for a single stream read.

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?

Output schema exists, so return-shape explanation is unnecessary; the description still volunteers the two semantically important output fields (Truncated, HostStartedUtc) that govern correct pagination and reset handling. Retention limits, ordering, and kind scope are all covered for a 4-param, zero-required read tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: it enumerates the valid kind strings even though the schema's `kinds` items have no enum, and it defines the sequence space (reset on host start, gap detection via Truncated). `limit` and `waitSeconds` are left entirely to the schema.

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

Purpose5/5

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

States a specific verb and resource ("Returns the editor's recorded events"), plus ordering ("oldest first") and a cursor ("after a sequence number"), which pins down exactly what this stream is. The enumerated Kinds make it trivially distinguishable from siblings like logs_tail or editor_wait_for.

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 rather than stated: the retention/truncation and HostStartedUtc notes imply polling and restart-recovery patterns, and the 'log' kind note implies 'use this rather than logs_tail for engine output.' But no sentence explicitly says when to pick this over logs_tail, logs_errors, or editor_wait_for, and there are no exclusions.

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

editor_find_actorsA
Read-only

Finds actors in the loaded scenes (the play-time scene during play) by name, actor type and script type, all optional and combined. Types match by full or short name. Returns id, name, type, path from the scene and the scripts' types; Truncated is true when more than the limit matched.

NameRequiredDescriptionDefault
limitNoAt most this many, 1 to 500.
actorTypeNoThe actor's type, e.g. StaticModel or FlaxEngine.Camera.
scriptTypeNoA script type the actor has, e.g. PlayerController.
nameContainsNoPart of the actor's name, case-insensitive.

Output Schema

NameRequiredDescription
actorsYes
truncatedYes
mainThreadIdYes

TDQS

A3.8/5.0
Behavior4/5

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

readOnlyHint=true already establishes the safety profile, and the description adds real value beyond it: which scene is searched during play mode, that types match by full or short name, what fields come back, and that Truncated signals the limit was exceeded. It does not mention ordering of results or behavior with multiple loaded scenes, but the core behavior is well 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?

Two tight sentences, with the search scope and optional-combination rule front-loaded before the return-value note. The return explanation is somewhat redundant given the tool has an output schema, which keeps this from a 5.

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 read-only filter tool with a full schema and an output schema, the description covers scope, filter combination, type-name flexibility, and truncation. Missing only edge-case behavior such as which scene wins when several are loaded, which the agent would likely need in practice.

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 100%, so the baseline is 3; the description raises it by explaining that the filters are optional and combined, and that type strings accept either full or short names. The only gap is that limit semantics are left entirely to 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?

States a specific verb and resource (finds actors) plus the search scope (loaded scenes, the play-time scene during play) and the filter dimensions. It does not name or contrast with the close sibling scene_find_actor, so an agent still has to infer which search tool 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?

"all optional and combined" tells the agent that filters are conjunctive and that an unfiltered call is valid, which is useful implied usage guidance. However there is no explicit when-to-use/when-not-to-use statement and no routing to the alternative scene_find_actor or scene_outline tools.

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

editor_get_memberA
Read-only

Reads a field or property of an actor, or of one of its scripts, by a dotted path (e.g. Clock.Steps). Private members count. Unknown names list the members that exist.

NameRequiredDescriptionDefault
memberYesThe member path, e.g. Score or Clock.Steps.
actorIdYesThe actor's id (editor_find_actors, editor_scene_graph).
scriptTypeNoRead from the actor's script of this type instead of the actor.

Output Schema

NameRequiredDescription
valueYes
memberYes
targetIdYes
typeNameYes
targetTypeYes
mainThreadIdYes
recordedUndoNo

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the safety profile is already covered; the description adds genuinely new behavior: private members are readable (an access-scope expansion beyond what annotations convey) and unknown member names return a list of valid members rather than a bare failure. It does not describe the returned value shape, but an output schema exists to cover that.

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, front-loaded with the verb and resource, with the example and the error fallback each carrying distinct information. No filler or repetition.

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 3-parameter read tool with an output schema and a readOnly annotation, the description covers addressing, access scope, and failure behavior. A brief pointer to the set/read counterpart would make it fully self-sufficient, but nothing essential for correct invocation is 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 coverage is 100% and both the dotted-path format and the scriptType override are already documented in the schema with the same example. The description restates the dotted-path idea and hints at script targeting, adding little syntax or edge-case meaning beyond the structured fields.

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

Purpose5/5

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

States a specific verb ("Reads") and resource ("a field or property of an actor, or of one of its scripts") plus the addressing mechanism (dotted path with example "Clock.Steps"). The read framing cleanly separates it from the sibling editor_set_member without either schema being opened.

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 note "Unknown names list the members that exist" implies an exploratory use case, and the script-scoped read is implied by the description, but there is no explicit statement of when to use this versus editor_actor_details or editor_set_member. Usage is inferable rather than stated.

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

editor_get_selectionA
Read-only

Returns the actors currently selected in the live Flax Editor.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
selectedYes
mainThreadIdYes

TDQS

A3.7/5.0
Behavior3/5

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

The "live Flax Editor" phrasing usefully signals that this reflects interactive editor state rather than a scene file, and it is consistent with readOnlyHint=true. However, it says nothing about behavior when no editor is connected or when the selection is empty, which is the main failure mode for a live-state query. With annotations already covering the safety profile, this lands at an adequate 3.

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, front-loaded with the verb and resource, with zero filler. Nothing could be removed without losing 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?

The output schema presumably documents the returned actor list, so return-value detail is not required here. For a zero-parameter read tool the description is nearly sufficient, with the only real gap being disconnected-editor behavior.

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

Parameters4/5

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

The tool takes zero parameters and the schema is an empty object, so there is nothing for the description to disambiguate. Baseline 4 applies; a note about whether the selection can span multiple actors would have pushed it higher.

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 verb ("Returns") and a precise resource ("the actors currently selected in the live Flax Editor"), so there is no ambiguity about what is retrieved. The read-vs-write split with the sibling editor_set_selection is easy to infer from the wording, though the description never names that sibling 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?

Usage is only implied: an agent can reason that this is the read counterpart to editor_set_selection, but the description states no when-to-use condition and no alternative. There is no mention of the prerequisite that the editor must be running, which is the main thing that would govern calling this versus a scene tool.

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

editor_host_statusA
Read-only

Returns the state of the bridge host, the pipe server that outlives script reloads: its version and start time, the attached plugin generation, attach and detach counts, the editor's memory and garbage collections, and how many old plugin load contexts are still alive (reloads that leak). collect=true runs a full garbage collection first so that count is a measurement; it takes long on a large heap.

NameRequiredDescriptionDefault
collectNoRun a full garbage collection before counting the old plugin load contexts.

Output Schema

NameRequiredDescription
attachedYes
acceptingYes
collectedYes
generationYes
attachCountYes
detachCountYes
hostVersionYes
managedBytesYes
privateBytesYes
hostStartedUtcYes
acceptLoopFaultYes
gen0CollectionsYes
gen1CollectionsYes
gen2CollectionsYes
pluginContextsSeenYes
pluginContextsAliveYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the safety profile is covered. The description adds meaningful context beyond that: the host is a pipe server that outlives script reloads, and collect=true triggers a full GC that is slow on a large heap. That performance caveat is exactly the kind of behavioral detail annotations cannot express.

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?

One front-loaded sentence that leads with the resource and then the returned fields; nothing is padding. It is dense and slightly run-on, packing return fields and a parameter caveat into a single sentence, but every clause 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 read-only, single-parameter diagnostic with a full output schema, so return-value documentation is not strictly needed — though the description restates the fields anyway, which is mildly redundant but helps an agent judge relevance. Nothing an agent needs in order 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.

Parameters4/5

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

Schema coverage is 100% and the single parameter is already documented, so the baseline is 3. The description goes further by explaining the rationale ('so that count is a measurement') and the cost of setting it, which tells the agent why and when to enable it rather than just what it does.

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 ('Returns the state of the bridge host') and enumerates exactly what that state includes: version, start time, plugin generation, attach/detach counts, memory/GC, and leaked load contexts. It does not explicitly distinguish itself from nearby diagnostics siblings like server_info or flax_status, which keeps it from 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 description gives a clear cost/benefit signal for the one parameter ('collect=true ... takes long on a large heap'), which is genuine usage guidance. However it never says when to prefer this tool over server_info, flax_status, or logs_tail, so the when-to-use routing is only implied.

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

editor_job_startA

Starts a long editor operation as a job and returns at once: compile (compile scripts and wait until the editor has reloaded and settled), play_start, play_stop, play_pause, play_resume, open_scene (path). Editor jobs run one at a time: another one while one runs fails with job_conflict naming it. Follow the job with job_wait or job_status; its result is what editor_compile, editor_play_mode or editor_open_scene return.

NameRequiredDescriptionDefault
kindYescompile, play_start, play_stop, play_pause, play_resume or open_scene.
pathNoFor open_scene: the scene path, absolute or relative to Content/.

Output Schema

NameRequiredDescription
kindYes
jobIdYes
startedUtcYes

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 discloses strong traits: asynchronous return, single-job serialization, and the specific error (job_conflict naming the running job). It also describes what 'compile' does operationally (waits until the editor reloads and settles). It does not cover failure recovery, cancellation, or permission requirements, but the key behavioral profile is present.

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 core purpose and non-blocking semantics in the first clause, then layering kinds, conflict behavior, and follow-up. Every sentence, including the compile parenthetical, carries actionable information; nothing is redundant.

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

Completeness5/5

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

An output schema exists, so return values needn't be explained, and the description still ties results to the sibling sync tools. Combined with the async/conflict/follow-up guidance, an agent has everything needed to invoke this 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 coverage is 100%, so the baseline is 3, but the description genuinely adds meaning by mapping each kind value to behavior ('compile ... wait until the editor has reloaded and settled', 'open_scene (path)') and tying path to the open_scene kind. This is meaning beyond the raw enum list in the schema.

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

Purpose5/5

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

States a specific verb (Starts) and resource (a long editor operation as a job) and immediately clarifies it returns at once rather than blocking. The enumerated kinds and the note that its result matches editor_compile/editor_play_mode/editor_open_scene make it distinguishable from those synchronous siblings without opening their schemas.

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?

Clearly establishes the usage context (long operations, non-blocking return) and names the follow-up tools (job_wait, job_status) plus the one-at-a-time constraint. The alternative blocking siblings are referenced only indirectly ('its result is what editor_compile... return'), so the explicit selection rule between this and those sync tools 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.

editor_modify_actorA

Replaces an existing live actor's world transform and returns its updated details. Use editor_actor_details first to preserve transform values that should not change.

NameRequiredDescriptionDefault
scaleYesReplacement world-space scale.
actorIdYesActor GUID from editor_scene_graph or editor_get_selection.
orientationYesReplacement world-space orientation quaternion.
translationYesReplacement world-space translation.

Output Schema

NameRequiredDescription
idYes
nameYes
tagsYes
layerYes
sceneIdYes
scriptsYes
isActiveYes
parentIdYes
typeNameYes
layerNameYes
transformYes
mainThreadIdYes
localTransformYes
isActiveInHierarchyYes

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 full burden, and it does disclose the key trait that this is a full replacement, not a partial update, plus the read-before-write mitigation. It omits other consequential behavior: whether the actor must be in play mode (only hinted by "live"), what happens on an invalid or destroyed actorId, and whether the change is undoable.

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 sentences, zero waste. The operation and its return are stated first, then the safety instruction, so the most important constraint 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?

An output schema exists, so return values need no explanation, and all four required nested parameters are covered by the schema. What remains thin is failure and precondition behavior for a mutation tool with no annotations; "live" gestures at a play-mode requirement without confirming 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 100% and each of the four parameters already documents its world-space meaning, so the schema does the heavy lifting. The description reinforces the replacement (all-or-nothing) semantics but adds no coordinate conventions, units, or quaternion normalization rules 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 names a specific verb ("Replaces") and resource ("an existing live actor's world transform"), so an agent knows this is a full-overwrite transform mutation rather than a rename or reparent. It references editor_actor_details but as a prerequisite, not as a competing sibling, so no alternative-modifier tool is explicitly ruled out.

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

Usage Guidelines4/5

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

It gives an explicit prerequisite workflow: read with editor_actor_details first so unchanged transform components can be carried over. That is actionable context rather than inference. It stops short of stating when not to use this tool (e.g. for non-live or non-existent actors) or which sibling handles those cases.

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

editor_open_sceneA

Opens a scene in the live Flax Editor and returns when it has loaded. The path is absolute or relative to the project's Content folder (for example Scenes/Main.scene). Refused during play mode.

NameRequiredDescriptionDefault
pathYesScene asset path, absolute or relative to Content/, ending in .scene.

Output Schema

NameRequiredDescription
scenesYes
sceneIdYes
sceneNameYes
mainThreadIdYes

TDQS

A4.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 behavioral burden. It usefully discloses that the call is synchronous ('returns when it has loaded') and that it is refused during play mode. However, it does not explain what happens to any currently open scene or unsaved changes, which is important for an editor-state mutation.

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 three tight sentences with no wasted language. The core purpose is front-loaded, followed by path semantics and the play-mode restriction.

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 editor tool with a full input schema and an output schema, the description covers the essential call behavior: what it does, how paths are resolved, and when it is refused. The main missing context is how it handles unsaved state in the currently open scene.

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

Parameters4/5

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

Schema coverage is already 100%, so the baseline is 3. The description adds useful meaning by explaining that the path can be absolute or relative to Content/ and by providing an example such as Scenes/Main.scene.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Opens a scene in the live Flax Editor.' It also states the synchronous completion behavior ('returns when it has loaded'), making it clearly distinguishable from listing or inspecting siblings such as scene_list and scene_outline.

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

Usage Guidelines4/5

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

It gives clear usage context, including path resolution relative to the project's Content folder and an example path. It also provides an explicit exclusion: 'Refused during play mode.' It does not name an alternative tool, but the when-to-use and when-not-to-use conditions are clear.

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

editor_play_modeA

Controls play mode in the live Flax Editor. Action must be start, stop, pause, or resume. Returns when the editor has reached the requested state (up to 30 seconds, so a heavy scene can load).

NameRequiredDescriptionDefault
actionYesPlay mode action: start, stop, pause, or resume.

Output Schema

NameRequiredDescription
isPausedYes
isPlayModeYes
mainThreadIdYes
requestedActionYes

TDQS

A4.1/5.0
Behavior4/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 does meaningful work: it discloses that the call is synchronous ("Returns when the editor has reached the requested state") and bounded ("up to 30 seconds, so a heavy scene can load"). It does not mention side effects of entering play mode (script execution) or what happens if the 30-second window elapses without reaching the state, leaving a gap for a state-changing tool.

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

Conciseness5/5

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

Three short sentences, front-loaded with purpose, then the constraint, then the blocking behavior. Every clause earns its place with no filler 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?

An output schema exists, so return values need not be explained. For a one-parameter state-transition tool, the description covers purpose, allowed values, blocking semantics, and the timeout bound, which is enough 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.

Parameters3/5

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

Schema coverage is 100% and the single parameter's schema description already lists start/stop/pause/resume, so the description's enumeration is largely a restatement. It adds no meaning beyond the schema, such as whether 'resume' is only valid from a paused state or whether 'start' is idempotent; baseline 3 applies when the schema does the heavy lifting.

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 ("Controls play mode in the live Flax Editor") and immediately enumerates the valid actions, so the tool's scope is unambiguous. It is clearly distinguishable from siblings like editor_wait_for or game_command, which deal with waiting or in-game commands rather than editor play mode.

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 (you invoke it with one of four actions to transition the editor's play state) but never states when to use it versus alternatives such as game_command, game_commands, or editor_wait_for. No exclusions or prerequisites (e.g., editing mode required) are given, so guidance is only implied by the enumeration of actions.

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

editor_rename_actorA

Renames a loaded actor through the editor Undo/Redo history and returns its updated details.

NameRequiredDescriptionDefault
nameYesNew non-empty actor name.
actorIdYesActor GUID from editor_scene_graph.

Output Schema

NameRequiredDescription
idYes
nameYes
tagsYes
layerYes
sceneIdYes
scriptsYes
isActiveYes
parentIdYes
typeNameYes
layerNameYes
transformYes
mainThreadIdYes
localTransformYes
isActiveInHierarchyYes

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 full burden. It usefully discloses that the rename is recorded in Undo/Redo history and that updated details are returned, which is real behavioral context. However, it says nothing about failure modes (e.g., duplicate name rejection), permission requirements, or whether 'loaded' implies an active scene prerequisite.

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 well-formed sentence with the mutation front-loaded and the two behavioral facts (undo history, return of updated details) appended efficiently. No wasted text.

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 explained, and params are fully covered by the schema. But for a mutation tool with zero annotations, the description omits prerequisite conditions (active scene, actor existence) and error behavior, leaving meaningful gaps.

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 100%, so both actorId and name are already documented in the schema, including the non-empty constraint and the GUID source (editor_scene_graph). The description adds no meaning beyond the structured fields, so the baseline 3 applies.

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 ('Renames a loaded actor') and adds that it goes through the editor Undo/Redo history and returns updated details. It is clearly distinguishable from siblings like editor_delete_actor or editor_create_actor, though it does not explicitly contrast with editor_modify_actor, which could plausibly also rename.

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 'loaded actor' implies the actor must exist in the current scene, but there is no explicit when-to-use guidance or comparison to alternatives such as editor_modify_actor or editor_set_member. Usage is inferable from context rather than stated.

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

editor_reparent_actorA

Moves a loaded actor to another loaded parent or to a loaded scene root through Undo/Redo history. Set exactly one of sceneId or parentId and explicitly choose whether to preserve the world transform.

NameRequiredDescriptionDefault
actorIdYesActor GUID from editor_scene_graph.
sceneIdYes
parentIdYes
preserveWorldTransformYes

Output Schema

NameRequiredDescription
idYes
nameYes
tagsYes
layerYes
sceneIdYes
scriptsYes
isActiveYes
parentIdYes
typeNameYes
layerNameYes
transformYes
mainThreadIdYes
localTransformYes
isActiveInHierarchyYes

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 burden. It does disclose one important behavioral trait — the move is recorded in Undo/Redo history — and implies that all entities must already be loaded. It stays silent on failure behavior (e.g., invalid or cross-scene parents) and any confirmation or side effects.

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

Conciseness5/5

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

Two sentences, no filler, with the target-selection rule and the transform decision both front-loaded. Every clause contributes operational information.

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-value detail is not required. Still, for an unannotated mutation tool the description leaves gaps: it does not state what the unused ID should be set to (null vs omitted), what happens if the parent is in a different scene, or whether the actor must be unselected or unlocked.

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 only 25% (only actorId is documented), so the description must compensate, and it does: the mutual-exclusivity rule between sceneId and parentId and the meaning of preserveWorldTransform are both stated. This is real added value the schema alone does not convey, since the schema marks both ID parameters as required.

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 ('Moves a loaded actor') plus the destination targets (parent or scene root). It does not name or contrast with any sibling, but the operation is distinctive enough among the listed tools that misselection is unlikely.

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?

'Set exactly one of sceneId or parentId' is an explicit invocation constraint, and 'loaded' implies a prerequisite state for the actor, parent, and scene. However, there is no guidance on when to reparent versus use editor_modify_actor or editor_create_actor, and no when-not conditions.

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

editor_saveA

Saves every open scene (including changes made through the API, which the editor does not mark as modified) and all modified content assets in the live Flax Editor. Refused during play mode: a save then would write the play-time scene, with every actor scripts created at run time.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
savedYes
savedScenesYes
mainThreadIdYes

TDQS

A4.1/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 carries the load well: it discloses that API-made changes the editor does not mark as modified are still saved, that all modified content assets are included, and that play mode causes a refusal with a concrete reason (writing play-time scene state and runtime-created actor scripts). It does not cover edge cases like an empty scene list or permission/disk-error behavior, keeping it below 5.

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 sentences, both front-loaded with the important information: the scope of the save first, the play-mode refusal second. Every clause earns its place—the parenthetical about unmarked API changes and the play-mode rationale are both non-obvious and actionable.

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 with zero parameters the schema imposes no burden. The description covers scope, side effects, and the one blocking precondition (play mode) thoroughly; only minor operational details (e.g., behavior with no open scenes) are 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?

The tool takes zero parameters, so the baseline is 4 and there is no parameter semantics to add or omit.

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 ("Saves every open scene ... and all modified content assets") and scopes it to the live Flax Editor, so an agent immediately knows this is a persistence operation. It does not explicitly contrast itself with any sibling (e.g., scene_list, editor_open_scene, or build tools), so it falls short of the 5 bar for 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 Guidelines4/5

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

It clearly states the context of use (persist changes across open scenes and modified content assets) and gives an explicit exclusion: the tool is refused during play mode. It stops short of naming an alternative workflow (e.g., exit play mode first, or that in-editor edits must be marked modified), so there is no full when/when-not/alternative triad.

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

editor_scene_graphA
Read-only

Returns the live actor tree from every scene loaded in the Flax Editor, including unsaved runtime state. Truncated is true when the 500-node or 32-level response limit is reached.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
scenesYes
truncatedYes
mainThreadIdYes

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true; the description adds real value beyond that by disclosing that the result includes unsaved runtime state and by quantifying the truncation behavior (500 nodes or 32 levels) with the meaning of the truncated flag. It does not discuss payload size, cost, or whether truncation loses whole subtrees versus leaf nodes, which keeps it off 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.

Conciseness5/5

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

Two sentences, zero waste. Scope and the 'live/unsaved' qualifier come first, and the truncation caveat follows as a compact second sentence.

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?

With an output schema present, return-value shape needn't be restated, and the one non-obvious output trait (truncation) is explained. No parameters, read-only annotation, and the live-vs-saved distinction are all covered, so an agent has enough 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 there is nothing for the description to disambiguate; the baseline for a 0-param schema applies. The description correctly avoids inventing parameter talk and instead spends its words on output behavior.

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: 'Returns the live actor tree from every scene loaded in the Flax Editor.' The 'every scene / including unsaved runtime state' scoping distinguishes it in substance from per-scene tools, but it never names the near-siblings (scene_outline, scene_list, editor_find_actors), so the agent must infer the boundary.

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 'use this when' or 'do not use for' statement. The phrase 'every scene loaded... including unsaved runtime state' implies the case where a whole-project live snapshot is wanted rather than a single-scene or single-actor lookup, but routing between this and scene_outline/editor_find_actors 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.

editor_screenshotA

Captures the visible Flax Editor scene viewport to a PNG file. The output directory must already exist, and capture is unavailable in headless mode.

NameRequiredDescriptionDefault
pathYesAbsolute or current-working-directory-relative output path ending in .png.

Output Schema

NameRequiredDescription
pathYes
bytesYes

TDQS

A4.5/5.0
Behavior5/5

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

Since no annotations are provided, the description provides vital behavioral context. It explicitly mentions the environmental restriction (not headless mode) and a dependency on external state (output directory must exist).

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

Conciseness5/5

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

The description is concise, stating the function in the first sentence followed immediately by the critical operational constraints in the second.

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 that the output format (PNG) and the necessary preconditions (existing directory, non-headless environment) are all detailed, the definition is contextually complete for an agent.

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 already provides a thorough description of the 'path' parameter (absolute/relative, .png). The description does not add further semantic meaning to the path itself, relying on the schema for structure.

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 tool clearly states its action: 'Captures the visible Flax Editor scene viewport to a PNG file.' This is specific and immediately distinguishes it from other editor functions like saving or manipulating actors.

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

Usage Guidelines5/5

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

The description provides two explicit conditions that dictate when this tool can or cannot be used: the output directory must exist, and it is unavailable in headless mode.

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

editor_set_box_colliderB

Updates a loaded BoxCollider's local size, center, and trigger mode through Undo/Redo history.

NameRequiredDescriptionDefault
sizeYesPositive collider dimensions in local space.
centerYesCollider center offset in local space.
actorIdYesBoxCollider actor GUID from editor_scene_graph.
isTriggerYes

Output Schema

NameRequiredDescription
sizeYes
actorYes
centerYes
isTriggerYes
mainThreadIdYes

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 full burden, and it does disclose the key behavioral trait that the mutation is routed through Undo/Redo history, plus that the target must be loaded. It does not say what error arises from an invalid actorId, whether the operation requires a specific editor state, or that existing values are overwritten.

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, front-loaded with the verb and resource, with no filler. The undo/redo clause is the only extra and it earns 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?

An output schema exists, so return values need not be explained. However, for a 4-required-parameter mutation tool with zero annotations, the description should cover prerequisites and failure modes; the nested vector objects and the undocumented isTrigger flag leave gaps.

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 75%, so the schema already explains size, center, and actorId (as a GUID from editor_scene_graph). The description restates the same three fields and adds only the "local" qualifier already present in the schema, leaving isTrigger undocumented in both places.

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 (Updates) and resource (a loaded BoxCollider's local size, center, and trigger mode), which is precise enough to separate it from editor_create_box_collider and editor_box_collider_details. It never names those siblings explicitly, so differentiation is inferred rather than declared.

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 word "loaded" hints that the collider must already exist, but there is no explicit when-to-use statement, no exclusion pointing at editor_create_box_collider for new colliders, and no note about editor vs. play mode. The agent must infer call conditions entirely.

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

editor_set_memberA

Writes a field or property of an actor or of one of its scripts by a dotted path; a struct on the way is written back. The value is JSON in the member's shape (a number, true, "text", an enum name, {"X":1,"Y":2,"Z":3}). In edit mode it goes through the editor's undo and marks the scene edited (editor_save keeps it); in play mode it lasts until play ends. Returns the value read back.

NameRequiredDescriptionDefault
valueYesThe new value as JSON.
memberYesThe member path, e.g. Enabled or Settings.Speed.
actorIdYesThe actor's id.
scriptTypeNoWrite to the actor's script of this type instead of the actor.

Output Schema

NameRequiredDescription
valueYes
memberYes
targetIdYes
typeNameYes
targetTypeYes
mainThreadIdYes
recordedUndoNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses intermediate struct write-back, undo integration, scene-dirty marking and its interaction with editor_save, and that play-mode writes evaporate when play ends. It also notes the return is the value read back, covering mutation-reversibility and lifecycle questions an agent would otherwise have to guess.

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 dense sentences, each earning its place: what is written, what the value looks like, and the edit-mode/play-mode lifecycle difference. The core action is front-loaded in the first clause.

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 4-parameter mutation tool with no annotations but an output schema, the description covers the missing pieces — persistence, undo, mode-dependent lifetime, value encoding, and path traversal — without redundantly explaining return values beyond the one-line read-back 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 100%, so the baseline is 3, but the description adds real semantics: dotted-path traversal with struct write-back, the concrete JSON shapes a value may take (number, true, "text", enum name, {"X":1,"Y":2,"Z":3}), and that scriptType targets a script member rather than the actor. Only the actorId semantics remain purely schema-supplied.

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 — writes a field or property of an actor or its script by dotted path — which cleanly distinguishes it from the read-side sibling editor_get_member and from broader mutators like editor_modify_actor. The scope (actor vs. script member, dotted traversal) 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 Guidelines4/5

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

Gives clear operative context: edit mode routes through undo and marks the scene edited (with editor_save named as the persistence path), while play mode changes are transient until play ends. It does not explicitly name when to prefer a sibling such as editor_modify_actor or editor_set_selection, so it stops short of full routing guidance.

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

editor_set_selectionA

Replaces the live Flax Editor actor selection with the actors identified by GUID. Pass an empty list to clear the selection.

NameRequiredDescriptionDefault
actorIdsYesActor GUIDs from editor_scene_graph.

Output Schema

NameRequiredDescription
selectedYes
mainThreadIdYes

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It does disclose the key overwrite semantic ('Replaces' rather than appends or toggles) and the clear-selection case, but says nothing about permission/auth needs, what happens with invalid or stale GUIDs, or whether the change is undoable in the editor.

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, zero filler. The primary action comes first and the edge-case behavior (empty list) follows, which is the right ordering for an agent scanning for the main effect.

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 a single fully-documented parameter and an output schema covering returns, the description is close to sufficient. The remaining gap is failure-mode behavior for invalid GUIDs, which matters somewhat for a state-mutating editor call but is not disqualifying.

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 100%, so the parameter's type and source are already documented. The description adds real meaning beyond the schema by defining the empty-array case as 'clear the selection', which is behavior the schema cannot express.

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 verb and resource ('Replaces the live Flax Editor actor selection') and the GUID-based input, which lets an agent distinguish it from the read-only sibling editor_get_selection. It stops short of explicitly contrasting itself with siblings by name, so it lands just below the top mark.

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: call this when you want to change the current selection, and empty the list to clear it. There is no explicit guidance on when not to use it, no mention of alternatives (e.g. editor_get_selection to read state first), and no prerequisites such as a live editor connection.

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

editor_set_static_modelA

Assigns an existing FlaxEngine.Model asset to a loaded StaticModel actor through Undo/Redo history. The bridge validates that modelId resolves to a compatible model before changing the scene.

NameRequiredDescriptionDefault
actorIdYesStaticModel actor GUID from editor_scene_graph.
modelIdYesFlaxEngine.Model asset GUID from content_search.

Output Schema

NameRequiredDescription
actorYes
modelIdYes
modelPathYes
mainThreadIdYes
modelIsLoadedYes

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 and does disclose two meaningful traits: the change goes through Undo/Redo history (reversible), and modelId is validated for compatibility before the scene is mutated. It does not cover failure behavior (what happens if validation fails) or whether the undo entry requires a transaction boundary.

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 sentences, zero waste, with the action and its mechanics front-loaded and the validation caveat following immediately.

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?

The tool is a simple two-parameter mutation with an output schema and full parameter documentation, so the description covers nearly everything needed. The remaining gap is failure/error behavior, which matters for a scene-mutating tool with no 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 coverage is 100%, so baseline is 3; the description goes beyond it by stating that modelId must resolve to a compatible model before use and that the actor must already be loaded, adding validation semantics not present in the schema text.

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 (assigns), a specific resource (FlaxEngine.Model asset → StaticModel actor), and the mechanism (Undo/Redo history). It is clearly distinguishable from siblings such as editor_set_static_model_material or editor_set_member.

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 rather than stated: 'existing' asset and 'loaded' actor hint at prerequisites, and the schema points to editor_scene_graph and content_search as GUID sources. However, the description never names alternatives or states when not to use this tool (e.g., versus editor_set_member or the material setter).

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

editor_set_static_model_materialA

Assigns an existing FlaxEngine.MaterialBase asset to one slot of a loaded StaticModel through Undo/Redo history. The bridge validates the actor, slot, and material before changing the scene.

NameRequiredDescriptionDefault
actorIdYesStaticModel actor GUID from editor_scene_graph.
slotIndexYesZero-based material slot index from the assigned model.
materialIdYesFlaxEngine.Material or MaterialInstance asset GUID from content_search.

Output Schema

NameRequiredDescription
actorYes
slotIndexYes
materialIdYes
mainThreadIdYes
materialPathYes

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 still discloses that the operation is tracked through Undo/Redo history and that the bridge validates the actor, slot, and material before mutating the scene. That covers the main mutation safety and reversibility traits, though it omits failure behavior, permissions, and other 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?

Two sentences, front-loaded with purpose and followed by the key behavioral caveat. There is no filler or repetition.

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 and all parameters are fully described in the schema, so the description need not explain return values or parameter formats. It covers the mutation, Undo/Redo, and validation well, though it lacks explicit usage guidance and failure-mode details.

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

Parameters3/5

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

Schema description coverage is 100%, so actorId, slotIndex, and materialId are already fully documented in the schema. The description mentions actor, slot, and material in prose but adds no parameter syntax or format beyond what the schema provides.

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 ('Assigns') and resource ('existing FlaxEngine.MaterialBase asset to one slot of a loaded StaticModel'), so the purpose is unambiguous. It does not explicitly differentiate from sibling tools such as editor_set_static_model, which keeps it from 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 gives no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The agent can infer that this tool is for assigning a material to a loaded StaticModel slot, but the description does not route it against alternatives.

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

editor_static_model_detailsA
Read-only

Returns the assigned model reference and live actor details for a loaded StaticModel actor.

NameRequiredDescriptionDefault
actorIdYesStaticModel actor GUID from editor_scene_graph.

Output Schema

NameRequiredDescription
actorYes
modelIdYes
modelPathYes
mainThreadIdYes
modelIsLoadedYes

TDQS

A3.6/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read. The description adds the useful qualifier 'live' (runtime actor state, not just the asset reference) and that it covers both the model reference and actor details, but says nothing about failure behavior when the actorId is invalid or not loaded.

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. The resource type and the two returned artifacts are stated immediately, so nothing needs to be trimmed.

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 the tool is a simple one-param read with full schema coverage. The only remaining gap is not positioning it relative to editor_actor_details, but for a read-only detail lookup the description is essentially sufficient.

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 100% and the actorId property already documents its origin ('StaticModel actor GUID from editor_scene_graph'), so the schema carries parameter semantics. The description adds no further detail on the identifier or on what happens with a non-StaticModel actor, making baseline 3 appropriate.

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?

Specific verb ('returns') plus a precise resource ('assigned model reference and live actor details for a loaded StaticModel actor'). It is clearly distinguishable from editor_set_static_model (which mutates) but doesn't explicitly contrast itself with the adjacent editor_actor_details, which plausibly covers overlapping ground.

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 by the phrase 'loaded StaticModel actor' — the agent must infer it applies after a StaticModel exists in the scene. No explicit when-to-use, no exclusion against editor_actor_details or editor_scene_graph, and no note that the actor must be loaded before calling.

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

editor_wait_forA
Read-only

Waits for the first editor event of a kind (see editor_events), optionally with a text, and returns it. Without sinceSeq it waits for an event after the call; with it, an event already recorded after that number counts. A timeout is a result (TimedOut true), not an error. Example: start play with editor_play_mode, then editor_wait_for kind=log textContains="[Test]" to read a game's answer.

NameRequiredDescriptionDefault
kindYesThe event kind, e.g. play_begin, reload_end, log.
sinceSeqNoCount events after this sequence number; omit to wait for a new one.
textContainsNoOnly an event whose text contains this (ordinal).
timeoutSecondsNoHow long to wait, up to 600 seconds.

Output Schema

NameRequiredDescription
eventYes
lastSeqYes
matchedYes
secondsYes
timedOutYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations only declare readOnlyHint, and the description adds genuinely non-obvious behavior: a timeout is returned as a result with TimedOut true rather than raised as an error, which prevents the agent from treating a wait failure as fatal. It does not discuss error cases such as an unknown kind, and return shape is 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.

Conciseness4/5

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

The blocking purpose is front-loaded in the first clause, then sinceSeq semantics, then the non-error timeout note, then a concrete example — every sentence carries distinct information. Slightly longer than a minimal definition, but nothing is 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?

With an output schema covering return values and full parameter documentation in the schema, the description supplies the missing pieces: blocking vs. replay behavior via sinceSeq, timeout-as-result semantics, and a worked usage example. Minor gaps remain around invalid kind handling, but nothing an agent needs to invoke 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?

Schema coverage is 100%, so the baseline is 3, but the description earns above baseline by resolving the ambiguity of sinceSeq (its schema text 'Count events after this sequence number' is otherwise easy to misread) and by framing textContains as an optional text filter on the wait. It leaves kind and timeoutSeconds entirely to the schema.

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

Purpose5/5

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

States a specific verb and resource: waits for the first editor event of a given kind and returns it. It explicitly points to the sibling editor_events as the event catalog, so an agent can distinguish this blocking wait from the event-listing tool 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 Guidelines4/5

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

The sinceSeq sentence gives a concrete decision rule (omit to wait for a future event, supply it to accept an already-recorded one), and the example shows the intended play-mode-then-wait workflow with editor_play_mode. It stops short of stating when not to use this tool (e.g. polling editor_events instead), so no explicit exclusions are present.

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

flax_statusA
Read-only

Reports whether the configured project has a reachable Flax Editor bridge and returns its session metadata.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
errorNo
connectedYes
generationNo
startedUtcYes
engineBuildYes
hostVersionNo
pluginVersionYes

TDQS

A3.7/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe read, so the description's added burden is modest. It does add that the tool reports reachability plus session metadata, which is useful context. It omits what happens on an unreachable bridge (error vs. negative status), whether there are timeouts, and whether it depends on project configuration being set.

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 the primary outcome (reachable or not) front-loaded, followed by the secondary payload (session metadata). No filler, no repetition of the name.

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 a zero-parameter read-only probe is a simple tool. The remaining gap is the ambiguity against editor_host_status/server_info and the unstated failure behavior, neither of which is covered elsewhere.

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 semantics to explain and the baseline of 4 applies. The description correctly implies no arguments are needed by scoping the call to 'the configured project'.

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: it reports reachability of the Flax Editor bridge for the configured project and returns session metadata. That is concrete enough to act on. It does not, however, differentiate itself from the similarly-named siblings editor_host_status, server_info, or project_info, so an agent could plausibly pick the wrong health-check tool.

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 is only implied: this is a connectivity/preflight check, so an agent can infer calling it before editor_* operations. There is no explicit when-to-use, no exclusion, and no pointer to editor_host_status or server_info as alternatives for overlapping status questions.

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

game_commandA

Runs a registered game command on the editor's main thread and returns its text result. Errors: unknown_command (lists the registered names), command_failed (the handler's exception type and message).

NameRequiredDescriptionDefault
argsNoThe argument string the command's description asks for.
nameYesThe command name, as game_commands lists it.

Output Schema

NameRequiredDescription
nameYes
resultYes
isPlayModeYes
mainThreadIdYes
millisecondsYes

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 carries the full burden and does a decent job: it discloses main-thread execution and enumerates the two error modes with their payloads (registered-name listing, handler exception type and message). What's missing is the critical caveat that an arbitrary registered command may mutate editor state with unknown side effects, which matters greatly for a generic passthrough executor.

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 sentences, front-loaded with the core action and execution context, followed by a compact error contract. No filler or repetition.

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 the error surface is documented. The remaining gap is behavioral: no statement about reversibility, permissions, or the fact that arbitrary command side effects are the caller's responsibility.

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 100%, so the baseline is 3. The description adds no parameter-level detail beyond what the schema already says ('name as game_commands lists it', 'args as the command's description asks for') — it doesn't explain quoting, splitting, or optional-arg behavior.

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 ('Runs a registered game command') plus the execution context (editor's main thread) and the return shape (text result). It doesn't name the sibling game_commands that enumerates valid names, so the list-versus-execute distinction must be inferred from the schema rather than the description.

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: 'registered' plus the unknown_command error that 'lists the registered names' hints the agent should discover names first. There is no explicit when-to-use/when-not, and no guidance on preferring a dedicated sibling tool (e.g. editor_play_mode, build_compile_scripts) over an arbitrary command.

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

game_commandsA
Read-only

Lists the commands the game registered with the bridge (FlaxMcpBridge.GameCommands.Register): name, description and the type that registered it. Game scripts usually register while enabled, so the list in play mode can differ from the one in edit mode.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
commandsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so safety is covered; the description adds real behavioral context beyond that — registration is runtime-driven and the list in play mode can differ from edit mode. That is exactly the kind of non-obvious trait an agent needs. It stops short of noting whether results are cached or how staleness is handled, keeping it at a 4.

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 sentences, both earning their place: the first defines scope and the returned fields, the second flags the play-mode caveat. Front-loaded with the core definition and no 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?

With zero parameters, a readOnly annotation, and an output schema covering return values, the description only needs to explain scope and the mode caveat — both are present. The one omission is its relationship to the `game_command` sibling, which would complete the discover-then-invoke picture.

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 semantics burden and the baseline of 4 applies. The description correctly adds no parameter discussion, which is appropriate.

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 ('Lists') and a precisely scoped resource ('the commands the game registered with the bridge'), even naming the registration API. An agent knows exactly what it retrieves. It does not, however, distinguish itself from the similarly named sibling `game_command`, leaving the listing-vs-invoking distinction implicit.

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: an agent can infer this is the discovery step before calling a command. But there is no explicit 'use this when...' statement and no pointer to the `game_command` sibling that would be the natural next step. Nothing is misleading, but the routing guidance 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.

job_statusA
Read-only

Returns a job's state: running, succeeded (with its result), failed or canceled (with the reason), and its latest progress message. Jobs come from editor_job_start, build_game, and the editor tools that run as jobs.

NameRequiredDescriptionDefault
jobIdYesThe job id, e.g. job-7.

Output Schema

NameRequiredDescription
kindYes
errorYes
jobIdYes
resultYes
statusYes
messageYes
endedUtcYes
startedUtcYes

TDQS

A3.8/5.0
Behavior4/5

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

The readOnlyHint annotation already establishes that this is a safe read operation. The description adds useful context beyond the annotations by explaining that succeeded jobs return a result, failed or canceled jobs return a reason, and all jobs report their latest progress message.

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 definition is two tightly written sentences with no wasted text. It presents the core behavior first, then appends the origin context.

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 status tool with an output schema and readOnlyHint annotation, the description is largely complete. The main remaining gap is the lack of explicit guidance on using it as a poll versus using job_wait to block.

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 100% description coverage and documents the single jobId parameter with an example. The description does not add any additional meaning about the parameter beyond what the schema already provides, so the baseline score of 3 is appropriate.

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 and resource: it states that the tool returns a job's state and enumerates the possible states and associated payloads. It also names the tools that create jobs, which gives useful context, but it does not explicitly distinguish job_status from the sibling tool job_wait.

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 that the tool is used to check job state and notes where jobs originate. However, it does not say when to use this tool versus the closely related job_wait tool or when not to use it, so usage guidance is mostly implied.

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

job_waitA
Read-only

Waits for a job to end, up to the timeout, sending its progress messages as progress notifications, and returns its state. A timeout is a result (Status running), not an error.

NameRequiredDescriptionDefault
jobIdYesThe job id, e.g. job-7.
timeoutSecondsNoHow long to wait, up to 1800 seconds.

Output Schema

NameRequiredDescription
kindYes
errorYes
jobIdYes
resultYes
statusYes
messageYes
endedUtcYes
startedUtcYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, and the description adds real behavioral context beyond that: it blocks up to a timeout, streams progress messages as progress notifications, and returns state. The key non-obvious trait — that timeout is a successful result carrying Status running — is explicitly disclosed, which is exactly the kind of detail annotations cannot express.

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 sentences, front-loaded with the blocking behavior and followed by the most decision-relevant caveat. Nothing is padded and no sentence is redundant with the 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?

With an output schema present, return-value detail is unnecessary, and the description still states it returns job state. It covers blocking semantics and timeout handling well; only minor gaps remain, such as behavior for an unknown or already-finished jobId and whether progress notifications are optional.

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 100%, so jobId and timeoutSeconds (including the 1800s cap and 60s default) are already fully documented in the schema. The description only echoes 'up to the timeout' and adds no syntax, format, or edge-case meaning, so the baseline 3 applies.

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 ('Waits') with the resource ('a job') and states the terminal conditions: end-of-job or timeout. It implicitly contrasts with the polling sibling job_status by emphasizing blocking-with-timeout, but never names that sibling, so the differentiation is left to inference.

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 one genuinely useful usage rule — a timeout returns Status running and is not an error — which steers the agent away from retrying. However, it never says when to prefer this over job_status or editor_job_start, so the use-vs-alternative decision is only implied by the word 'Waits'.

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

logs_errorsA
Read-only

Extracts lines tagged [Error] or [Warning] from the project's most recent Logs/*.txt file, without running the editor.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

Beyond the readOnlyHint annotation, the description discloses two real behavioral facts: only the single most recent file is examined (not a history), and no editor connection is required. It does not say what happens on missing Logs directory or zero matches, but the annotations already cover the safety profile.

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 behavior-defining constraint (most recent file) is stated up front, and the qualifier ('without running the editor') is appended where it belongs.

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?

A zero-parameter tool with an output schema and readOnlyHint coverage: the description supplies everything an agent needs to decide to call it — the source file selection rule and the line filter. Return shape is handled by 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?

There are zero parameters, so no parameter semantics are required; the schema is trivially complete. The description adds nothing to explain, which is appropriate here rather than a deficiency.

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 (extracts), the exact selection criteria ([Error]/[Warning] tagged lines), and the exact source (the project's most recent Logs/*.txt). An agent can distinguish this from the sibling logs_tail purely from the description, since 'most recent file only' versus tailing are clearly different behaviors.

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 'without running the editor' implies the usage context (offline/no-host scenario), but the description never states when to prefer this over logs_tail or what to do if you need older log files. Usage is inferable rather than prescribed.

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

logs_tailA
Read-only

Returns the last N lines (default 200) of the project's most recent Logs/*.txt file, without running the editor.

NameRequiredDescriptionDefault
linesNo

Output Schema

NameRequiredDescription
linesYes
fileNameYes

TDQS

A3.9/5.0
Behavior4/5

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

The readOnlyHint annotation already establishes this as a safe read operation. The description adds meaningful behavior by saying it reads the most recent Logs/*.txt file and does not require running the editor, though it does not cover missing-file or truncation 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 efficient sentence with the key resource, default, and editor-independence front-loaded. There is no unnecessary text.

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

Completeness4/5

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

For a simple read-only log tool with an output schema and readOnlyHint annotation, the description covers the main behavior, file selection, default line count, and editor independence. It could be more complete by mentioning what happens when no Logs/*.txt file exists.

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 carry parameter meaning. It does explain that the single 'lines' parameter controls the number of trailing lines returned and notes the default of 200, though it omits constraints such as valid ranges.

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: it returns the last N lines of the project's most recent Logs/*.txt file. It adds useful scoping with 'without running the editor,' but it does not explicitly distinguish this from the sibling logs_errors tool.

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 'without running the editor' implies when this tool is useful for inspecting recent log output outside the editor. However, it does not explicitly compare against logs_errors or state 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.

project_infoA
Read-only

Reads the .flaxproj file: name, version, targets, references, and default scene.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
nameYes
versionYes
gameTargetYes
referencesYes
defaultSceneYes
editorTargetYes
minEngineVersionYes

TDQS

A3.7/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe, non-mutating read, so the bar is lower. The description usefully identifies the underlying source (the .flaxproj file), which hints at staleness semantics, but it does not say what happens if the file is absent or malformed, nor whether values are cached.

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. The verb and resource come first and the field list follows, which is the right order for scanning.

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, return-value explanation is not required, and zero parameters means no input gaps. The description covers the source and scope of the data; only the relationship to overlapping siblings (project_targets, project_settings) is left unaddressed.

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 disambiguate and the baseline is 4. The description correctly makes no parameter claims and instead spends its words on the returned data.

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 ("Reads the .flaxproj file") and enumerates the fields returned (name, version, targets, references, default scene), so the agent knows exactly what data it yields. It does not, however, distinguish itself from nearby siblings like project_targets and project_settings, and listing "targets" as a field actually blurs that boundary.

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: an agent can infer this is the entry point for project metadata, but the description never says when to prefer it over project_targets, project_settings, or server_info. No exclusions or prerequisites are given.

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

project_settingsA
Read-only

Reads Content/.json and Content/Settings/.json settings assets (Game, Graphics, Input, Physics, ...) as structured JSON.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

The readOnlyHint annotation already establishes the safety profile, so the description only needs to add scope context — which it does by naming the exact file globs and the structured JSON return format. It says nothing about behavior when no project is loaded, when a settings file is missing, or how large the payload may be, so it adds modest value beyond annotations.

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

Conciseness5/5

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

A single sentence with zero waste, front-loaded with the verb and immediately followed by the exact resources read. Nothing could be removed without losing 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 zero-parameter read-only tool with an output schema and readOnlyHint annotation, the description covers what is read and in what form, which is the essential information. A brief note on preconditions (project loaded) or payload size would make it fully complete.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to disambiguate and the baseline of 4 applies. The description correctly signals that no filtering or selection input is expected.

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 ('Reads') and a precise resource: Content/*.json and Content/Settings/*.json assets, with concrete examples (Game, Graphics, Input, Physics). This is clearly distinct from build/log/scene siblings, though it never explicitly contrasts itself with close neighbors like project_info or content_asset_info.

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 by the resource naming — an agent can infer 'use this to inspect project settings.' There is no explicit when-to-use guidance, no statement of when another tool (e.g. project_info or content_asset_info) would be preferable, and no prerequisites or failure conditions mentioned.

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

project_targetsB
Read-only

Parses the GameTarget/EditorTarget *.Build.cs files referenced from the .flaxproj: target class names and referenced modules.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
gameTargetYes
editorTargetYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, consistent with 'Parses', so the safety profile is covered. The description adds value by naming the source of truth (.flaxproj-referenced Build.cs files), but says nothing about behavior when the .flaxproj or target files are missing, or whether parsing happens live per call.

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; the output content is stated up front. Slightly dense phrasing but nothing 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?

With an output schema present the description need not explain return values, and it correctly focuses on the input source and extracted data. The main shortfall is the absence of failure-mode or usage context, which is minor for a read-only zero-arg tool.

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

Parameters4/5

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

Zero-parameter tool, so baseline is 4; there is nothing in the schema the description needs to compensate for.

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 ('Parses') and a specific resource ('GameTarget/EditorTarget *.Build.cs files referenced from the .flaxproj'), plus what is extracted (target class names, referenced modules). The resource is distinctive enough to separate it from siblings like project_info or build_generate_projects, though no sibling is named 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?

No statement of when to call this versus project_info, project_settings, or build_generate_projects, and no prerequisites or exclusions. Use is only implied by the resource it reads.

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

scene_find_actorA
Read-only

Searches a .scene/.prefab file's actors by partial Name match and/or exact TypeName.

NameRequiredDescriptionDefault
nameNo
pathYes
typeNameNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

The readOnlyHint annotation already establishes that this is a safe search operation. The description adds useful behavioral detail beyond the annotation by specifying that Name matching is partial and TypeName matching is exact, and that the search is against serialized scene/prefab files.

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 phrase contributes to identifying the target, the search criteria, or the matching semantics.

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 described, and readOnlyHint covers the safety profile. The description is nearly complete for this simple search tool, with the main gap being explicit routing guidance versus editor_find_actors.

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 carry parameter meaning. It explains the matching semantics for name and typeName and identifies path as the .scene/.prefab file to search, though it does not explicitly state that name and typeName are optional or exactly how multiple criteria combine.

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: searching actors inside a .scene/.prefab file by Name and/or TypeName. This is clear enough to distinguish file-based search from editor-oriented siblings, though it does not explicitly name or contrast editor_find_actors.

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 file-targeted phrasing implies when this tool is appropriate, but there is no explicit guidance on when to use it instead of editor_find_actors or scene_list. It also does not state prerequisites such as whether the file must exist or be readable.

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

scene_listB
Read-only

Lists scenes (.scene) and prefabs (.prefab) in the project's Content/ directory.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

readOnlyHint=true already establishes this is a safe read, and the description adds useful scope detail (only Content/, only .scene and .prefab). It does not disclose whether subdirectories are traversed or how results are ordered/limited, which matters for an enumeration 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?

A single sentence with no filler, front-loading the verb, the resource, the file extensions, and the search root. Nothing is wasted or buried.

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?

With an output schema present and zero parameters, the description needn't explain returns, and it covers the essential scope. However, it leaves open recursion behavior and the overlap with content_search, which an agent needs in order to choose 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 there is nothing for the description to disambiguate; the baseline of 4 applies. The description correctly implies the call is argument-free.

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 plus the exact file types and directory scope: 'Lists scenes (.scene) and prefabs (.prefab) in the project's Content/ directory.' This is far clearer than the bare name, but it never distinguishes itself from siblings like content_search or scene_outline, which plausibly overlap.

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 content_search (which likely also enumerates assets) or scene_outline (which describes the open scene). The agent must infer the boundary from names alone.

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

scene_outlineA
Read-only

Reads a .scene/.prefab file's actor tree, built from ParentID linkage (not file order). Scripts attached to an actor are listed on that actor's Scripts, not as child nodes. Truncated is true if the configured depth/node-count limit was hit.

NameRequiredDescriptionDefault
pathYes

Output Schema

NameRequiredDescription
idYes
rootsYes
truncatedYes
engineBuildYes

TDQS

A3.7/5.0
Behavior4/5

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

With readOnlyHint=true already covering the safety profile, the description adds real value: it discloses that the tree comes from ParentID linkage, that attached scripts appear under each actor's Scripts rather than as child nodes, and that truncation can occur when a depth/node limit is hit. These are behavioral traits not captured by 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?

Three compact sentences, each front-loading a distinct fact: purpose, structural construction rule, script placement, and truncation semantics. No filler, though slightly dense for a single read 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 and the description usefully explains the Truncated field's meaning. Given low tool complexity and an output schema, the definition is largely complete; only richer path/error guidance is 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% for the single path parameter, so the description must compensate. It implies the path points to a .scene/.prefab file, which is useful, but it does not address absolute vs relative paths, error behavior for missing files, or format constraints. It adds modest meaning over the bare 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?

States a specific verb and resource: reads a .scene/.prefab file's actor tree. It also clarifies the structural semantics (ParentID linkage rather than file order). It does not name sibling tools like scene_list or editor_scene_graph, so an agent must infer the difference from context, but the purpose itself 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?

The implied use case is clear — inspect a scene or prefab file's actor hierarchy. However, there is no explicit when-to-use versus alternatives such as scene_list, scene_find_actor, or editor_scene_graph, and no mention of prerequisites or exclusions. The distinction 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.

server_infoA
Read-only

Returns the FlaxMcp server name and version.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
nameYes
versionYes

TDQS

A3.6/5.0
Behavior3/5

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

readOnlyHint=true already tells the agent this is a safe, side-effect-free read, and the description is consistent with that. It adds only the fact that the payload is name and version; with an output schema present, further return-value detail isn't required, but nothing extra (e.g., whether it reflects the server plugin or the running editor) is 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?

A single front-loaded sentence with no filler; the essential payload (name and version) is stated first.

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, read-only info tool with annotations declaring safety and an output schema defining the return shape, the description supplies everything needed 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 tool takes zero parameters, so the baseline is 4 and there is nothing the description needs to compensate for.

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?

Specific verb (Returns) and resource (FlaxMcp server name and version), so the agent knows exactly what it retrieves. It does not, however, distinguish itself from lookalike siblings such as flax_status, editor_host_status, or project_info, which plausibly return overlapping server/project 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 indication of when this should be called rather than flax_status or editor_host_status, and no prerequisites or exclusions. The agent must infer its role from the name alone.

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. 57 tool updatesv1.1.1
    • First observedbuild_check_scripts
    • First observedbuild_clear_cache
    • First observedbuild_compile_scripts
    • First observedbuild_game
    • First observedbuild_generate_projects
    • First observedcontent_asset_info
    • First observedcontent_create_material
    • First observedcontent_create_material_instance
    • First observedcontent_create_material_transparent
    • First observedcontent_material_details
    • First observedcontent_resolve_guid
    • First observedcontent_search
    • First observedcontent_set_material_instance_parameter
    • First observededitor_actor_details
    • First observededitor_add_script
    • First observededitor_box_collider_details
    • First observededitor_camera_screenshot
    • First observededitor_compile
    • First observededitor_create_actor
    • First observededitor_create_box_collider
    • First observededitor_delete_actor
    • First observededitor_duplicate_actor
    • First observededitor_events
    • First observededitor_find_actors
    • First observededitor_get_member
    • First observededitor_get_selection
    • First observededitor_host_status
    • First observededitor_job_start
    • First observededitor_modify_actor
    • First observededitor_open_scene
    • First observededitor_play_mode
    • First observededitor_rename_actor
    • First observededitor_reparent_actor
    • First observededitor_save
    • First observededitor_scene_graph
    • First observededitor_screenshot
    • First observededitor_set_box_collider
    • First observededitor_set_member
    • First observededitor_set_selection
    • First observededitor_set_static_model
    • First observededitor_set_static_model_material
    • First observededitor_static_model_details
    • First observededitor_wait_for
    • First observedflax_status
    • First observedgame_command
    • First observedgame_commands
    • First observedjob_status
    • First observedjob_wait
    • First observedlogs_errors
    • First observedlogs_tail
    • First observedproject_info
    • First observedproject_settings
    • First observedproject_targets
    • First observedscene_find_actor
    • First observedscene_list
    • First observedscene_outline
    • First observedserver_info

TDQS

B3.3/5.0

Scored across 57 tools

Disambiguation3/5

Most tools have distinct purposes and the descriptions clarify live-editor versus file-based contexts. However, several pairs overlap in practice: editor_find_actors vs scene_find_actor, editor_scene_graph vs scene_outline, and editor_compile vs build_compile_scripts vs build_check_scripts. editor_job_start also duplicates blocking editor operations, so the large surface creates real selection ambiguity.

Naming Consistency4/5

Names are consistently snake_case and grouped by clear functional prefixes such as editor_, content_, scene_, build_, logs_, project_, and job_. Within those prefixes some names are noun-first (editor_actor_details, editor_scene_graph, editor_play_mode) while others are verb-first (editor_find_actors, editor_create_actor), so it is not a pure verb_noun convention, but it remains predictable.

Tool Count1/5

With 57 tools, the surface is far beyond the typical well-scoped range and well past the 25+ threshold for being heavy. Even though the tools are grouped into coherent domains, the sheer count makes reliable tool selection difficult for an agent.

Completeness4/5

Coverage is broad: project metadata, scene inspection, live actor manipulation, materials, builds, logs, screenshots, play mode, events, and jobs are all represented. Notable gaps remain around asset lifecycle operations (delete/rename/import), broader component creation beyond BoxCollider/StaticModel, script removal, and prefab creation, though generic member access and game commands provide workarounds.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Drive the Unreal Engine 5.7 editor from any MCP client over a local TCP socket - 105 editor-automation tools (72 native C++ handlers + 33 bridge-side): actors, levels, materials, Blueprints, sequencer, rendering, asset import, editor Python. Native C++ plugin + thin Python bridge, ~50ms round-trips. MIT.
    100
    9
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Bridges OpenCode to Unreal Engine 5 editor via a local TCP connection, enabling interaction with the editor such as querying project structure, managing assets and actors, and generating code.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI tools to connect to and control Unity/Tuanjie editors via the Codely Bridge TCP server, supporting project management, scene manipulation, and console reading.
    3
    -
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI clients to author and inspect Godot 4 projects by editing .tscn scenes and .gd scripts directly on disk, running headless project checks, and optionally driving a live editor bridge for real-time scene editing.
    20
    20 npm
    MIT