Skip to main content
Glama

Godot Agent Loop

Build it. Play it. Prove it.

An MCP automation loop for Godot 4.

npm version Godot integration tests MCP Server Made with Godot MIT License

Other integrations give agents tools. Godot Agent Loop gives them a feedback loop to author, run, observe, playtest, and independently verify Godot games:

author → validate → run → observe → playtest → verify → refine

Watch the 65-second cold-agent demo

Watch the 65-second demo · Read the exact run evidence · Inspect the resulting project

Quickstart

claude mcp add godot-agent-loop -- npx -y @beremaran/godot-agent-loop

Then point the agent at a project directory—or an empty directory—and describe the playable result. The default core surface is kept within the generated tool-surface budget. Use read-only godot_catalog to find and inspect a hidden capability, then godot_call to execute it. Runtime injection is transient; watched projects can use the optional persistent editor addon.

Using Cline, Cursor, or another MCP client? See Configuration.

Related MCP server: godot-ai-mcp

Proof before claims

  • The evaluation guide documents the pinned conformance, Inspector, Inspect AI, real-client, scorer, baseline, and paired-comparison lanes, including exactly which agent and model each lane uses.

  • A retained representative real-Godot path is enforced in CI.

  • Historically, a cold agent demonstrated MCP-only operation by building and independently verifying a playable win/lose game with zero human corrections in under seven minutes, using 103 MCP calls and no built-in tools. That launch pre-dates the lean surface reduction, which deliberately removed file, scene-authoring, and project-settings tools whose work host editors and shells do better; see the launch evidence and the changelog.

  • Privileged reflection and code-execution groups are denied by default, and the editor provides a human Pause Agent control.

Support is deliberately bounded: Godot 4.7 is both the compatibility floor and the primary target. Editor attachment is verified on Linux CI and in a headed macOS 4.7.1 acceptance run; Windows retains the documented portable acceptance path but not an editor-UI claim. Full debugger automation, native extension builds, and unbounded engine control are not claimed. Details in the verified support boundary.

Highlights

  • A lean task-oriented core — the default surface advertises 16 tools that cover the whole loop: catalog and dispatch (godot_catalog, godot_call), lifecycle (run_project, stop_project), the editor session and compound scene transactions (editor_session, editor_transaction), observation (game_screenshot, game_get_scene_tree, game_get_ui, game_get_node_info, game_get_errors, game_get_logs), structured interaction and waiting (game_scenario, game_wait_until), and independent verification (run_project_tests, verify_project).

  • Everything else is one search away — 40 more tools remain callable through godot_catalog + godot_call: input primitives (mouse, keyboard, key-hold, drag, scroll, touch, gamepad), runtime reflection (privileged, opt-in), node and signal generics, observation extras (performance, visual regression, camera, audio), editor control, and ship tooling (export readiness, import pipeline, .NET, add-ons).

  • Author with your own file tools — coding agents edit .gd/.tscn/.tres/project.godot directly and validate them with run_project_tests or headless checks; with an editor attached, editor_transaction applies undoable compound scene edits through EditorUndoRedoManager.

  • Run and observe — launch the game, capture logs and errors incrementally, take screenshots, and run visual-regression comparisons with baselines, masks, and retained diffs.

  • Playtest like a player — mouse, keyboard, key-hold, drag, scroll, touch, and gamepad input against the running game, composed deterministically with game_scenario.

  • Verify independently — test runners for native/GUT/GdUnit4 (run_project_tests), bounded runtime evidence (verify_project), export checks (verify_export_readiness), and static integrity analysis (analyze_project_integrity).

  • Reach into the runtime — with reflection and code-execution opted in, inspect and manipulate any node, signal, or property through game_eval and the generic node tools.

  • Drive the editoreditor_session ensure discovers the matching project, editor_transaction applies reversible edits through EditorUndoRedoManager, and the Agent Activity dock replays the bounded correlated trace with a human Pause Agent lock.

  • .NET / C# support — inspect, restore, build, and run .NET projects with a Godot.NET.Sdk matched to your installed Godot via verify_dotnet_project.

  • Bounded by design — deterministic pagination and size caps on large responses, structured correlated diagnostics, and least-privilege security defaults.

Tool catalog

The full inventory—the 16 advertised core tools plus the hidden catalog of 40 more—lives in docs/tools.md.

Requirements

  • Godot Engine 4.7 or later

  • (Optional) .NET SDK 8.0+ and the Godot .NET (C#) build, only if you use verify_dotnet_project

  • Node.js >= 22.0.0 (active LTS)

  • An AI assistant that supports MCP (Claude Code, Cline, Cursor, etc.)

Godot compatibility policy

Development targets the latest stable Godot release. Godot 4.7 is the current compatibility floor and primary target, and CI covers that exact release. The floor may be raised when it blocks useful features or creates meaningful maintenance cost. In that case, the last compatible release remains available, and an older-version maintenance branch will be created only when user demand justifies maintaining it. Such a branch would receive critical fixes rather than new features.

Verified support boundary

Area

Status

Evidence or limitation

Linux headed (desktop or Xvfb), Godot 4.7

Verified in CI

Retained MCP E2E under Xvfb covers representative authoring, runtime, editor attachment, and teardown paths

GDScript project and running-game workflows

Representative coverage retained

Scene creation, runtime mutation, process ownership, security, and editor discovery remain in the E2E smoke suite

Privileged runtime commands

Opt-in only

Disabled by default; intended for trusted localhost development

Godot .NET/C#

Scaffold, compile, and editor-load verification

Godot .NET 4.7 with .NET SDK 8

Linux exports

Release/debug template export and smoke-run verification

Godot 4.7 installed templates; other targets are not claimed

Rendering and screenshots

A headed rendering context is required

Compatibility and Forward+ on Linux software rendering; display-less sessions fail fast with desktop/Xvfb remediation

Windows

Portable acceptance verified

Godot 4.7 process, Unicode path, runtime input, window query, and teardown workflows; editor UI, rendering, and exports are not claimed

macOS

Portable acceptance and attached-editor workflow verified

Godot 4.7.1 headed replay opens Godot normally, reconnects the MCP, authors and synchronizes without focus switching/manual reload, exercises undoable transactions, and cleans the discovery record; see the interactive acceptance record

Editor state and undo/redo bridge

Verified on Linux CI and headed macOS 4.7.1

Protocol 2 uses private per-project discovery, EditorInterface, and EditorUndoRedoManager; Windows editor UI remains outside the claimed boundary

Full debugger control

Not claimed

Breakpoints, stack inspection, and frame-local evaluation remain outside the supported boundary

Profiler, leak, asset, localization, and accessibility audits

Verified in MCP E2E

game_performance and analyze_project_integrity return bounded live/static evidence; native extension builds remain unsupported

GDExtension builds

Not claimed

analyze_project_integrity inspects declarations and libraries without invoking arbitrary native toolchains

Configuration

The quickstart npx command is all most setups need. The sections below cover other clients and a source checkout.

Interactive editor setup

For a project the user watches, copy addons/godot_agent_loop into the project at that same path, enable Godot Agent Loop under Project > Project Settings > Plugins, and restart Godot once. Thereafter Godot may be opened normally; editor_session discovers the matching project without launching a duplicate. The dock remains visible and waits cleanly when no agent is connected.

The addon publishes a private, untracked record at .godot/godot_agent_loop/editor-session.json with a fresh token and ephemeral loopback port for each editor start. The token is never returned or logged. Multiple editors are routed by canonical project path. To uninstall, disable the plugin, close Godot, remove addons/godot_agent_loop, and optionally remove a stale .godot/godot_agent_loop directory. MCP cleanup removes only its own unmodified transient bridge, never this persistent addon.

An editor already started without an enabled compatible addon cannot receive a new EditorPlugin safely at runtime. Install/enable once and restart. See the interaction architecture for states, protocol migration, unsaved-conflict recovery, and fallback semantics.

Portable agent bundle

The repository ships one neutral bundle that starts the matching npm MCP server and provides the same build, debug, verify, and ship skills to Claude Code, Codex, OpenCode, and Pi. For Claude Code:

/plugin marketplace add beremaran/godot-agent-loop
/plugin install godot-agent-loop@godot-agent-loop

For a local checkout, use claude --plugin-dir ./agent-plugin. See the portable agent bundle guide for verified Claude Code, Codex, OpenCode, and Pi install paths.

MCP client configuration

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "godot": {
      "command": "npx",
      "args": ["-y", "@beremaran/godot-agent-loop"],
      "env": {
        "GODOT_PATH": "/path/to/godot",
        "DEBUG": "true"
      }
    }
  }
}

Add to your Cline MCP settings (cline_mcp_settings.json):

{
  "mcpServers": {
    "godot": {
      "command": "npx",
      "args": ["-y", "@beremaran/godot-agent-loop"],
      "disabled": false
    }
  }
}

Create .cursor/mcp.json in your project:

{
  "mcpServers": {
    "godot": {
      "command": "npx",
      "args": ["-y", "@beremaran/godot-agent-loop"]
    }
  }
}

For a source checkout, use node as the executable and pass the built server path as a separate argument:

{
  "command": "node",
  "args": ["/absolute/path/to/godot-agent-loop/build/index.js"]
}

Installation from source

git clone https://github.com/beremaran/godot-agent-loop.git
cd godot-agent-loop
npm install
npm run build

Runtime Tools Setup

No setup is required when the game is started through run_project: the server installs the interaction autoload automatically by generating an override.cfg (which Godot merges over project.godot at startup) and copying the runtime scripts into the project, then removes them again on stop_project, game exit, or server shutdown. project.godot is never modified. If an earlier server crashed or was killed before cleaning up, the next server detects and removes the leftover files on first contact with the project; an installation you manage yourself (declared in project.godot) is never touched.

To run the interaction server without run_project, copy build/scripts/mcp_interaction_server.gd to your project and register it as an autoload:

  1. Copy build/scripts/mcp_interaction_server.gd to your project's scripts folder

  2. In Godot: Project > Project Settings > Autoload

  3. Add the script with the name McpInteractionServer

The server listens on 127.0.0.1:9090. Each MCP server launch generates a cryptographic runtime secret, passes it only to the Godot child process, and authenticates it during capability negotiation before any runtime command is accepted. A manually managed runtime should set the same GODOT_MCP_RUNTIME_SECRET value in both processes. A runtime without a shared secret refuses unauthenticated sessions unless GODOT_MCP_ALLOW_INSECURE_RUNTIME is set explicitly; use that only on a trusted machine.

Commands that execute arbitrary GDScript or invoke arbitrary node properties or methods remain disabled by default even after authentication. These privileged runtime groups gate only runtime RPC operations over the authenticated loopback channel — they do not restrict what the project process itself can do. Running a project executes its GDScript with your OS-level permissions: project code can read files you can read and make its own network calls. Grant only the required group with GODOT_MCP_PRIVILEGED_GROUPS: reflection enables arbitrary property/method access and code-execution enables eval/script control. The legacy GODOT_MCP_ALLOW_PRIVILEGED_COMMANDS=true grants both groups. Use either only for a trusted local developer workflow, and only against trusted project sources. Authentication and policy denials never echo secrets, source, property values, URLs, headers, or engine errors.

Every Godot process the server launches — long-running games, the editor, and short-lived CLI runs (script validation, tests, import, export, addon reload, and the dotnet build/restore/run workflow) — receives a sanitized environment: only platform essentials (PATH, home and temp directories, display and locale variables) plus the server's explicit per-launch variables (runtime secret, timing metadata, privileged-group grants). The server's full environment is never inherited. Forward additional variables deliberately with GODOT_MCP_CHILD_ENV_ALLOW. CLI validation runs additionally disable the runtime transport. Authentication success/failure emits a structured audit event containing only the event name, runtime component, numeric session ID, and timestamp.

Environment Variables

Variable

Description

GODOT_PATH

Path to the Godot executable (overrides auto-detection)

DEBUG

Set to "true" for detailed server-side logging. Parameter values are summarized by type and size in server logs, never printed.

GODOT_MCP_ALLOWED_DIRS

Optional. Restrict run_project to projects under these roots (;, ,, or : separated). When unset and no MCP client roots are provided, filesystem access is denied unless GODOT_MCP_ALLOW_UNRESTRICTED is set.

GODOT_MCP_HEADLESS

Optional, default false. Set to true (or 1) to run run_project with Godot's --headless flag so no window opens. Rendering-dependent operations such as screenshots fail fast with a headed-display remediation; intended for CI and headless workstations. The E2E suite honors it too: GODOT_MCP_HEADLESS=1 npm run test:e2e skips its pixel assertions, which stay covered by the virtual-display renderer jobs.

GODOT_MCP_RUNTIME_SECRET

Optional explicit shared runtime secret. The MCP server generates a fresh 256-bit value when omitted and passes it only to Godot processes it launches. Set the same value manually only when connecting to a separately launched runtime.

GODOT_MCP_EDITOR_START_PAUSED

Optional, default false. Start the editor addon's cooperative lock in human-editing mode so mutating MCP tools are refused until Resume Agent is pressed.

GODOT_MCP_TOOL_SURFACE

Optional, default core. compact is a compatibility alias for core; full advertises the complete 56-tool static catalog. Unknown values are rejected. Use godot_catalog plus godot_call for hidden tools.

GODOT_MCP_LEGACY_JSON_TEXT

Optional, default true. Set to false for clients that read MCP structuredContent to omit the extra compatibility JSON text block and reduce repeated output. Bundled adapters set this to false.

GODOT_MCP_PRIVILEGED_GROUPS

Optional comma-separated least-privilege grants: reflection and/or code-execution. All are denied by default.

GODOT_MCP_ALLOW_PRIVILEGED_COMMANDS

Optional, default false. Explicitly enable runtime eval, arbitrary property/method access, and script control for a trusted localhost developer workflow.

GODOT_MCP_ALLOW_UNRESTRICTED

Optional, default false. Explicitly re-enable the legacy open path mode when neither GODOT_MCP_ALLOWED_DIRS nor MCP client roots are configured. Without roots and without this flag, filesystem access is denied.

GODOT_MCP_ALLOW_INSECURE_RUNTIME

Optional, default false. Set in the Godot runtime process to restore the legacy unauthenticated handshake for a separately launched runtime that cannot receive GODOT_MCP_RUNTIME_SECRET. Keep off whenever the runtime can receive the shared secret.

GODOT_MCP_CHILD_ENV_ALLOW

Optional. Comma-separated names of extra environment variables to forward from the server environment into every Godot process the server launches, including short-lived CLI runs (for example SSH_AUTH_SOCK). By default children receive only platform essentials plus the server's explicit runtime variables, never the full server environment.

Structured runtime evidence

With DEBUG=true, the MCP server emits JSON request lifecycle events to stderr. The Godot runtime emits matching events to its captured stdout. Both use an internal mcp_<number> correlation ID and controlled event fields; parameters, response values, secrets, source, URLs, and malformed payloads are never copied into logs. Runtime process output is capped at the latest 1,000 stdout and stderr lines. Stable JSON-RPC error codes remain the authoritative machine-readable failure classification.

Large-project response limits

Large responses are bounded rather than allowed to grow with project size. game_get_scene_tree returns deterministic pre-order trees of 1,000 nodes by default (configurable up to 10,000) and reports truncation, and game_get_ui bounds visible controls. game_get_logs and game_get_errors return at most 1,000 unread lines per call with hasMore and remaining, while retaining the latest 1,000 lines per stream. Runtime JSON responses are capped at 8 MiB, screenshots additionally enforce pixel and 6 MiB PNG limits, and short-lived subprocess/import commands cap captured output at 16 MiB. Limit failures are explicit; callers can narrow resource/import queries instead of receiving partial unlabelled data.

Architecture

The server uses three bounded execution paths:

  1. Scene and resource authoring - coding agents are expected to author .gd/.tscn/.tres/project.godot with their own file tools. When a compatible editor session is attached, editor_transaction applies compound scene edits as one undo step through EditorUndoRedoManager; detached and CI projects are authored directly on disk.

  2. Running-game socket - run_project launches the user's game headed and injects the authenticated mcp_interaction_server.gd autoload through override.cfg for high-fidelity runtime interaction.

  3. Other one-shot subprocess work - Validation, import, and export operations may invoke Godot once and exit. Running games, screenshots, and visual checks still require a desktop display, Xvfb, or another reachable rendering context.

Source layout

Path

Description

src/index.ts

MCP server entry point

src/tool-definitions.ts

Tool names and JSON schemas

src/tool-manifest.ts

Per-tool domain, backend, and action declarations

src/tool-surface.ts

Reviewed core membership, discovery ranking, compatibility modes, and generated size budgets

src/tool-handlers/

Lifecycle, project, and game handler implementations

src/scripts/mcp_interaction_server.gd

TCP interaction server autoload

tests/

Retained Vitest unit and MCP-to-Godot smoke suites

Testing

The project uses Vitest for a deliberately small unit and MCP-to-Godot smoke suite.

npm run check       # lint, build, and retained unit suite
npm run test:e2e    # built MCP server through a real client and Godot
npm run test:e2e:docker # same suite inside a containerized xvfb+Godot 4.7 environment,
                        # so no Godot windows open on the host; use -- to pass file filters
npm run test:watch  # watch mode

Every npm run test:e2e run ends with an [e2e-metrics] summary of wall-clock time and MCP/Godot startup counts, so suite overhead can be compared across runs and CI jobs. The containerized runner (scripts/run-e2e-docker.sh, image built from tests/e2e/docker/Dockerfile) mirrors the primary Godot 4.7 CI job: Ubuntu + xvfb + the official Godot build, with node_modules kept in a named volume so the host install is never touched.

The shipped build, debug, verify, and ship skill scenarios are versioned under evals/. Their committed status is intentionally not_run until a deliberate current-model client run records versioned inputs and schema-valid metrics; the deterministic golden replay is not presented as a substitute for that run.

Example Prompts

"Author scripts/player.gd and scenes/level.tscn with your file tools, then
validate them with run_project_tests before launching"

"Run my Godot project and check for errors with game_get_errors"

"Check all my changed GDScript files for syntax errors before I run the game"

"Run the project, wait until the main menu is up, and take a screenshot"

"Hold down the W key for 2 seconds to test walking (find game_key_hold in the
catalog)"

"Run a game_scenario that presses Enter on the title screen and asserts the
scene changed to res://scenes/level.tscn"

"Use verify_project to run bounded assertions and capture evidence"

"Sample performance - what's my FPS and draw call count? (game_performance)"

"Export the project for Linux with verify_export_readiness"

"Restore, build, and run the .NET project with verify_dotnet_project"

Community

License

This project is licensed under the MIT License - see the LICENSE file for details.

Lineage

  • Original project: godot-mcp by Solomon Elias (Coding-Solo), which provided the foundational TypeScript MCP server, headless GDScript operations, and TCP runtime interaction architecture.

  • Inherited from: Tugcan Topaloglu's godot-mcp, which extended the original project across networking, 3D/2D rendering, UI controls, audio, animation, file I/O, runtime code execution, project creation, and physics while preserving the MIT license.

  • Godot Agent Loop: maintained and substantially extended by Berke Arslan, preserving the complete Git history and every inherited MIT notice.

Available Tools

20 tools
editor_sessionEditor SessionC

Discover, attach, inspect, or discon…

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesSession action
projectPathYesGodot project path
launchIfNeededNoFor ensure, launch an editor only af…
timeoutSecondsNoFor action=ensure only:

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

C2.8/5.0
Behavior2/5

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

Annotations show readOnlyHint=false, destructiveHint=false, idempotentHint=false, providing minimal behavioral signal. The description is truncated and adds no behavioral context about side effects (launching editors, creating sessions, disconnecting), timing implications, or what gets modified. For a session-management tool that can launch editor processes, this is a significant transparency gap.

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

Conciseness2/5

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

Intentionally truncated to a single fragment phrase. While short, this is under-specification rather than conciseness - the truncated content suggests the full description would be longer but valuable context is lost. The visible text provides only a partial action list and no 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?

Despite having an output schema, the tool is complex: it has a oneOf schema with action-dependent parameter constraints, multiple required params, and three distinct operational modes with different semantics. The description addresses none of this complexity - no guidance on when sessions would need to be disconnected, what status inspection returns, or how ensure differs from just launching a project (run_project sibling). A richer description is needed for a tool with this much branching logic.

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?

While schema_description_coverage is 100%, the descriptions are themselves truncated ('For ensure, launch an editor only af…', 'For action=ensure only:'). The schema does clarify that launchIfNeeded only applies to ensure and timeoutSeconds also applies only to ensure via the not{} constraints in the schema, but the description adds the conditional logic context that the schema's bare enum values don't convey. The description bridges some gaps left by truncation.

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

Purpose3/5

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

The description 'Discover, attach, inspect, or discon…' indicates a multi-purpose session management tool but is truncated and doesn't specify the resource (editor session for Godot) directly. The title and parameter schema reveal it manages Godot editor sessions (ensure/status/disconnect), but the description alone is vague about what the tool does or the resource it operates on.

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

Usage Guidelines3/5

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

The description provides no explicit when-to-use guidance or differentiation from siblings like editor_transaction or run_project. The schema's oneOf structure and action enum imply three distinct usage modes (ensure/status/disconnect), but the description itself doesn't clarify when to choose this over sibling tools or how actions map to scenarios.

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

editor_transactionEditor TransactionD
Destructive

Apply one validated compound scene e…

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable undo action name
saveNoSave and independently reopen/read t…
rootTypeNoRoot node type when creating a missi…
focusPathNoNode to reveal after commit
scenePathYesProject-relative or res:// scene path
operationsYesOrdered editor-native scene operatio…
projectPathYesGodot project path whose editor is a…

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

D1.6/5.0
Behavior2/5

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

The annotations indicate destructiveHint: true, but the truncated description adds no behavioral context beyond that. It does not explain what gets destroyed or the nature of the compound operation.

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

Conciseness2/5

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

The description is a single incomplete sentence, which is under-specified rather than concise. It fails to convey essential information.

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

Completeness1/5

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

Given the tool's complexity (7 parameters, 10 operation types) and the existence of an output schema, the description is woefully inadequate. It provides no context about operations, order, or return values.

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

Parameters1/5

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

The description adds no parameter information. Although the schema has 100% coverage, many parameter descriptions are also truncated, so the schema itself is incomplete. The description does not compensate for this.

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

Purpose2/5

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

The description is truncated ('Apply one validated compound scene e…'), making its purpose vague. It does not clearly state what is being applied, nor does it distinguish from sibling tools like 'modify_scene_node' or 'create_scene'.

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

Usage Guidelines1/5

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

No guidance is provided on when to use this tool versus alternatives such as 'modify_scene_node' or 'create_scene'. The description lacks any context about prerequisites or exclusions.

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

game_get_errorsGame Get ErrorsC
Read-onlyIdempotent

Get new push_error/push_warning mess…

ParametersJSON Schema
NameRequiredDescriptionDefault
maxItemsNoMaximum unread error lines returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the tool is known to be safe and idempotent. The description adds no behavioral details beyond its basic function, missing context about pagination, ordering, or whether errors are consumed after retrieval.

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

Conciseness2/5

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

The description is a single truncated sentence fragment ('Get new push_error/push_warning mess…'). It is not properly structured and appears cut off, which harms clarity.

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

Completeness2/5

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

Despite having an output schema, the description is incomplete and fails to clarify what 'new' means, how errors are ordered, or whether errors are persistent. The tool is simple, but the description lacks key context.

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

Parameters3/5

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

Schema coverage is 100%, and the parameter 'maxItems' is described in the schema as 'Maximum unread error lines returned.' The description adds no additional parameter information, so baseline score of 3 is appropriate.

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

Purpose4/5

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

The description states 'Get new push_error/push_warning messages' which clearly indicates the tool retrieves error/warning messages. The name and title align, and it distinguishes from sibling 'game_get_logs' which likely gets general logs.

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

Usage Guidelines2/5

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

No usage guidance is provided. The description does not mention when to use this tool vs alternatives, any prerequisites, or when not to use it.

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

game_get_logsGame Get LogsB
Read-onlyIdempotent

Get new print output from the runnin…

ParametersJSON Schema
NameRequiredDescriptionDefault
maxItemsNoMaximum unread log lines returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that it returns 'new print output' from the running game, implying it only fetches unread logs. However, it does not explain if logs are marked read after fetch, or behavior when no logs exist.

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

Conciseness3/5

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

The description is short but truncated ('runnin…'), which makes it incomplete. While concise, the truncation harms clarity and reduces its effectiveness.

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

Completeness3/5

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

Given the simplicity of the tool (1 optional param, no required params, output schema present), the description covers the basic behavior but fails to differentiate from similar tools or provide usage context. Annotations cover safety. Overall adequate but not complete.

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

Parameters3/5

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

One parameter 'maxItems' with schema description 'Maximum unread log lines returned.' is clear. The tool description adds 'new print output' which aligns but does not provide additional meaning beyond the schema. With 100% schema coverage, baseline 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 'Get new print output from the runnin…' combined with the tool name and parameter 'maxItems' (unread log lines) clearly indicates a read operation for new/unread logs from a running game. However, the truncation of 'runnin…' slightly reduces clarity and completeness.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like 'game_get_errors'. The description lacks context for selection among sibling tools, which is critical for an AI agent to choose correctly.

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

game_get_node_infoGame Get Node InfoB
Read-onlyIdempotent

Get compact or full node info;

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNoCompact omits methods and signals an…
nodePathYesPath to the node (e.g., "/root/Playe…
propertyNamesNoExact properties to include;

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

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, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, non-mutating read operation. The description adds no additional behavioral context beyond the file notation, such as whether it returns failures on invalid paths or how errors surface. With annotations covering the safety profile, this is adequate but not enriched.

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

Conciseness4/5

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

The description is a single short sentence with zero wasted words. It front-loads the core purpose. However, given the tool's flexibility (compact vs full modes, property filtering), a bit more guidance could be justified, making it efficient but slightly under-specified for its feature set.

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 don't need explanation. With good annotations and 100% schema coverage, the description needn't do much heavy lifting. Still, for a tool that supports two detail modes and optional property filtering, the description offers minimal guidance on how these features interplay, leaving some gaps for the agent to reason through.

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 all three parameters (nodePath, detail, propertyNames) are already documented. The description itself adds no parameter-level meaning beyond what the schema provides; it does not clarify how propertyNames interacts with detail modes or give format examples. Baseline 3 is appropriate when schema carries the documentation load.

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 'Get compact or full node info' clearly states a verb ('Get') and a resource ('node info'), and it mentions the compact/full detail modes. It distinguishes reasonably from siblings like game_get_ui, game_get_scene_tree, and game_get_errors by focusing on node information specifically, though it doesn't explicitly differentiate itself from those 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 description implies usage (querying node info) but provides no explicit when-to-use guidance or exclusions. It doesn't mention when to prefer compact vs full detail, or how it differs from related siblings like game_get_scene_tree or game_get_ui. The brief phrase 'compact or full' hints at a usage choice but doesn't elaborate.

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

game_get_scene_treeGame Get Scene TreeC
Read-onlyIdempotent

Get scene tree structure of the runn…

ParametersJSON Schema
NameRequiredDescriptionDefault
maxNodesNoMaximum nodes returned in determinis…

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

C2.8/5.0
Behavior2/5

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

The annotations already declare readOnlyHint and idempotentHint as true, and destructiveHint as false, so the description adds no additional behavioral context. It does not disclose what the returned tree includes (e.g., all nodes, only visible nodes) or any 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.

Conciseness3/5

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

The description is very short (one truncated sentence) but front-loads the key action. However, the truncation reduces clarity, and it could be more complete without adding length.

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

Completeness2/5

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

Despite having an output schema, the description lacks context about the returned structure (e.g., whether it returns the entire hierarchy or just a subset). For a tool that retrieves a tree, more details would help the agent understand the output format and scope.

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

Parameters3/5

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

The input schema has 100% coverage with a description for the only parameter maxNodes, so the description does not need to add much. It provides no extra semantics beyond the schema, such as default behavior or how the limit affects results.

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 'Get scene tree structure of the runn…' which clearly identifies the tool's purpose as retrieving the hierarchy of the game scene. It is specific enough to distinguish from sibling tools like game_get_node_info which returns details of a single node.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as game_get_ui or game_get_node_info. The description does not mention any prerequisites, context, or exclusions.

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

game_get_uiGame Get UIA
Read-onlyIdempotent

Get a bounded list of visible UI ele…

ParametersJSON Schema
NameRequiredDescriptionDefault
rootPathNoOptional runtime subtree root, such…
maxElementsNoMaximum controls returned.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations provide read-only and idempotent hints. Description adds 'visible' and 'bounded' context, but does not detail more nuanced behaviors. No contradiction with annotations.

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

Conciseness4/5

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

Single sentence, short and direct. Could be improved by completing the truncated fragment, but no wasted words.

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

Completeness4/5

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

With annotations and output schema (likely describing return format), the description covers core function. Could mention pagination or limits more explicitly.

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 description adds little beyond 'bounded' and 'visible'—both implicitly covered by schema (maxElements and rootPath description hints at subtree).

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

Purpose5/5

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

Description clearly states verb 'Get' and resource 'bounded list of visible UI elements', which distinguishes from sibling tools like game_get_scene_tree and game_get_node_info.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, such as game_get_scene_tree or game_get_node_info. Misses opportunity to clarify use case.

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

game_scenarioGame ScenarioD

Property waits need reflection;

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesHuman-readable scenario and parent t…
stepsYesBounded ordered scenario steps
projectPathNoGodot project path for trace correla…
timeoutSecondsNoWhole scenario timeout.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

D1.4/5.0
Behavior1/5

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

The description offers no behavioral details beyond annotations. It does not explain execution flow, side effects, or constraints. No contradiction with annotations, but transparency is absent.

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

Conciseness2/5

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

The description is short but cryptic, lacking clarity. Conciseness is not beneficial if it sacrifices understanding.

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

Completeness1/5

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

Given the complex schema and lack of purpose explanation, the description is severely incomplete. Even with an output schema, the tool's function is unclear.

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%, so the input schema thoroughly describes each parameter. The description adds no value but does not detract. Baseline 3 is appropriate.

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

Purpose1/5

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

The description 'Property waits need reflection;' is cryptic and does not state what the tool does. It fails to convey that this tool executes a game scenario defined by a sequence of steps.

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

Usage Guidelines1/5

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

No guidance on when to use this tool versus siblings like game_click or game_get_ui. The description provides no context for appropriate usage.

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

game_screenshotGame ScreenshotC
Read-onlyIdempotent

Capture a PNG preview with dimension…

ParametersJSON Schema
NameRequiredDescriptionDefault
retainArtifactNoRetain a PNG in the system temp arti…

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true (safe read), idempotentHint=true, and destructiveHint=false. The description adds minimal behavioral context beyond 'Capture a PNG preview', not elaborating on side effects or return details. The annotations carry the burden.

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

Conciseness2/5

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

The description is extremely short but truncated mid-sentence ('with dimension…'), making it incomplete. While conciseness is valued, this is under-specification rather than efficient writing.

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

Completeness3/5

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

Given the tool has one optional parameter, an output schema (not shown), and simple functionality, a brief description could be adequate. However, the truncation and lack of parameter explanation leave it incomplete.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter 'retainArtifact', but the description does not mention this parameter at all. It adds no extra meaning beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description begins with 'Capture a PNG preview' which clearly indicates the tool's action (capture) and output format (PNG), and it is distinct from sibling tools like game_click. However, the description is truncated with 'with dimension…', which slightly reduces clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as game_get_ui (which also captures visual state). The description does not mention use cases, prerequisites, or exclusions.

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

game_wait_untilGame Wait UntilD

Property waits need reflection;

ParametersJSON Schema
NameRequiredDescriptionDefault
textNoRequired bounded substring for a log…
freshNoFor log conditions, require the text…
valueNoExpected canonical Godot Variant val…
signalNoSignal name for a signal condition
nodePathNoRuntime node path for node, property…
propertyNoProperty name for a property conditi…
conditionYesProperty waits need reflection;
scenePathNoExpected current scene resource path…
projectPathNoGodot project path for trace correla…
pollIntervalMsNoInternal poll interval.
timeoutSecondsNoMaximum wait.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

D1.8/5.0
Behavior2/5

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

Annotations are sparse (readOnlyHint=false, destructiveHint=false) but the description adds no behavioral context. It does not explain what happens when conditions are met or how the tool affects game state.

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

Conciseness2/5

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

The description is extremely short but lacks substantive information. It is concise only in length, not in conveying useful guidance.

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

Completeness1/5

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

Given the complex input schema with oneOf for 6 condition types and 11 parameters, the description provides no context about when to use each condition, expected output, or relationship to sibling tools. It is wholly insufficient.

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 parameter descriptions cover all 11 parameters (100% coverage). The tool description adds no extra meaning beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose1/5

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

The description 'Property waits need reflection;' is cryptic and does not clearly state the tool's purpose. The title and schema indicate waiting for conditions, but the description fails to clarify that.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs siblings or which condition to choose. The description lacks any usage context or alternatives.

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

get_debug_outputGet Debug OutputB
Read-onlyIdempotent

Get the current debug output and err…

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

B3.1/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, giving the agent a clear safety profile. The description is truncated and adds little beyond 'get output and err…', not disclosing details like whether this resets state, whether it's a snapshot vs stream, or how it relates to the engine runtime. With annotations present, the bar is lower, and the additions are minimal but not contradictory.

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

Conciseness2/5

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

The description is truncated mid-sentence with an ellipsis ('err…'), which is a structural failure—it doesn't complete its thought. While brevity is present, the description is under-specified rather than concisely complete. A complete but short description would score higher.

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

Completeness3/5

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

The tool has an output schema, zero parameters, and good annotations, so much is structured. However, the description is truncated and doesn't clarify what 'debug output' includes (stdout, stderr, engine messages?) or how it differs from siblings like game_get_errors and game_get_logs. For a simple tool with strong annotations, this is borderline adequate but the truncation creates a gap.

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

Parameters4/5

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

The tool has zero parameters, so no parameter meaning needs to be added. With 0 params, the baseline is 4 per the rubric. The description doesn't need to document parameter semantics since there are none.

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 'Get the current debug output and err…' which identifies the verb (get), resource (debug output), and partially the scope (errors). However, it is truncated with an ellipsis that cuts off mid-thought, and it doesn't distinguish from siblings like game_get_errors or game_get_logs, which could overlap in scope. The name and title reinforce the purpose.

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 game_get_errors, game_get_logs, or other diagnostic siblings. No context about whether this is the preferred tool for general debugging output or when alternatives should be chosen. The description provides no when/when-not direction.

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

get_godot_versionGet Godot VersionA
Read-onlyIdempotent

Get the installed Godot version

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which fully disclose the behavioral traits. The description adds no additional behavioral details beyond what annotations provide.

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

Conciseness5/5

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

The description is a single sentence that immediately conveys the tool's purpose with no extraneous words. It is perfectly concise and front-loaded.

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

Completeness5/5

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

Given the tool's simplicity (no parameters, an output schema exists, and annotations cover behavioral traits), the description is complete. It provides sufficient information for an AI agent to select and invoke this tool correctly.

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

Parameters4/5

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

There are zero parameters, so the description has no burden to explain parameter semantics. The baseline of 4 applies, and the minimal description does not detract.

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

Purpose5/5

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

The description clearly states the tool retrieves the installed Godot version, with a specific verb ('Get') and resource ('Godot version'). This directly distinguishes it from sibling tools that focus on projects, scenes, or game interaction.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool versus alternatives. While the tool is simple, mentioning that it is useful for verifying the environment before running project operations would improve it. Currently, usage context is implied but not stated.

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

get_project_infoGet Project InfoA
Read-onlyIdempotent

Retrieve metadata about a Godot proj…

ParametersJSON Schema
NameRequiredDescriptionDefault
projectPathYesGodot project path

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true. Description adds no further behavioral details beyond the obvious 'Retrieve metadata'.

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?

Very short and to the point, but truncated (ends with '…'). No unnecessary words; however, the truncation reduces completeness.

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 tool with one parameter and annotations covering safety, the description is adequate but could mention what specific metadata is returned, especially given the output schema exists.

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 already describes projectPath as 'Godot project path'. Description does not add any extra meaning to the parameter.

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

Purpose5/5

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

Description uses clear verb 'Retrieve' and resource 'metadata about a Godot project'. It distinguishes well from sibling tools like get_godot_version or game_screenshot.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like get_godot_version or verify_project. No exclusions or contextual advice provided.

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

godot_callGodot CallD
Destructive

Execute one named hidden Godot tool…

ParametersJSON Schema
NameRequiredDescriptionDefault
toolNameYesRequired hidden tool name.
argumentsNoArguments validated against the sele…

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

D1.9/5.0
Behavior2/5

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

Annotations indicate destructiveHint=true, readOnlyHint=false, but description only adds 'hidden' context, which is minimal. No details on side effects, permissions, or what tools are callable.

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

Conciseness2/5

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

Description is a single truncated sentence, lacking necessary information. Under-specification, not efficient conciseness.

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

Completeness1/5

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

Given the tool's complexity (open world, destructive, many siblings), the description fails to explain what hidden tools are, how to discover them, error behavior, or relationship to godot_catalog. Output schema exists but is not referenced.

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 100%, but description provides no parameter details beyond what schema already offers. No added meaning for toolName or arguments.

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

Purpose2/5

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

Description says 'Execute one named hidden Godot tool' but is truncated, leaving vague scope. The verb 'execute' and resource 'named hidden Godot tool' are present but insufficient to distinguish from siblings like create_scene or run_project.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives. The description does not mention conditions, prerequisites, or alternative tools.

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

godot_catalogGodot CatalogC
Read-onlyIdempotent

Search or inspect the complete Godot…

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum ranked search results.
queryNoUser intent, Godot concept, action,…
stateNoOptional required-state filter
actionYesRead-only catalog action
detailNoDescription detail.
domainNoOptional owning-domain filter
effectNoOptional effect-scope filter
backendNoOptional execution-backend filter
mutationNoOptional mutation-behavior filter
toolNameNoRequired for describe.
privilegeNoOptional privilege filter

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

C2.4/5.0
Behavior3/5

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

No contradiction with annotations: readOnlyHint=true, idempotentHint=true, destructiveHint=false align with a catalog/read tool. The schema itself describes action as 'Read-only catalog action', which reinforces the safe-read behavior. However, the description adds no behavioral context beyond what annotations already provide — no mention of result ranking, pagination, or how describe differs in output from search. With comprehensive annotations covering the safety profile, the description adds minimal value here.

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

Conciseness2/5

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

The description is extremely short (one truncated sentence), which could be concise — but it's incomplete rather than deliberately minimal. A truncated sentence that trails off ('the complete Godot…') is a structural defect, not concise prose. One would expect at least a full sentence articulating what the catalog contains and its two modes of operation.

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

Completeness3/5

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

Despite the truncated description, the tool benefits from a 100% documented schema, 8 enum-filtered parameters, comprehensive annotations, and an output schema. The complexity of this tool (11 params, two action modes, 8 filters) is largely self-documented through the schema. However, the description could meaningfully enhance completeness by explaining the search-vs-describe distinction and how filters combine — a gap the schema alone partially fills but doesn't fully cover.

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 all 11 parameters have descriptions in the schema itself (e.g., 'Optional required-state filter', 'Required for describe'). The description adds nothing beyond what the schema documents. Baseline 3 is appropriate since the schema does the heavy lifting, and the description doesn't need to duplicate it.

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

Purpose2/5

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

The description reads 'Search or inspect the complete Godot…' which is truncated and incomplete. The verb is present (Search/inspect) but the resource is truncated mid-sentence ('Godot…'), making the purpose only partially clear. The name 'godot_catalog' and title 'Godot Catalog' suggest a catalog/metadata tool, and the two actions (search/describe) are visible in the schema, but the description itself fails to fully convey the scope.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. With 19 sibling tools ranging from run_project to game_screenshot, an agent cannot tell from the description alone when to consult the catalog versus using a specific operation tool. No when-to-use, when-not-to-use, or filtering strategy is given, despite 8 filter parameters (state, domain, effect, backend, mutation, privilege) that would clearly benefit from usage guidance.

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

run_projectRun ProjectD
Destructive

Run the Godot project and capture ou…

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneNoOptional:
timingModeNorealtime follows display/VSync;
projectPathYesGodot project path

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

D1.7/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true but the description adds no behavioral context beyond 'run'. The truncated phrase 'capture ou' suggests output capture but is unclear. No mention of side effects like stopping previous instances or system state changes.

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

Conciseness2/5

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

Extremely short (one truncated sentence). While concise, it sacrifices crucial information. A good description should be front-loaded but complete; this is not.

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

Completeness1/5

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

The description is severely incomplete given the tool's complexity (3 parameters, destructive, output schema). It fails to explain what capturing output means, how to interpret output, or any prerequisites. Compare to sibling tools, this is inadequate.

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?

Input schema has 100% description coverage, but descriptions are also truncated (e.g., scene: 'Optional:', timingMode: 'realtime follows display/VSync;'). The tool description does not add any additional meaning to the parameters; it is too short to explain them.

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

Purpose2/5

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

Description begins with 'Run the Godot project', which is essentially the same as the tool name, but adds 'and capture ou…' which hints at output capture. However, it's incomplete and does not clearly distinguish from sibling tools like run_project_tests or game_* tools.

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

Usage Guidelines1/5

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

No guidance on when to use this tool versus alternatives such as run_project_tests or individual game interaction tools. The description is too short to include any usage context.

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

run_project_testsRun Project TestsC

Discover or run native, GUT, and GdU…

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesDiscover tests or run them
failFastNoStop native execution after the firs…
frameworkNoTest framework.
testPathsNoProject-relative test files or direc…
projectPathYesGodot project path
artifactPathsNoProject-relative report files to ret…
timeoutSecondsNoPer-run timeout.

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations are all false (no hints), and the description does not disclose behavioral traits like whether tests are run locally, if files are modified, or if a project must be open. No additional context beyond the schema.

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

Conciseness2/5

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

The description is a single truncated sentence ending with an ellipsis, under-specified and not well-structured. It fails to concisely convey the tool's function despite the schema 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?

Given the complex oneOf schema, 7 parameters, and presence of output schema, the description is severely incomplete. It does not explain the distinction between discover and run, frameworks, or return values. The schema compensates partially but the narrative is lacking.

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 parameter meanings. The description adds no extra semantic value beyond restating the action parameter. Baseline of 3 is appropriate.

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

Purpose3/5

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

The description states 'Discover or run native, GUT, and GdU…' indicating test operations, but it is truncated and lacks specificity. Without sibling context, the purpose is vague; however, the title 'Run Project Tests' helps. Score 3 as it gives basic verb+resource but with ambiguity.

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 guidelines on when to use this tool versus siblings like run_project or verify_project. No context on prerequisites or scenarios. The description does not address alternatives or when not to use.

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

stop_projectStop ProjectB

Stop the currently running Godot pro…

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

B3/5.0
Behavior3/5

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

Annotations declare readOnlyHint=false and destructiveHint=false but idempotentHint=false. The description doesn't contradict annotations. However, it adds no behavioral context beyond 'stops the running project' — it doesn't clarify whether stopping is reversible via run_project, whether debug output is preserved, or what happens with pending editor transactions. With sparse annotations, the description carries the burden but adds little.

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

Conciseness3/5

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

The description is extremely brief — a single partial sentence. While conciseness is generally good, the truncation ('pro…') suggests incompleteness rather than intentional minimalism. A complete description could add meaningful context like effect on debug sessions or project state.

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

Completeness3/5

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

The tool is a simple state-changing operation with 0 parameters and an output schema. Given this low complexity, the description is mostly adequate. However, it's truncated mid-word, and with no annotation coverage for what 'stopping' destroys or affects (e.g., debug session state), a slightly more complete description would help the agent understand side effects.

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

Parameters4/5

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

The tool has 0 parameters with schema description coverage at 100%, so there are no parameters requiring documentation. Per the rubric, 0 params earns a baseline score of 4, and with no params to describe, this is appropriate.

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

Purpose3/5

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

The description "Stop the currently running Godot pro…" clearly indicates a verb (Stop) and resource (the running Godot project). It distinguishes from the sibling run_project. However, the description appears truncated (ends mid-word with 'pro…'), losing potentially important context about scope or effects.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. While the purpose is implied by the name and truncated description, there's no stated context like 'use after run_project' or prerequisites (e.g., only works if a project is running), nor exclusions about 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.

validate_scriptsValidate ScriptsB
Read-onlyIdempotent

Batch-check GDScript files (git-chan…

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNo"changed" = git-changed .gd (default…
projectPathYesGodot project path
scriptPathsNoOptional explicit list of .gd paths…

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

B3.1/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds minimal behavioral context beyond the action of 'batch-check', which is consistent with the annotations. It does not contradict them.

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

Conciseness2/5

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

The description is a truncated single fragment, not a complete sentence. While it starts with the core action, the truncation makes it feel incomplete and lacking clarity. It is not concise in a meaningful way.

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

Completeness2/5

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

Given the tool has 3 parameters (one required), an output schema, and annotations covering safety, the description is too minimal. It does not explain the output, the behavior for the two scope options, or any prerequisites. More context is needed for effective use, especially because the text is truncated.

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

Parameters3/5

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

The input schema has 100% description coverage for all parameters. The description mentions 'git-chan…' which aligns with the 'scope' parameter enum value 'changed', but does not add additional semantic value beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description 'Batch-check GDScript files (git-chan…' clearly indicates the verb 'batch-check' and the resource 'GDScript files'. The truncation obscures the full scope, but the inferred 'git-changed' from the schema makes the purpose fairly clear. However, it could be more explicit about batch vs. single validation.

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 does not explicitly state when to use this tool over alternatives. The existence of a sibling 'validate_script' hints at a batch vs. single differentiation, but the description provides no direct usage guidance or exclusion conditions.

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

verify_projectVerify ProjectC

Run bounded assertions and capture e…

ParametersJSON Schema
NameRequiredDescriptionDefault
sceneNoOptional scene to run
teardownNoStop the project after verification.
assertionsNoBounded assertions evaluated against…
waitFramesNoFrames to wait before assertions.
projectPathYesGodot project path
captureScreenshotNoCapture a screenshot and return its…

Output Schema

ParametersJSON Schema
NameRequiredDescription
okYes
dataNo
metaYes
errorNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations are all false, so description must disclose behavior. The truncated description only mentions running assertions and capturing something, but does not clarify side effects, permissions, or state changes.

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

Conciseness2/5

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

The description is a single truncated sentence, which is under-specification rather than conciseness. It fails to provide a complete, well-structured overview.

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

Completeness2/5

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

Given the tool's complexity (6 parameters, assertions array) and existing output schema, the description is far too brief to inform an agent about the tool's full capabilities and usage.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds minimal meaning beyond the schema; it does not elaborate on parameters like assertions or teardown.

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

Purpose3/5

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

The description fragment 'Run bounded assertions and capture e…' vaguely indicates running assertions on a project, but it is incomplete and uses jargon. Among sibling tools like run_project_tests or read_scene, this tool's specific role is not clearly distinguished.

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

Usage Guidelines2/5

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

No guidance is provided on when to use verify_project versus siblings like run_project_tests or read_scene. The description lacks any context for selection.

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. Dates show when Glama detected each change.

  1. 24 tool updatesv2.0.0
    • Removedattach_script
    • Removedcreate_project
    • Removedcreate_scene
    • Removedcreate_script
    • Removededitor_control
    • Addededitor_session
    • Removedgame_click
    • Addedgame_get_node_info
    • Removedgame_key_hold
    • Removedgame_key_press
    • Removedgame_key_release
    • Addedget_debug_output
    • Changedgodot_catalog1 field changed
      • changedInput schema / properties / backend / enum
        Previous value: -[
        -  "process",
        -  "subprocess",
        -  "authoring-session",
        -  "runtime",
        -  "runtime-buffer",
        -  "godot-cli",
        -  "local"
        -]New value: +[
        +  "process",
        +  "subprocess",
        +  "runtime",
        +  "runtime-buffer",
        +  "godot-cli",
        +  "local"
        +]
    • Removedmanage_input_map
    • Removedmodify_project_settings
    • Removedmodify_scene_node
    • Removedread_project_settings
    • Removedread_scene
    • Removedremove_scene_node
    • Removedsave_scene
    • Removedset_main_scene
    • Addedstop_project
    • Removedvalidate_script
    • Removedwrite_file
  2. 13 tool updatesv1.1.5
    • Removedgame_get_node_info
    • Addedgame_key_hold
    • Addedgame_key_press
    • Addedgame_scenario
    • Addedgame_screenshot
    • Addedgame_wait_until
    • Addedget_godot_version
    • Addedgodot_call
    • Removedlaunch_editor
    • Addedread_scene
    • Addedrun_project
    • Addedrun_project_tests
    • Removedstop_project
  3. 29 tool updatesv1.1.4
    • Removedadd_node
    • Addedattach_script
    • Addedcreate_project
    • Addedcreate_script
    • Addededitor_control
    • Addededitor_transaction
    • Addedgame_click
    • Addedgame_get_errors
    • Addedgame_get_logs
    • Addedgame_get_node_info
    • Addedgame_get_scene_tree
    • Addedgame_get_ui
    • Addedgame_key_release
    • Removedgame_screenshot
    • Removedget_debug_output
    • Removedget_godot_version
    • Removedgodot_call
    • Addedlaunch_editor
    • Addedmanage_input_map
    • Changedmodify_project_settings3 fields changed
      • addedInput schema / properties / value / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "type": "number"
        +  },
        +  {
        +    "type": "boolean"
        +  }
        +]
      • changedInput schema / properties / value / description
        Previous value: -"Value to set (as a string, will be w…"New value: +"JSON string, number, or boolean."
      • removedInput schema / properties / value / type
        Removed value: -"string"
    • Addedmodify_scene_node
    • Addedread_project_settings
    • Removedread_scene
    • Addedremove_scene_node
    • Removedrun_project_tests
    • Addedset_main_scene
    • Addedvalidate_script
    • Addedvalidate_scripts
    • Addedwrite_file
  4. 42 tool updatesv1.1.2
    • Changedadd_node7 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / nodeType / description
        Previous value: -"Type of node to add (e.g., Sprite2D, CollisionShape2D)"New value: +"Type of node to add (e.g., Sprite2D,…"
      • changedInput schema / properties / parentNodePath / description
        Previous value: -"Path to the parent node (e.g., \"root\" or \"root/Player\")"New value: +"Path to the parent node (e.g., \"root…"
      • addedInput schema / properties / properties / additionalProperties
        Added value: +true
      • changedInput schema / properties / properties / description
        Previous value: -"Optional properties to set on the node"New value: +"Optional properties to set on the no…"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Removedattach_script
    • Removedcreate_project
    • Changedcreate_scene5 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / rootNodeType / description
        Previous value: -"Type of the root node (e.g., Node2D, Node3D)"New value: +"Type of the root node (e.g., Node2D,…"
      • changedInput schema / properties / scenePath / description
        Previous value: -"Path where the scene file will be saved (relative to project)"New value: +"Path where the scene file will be sa…"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Removedcreate_script
    • Removededitor_control
    • Removededitor_session
    • Removededitor_transaction
    • Removedgame_click
    • Removedgame_get_errors
    • Removedgame_get_logs
    • Removedgame_get_node_info
    • Removedgame_get_scene_tree
    • Removedgame_get_ui
    • Removedgame_key_press
    • Removedgame_key_release
    • Removedgame_scenario
    • Changedgame_screenshot4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / retainArtifact / description
        Previous value: -"Retain a PNG in the system temp artifact directory. Default: false"New value: +"Retain a PNG in the system temp arti…"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Removedgame_wait_until
    • Changedget_debug_output3 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changedget_godot_version3 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changedget_project_info3 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Addedgodot_call
    • Addedgodot_catalog
    • Removedgodot_tools
    • Removedlaunch_editor
    • Removedmanage_input_map
    • Changedmodify_project_settings6 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / key / description
        Previous value: -"Setting key (e.g., \"run/main_scene\", \"window/size/viewport_width\")"New value: +"Setting key (e.g., \"run/main_scene\",…"
      • changedInput schema / properties / section / description
        Previous value: -"Section in project.godot (e.g., \"application\", \"display\", \"rendering\")"New value: +"Section in project.godot (e.g., \"app…"
      • changedInput schema / properties / value / description
        Previous value: -"Value to set (as a string, will be written as-is)"New value: +"Value to set (as a string, will be w…"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Removedmodify_scene_node
    • Removedread_file
    • Removedread_project_settings
    • Changedread_scene11 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / authoredOnly
        Added value: +{
        +  "description": "Return authored storage properties o…",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / detail
        Added value: +{
        +  "description": "Explicit detail mode;",
        +  "enum": [
        +    "compact",
        +    "authored",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / includeDefaults
        Added value: +{
        +  "description": "Include properties whose values stil…",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / includeResources
        Added value: +{
        +  "description": "Include resource-valued properties.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / maxDepth
        Added value: +{
        +  "description": "Maximum child depth below the select…",
        +  "maximum": 64,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / nodePath
        Added value: +{
        +  "description": "Optional scene-relative subtree path…",
        +  "type": "string"
        +}
      • addedInput schema / properties / propertyNames
        Added value: +{
        +  "description": "Optional property allowlist",
        +  "items": {
        +    "type": "string"
        +  },
        +  "maxItems": 128,
        +  "type": "array"
        +}
      • addedInput schema / properties / responseLimit
        Added value: +{
        +  "description": "Explicit serialized response byte li…",
        +  "maximum": 1048576,
        +  "minimum": 1024,
        +  "type": "integer"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Removedremove_scene_node
    • Removedrun_project
    • Changedrun_project_tests9 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / oneOf
        Added value: +[
        +  {
        +    "additionalProperties": true,
        +    "description": "Allowed option 1",
        +    "properties": {
        +      "action": {
        +        "const": "discover"
        +      },
        +      "artifactPaths": {
        +        "not": {}
        +      },
        +      "failFast": {
        +        "not": {}
        +      },
        +      "timeoutSeconds": {
        +        "not": {}
        +      }
        +    },
        +    "required": [
        +      "action"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": true,
        +    "description": "Allowed option 2",
        +    "properties": {
        +      "action": {
        +        "const": "run"
        +      }
        +    },
        +    "required": [
        +      "action"
        +    ],
        +    "type": "object"
        +  }
        +]
      • changedInput schema / properties / artifactPaths / description
        Previous value: -"Project-relative report files to return as artifact metadata"New value: +"Project-relative report files to ret…"
      • changedInput schema / properties / failFast / description
        Previous value: -"Stop native execution after the first failed file. Default: false"New value: +"Stop native execution after the firs…"
      • changedInput schema / properties / framework / description
        Previous value: -"Test framework. Default: auto"New value: +"Test framework."
      • changedInput schema / properties / testPaths / description
        Previous value: -"Project-relative test files or directories"New value: +"Project-relative test files or direc…"
      • changedInput schema / properties / timeoutSeconds / description
        Previous value: -"Per-run timeout. Default: 60"New value: +"Per-run timeout."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changedsave_scene4 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / newPath / description
        Previous value: -"Optional: New path to save the scene to (for creating variants)"New value: +"Optional:"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Removedset_main_scene
    • Changedstop_project3 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Removedvalidate_script
    • Removedvalidate_scripts
    • Changedverify_project13 fields changed
      • addedInput schema / $schema
        Added value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / assertions / description
        Previous value: -"Bounded assertions evaluated against the running game"New value: +"Bounded assertions evaluated against…"
      • addedInput schema / properties / assertions / items / additionalProperties
        Added value: +false
      • removedInput schema / properties / assertions / items / properties / count / description
        Removed value: -"Expected group member count"
      • removedInput schema / properties / assertions / items / properties / group / description
        Removed value: -"Group name for group_count"
      • removedInput schema / properties / assertions / items / properties / kind / description
        Removed value: -"Assertion kind"
      • removedInput schema / properties / assertions / items / properties / nodePath / description
        Removed value: -"Node path for node_exists"
      • removedInput schema / properties / assertions / items / properties / text / description
        Removed value: -"Required output substring for log_contains"
      • changedInput schema / properties / captureScreenshot / description
        Previous value: -"Capture a screenshot and return its SHA-256 digest. Default: false"New value: +"Capture a screenshot and return its…"
      • changedInput schema / properties / teardown / description
        Previous value: -"Stop the project after verification. Default: true"New value: +"Stop the project after verification."
      • changedInput schema / properties / waitFrames / description
        Previous value: -"Frames to wait before assertions. Default: 2"New value: +"Frames to wait before assertions."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": false,
        +  "oneOf": [
        +    {
        +      "not": {
        +        "required": [
        +          "error"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": true
        +        }
        +      },
        +      "required": [
        +        "data"
        +      ]
        +    },
        +    {
        +      "not": {
        +        "required": [
        +          "data"
        +        ]
        +      },
        +      "properties": {
        +        "ok": {
        +          "const": false
        +        }
        +      },
        +      "required": [
        +        "error"
        +      ]
        +    }
        +  ],
        +  "properties": {
        +    "data": {},
        +    "error": {
        +      "type": "object"
        +    },
        +    "meta": {
        +      "type": "object"
        +    },
        +    "ok": {
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "ok",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Removedwrite_file
  5. 9 tool updatesv1.0.2
    • Addededitor_session
    • Addededitor_transaction
    • Addedgame_scenario
    • Changedgame_screenshot1 field changed
      • addedInput schema / properties / retainArtifact
        Added value: +{
        +  "description": "Retain a PNG in the system temp artifact directory. Default: false",
        +  "type": "boolean"
        +}
    • Removedgame_wait
    • Addedgame_wait_until
    • Removedlist_project_files
    • Removedlist_projects
    • Changedrun_project1 field changed
      • addedInput schema / properties / timingMode
        Added value: +{
        +  "description": "realtime follows display/VSync; deterministic uses fixed 60 FPS. Default: realtime",
        +  "enum": [
        +    "realtime",
        +    "deterministic"
        +  ],
        +  "type": "string"
        +}
  6. 39 tool updatesv1.0.0
    • First observedadd_node
    • First observedattach_script
    • First observedcreate_project
    • First observedcreate_scene
    • First observedcreate_script
    • First observededitor_control
    • First observedgame_click
    • First observedgame_get_errors
    • First observedgame_get_logs
    • First observedgame_get_node_info
    • First observedgame_get_scene_tree
    • First observedgame_get_ui
    • First observedgame_key_press
    • First observedgame_key_release
    • First observedgame_screenshot
    • First observedgame_wait
    • First observedget_debug_output
    • First observedget_godot_version
    • First observedget_project_info
    • First observedgodot_tools
    • First observedlaunch_editor
    • First observedlist_project_files
    • First observedlist_projects
    • First observedmanage_input_map
    • First observedmodify_project_settings
    • First observedmodify_scene_node
    • First observedread_file
    • First observedread_project_settings
    • First observedread_scene
    • First observedremove_scene_node
    • First observedrun_project
    • First observedrun_project_tests
    • First observedsave_scene
    • First observedset_main_scene
    • First observedstop_project
    • First observedvalidate_script
    • First observedvalidate_scripts
    • First observedverify_project
    • First observedwrite_file

TDQS

C2.5/5.0
Disambiguation3/5

Most tools are clearly distinct by domain (editor vs running game vs inspect), but get_debug_output, game_get_errors, game_get_logs, and game_get_debug_output-type overlap in capturing output, creating ambiguity. game_scenario and game_wait_until have identical placeholder descriptions ('Property waits need reflection'), making them indistinguishable.

Naming Consistency2/5

The naming is mixed: most use verb_noun snake_case (get_godot_version, run_project), but several 'game_*', 'godot_*', and 'editor_*' prefixes follow different conventions, and 'verify_project' vs 'run_project_tests' use similar verb phrases for different actions. The game_* group is consistent internally but the prefixes across the server are arbitrary.

Tool Count4/5

20 tools is on the high end but defensible for the apparent scope of controlling a Godot editor session, running tests, and inspecting a live game. It's slightly heavy, likely bordering the 16-25 range, but each tool maps to a plausible action in the workflow.

Completeness4/5

The surface covers the full lifecycle well: editor control (session, transaction) is paired with run/stop project, and inspection tools (scene tree, UI, node info, screenshot) cover runtime diagnosis. Minor gaps exist—there's no explicit save/closing_session tool, and debug/log/error retrieval is spread awkwardly across get_debug_output, game_get_errors, and game_get_logs—but core workflows are covered.

Maintenance

ActivityActive
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that enables AI assistants to directly run, inspect, modify, and debug Godot game development projects through 110+ tools covering scenes, scripts, resources, runtime debugging, and asset management.
    33
    21
    2
    MIT
  • F
    license
    A
    quality
    C
    maintenance
    Provides AI assistants with tools to launch the Godot editor, run projects, manipulate scenes, manage scripts, and control node properties through a standardized MCP interface.
    21
    -
  • A
    license
    B
    quality
    A
    maintenance
    MCP server for Godot Engine enabling AI to autonomously develop, test, and debug games with deterministic playtesting, multiplayer testing, DAP debugging, LSP integration, and token efficiency.
    31
    12
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A security-first MCP server and Godot editor addon enabling AI agents to observe and control Godot games through bounded, permission-gated tools for debugging, input automation, and project editing.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/beremaran/godot-agent-loop'

If you have feedback or need assistance with the MCP directory API, please join our Discord server