Skip to main content
Glama

Godot MCP

Free and Open-Source Model Context Protocol Automation Plugin for the Godot Engine

MCP Protocol Release Godot Python License: MIT Cost Credits

100% Free & Open Source | Local by Default | No npm Packages | Optional Public Tunnel

Compatible AI Clients

Claude Code | Cursor | Antigravity | VS Code / Cline | Windsurf | GitHub Copilot | OpenAI Codex


Overview

Godot MCP is a free, open-source editor add-on and Python server that connect AI coding assistants to the Godot Editor through the Model Context Protocol (MCP). This README describes v5.0.39.

Unlike other solutions that rely on external websites, cloud subscriptions, device logins, or custom npm CLI wrappers, Godot MCP is designed to be a straightforward in-engine Godot plugin:

  • 100% Free and Open Source: Released under the permissive MIT license. No subscriptions, no paid tiers, and no paywalls.

  • Local by default: communication stays on your machine unless you deliberately start a public tunnel. Public tunnels can expose the MCP server outside your network; see the tunnel security notes below.

  • Godot add-ons plus Python server: Copy the add-ons into your project, enable them in Godot, and install Python 3.11–3.14 and uv so the editor can start the server. No npm or Node.js installation is required.

  • Engine Support: Runs as native GDScript in Standard and .NET editions of Godot 4.7 and newer on Windows, macOS, and Linux.

  • 81 Tool Families & 1,820+ Operations: Comprehensive scene building, node transformations, procedural animation, tilemap editing, collision creation, and direct GDScript evaluation.

  • Single Native Dock: Seamlessly integrated tab directly beside your Inspector with live activity monitoring, connection diagnostics, and memory indicators.


Related MCP server: AI-godot-mcp

Tool Families and Capabilities Matrix

Godot MCP provides full engine automation across 81 domain families:

Family

Key Operations

Description

ping

ping, mcp_ping

Diagnostic readiness probe echoing engine status, version, process frames, and memory metrics.

node

node_create, node_set_property, node_get_properties, node_find, node_manage

Find, spawn, modify, reparent, reorder, duplicate, delete, rotate, scale, and translate nodes in 2D and 3D with undo/redo.

scene

scene_open, scene_save, scene_get_hierarchy, scene_manage

Open, save, create, close, inspect root hierarchies, and instantiate PackedScene prefabs.

script

script_create, script_patch, script_attach, script_manage

Create, anchor-patch, read, detach, inspect symbols, validate syntax/compilation, and delete GDScript files.

filesystem

filesystem_manage

List files, read/write text, delete, move, reimport, trigger scans, download assets from URL, and search free CC0 assets.

resource

resource_manage

Search, load, assign, introspect, create, delete, and move .tres/.res assets, curve profiles, and environment setups.

screenshot

editor_screenshot, camera_manage

High-fidelity captures of the 3D viewport, 2D viewport, active cameras, running game frames, and isolated node framing.

editor

editor_state, editor_manage, editor_reload_plugin

Read editor lifecycle, inspect/set node selections, query performance monitors, clear logs, and execute safe restarts.

console

logs_read, editor_manage(logs_clear)

Real-time structured log streaming from plugin events, editor output, debugger errors, and game runtime stdout/stderr.

reflection

omni_eval, omni_manage(call, get, set, inspect)

Universal object reflection, dynamic method invocation, property getters/setters, and ClassDB discovery.

tilemap

tilemap_manage

Direct editor tile painting, D4 rotation (0, 90, 180, 270 deg), flips, layer queries, and smart multi-genre layout generation.

tileset

tileset_manage

Inspect atlas source tiles, extract texture slices, and introspect physics and navigation layers.

animation

animation_create, animation_manage

Create AnimationPlayers, add property/method tracks, insert keyframes, set autoplay, and apply procedural motion presets.

physics

collision_shape_create, physics_shape_autofit

Generate 2D and 3D collision bodies, autofit shapes to visual mesh bounds, and configure collision layers.

mesh

mesh_create_primitive

Procedural generation of BoxMesh, SphereMesh, CylinderMesh, PlaneMesh, CapsuleMesh, and PrismMesh objects with materials.

shader

shader_create, material_manage

Author GDShader files, create ShaderMaterials, set uniforms, and assign materials to CanvasItem or MeshInstance3D nodes.

game

game_manage, project_run

Launch, stop, restart, and command the running game instance with game helper diagnostics.

input

input_map_manage

Configure InputMap actions, bind keyboard and gamepad events, and query registered input actions.

ui

ui_manage, ui_semantic_tree, ui_click, ui_type

Inspect the semantic control hierarchy of the editor UI, click buttons/tabs, and simulate input keystrokes.


Godot access: settings and visual feedback

The AI can read and change Godot Editor Settings through editor_settings_manage (list_settings, get_setting, and set_setting). Project Settings are available through project_manage (settings_get and settings_set). Settings that can execute code during startup are deliberately restricted; use the validated main-scene and autoload tools for those changes.

editor_screenshot returns an actual MCP image block for the editor viewport or running game when include_image=true. Image-capable clients can inspect it directly. For text-only models, the optional Vision Routing feature can return a text description instead; see Vision Routing.

Use batch_execute when an edit needs several scene operations. It sends the commands in one MCP call and reduces repeated network round trips; it does not reduce the physical network latency of a single call.

Quick Start: 3 Simple Steps

You do not need to register on any website or install any npm packages.

Step 1: Download and Extract the Plugin

  1. Download godot-mcp-v5.0.39.zip from the v5.0.39 release.

  2. Extract it into your Godot project root. The ZIP contains both godot_ai and godot_omni inside addons/:

your-godot-project/
└── addons/
    ├── godot_ai/
    │   ├── plugin.cfg
    │   ├── plugin.gd
    │   ├── godot_mcp_dock.gd
    │   ├── connection.gd
    │   ├── dispatcher.gd
    │   └── handlers/
    └── godot_omni/
        ├── plugin.cfg
        ├── plugin.gd
        ├── omni_dock.gd
        ├── omni_reflection.gd
        └── omni_ui_tree.gd

Step 2: Enable the Plugin in Godot

  1. Open your project in Godot.

  2. Open Project -> Project Settings -> Plugins.

  3. Enable Godot MCP Core and Godot MCP Omni.

  4. The Godot MCP tab will appear beside your Inspector on the right-hand side.

Step 3: Configure Your AI Client

Install Python 3.11–3.14 and uv (uvx) on the computer running Godot. The add-on can configure supported local clients from its dock; for manual setup, use the versioned prebuilt backend wheel below. The first uvx launch downloads the pinned Python dependencies. Source builds stay disabled.

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "godot-mcp": {
      "command": "uvx",
      "args": [
        "--isolated",
        "--no-config",
        "--no-env-file",
        "--no-sources",
        "--no-build",
        "--index-strategy", "first-index",
        "--keyring-provider", "disabled",
        "--index", "https://pypi.org/simple",
        "--default-index", "https://pypi.org/simple",
        "--find-links", "https://pypi.org/simple/godot-ai/",
        "--link-mode", "copy",
        "--from",
        "https://github.com/bebabinlarsson-blip/Godot-MCP/releases/download/v5.0.39/godot_ai-5.0.39-py3-none-any.whl",
        "godot-ai"
      ]
    }
  }
}

Claude Desktop

Add to claude_desktop_config.json (Windows: %APPDATA%\Claude\claude_desktop_config.json | macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "godot-mcp": {
      "command": "uvx",
      "args": [
        "--isolated",
        "--no-config",
        "--no-env-file",
        "--no-sources",
        "--no-build",
        "--index-strategy", "first-index",
        "--keyring-provider", "disabled",
        "--index", "https://pypi.org/simple",
        "--default-index", "https://pypi.org/simple",
        "--find-links", "https://pypi.org/simple/godot-ai/",
        "--link-mode", "copy",
        "--from",
        "https://github.com/bebabinlarsson-blip/Godot-MCP/releases/download/v5.0.39/godot_ai-5.0.39-py3-none-any.whl",
        "godot-ai"
      ]
    }
  }
}

Google Antigravity

In Antigravity or Gemini CLI configuration:

{
  "mcpServers": {
    "godot-mcp": {
      "command": "uvx",
      "args": [
        "--isolated",
        "--no-config",
        "--no-env-file",
        "--no-sources",
        "--no-build",
        "--index-strategy", "first-index",
        "--keyring-provider", "disabled",
        "--index", "https://pypi.org/simple",
        "--default-index", "https://pypi.org/simple",
        "--find-links", "https://pypi.org/simple/godot-ai/",
        "--link-mode", "copy",
        "--from",
        "https://github.com/bebabinlarsson-blip/Godot-MCP/releases/download/v5.0.39/godot_ai-5.0.39-py3-none-any.whl",
        "godot-ai"
      ]
    }
  }
}

VS Code (Cline / Roo Code)

Add to Cline MCP settings:

{
  "mcpServers": {
    "godot-mcp": {
      "command": "uvx",
      "args": [
        "--isolated",
        "--no-config",
        "--no-env-file",
        "--no-sources",
        "--no-build",
        "--index-strategy", "first-index",
        "--keyring-provider", "disabled",
        "--index", "https://pypi.org/simple",
        "--default-index", "https://pypi.org/simple",
        "--find-links", "https://pypi.org/simple/godot-ai/",
        "--link-mode", "copy",
        "--from",
        "https://github.com/bebabinlarsson-blip/Godot-MCP/releases/download/v5.0.39/godot_ai-5.0.39-py3-none-any.whl",
        "godot-ai"
      ]
    }
  }
}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "godot-mcp": {
      "command": "uvx",
      "args": [
        "--isolated",
        "--no-config",
        "--no-env-file",
        "--no-sources",
        "--no-build",
        "--index-strategy", "first-index",
        "--keyring-provider", "disabled",
        "--index", "https://pypi.org/simple",
        "--default-index", "https://pypi.org/simple",
        "--find-links", "https://pypi.org/simple/godot-ai/",
        "--link-mode", "copy",
        "--from",
        "https://github.com/bebabinlarsson-blip/Godot-MCP/releases/download/v5.0.39/godot_ai-5.0.39-py3-none-any.whl",
        "godot-ai"
      ]
    }
  }
}

Keep Godot open while using the tools. These JSON examples are for clients running on the same computer as the editor. Cloud clients such as ChatGPT Work Mode require a separately configured authenticated HTTPS tunnel; see Public tunnel access. A local uvx command on a cloud machine cannot reach your Godot editor by itself. The 1,820+ operations are grouped into a smaller MCP tool surface; clients load or search tool schemas according to their own capabilities. An OpenAPI URL alone does not register those tools in a client.


TileMap Authoring and Direct Editor Placement Directive

The Direct Editor Placement Contract

AI agents connected via Godot MCP follow a strict architectural rule:

  • Always place tiles directly into the open editor scene: Use tilemap_manage (place_tile, set_cell, set_cells_rect, generate_layout) to place tiles directly down into the TileMap or TileMapLayer node.

  • Never write runtime procedural generation scripts in _ready() unless the user explicitly requested runtime procedural level generation.

  • Why this matters: Direct placement in the editor gives immediate visual feedback, enables manual tweaking in the editor viewport, configures native Godot 2D physics collisions, and saves clean .tscn scene files without runtime overhead.

Dihedral D4 Rotation and Symmetry

Tiles can be rotated clockwise by 90, 180, or 270 degrees and flipped horizontally or vertically with complete mathematical precision using an 8-state transition table that prevents bit-drift:

  • 0 degrees: Default orientation (alt = 0)

  • 90 degrees: Clockwise rotation (transpose | flip_h)

  • 180 degrees: Half rotation (flip_h | flip_v)

  • 270 degrees: Counter-clockwise rotation (transpose | flip_v)

Smart Genre Layout Generation

The generate_layout operation can build complete genre-specific level layouts directly in the active editor scene:

  • platformer: Ground blocks with jump gaps, vertical boundary walls, stepping platforms at reachable jump heights, and floating challenge accents.

  • topdown / rpg: Perimeter stone walls with open doorway transitions, walkable floor tiles, and corner architectural accents.

  • dungeon: Thick perimeter walls with corridor access, walkable stone paths, and central structural columns.

  • arena: Symmetrical battle arena boundaries with strategic cover pillars.


AI assistants and developers can search for free CC0 assets and download them directly into the Godot project with automatic editor reimport:

Search Free CC0 Game Assets

Search the built-in catalog of curated CC0 public domain game packs (Kenney tilesets, retro sound effects, UI elements, textures, and 3D models):

{
  "op": "search_assets",
  "params": {
    "query": "platformer",
    "category": "tileset",
    "limit": 10
  }
}

Download Assets into res://

Download any asset from a direct URL (or archive package) straight into your project:

{
  "op": "download_asset",
  "params": {
    "url": "https://raw.githubusercontent.com/KenneyNL/Starter-Kits/master/2D%20Platformer/assets/tilemap-characters_packed.png",
    "path": "res://assets/tilesets/platformer_packed.png",
    "reimport": true
  }
}
  • Single files are written directly and immediately queued for reimport.

  • ZIP archives (extract: true) are safely uncompressed into the destination folder, followed by a full scan_filesystem to index all unpacked assets.


The Godot MCP Dock

The single native Godot MCP dock lives beside the Inspector in Godot:

  • Live Status: Visual badge displaying connection status ([OK], [IDLE], [WAIT], [ERROR]).

  • Tool Call Feed: Live stream of AI commands as they are executed in the engine with millisecond timing.

  • Probe Diagnostics: Built-in ping and self-test trigger buttons to verify connection without leaving Godot.

  • Memory Metrics: Process frame count, active scene root, and static memory usage metrics.

  • Free Port Button: In case port 8000 is held by an orphaned process, a single click clears it and resets the local server.


System Architecture

flowchart TD
    subgraph AI_Clients [Local AI Clients]
        Claude[Claude Code / Desktop]
        Cursor[Cursor IDE]
        Antigravity[Google Antigravity]
        VSCode[VS Code / Cline / Roo]
        Windsurf[Windsurf IDE]
    end

    subgraph MCP_Server [Local MCP Server]
        Stdio[Standard I/O Pipe]
        Router[Adaptive Domain Router]
        DirectRuntime[Direct Runtime Bridge]
    end

    subgraph Godot_Editor [Godot Engine Editor]
        WSBridge[Local WebSocket :9500]
        Dispatcher[McpDispatcher]
        OmniHandler[Omni & Reflection Handler]
        DomainHandlers[59 Domain Handlers]
        EditorDock[Godot MCP Inspector Dock]
    end

    AI_Clients -->|MCP JSON-RPC| Stdio
    Stdio --> Router
    Router --> DirectRuntime
    DirectRuntime <-->|Local Loopback Only| WSBridge
    WSBridge <--> Dispatcher
    Dispatcher --> OmniHandler
    Dispatcher --> DomainHandlers
    Dispatcher --> EditorDock

Verification and Diagnostics

From a checkout of this repository with uv installed, you can inspect the installation and tool registry:

# Run the complete test suite
uv run godot-omni self-test

# Inspect tool registry metrics across all 59 domains
uv run godot-omni tools stats

Troubleshooting

Port 8000 In Use

Check which process owns the HTTP port before restarting it. In the Godot MCP dock, use Free Port & Replace Server only for a server you own. The editor WebSocket uses port 9500 by default; port 8000 is the local HTTP endpoint.

Headless Execution

To allow the plugin to run during headless testing or CI:

$env:GODOT_AI_ALLOW_HEADLESS="1"

Public tunnel access

The default localhost.run tunnel creates a public hostname for the current connection. That hostname can change after a reconnect. Cloudflare Quick Tunnels also use temporary hostnames. Neither option reserves a permanent URL.

For a stable hostname, create a named Cloudflare Tunnel in your Cloudflare account, route the hostname to http://127.0.0.1:8000, and keep both the Godot editor and cloudflared running on an always-on machine. Store the tunnel token in a file (this option requires cloudflared 2025.4.0 or newer) and set:

GODOT_AI_CLOUDFLARE_TUNNEL_TOKEN_FILE=/path/to/cloudflare-token
GODOT_AI_TUNNEL_PUBLIC_URL=https://mcp.example.com
godot-ai tunnel --provider cloudflare-named

On Windows, set the same environment variables in PowerShell before running godot-ai tunnel. The stable hostname is configured in Cloudflare DNS; it cannot be reserved by this plugin. A hostname stays reachable only while the machine, editor server, and tunnel process are online.

Free stable URL without a custom domain: Tailscale Funnel

Tailscale Funnel can provide a stable https://<device>.<tailnet>.ts.net URL without buying a domain. Install Tailscale and sign in on the always-on computer that runs Godot. In the Tailscale admin console, enable HTTPS certificates and Funnel for the tailnet. Then start the MCP tunnel:

godot-ai tunnel --provider tailscale-funnel --port 8000

The command prints the public URL and automatically reconnects if its tunnel process exits. Use the same GODOT_AI_AUTH_TOKEN protection described below. The URL stays tied to that Tailscale device and tailnet while they remain configured; it cannot keep the MCP reachable if the computer, Godot editor, internet connection, or Tailscale service is offline. Funnel is currently a beta feature and has provider limits, so this is a stable address rather than an uptime guarantee. Tailscale's Personal plan is free for personal use.

Windows one-click Tailscale launcher

The v5.0.39 release includes the installable add-ons archive (godot-mcp-v5.0.39.zip), exact-version backend wheel, and Start-Godot-MCP-Tunnel-v5.0.39.bat. Install and enable the add-ons first, then set GODOT_AI_AUTH_TOKEN in Windows Environment Variables before opening Godot. With Godot open and the plugin connected, double-click the BAT file. It runs the pinned godot-ai tunnel command and prints the stable public URL. Leave its window open while using the tunnel.

The Godot editor plugin starts and owns the local MCP server; this launcher starts the public tunnel to that server. It does not install Godot or Tailscale. Install Tailscale, sign in, enable Funnel and HTTPS for your tailnet, and make sure the tailscale CLI is available on PATH. Install uv so uvx is on PATH as well. The launcher checks for the Bearer token, uvx, and Tailscale before starting.

Treat any public tunnel as an internet-facing endpoint. Configure the same GODOT_AI_AUTH_TOKEN in the MCP server and the AI client's Bearer authorization. Start Godot with the token set before launching the editor. Every automated public tunnel provider refuses to start unless /api/v1/status rejects anonymous requests and accepts that token. The ngrok provider reads the endpoint from ngrok's local Agent API at 127.0.0.1:4040; keep that API bound to loopback. Share the URL only with intended clients.

The MCP gateway advertises its available tools at /api/v1/tools and exposes the OpenAPI document at /openapi.json. The editor and tunnel process must both remain online for those tools to be reachable.

Open Remote Setup in the Godot MCP dock to see the local connection state, hostname configuration, and setup steps. Run godot-ai tunnel doctor to check the Cloudflare binary, named-tunnel token file, local bearer enforcement, and the authenticated public status and tool catalog. The doctor never prints the bearer token or Cloudflare token. Use --local-only when your hostname has not been routed yet.

Inspect before editing

project_manage(op="get_map") provides a small, read-only index of the open project's scenes, scripts, assets, resources, autoloads, and input actions. tileset_manage(op="tileset_diagnose", params={"tileset_path": "res://..."}) reports atlas and texture problems; pass check_collision=true to flag tiles without polygons on a selected physics layer. Rotated alternatives alone are not considered broken.

batch_execute(commands=[...], preview=true) previews up to 30 create_node or delete_node edits in an open scene, shows scene nodes before and after, and undoes its changes. Call the same batch with preview=false to keep it. Preview does not capture screenshots or support file-writing commands.

Published v5 releases attach an add-ons-only ZIP after the release workflow verifies its structure and loads it into a fresh Godot project. Extract the ZIP at the project root, then enable the plugin in Godot's Project Settings.


Author and License

For Godot Asset Library listings, use the direct icon files: Godot MCP Core · Godot MCP Omni.

Available Tools

100 tools
animation_createA

Create a new Animation clip inside an AnimationPlayer's default library.

After creating the clip, add tracks via animation_manage ops add_property_track / add_method_track / create_simple. Track node paths are stored relative to the AnimationPlayer's root_node (default: its parent), not to the scene root — see animation_manage preset ops for a forgiving target_path that accepts either form. If player_path doesn't resolve, an AnimationPlayer is auto-created at that path (parent must exist).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesAnimation clip name (e.g. "idle", "pulse").
lengthYesDuration in seconds.
loop_modeNo"none" (default) | "linear" | "pingpong".none
overwriteNoReplace an existing animation with the same name.
session_idNoOptional Godot session to target. Empty = active session.
player_pathYesScene path to the AnimationPlayer node.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses important behaviors: it creates in the default library, auto-creates AnimationPlayer if the path doesn't resolve (with parent requirement), and explains the root_node-relative track path handling. These are critical side effects and context not inferable from the schema.

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

Conciseness5/5

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

The description is a tight, well-structured paragraph. It opens with the primary action, then the follow-up steps, and then crucial path semantics. No redundant or vague sentences exist.

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

Completeness4/5

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

For a tool with 6 parameters and an output schema, the description covers the main workflow, prerequisites (parent exists), and side effects. It does not explicitly describe failure behavior for existing clips when overwrite is false, but the overall context is sufficient for an agent to select and invoke the tool.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the default library context, the auto-creation behavior tied to player_path, and the root_node relative path handling, which are not detailed in the parameter descriptions.

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

Purpose5/5

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

The description clearly identifies the verb (Create), object (Animation clip), and context (inside an AnimationPlayer's default library). It differentiates from sibling tools like animation_manage by specifying that this creates the clip, not the tracks, and even directs users to proper follow-up operations.

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

Usage Guidelines4/5

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

The description provides strong usage context by stating that after creating the clip, tracks are added via animation_manage ops. It also notes the auto-creation behavior for non-existent paths, though it could be more explicit about when not to use this tool compared to others.

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

animation_manageA

AnimationPlayer authoring (player, tracks, autoplay, presets, playback).

Ops: • player_create(parent_path, name="AnimationPlayer") Create an AnimationPlayer with empty default library. • delete(player_path, animation_name) Delete an animation clip from the default library. Undoable. • validate(player_path, animation_name) Check all track paths resolve. Returns broken_count + per-track issues. • add_property_track(player_path, animation_name, track_path, keyframes, interpolation="linear") Add a property track. track_path: "NodeName:property". keyframes: [{time, value, transition?}, ...]. interpolation: linear|nearest|cubic. • add_method_track(player_path, animation_name, target_node_path, keyframes) Add a method track. keyframes: [{time, method, args?}, ...]. • set_autoplay(player_path, animation_name="") Set autoplay. Empty animation_name clears. • play(player_path, animation_name="") Editor preview. Not saved with scene. • stop(player_path) Stop editor preview. Not saved with scene. • list(player_path) List animations with length, loop_mode, track_count. • get(player_path, animation_name) Inspect a clip's tracks and keyframes in detail. • create_simple(player_path, name, tweens, length=None, loop_mode="none", overwrite=False) High-level: build a multi-track clip from tween specs in one call. tweens: [{target, property, from, to, duration, delay?, transition?}]. • preset_fade(player_path, target_path, mode="in", duration=0.5, animation_name="", overwrite=False) One-call fade-in/out (modulate.a). • preset_slide(player_path, target_path, direction="left", mode="in", distance=None, duration=0.4, animation_name="", overwrite=False) One-call slide-in/out (position). • preset_shake(player_path, target_path, intensity=None, duration=0.3, frequency=30.0, seed=0, animation_name="", overwrite=False) One-call shake (jittered position). • preset_pulse(player_path, target_path, from_scale=1.0, to_scale=1.1, duration=0.4, animation_name="", overwrite=False) One-call pulse / hover-bounce (3-keyframe scale ping-pong).

Preset target_path: accepts either a scene-absolute path (e.g. "/Main/World/Cube", matching every other scene tool) or a path relative to the AnimationPlayer's root_node (e.g. "World/Cube", matching how Animation tracks store node paths). Scene-absolute targets outside the player's root_node subtree are converted to a ..-prefixed track path via root_node.get_path_to(target), the same shape the relative form already accepts.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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

With no annotations provided, the description carries the full disclosure burden, and it does this well: it notes that delete is undoable, play/stop are editor previews not saved with the scene, set_autoplay with an empty name clears, validate returns broken_count plus per-track issues, and list returns specific fields. It also explains the target_path resolution behavior for presets, which materially changes observable behavior.

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

Conciseness5/5

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

The description is long, but every line carries specification value: concise per-operation signatures, parameter syntax rules, and the canonical message shape. The first sentence summarizes scope, and the bullet structure makes many operations scannable without repeated boilerplate.

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

Completeness3/5

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

For a multi-operation tool with a generic schema, the description covers most operations in detail and even includes return summaries for list and validate. However, it omits seven operations that appear in the schema enum, including sprite-related operations and scaffolding operations, so an agent cannot correctly invoke those without additional information. This is a clear gap for a tool this complex.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it largely does: each operation includes a signature with defaults and concise parameter format notes, including track_path syntax, keyframe object shape, interpolation values, tween specs, and preset arguments. It is not a 5 because several operations in the schema enum (e.g., create_spritesheet_track, preset_bounce, scaffold_state_machine) are entirely absent from the description, leaving their parameters undefined.

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

Purpose4/5

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

The description opens with 'AnimationPlayer authoring' and enumerates a detailed set of operations, so an agent can identify the tool's domain and core resource. However, it does not explicitly differentiate itself from the sibling tool 'animation_create', leaving some ambiguity about which animation tool should be chosen for a given task.

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

Usage Guidelines4/5

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

The description clearly states the scope ('AnimationPlayer authoring') and provides a canonical call shape, but it never explicitly states when to prefer this tool over sibling tools like animation_create, nor does it list exclusions. This is clear context without alternative guidance, matching the 4 level.

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

animation_tree_manageA

AnimationTree State Machine and Blend Tree Management.

Ops:

  • scaffold_state_machine(parent_path="", anim_player_path="", node_name="AnimationTree") Scaffold an AnimationTree with an AnimationNodeStateMachine root.

  • add_state(tree_path, state_name, animation_name="", position=[0,0]) Add an animation state node into an AnimationNodeStateMachine.

  • add_transition(tree_path, from_state, to_state, auto_advance=False) Add a transition between two states in an AnimationNodeStateMachine.

  • scaffold_blend_tree(parent_path="", anim_player_path="", node_name="AnimationTreeBlend") Scaffold an AnimationTree with an AnimationNodeBlendTree root.

  • get_tree_info(tree_path) Inspect root node configuration and status of an AnimationTree.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It does state the core behavior of each operation and the canonical call shape, including the compatibility alias for flat parameters. But it does not disclose side effects, prerequisites, error conditions, or distinguish mutating operations from the read-only get_tree_info beyond the verb itself.

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

Conciseness5/5

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

The description is compact and well structured. It front-loads the domain, then presents each operation in a scannable bullet list with signatures and brief explanations. The canonical call shape note is useful and not redundant, and there is no filler or repetition.

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

Completeness4/5

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

For a multi-operation tool, the description covers the main requirements: available operations, their parameters, and the invocation shape. An output schema exists and can cover return values, which the description need not duplicate. Missing end-to-end examples or failure behavior are minor gaps given the otherwise clear operation-level documentation.

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

Parameters4/5

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

The input schema is opaque at 0% parameter description coverage, so the description must compensate. It does so by listing each operation's parameters inline with defaults and enough context to understand their purpose, such as parent_path, anim_player_path, auto_advance, and position. Some details remain unspecified, such as exact tree_path notation or position coordinate format, but the description adds substantial meaning beyond the bare parameter names.

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

Purpose4/5

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

The description clearly identifies the tool's domain: AnimationTree state machine and blend tree managementsell. It enumerates five concrete operations with verbs like 'scaffold', 'add', and 'inspect', so an agent can see exactly what actions are available. It differentiates from sibling tools by resource type (AnimationTree), though it does not explicitly name or contrast siblings.

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

Usage Guidelines3/5

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

Usage is implied through the operation list: each bullet explains what that sub-operation does/dss, so an agent can infer when to call scaffold_state_machine vs scaffold_blend_tree etc. However, there is no explicit guidance about when to use this tool instead of sibling tools like animation_manage or fsm_manage, and no exclusions or alternative routes are stated.

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

api_manageA

Inspect Godot API documentation-shaped metadata from the connected editor's ClassDB: "what properties does X have", method signatures, signals, enums, constants, defaults, and property hint strings.

Resource form (prefer for active-session reads): godot://class/{class_name}

Ops:

  • get_class(class_name, sections=None, include_inherited=False, include_inheritors=False, offset=0, limit=100) Return selected class-reference sections without creating a scene instance. sections may be a comma-separated string or list containing properties, methods, signals, enums, constants, inheritors. Defaults to ["properties"] only — a bare get_class answers "what properties does X have" without the multi-thousand-token full dump. Pass the sections you want by name, or "all" for the full set (properties, methods, signals, enums, constants). "all" does NOT include the heavier "inheritors" section — request that by name. For pagination, request one section at a time so offset/limit apply only to the list you are paging.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses that no scene instance is created, that 'all' does not include inheritors, and that pagination works per section. It does not mention potential errors or permissions, but for a read-only inspection tool the disclosed behavior is substantial.

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

Conciseness4/5

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

The description is well-structured with resource form, ops, and call-shape sections, and every sentence adds value. It is somewhat lengthy due to detailed parameter explanations, but this is justified given the schema gap. It avoids repetition and stays organized.

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

Completeness5/5

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

The tool has an output schema, and the description provides complete operational context: purpose, usage, parameter details, pagination behavior, and call format. It leaves little ambiguity for an agent to select and invoke the tool correctly, even among many siblings.

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

Parameters5/5

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

Schema coverage is 0%, so the description must fully explain parameters. It does so extensively: sections can be a comma-separated string or list, defaults to ['properties'] only, 'all' excludes inheritors, and offset/limit apply per section. The op signature and call shape are also explained, fully compensating for the generic schema.

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

Purpose5/5

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

The description clearly states the tool inspects Godot API documentation-shaped metadata from the ClassDB, with specific examples like 'what properties does X have' and method signatures. It distinguishes itself from runtime node inspection by noting it works 'without creating a scene instance', making it distinct from sibling tools like node_get_properties.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool, such as 'prefer for active-session reads' and details the resource form. It explains section selection and pagination but does not explicitly name alternative tools or exclusion scenarios, so it falls short of a full 5.

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

audio_effect_manageA

AudioServer DSP Bus Effects Management.

Ops:

  • add_effect_to_bus(bus_name="Master", effect_class="AudioEffectReverb", at_position=-1, properties={}) Add an AudioEffect to an audio bus at the specified index.

  • configure_effect(bus_name="Master", effect_index=0, enabled=None, properties={}) Configure parameters and enable state of an audio bus effect.

  • remove_effect(bus_name="Master", effect_index=0) Remove an audio effect from a bus by index.

  • list_bus_effects(bus_name="Master") List all audio effects assigned to an audio bus.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose the core behavior of each operation (add, configure, remove, list) and the canonical call shape, but it does not mention side effects, reversibility, failure behavior, or the impact of operations like remove on the audio bus.

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

Conciseness5/5

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

The description is well-structured with a clear title, bulleted operation signatures, and the canonical call shape. It is appropriately sized for a multi-operation tool, front-loaded with the resource, and contains no filler.

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

Completeness3/5

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

An output schema exists, so return values do not need explanation. However, with no annotations and a generic params schema, the description still leaves gaps around properties, effect_class enumeration, at_position semantics, and session_id usage. It is decent but not fully self-sufficient.

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

Parameters3/5

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

The schema is generic and has 0% coverage, so the description is the only parameter documentation. It provides parameter names and defaults for each op, which is helpful, but leaves key details unexplained: the structure of properties, valid effect_class values, and the meaning of at_position=-1.

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 identifies the specific resource (AudioServer DSP bus effects) and enumerates four distinct operations with one-line definitions. It clearly distinguishes this tool from broader siblings like audio_manage by focusing on bus-effect management.

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

Usage Guidelines2/5

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

There is no explicit guidance about when to use this tool versus alternatives such as audio_manage. The ops list implies use cases, but the description does not state prerequisites, exclusions, or when another tool would be more appropriate.

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

audio_manageB

Sound effects, music, ambience (AudioStreamPlayer / 2D / 3D).

Ops: • player_create(parent_path, name="AudioStreamPlayer", type="1d") Create an AudioStreamPlayer / 2D / 3D node. type: "1d" | "2d" | "3d". • player_set_stream(player_path, stream_path) Assign an AudioStream resource (.ogg/.wav/.mp3 or .tres). Returns duration_seconds. • player_set_playback(player_path, volume_db?, pitch_scale?, autoplay?, bus?) Update common playback properties atomically. Pass only fields to change; at least one of volume_db/pitch_scale/autoplay/bus required. • play(player_path, from_position=0.0) Start real editor preview playback. Not undoable. • stop(player_path) Stop editor preview playback. Not undoable. • list(root="res://", include_duration=True) Scan project for AudioStream resources (every subclass + .tres/.res). • generate_procedural_sfx(preset="jump", dest_path="", duration=0.0, sample_rate=22050) Synthesize a chiptune PCM .wav sound effect directly into res://. Presets: jump | coin | laser | hit | explosion | powerup | step | click. • scaffold_buses(volumes=None) Configure standard Master, Music, SFX, and UI audio buses in AudioServer. • scaffold_music_player(parent_path="", name="MusicPlayer", stream_path="", autoplay=True, volume_db=0.0, bus="Music", loop=True) Scaffold a dedicated background music player (AudioStreamPlayer) routed to the Music bus with autoplay and loop configuration. • scaffold_sound_manager(name="SoundManager", script_path="res://scripts/sound_manager.gd", pool_size=16, bus="SFX", register_autoload=True) Scaffold a multi-channel sound effect manager singleton with AudioStreamPlayer pooling, pitch variation, and 2D spatial audio helper. • bus_list() List all AudioServer buses with their properties and effects. • bus_add(name, send="Master", volume_db=0.0, at_pos=-1) Add a new audio bus and route it to a parent bus. • bus_remove(bus) Remove an audio bus by name or index. • bus_set_properties(bus, volume_db?, send?, solo?, mute?, bypass_effects?) Update properties on an existing bus. • bus_add_effect(bus, effect_type, at_position=-1, enabled=True, params={}) Add an audio effect to a bus. Types: Reverb, Delay, Chorus, Phaser, Distortion, EQ, Compressor, Limiter, LowPassFilter, HighPassFilter, BandPassFilter, NotchFilter, Amplify. • bus_save_layout(path="res://default_bus_layout.tres") Save the current AudioServer bus layout to a resource file.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It mentions that play and stop are 'Not undoable' and that generate_procedural_sfx writes to res://, which is good. But it doesn't disclose side effects like bus_add_effect potentially changing the audio routing, or scaffold_buses requiring audio driver setup, or the impact of player_set_stream on playback state. The description is incomplete for a mutation-heavy tool.

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

Conciseness4/5

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

The description is long but well-structured: it uses a bulleted list with a consistent pattern (op name, parameters, one-line behavior), making it skimmable. It front-loads the resource overview, then lists ops in a natural grouping (player ops, list, generation, scaffolding, bus ops). The final paragraph on canonical call shape adds necessary format context. Slight verbosity but no fluff.

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's complexity (16 ops, free-form parameters), the description covers the essential semantics for each op, including parameter defaults and enums. The output schema exists, so return values are accounted for. However, it lacks details on error handling, permissions, and the exact structure of 'params' (which is free-form). Also, it doesn't explain the relationship between 'op' and 'params' for each op beyond the inline lists. Overall, adequate but with gaps for edge cases.

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

Parameters3/5

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

The schema has only three parameters (op, params, session_id) with a free-form 'params' object (additionalProperties true), and 0% schema description coverage. The description compensates by enumerating each op's parameters in the text (e.g., player_create(parent_path, name=..., type=...), including defaults and value enums. This adds significant meaning beyond the schema, so a 3 is warranted; it's helpful but not exhaustive (e.g., the 'params' object structure is not formally defined).

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 is a broad dispatch table for audio operations, listing many verbs (play, stop, list, etc.) with one-line summaries. It clearly states the resource (audio nodes, buses, streams) and the operations available, and it is distinguishable from sibling tools by its scope (audio-focused). However, it lacks a single cohesive purpose statement; instead, it's an op-dispatch, which is clear enough for an agent.

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

Usage Guidelines3/5

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

The description provides usage hints for individual ops (e.g., player_set_playback says 'Pass only fields to change', play says 'Start real editor preview playback'), but it does not explicitly say when to use this tool vs siblings like audio_effect_manage (which likely handles effects). It implies usage through the op list but lacks explicit exclusions or alternative recommendations.

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

autoload_manageA

Autoload (global singleton) management. Autoloads are scripts or scenes loaded automatically at project start, accessible globally by name when singleton=True. Persisted to project.godot.

Ops: • list() List autoloads with name, path, and singleton flag. • add(name, path, singleton=True) Register an autoload (script or PackedScene) by res:// path. • remove(name) Unregister an autoload by name. The underlying file is not deleted. • scaffold_game_manager(name="GameManager", script_path="res://scripts/game_manager.gd", max_lives=3) Scaffold and register a production-ready GameManager singleton with score, lives, level tracking, typed signals, and scene transition methods.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that autoloads are persisted to project.godot, that remove does not delete the underlying file, and that scaffold_game_manager creates a production-ready singleton. It does not mention side effects like overwriting existing files or requiring a project reload, but the disclosed persistence and non-deletion details are meaningful.

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 well-structured with a brief intro, a bulleted op list, and a canonical call shape note. It is slightly long but every section earns its place; the op list is essential and the call-shape note prevents invocation errors.

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

Completeness4/5

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

Given the tool's moderate complexity and the presence of an output schema, the description covers the key behaviors, parameters, and persistence side effects. It could add explicit notes on error cases or whether add overwrites an existing autoload, but the current content is sufficient for correct invocation in most cases.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does so by documenting each op's parameters (name, path, singleton, script_path, max_lives) and their meanings. It does not provide full type details for every parameter, but the op-by-op breakdown gives an agent enough to construct valid calls.

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 that this tool manages Godot autoloads (global singletons), and enumerates the four operations (list, add, remove, scaffold_game_manager) with their specific effects. It distinguishes itself from the many sibling *_manage tools by naming its exact resource (autoloads) and the canonical call shape.

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

Usage Guidelines4/5

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

The description explains what autoloads are and when this tool is relevant, and the op list implicitly tells the agent which operation to choose. It does not explicitly state when to prefer a sibling tool (e.g., project_manage or script_manage) over this one, but the resource-specific scope and op names provide clear context.

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

batch_executeA

Execute a list of editor sub-commands in order, stopping on first error.

Each item must be {"command": "<plugin_command>", "params": {...}}. Use the underlying plugin command names (e.g. create_node, set_property, delete_node, attach_script), not the MCP tool names. Commands run sequentially; execution stops at the first error. When undo is True (default), any successful sub-commands are rolled back via the scene's undo history if a later sub-command fails, producing atomic-on-failure semantics.

With preview=True, only create_node/delete_node commands are accepted; returns the scene node list before and after, then undoes all changes. To keep the proposed change, call again with preview=False.

Use this to compose multi-step edits (create node + set property + attach script) into a single tool call. Rollback works for sub-commands that modify the currently edited scene. batch_execute itself is not allowed as a sub-command.

Scene paths are relative to the edited scene root (e.g. "/Main/Enemy"), NOT runtime "/root/..." paths. The example below assumes the scene root is named "Main" — substitute the actual root name.

ParametersJSON Schema
NameRequiredDescriptionDefault
undoNoRoll back succeeded sub-commands on failure. Default True.
previewNo
commandsYesList of `{"command": str, "params": dict}` items.
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it does so thoroughly. It discloses sequential execution, first-error stopping, atomic rollback via undo history, preview-mode behavior with before/after node lists, the scope of rollback support, and scene-root-relative path conventions. This gives the agent accurate expectations about side effects and failure behavior.

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

Conciseness4/5

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

The description is long but information-dense and front-loaded with the core behavior. It loses a point because it repeats 'stops at the first error' after already stating it in the first sentence, and it references 'the example below' without actually providing an example in the visible text.

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

Completeness5/5

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

For a complex composite tool with no annotations, the description covers the command contract, execution semantics, failure rollback, preview path, path convention, and key constraints. The presence of an output schema relieves it from detailing return values, so nothing essential is missing for an agent to invoke it correctly.

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

Parameters5/5

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

Although schema coverage is 75%, the description adds meaning well beyond the schema: it specifies the exact item shape (`{"command": ..., "params": ...}`), which plugin commands are expected, the semantics of preview=True and undo, and path conventions. This materially helps agents construct valid parameters.

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

Purpose5/5

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

The description opens with a specific action: 'Execute a list of editor sub-commands in order, stopping on first error.' It clearly distinguishes itself from the sibling MCP tools by instructing agents to use underlying plugin command names, not MCP tool names, and frames its purpose as composing multi-step edits into one call.

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

Usage Guidelines4/5

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

It explicitly states when to use the tool: 'Use this to compose multi-step edits (create node + set property + attach script) into a single tool call.' It also gives concrete constraints like batch_execute not being allowed as a sub-command and preview mode restrictions. It stops short of naming alternative individual tools, but the use case guidance is clear.

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

body_manageA

Physics Body & Collision Management (2D and 3D).

Ops:

  • configure_body(node_path, properties={}) Configure physics parameters of a body (mass, gravity_scale, damping).

  • apply_impulse(node_path, impulse=[0,0], position=None) Apply an impulse to a 2D or 3D RigidBody.

  • set_collision_layer_mask(node_path, collision_layer=None, collision_mask=None, collision_priority=None) Set collision layers and masks for a 2D or 3D collision object.

  • scaffold_character_body(parent_path="", node_name="Player", is_3d=False) Scaffold a CharacterBody2D or CharacterBody3D with collision shape.

  • get_body_info(node_path) Inspect collision layers, mass, and properties of a physics body.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral disclosure burden. It does this well by stating the effect of each operation: 'Configure', 'Apply an impulse', 'Set collision layers and masks', 'Scaffold ... with collision shape', and 'Inspect'. It also discloses 2D/3D support. It stops short of detailing prerequisites, failure modes, or side effects on existing settings, so it is strong but not maximal.

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 tight bulleted list of five operations with signatures and one-line semantics. Every line carries essential information, and the purpose statement is front-loaded. There is no filler or redundancy.

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

Completeness4/5

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

Given the tool bundles five distinct operations alert, the description covers each operation's purpose and parameters, and an output schema exists so return-value documentation is unnecessary. The main remaining gap is the absence of error conditions, node prerequisites, and behavior when called on unsupported node types, but the core invocation context is complete.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate entirely for parameter meaning. It does: each operation lists its parameters with defaults (e.g., 'impulse=[0,0]', 'parent_path=""'), and 'configure_body' even names accepted property keys like mass, gravity_scale, and damping. The canonical call shape also clarifies how op and params are structured.

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

Purpose5/5

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

The description opens with 'Physics Body & Collision Management (2D and 3D)' and enumerates five specific operations, each with a verb and resource (e.g., 'apply_impulse', 'set_collision_layer_mask', 'scaffold_character_body'). This clearly communicates what the tool does and differentiates it from sibling tools like physics_manage or joint_manage.

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 operation list gives clear context about what the tool can do, and the header implies this is the tool for physics body and collision management. However, it does not explicitly state when to prefer this tool over alternatives or provide exclusions, leaving the agent to infer routing from sibling tool names.

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

camera_manageA

Camera2D / Camera3D authoring (zoom, FOV, projection, smoothing, follow).

Ops: • create(parent_path, name="Camera", type="2d", make_current=False) Create a Camera2D ("2d") or Camera3D ("3d"). When make_current=True, unmarks previously current cameras of the same class in one undo. • configure(camera_path, properties) Batch-set camera-specific properties (zoom, fov, projection, smoothing, drag, limits …). Class-aware. Enum-by-name (projection, keep_aspect, anchor_mode, doppler_tracking, process_callback). Vector2 dict coercion for zoom/offset. Transforms (position, rotation, scale, transform, global_*) live on the Node — set those via node_set_property, not here. • set_limits_2d(camera_path, left?, right?, top?, bottom?, smoothed?) Set Camera2D bounds. Pass only the edges to change. • set_damping_2d(camera_path, position_speed?, rotation_speed?, drag_margins?, drag_horizontal_enabled?, drag_vertical_enabled?) Smooth Camera2D motion (position/rotation smoothing speeds + drag deadzone). drag_margins: {left,top,right,bottom} fractions [0,1]. • follow_2d(camera_path, target_path, smoothing_speed=5.0, zero_transform=True) Reparent camera under target with smoothing — Godot-native follow. • scaffold_follow_2d(target_path="", parent_path="", name="FollowCamera2D", smoothing_speed=5.0, zoom=None, enable_shake=True, make_current=True, limits=None) Scaffold complete follow Camera2D with position smoothing and trauma-based screen shake (adds add_trauma() method to camera). • get(camera_path="") Inspect a camera (class, current flag, all properties). Empty path resolves to the currently-active camera, falling back to the first. • list() List every Camera2D/Camera3D in the scene. • apply_preset(parent_path, name, preset, type=None, make_current=True, overrides=None) Spawn with opinionated defaults. Presets: topdown_2d, platformer_2d, cinematic_3d, action_3d. overrides merge over preset values.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well: it discloses that make_current=True unmarks previously current cameras of the same class in one undo, that configure is class-aware, that scaffold_follow_2d adds an add_trauma() method to the camera, and that follow_2d reparents the camera under the target. It also notes the canonical call shape and compatibility alias. It doesn't disclose error behavior or permission requirements, but for a camera authoring tool the key side effects are well covered.

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 long but well-structured: a one-line summary followed by a bulleted op list with compact signatures and inline notes. Every op earns its place, and the canonical call shape note is useful. It is not maximally concise, but the density of information justifies the length.

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

Completeness4/5

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

Given the tool's complexity (9 ops, many parameters, no annotations, no schema-level parameter docs), the description is remarkably complete. It covers all ops, parameter semantics, side effects, and the call shape. It doesn't describe return values in detail, but an output schema exists, so that burden is partially lifted. Minor gaps: no explicit error/edge-case behavior and no mention of what happens when a camera_path is invalid, but these are not critical for an agent selecting and invoking the tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter documentation. It does so extensively: each op lists its parameters with types, defaults, and semantics (e.g., drag_margins: {left,top,right,bottom} fractions [0,1], limits with optional edges, overrides merge over preset values). The only gap is that the schema's params object is a free-form anyOf, so the description's per-op parameter lists are the sole documentation, and they are detailed enough to be actionable.

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

Purpose5/5

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

The description opens with a specific verb and resource ('Camera2D / Camera3D authoring') and then enumerates nine distinct operations with concrete effects (create, configure, set_limits_2d, set_damping_2d, follow_2d, scaffold_follow_2d, get, list, apply_preset). This clearly distinguishes the tool from sibling tools like node_manage or viewport_manage by scoping it to camera-specific authoring.

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

Usage Guidelines5/5

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

The description gives explicit usage guidance: it states that transforms (position, rotation, scale, transform, global_*) live on the Node and should be set via node_set_property, not here. It also explains when to use get with an empty path (resolves to active camera) and when to use list. The op-by-op breakdown effectively tells an agent when to use each operation and what the alternatives are.

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

character_manageA

2D and 3D Character Controller Scaffolding.

Ops: • scaffold_2d(parent_path="", name="Player", genre="platformer", speed=200.0, jump_velocity=-350.0, acceleration=1200.0, friction=1000.0, coyote_time=0.12, jump_buffering=0.1, attach_camera=True, script_path="") Instantly scaffold a complete 2D player character (CharacterBody2D) with CollisionShape2D, placeholder graphics, optional follow camera with screen shake, and production-ready controller script with coyote time, jump buffering, floor snapping, and move_and_slide(). Genres: 'platformer' (gravity, jump) | 'topdown' (4/8-way movement).

• scaffold_3d(parent_path="", name="Player3D", genre="first_person", speed=5.0, sprint_speed=8.0, jump_velocity=4.5, mouse_sensitivity=0.002, script_path="") Instantly scaffold a complete 3D player character (CharacterBody3D) with CapsuleShape3D, CapsuleMesh, and Camera3D with mouse-look capture, sprinting, jumping, gravity, and move_and_slide(). Genres: 'first_person' (head-mounted camera) | 'third_person' (SpringArm3D).

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden and does explain what gets created: CharacterBody2D/3D, collision shapes, cameras, and controller script features. However, it does not disclose side effects such as whether files/nodes are written, whether existing files are overwritten, or whether an open scene is required.

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

Conciseness5/5

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

The description is organized as a title, two op bullets with signature and behavior, genre notes, and a canonical call shape. Each sentence adds value, and the most important selection information is front-loaded.

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

Completeness4/5

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

For a two-op scaffolding tool with zero schema-level descriptions, the inline docs are nearly complete: signatures, defaults, genres, and call convention are all present. Minor gaps remain around parent_path/script_path semantics and filesystem/scene side effects, but the output schema can cover return values.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by giving complete signatures with defaults for every op parameter, plus enum-like genre choices. The input schema only exposes op/params/session_id, so this inline documentation is essential and well-provided.

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

Purpose5/5

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

Description opens with a specific resource ('2D and 3D Character Controller Scaffolding') and enumerates two concrete operations, scaffold_2d and scaffold_3d, each with a clear verb and output. This distinguishes it from the many generic *_manage siblings.

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

Usage Guidelines4/5

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

Genre mappings ('platformer' vs 'topdown', 'first_person' vs 'third_person') give concrete selection criteria within the tool. It doesn't explicitly say when to choose this over node_create/script_attach, but the 'Instantly scaffold a complete ...' framing implies it as a higher-level alternative.

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

client_manageA

Configure AI clients to use this Godot AI MCP server. Writes / removes client config files (Claude Code, Codex, Antigravity, Cursor, Devin Desktop (Windsurf), Zed, etc.).

Ops: • status() List every supported client with id, display_name, status (configured | not_configured | configured_mismatch | error), and installed flag. • configure(client) Write the MCP server entry into the named client's config file. client is one of the ids returned by status(). • remove(client) Remove this server's entry from the named client's config.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It explicitly states that the tool 'Writes / removes client config files' and details each op's effect, including the destructive nature of 'remove'. It also hints at error states via the 'error' status in status(). It does not mention permissions or backup behavior, but the core side effects are transparent.

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

Conciseness5/5

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

The description is well-structured with a concise intro, a bulleted Ops list, and a clear canonical call shape. Every sentence adds meaningful information, with no redundancy or filler. The use of code formatting and list structure makes it easy to scan.

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 moderate complexity, the description covers the essential behavior: supported clients, ops, call shape, and compatibility. An output schema exists, so the lack of return-value details is not a gap. The description is sufficient for an agent to correctly select and invoke the tool.

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

Parameters4/5

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

The schema has 0% description coverage, so the description must compensate. It effectively explains the 'op' enum via the Ops list, describes the 'params' object shape (including that 'client' is an id from status()), and clarifies the flat-parameters compatibility alias and top-level 'session_id'. This is strong parameter semantics despite no schema descriptions.

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

Purpose5/5

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

The description states a specific verb ('Configure') and resource ('AI clients... Godot AI MCP server'), and enumerates supported clients. The 'Ops' section further clarifies the distinct actions (status, configure, remove), making it easily distinguishable from sibling tools like editor_manage or scene_manage.

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

Usage Guidelines4/5

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

The description clearly indicates that the tool is for managing client config files and provides usage context for each op (status, configure, remove). It does not explicitly name alternatives or exclusions, but the purpose is so specific that usage intent is unambiguous. The canonical call shape and compatibility alias are also helpful guidance.

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

cloud_manageA

Cloud Bridge and ChatGPT Tunnel Management.

Ops:

  • get_tunnel_status() Check cloud tunnel and REST gateway operational status.

  • get_action_schema_url(host="http://127.0.0.1:8000") Get OpenAPI schema URL and setup instructions for ChatGPT Custom GPT.

  • test_cloud_connection() Test round-trip responsiveness between Godot editor and gateway.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations supplied, the description carries the behavioral disclosure burden; it does identify the operations as status/get/test interactions and documents the canonical call shape plus the flat-parameter compatibility alias. It does not mention side effects, authentication needs, or failure behavior, so transparency is only partial.

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

Conciseness5/5

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

The description is well-structured: a short title line, three scannable bullets, and a final call-shape note, with no filler or repetition. Formatting and backticks make the canonical call shape immediately visible.

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 three-op dispatcher with an output schema available, the description is largely adequate: it gives the operation inventory, intended use of each op, and the exact call envelope. The main gaps are usage boundaries and session_id semantics, but the specialized scope keeps the tool recognizable and callable.

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

Parameters2/5

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

The schema has 0% description coverage, and the description partially compensates by naming the op values, showing a host default for get_action_schema_url, and clarifying that op/session_id remain top-level. However, the purpose of session_id and the expected contents of params per op are left unexplained, and the host argument shown in the description is not reflected as a top-level property in the schema.

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

Purpose5/5

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

The description opens with a concrete domain ('Cloud Bridge and ChatGPT Tunnel Management') and enumerates three specific operations with one-line explanations, so an agent immediately knows this tool is for cloud connectivity and tunnel/REST gateway status. It is easily distinguishable from the many *_manage siblings because no other sibling covers cloud tunnel or ChatGPT gateway setup.

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?

Each bullet implies a distinct use case: check status, get schema URL/setup instructions, or test connectivity. However, there are no explicit conditions, prerequisites, or statements about when not to use this tool versus alternatives such as network_manage or session_manage.

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

compute_manageA

GPU Compute Shaders, RenderingDevice Uniform Buffers, and GPU Pipeline Execution.

Ops:

  • create_shader(shader_path="res://shaders/compute_example.glsl", code="") Create a GLSL compute shader template file.

  • get_device_info() Inspect RenderingDevice capabilities, workgroup limits, and driver version.

  • run_compute(shader_path, input_buffer=[...], x_groups=1, y_groups=1, z_groups=1) Compile and dispatch a compute pipeline on the GPU and read back output data.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of disclosure. It does disclose per-operation behavior: creating a shader template file, inspecting device capabilities, and compiling/dispatching a compute pipeline with read-back. It does not discuss failure modes, overwrite behavior, or resource cleanup, but the core effects of each op are clear.

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

Conciseness5/5

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

The description is front-loaded with the domain, then a compact bullet list of operations, followed by a single necessary call-shape note. Every line earns its place, with no filler or tautology.

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 dispatcher-style tool with three operations and no annotations, the description covers invocation shape, operation names, and per-op behavior; an output schema exists so return-value details need not be repeated. It still omits prerequisites and precise input_buffer semantics, but is reasonably complete for selecting and invoking the tool.

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

Parameters4/5

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

Schema description coverage is 0%, and the description compensates by providing op-specific parameter names, defaults, and brief purpose (e.g., shader_path, code, input_buffer, x/y/z_groups). It leaves exact buffer element types and input_buffer format implicit, but adds meaning that the generic params object cannot.

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 identifies a specific domain ('GPU Compute Shaders, RenderingDevice Uniform Buffers, and GPU Pipeline Execution') and lists three operations with clear verbs: create_shader, get_device_info, and run_compute. It does not explicitly differentiate from sibling tools like shader_manage or rendering_manage, but the resource scope is unmistakable.

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 header and operation list imply this tool is for GPU compute and RenderingDevice workflows, and the canonical call shape explains how to invoke it. However, there is no explicit 'use this instead of X' guidance or exclusions relative to the many shader/rendering sibling tools, so routing is left mostly to inference.

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

config_manageA

ConfigFile, JSON, and Expression Utilities.

Ops:

  • config_read(file_path, section="", key="") Read values or entire sections from an INI ConfigFile.

  • config_write(file_path, section, key, value) Write a section and key value into an INI ConfigFile.

  • json_parse(json_string) Parse a JSON string into Godot Variant data structure.

  • json_generate(data, indent="") Serialize data into a formatted JSON string.

  • expression_eval(expression_string, input_names=[], input_values=[]) Evaluate a mathematical or logic expression via Godot Expression.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It describes the primary effect of each operation, including that config_write writes a section/key/value into an INI file and json_generate serializes data. However, it does not disclose side effects like overwriting behavior, failure modes, or permission requirements.

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

Conciseness5/5

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

The description is compact and well-organized: a one-line domain summary, a bulleted list of operations with signatures, and a final call-shape contract. Every section earns its place, with no filler or redundancy.

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

Completeness4/5

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

For a multi-operation tool with an opaque generic schema, the description provides the complete catalog of operations, their parameter signatures, and the canonical call shape. The presence of an output schema covers return-value details. Minor gaps remain around expression syntax and whether writes overwrite existing values, but the description is sufficient for selection and invocation.

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

Parameters4/5

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

Schema description coverage is 0%, but the description compensates by enumerating every operation's parameters with names, defaults, and brief semantic context, e.g., file_path, section, key, value and expression_string with input_names/input_values. It lacks detailed type/format specs, but the signatures add significant meaning beyond the generic op/params/session_id schema.

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

Purpose5/5

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

The description opens with a domain summary ('ConfigFile, JSON, and Expression Utilities') and then lists five specific operations, each with a clear verb and resource: read/write INI ConfigFile, parse/generate JSON, and evaluate expressions. This makes the tool's purpose specific and distinguishes it from the many *_manage sibling tools by scope.

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

Usage Guidelines4/5

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

The op list provides clear routing between the five operations: use config_read/config_write for INI, json_parse/json_generate for JSON, and expression_eval for expressions. It does not explicitly state when not to use this tool or compare against siblings, but the internal usage context is strong.

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

crypto_manageA

Cryptographic Operations, File/String Checksums, Random Tokens, RSA, and X509 Certificates.

Ops:

  • hash_file(file_path, algorithm="sha256") Compute checksum digest of a project file (sha256, sha1, md5).

  • hash_string(content, algorithm="sha256") Compute checksum digest of a string (sha256, sha1, md5).

  • generate_random_bytes(size=32, format="hex") Generate cryptographically secure random bytes (hex or base64).

  • generate_rsa_key(key_size=2048, save_path="") Generate and optionally save an RSA private key.

  • generate_self_signed_cert(key_path="", cert_save_path="", common_name="localhost", issuer_name="GodotMCP") Generate a self-signed X509 certificate.

  • hmac_digest(key, message, algorithm="sha256") Compute HMAC authentication digest.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses some side effects, such as optionally saving an RSA key or certificate, and clarifies the canonical call shape with top-level op and session_id. However, it does not explain overwrite behavior, default save paths, permission needs, or what happens when save_path is empty, which leaves meaningful behavioral gaps.

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 long but highly structured: a high-level summary, a bullet list of operation signatures with one-line explanations, and a call-shape note. Each entry earns its place, though the repetitive 'generate_*' signatures could arguably be tightened slightly.

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

Completeness4/5

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

Given that a tool must dispatch six distinct cryptographic operations, the description covers operation selection, signatures, defaults, and call format. It does not document session_id semantics or return value details, but the presence of an output schema reduces the burden for return-value explanation. Overall, an agent has enough to invoke the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates thoroughly: every operation lists its parameters, defaults, and accepted values (e.g., algorithms 'sha256', 'sha1', 'md5', output formats 'hex' or 'base64'). It also explains how the generic params object maps to specific operation arguments, which goes far beyond the bare input schema.

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

Purpose5/5

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

The description opens with a specific resource class ('Cryptographic Operations, File/String Checksums, Random Tokens, RSA, and X509 Certificates') and then enumerates six concrete operations with distinct verbs. This makes the tool's scope unambiguous and clearly differentiates it from the many other *_manage sibling tools.

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

Usage Guidelines4/5

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

The operation list gives clear context for when to use the tool: hashing files/strings, generating random bytes, creating RSA keys, generating certificates, and computing HMACs. It does not explicitly name alternatives or exclusions, but for a tool with no close siblings, the enumerated operations themselves provide adequate usage direction.

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

csg_manageA

CSG authoring (create boolean shapes, set their operation).

Create CSG shapes (box, sphere, cylinder, torus, polygon) under a Node3D parent in the currently edited scene and set their boolean operation (union / intersection / subtraction) so geometry like holes, caves and tunnels can be carved directly in the editor. All write ops are undoable via EditorUndoRedoManager. Sibling CSG shapes under the same parent combine automatically; use a CSGCombiner3D parent for explicit grouping. Size, position and material live on the created node — set them with node_set_property / material_manage after creation.

Ops: • csg_create(parent_path, name="", shape="box", operation="union") Create a CSG shape under a Node3D parent (empty parent_path = scene root). shape: box | sphere | cylinder | torus | polygon. operation: union | intersection | subtraction. Returns: {path, name, shape, operation}

• csg_set_operation(path, operation) Set the boolean operation of a CSG shape. operation: union | intersection | subtraction. Returns: {operation}

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the disclosure burden. It reveals that all write ops are undoable via EditorUndoRedoManager, and that sibling CSG shapes auto-combine—useful behavioral context beyond the basic operation. It could mention error cases, but current disclosures are solid.

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 well-structured with a one-liner summary, a detailed explanatory paragraph, and clearly formatted op bullets. It is slightly longer than necessary but every sentence adds value.

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

Completeness5/5

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

The description covers operation semantics, parameter details, return values, undo behavior, grouping constraints, and property handling. Given the tool's two-OP scope, this is fully sufficient for an agent to select and invoke correctly.

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

Parameters5/5

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

The input schema is generic (op/params/session_id) with 0% coverage of inner parameters. The description fully documents both ops: parameter names, defaults, enums, and return values, providing complete semantic meaning.

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

Purpose5/5

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

The description opens with 'CSG authoring' and clearly states it creates boolean shapes and sets their operations. It specifies resource types (box, sphere, cylinder, etc.) and differentiates from sibling tools like node_create by focusing on CSG-specific behavior.

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

Usage Guidelines4/5

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

The description explains the use case (carving holes/caves/tunnels in the editor) and gives guidance on grouping with CSGCombiner3D. It also directs users to node_set_property/material_manage for post-creation edits, but does not explicitly state when not to use this tool.

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

curve_manageA

Curve (1D, 2D, 3D), Splines, Gradients, and Color Ramps Management.

Ops:

  • create_curve_1d(points=[[0.0, 0.0], [1.0, 1.0]], min_value=0.0, max_value=1.0, save_path="") Create a 1D interpolation/easing Curve resource.

  • create_curve_2d(points=[[0.0, 0.0], [100.0, 100.0]], in_tangents=[], out_tangents=[], save_path="") Create a 2D bezier spline Curve2D resource for paths and animation.

  • create_curve_3d(points=[[0.0, 0.0, 0.0], [0.0, 5.0, 10.0]], in_tangents=[], out_tangents=[], save_path="") Create a 3D bezier spline Curve3D resource for 3D paths and rail movement.

  • create_gradient(offsets=[0.0, 1.0], colors=["#000000", "#ffffff"], save_path="") Create a multi-stop color ramp Gradient resource.

  • create_gradient_texture(gradient_path="", width=256, is_2d=False, height=256, save_path="") Create a GradientTexture1D or GradientTexture2D resource.

  • sample_curve(curve_path, offset=0.5) Sample value or baked position on a Curve resource.

  • sample_gradient(gradient_path, offset=0.5) Sample RGBA color on a Gradient resource.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It discloses the canonical call shape and the flat-parameter compatibility alias, plus the create/sample semantics of each operation. However, it does not disclose side effects such as whether save_path persists files, overwrites existing resources, or whether creation requires a project context.

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

Conciseness5/5

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

The description is long but highly structured: the domain is front-loaded, operations are grouped under 'Ops', and each bullet follows a consistent pattern with signature, defaults, and purpose. The final canonical call shape is valuable and earns its place; there is no filler or repetition of schema-only information.

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

Completeness4/5

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

For a multi-operation tool with seven sub-ops and no schema-level parameter documentation, the description is remarkably complete: every operation is documented with its parameters and intended use. The main gap is that save_path semantics and file-system behavior are left implicit, and return values are not described, though an output schema is indicated.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by documenting every operation's parameters with defaults and examples, such as points=[[0.0, 0.0], [1.0, 1.0]], in_tangents=[], colors=['#000000', '#ffffff'], and offset=0.5. It also clarifies the top-level params object structure and flat-parameter compatibility alias.

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

Purpose4/5

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

The description clearly identifies the tool's domain: curves, splines, gradients, and color ramps, and immediately enumerates concrete operations like create_curve_1d, create_curve_2d, and sample_gradient. It is specific about resources and verbs, though it does not explicitly differentiate itself from sibling management tools such as resource_manage or texture_manage.

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

Usage Guidelines4/5

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

Each operation gets a context and intended purpose: create_curve_2d is 'for paths and animation', create_curve_3d is 'for 3D paths and rail movement', and sample_gradient says it samples 'RGBA color'. This provides clear internal selection guidance, but the description does not state when to prefer this tool over a sibling tool or list exclusions.

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

custom_manageA

List or invoke custom tools registered by third-party addons.

Active session only. Use op="list" to discover registered tools. op="invoke" requires params: tool_name (string); optional: params (dict, forwarded to the addon handler unvalidated — shape per the tool's params_schema from op="list"). Inside batch_execute, address a custom tool as "custom_tool:" (deferred tools cannot run in batches). Some custom tools are also registered first-class as "custom_" with their own schema — prefer those when present.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full disclosure burden and does well: it reveals session-only scoping, that params are 'forwarded unvalidated' to the addon handler, batch incompatibility for deferred tools, and the flat-parameter compatibility alias. It stops short of covering error behavior for an unknown tool_name, a minor gap given the dynamic nature of the tools.

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

Conciseness4/5

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

The purpose is front-loaded and every paragraph earns its place (op semantics, batch interaction, alternative routing, call-shape alias). It is dense but not padded; the only minor inefficiency is repeating 'custom' terminology across closely-packed paragraphs that could be slightly tightened.

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 complex, dynamic tool with no annotations and zero schema coverage, the description covers purpose, both operations, parameter shape, batching constraints, alternative first-class registration, and call format. An output schema exists, so return-value omission is excused. It falls just short of perfect only by not describing failure modes for invalid tool names or session handling.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate — and it does thoroughly. It explains the meaning of each op enum value, specifies that op='invoke' requires a tool_name string plus an optional params dict whose shape follows the params_schema returned by op='list', and even provides the canonical JSON call shape. This adds far more meaning than the bare schema.

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

Purpose5/5

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

The first line, 'List or invoke custom tools registered by third-party addons,' pairs specific verbs (list/invoke) with a specific resource (custom tools from third-party addons), unambiguously distinguishing it from the many sibling *_manage tools. The purpose is concrete and immediately usable.

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

Usage Guidelines5/5

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

The description gives explicit routing guidance: state when to use it, and name the alternative — 'Some custom tools are also registered first-class as custom_<name> with their own schema — prefer those when present.' It also sets preconditions ('Active session only') and constraints for the sibling batch_execute (deferred tools cannot run in batches).

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

dialogue_manageA

Dialogue and Narrative System Management.

Ops: • scaffold_system(name="DialogueManager", script_path="res://scripts/dialogue_manager.gd", scene_path="res://scenes/dialogue_box.tscn", register_autoload=True, typewriter_speed=0.03) Scaffold a complete dialogue manager singleton and UI box with typewriter animation, BBCode rich text, continue indicator, branching choice buttons, and event signals (dialogue_started, line_displayed, choice_selected, dialogue_ended).

• create_dialogue(path="res://dialogues/dialogue.json", dialogue_id="intro_conversation", nodes={}, overwrite=False) Create a structured branching dialogue graph with speakers, text lines, choice options, and next-node pointers.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It does disclose substantial behavior (autoload registration, generated UI features, event signals, and overwrite=False), but it never explicitly warns that scaffold_system writes/overwrites project files or modifies project settings, nor does it explain failure/error behavior. This leaves a meaningful transparency gap for a potentially destructive scaffolding operation.

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

Conciseness4/5

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

The description is organized with a short header and two bullet-style operation signatures, making the two dispatch modes easy to scan. The final canonical-call-shape note is useful but adds length; overall it is appropriately sized and front-loaded, though slightly feature-list-heavy.

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 a multi-operation dispatcher with an opaque params schema and no annotations, the description covers the main operations and call shape well. However, it omits per-operation requirements/validation, the expected structure of nodes, and explicit side-effect warnings, so an agent may still need to infer important details before invoking it correctly.

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

Parameters4/5

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

Input schema coverage is 0% and params is only a generic object, so the description is the only place parameter meaning lives. It provides per-op signatures with defaults and describes the entities involved (e.g., script_path, scene_path, register_autoload, typewriter_speed, nodes, overwrite). It does not fully specify the nodes object structure or the optional session_id field, but it compensates well for the schema's emptiness.

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

Purpose5/5

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

The description states a clear purpose ('Dialogue and Narrative System Management') and enumerates two concrete operations: scaffolding a complete dialogue manager/UI box and creating a branching dialogue graph. These specifics distinguish it from sibling management tools and give an agent a reliable sense of the resource and actions involved.

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 operation-level descriptions imply when the tool is appropriate: scaffold_system for setting up a new dialogue manager UI/singleton, and create_dialogue for authoring a branching dialogue graph. However, there is no explicit guidance about prerequisites, exclusions, or when to prefer alternative sibling tools such as script_manage or node_manage.

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

display_manageA

DisplayServer Configuration, Window Controls, and SubWindow Scaffolding.

Ops:

  • set_mode(mode="windowed", borderless=None, always_on_top=None) Set window mode (windowed, fullscreen, exclusive_fullscreen, maximized, minimized).

  • get_display_info() Read active screen dimensions, window geometry, refresh rate, VSync, and mouse mode.

  • set_window_rect(size=None, position=None) Resize and reposition the active window.

  • set_vsync(vsync_mode="enabled") Configure VSync (disabled, enabled, adaptive, mailbox).

  • set_mouse_mode(mouse_mode="visible") Set mouse capture mode (visible, hidden, captured, confined, confined_hidden).

  • scaffold_subwindow(parent_path="", window_type="Window", name="SubWindow", title="Window", size=[400, 300], transient=true, exclusive=false) Scaffold a Window, AcceptDialog, or ConfirmationDialog in the scene.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosing behavior. It does state what each operation reads or modifies, including allowed values and defaults (e.g. set_mode window modes, VSync modes, mouse modes). It does not disclose side effects, reversibility, permissions, or platform constraints for these mutating display/window operations, which is a notable gap for an unannotated configuration tool.

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

Conciseness5/5

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

The description is well structured: a brief header, a compact bulleted op list with signatures and defaults, and a short canonical-call note. Every line is informative and earns its place; there is no filler or redundant restatement of the tool name.

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

Completeness4/5

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

For a multi-operation tool with an output schema and minimal input schema coverage, the description is largely complete: it covers all six operations, their parameters, and the expected call envelope. It does not explain error conditions or clarify relationships to sibling tools, but the provided output schema removes the need to describe return values in detail.

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

Parameters5/5

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

The input schema gives almost no parameter semantics: params is a free-form object with 0% schema coverage. The description fully compensates by documenting every operation's sub-parameters, defaults, and accepted enum values, along with the canonical call shape. This is exactly the kind of semantic detail the schema is missing.

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

Purpose4/5

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

The description opens with a clear resource scope ('DisplayServer Configuration, Window Controls, and SubWindow Scaffolding') and enumerates six concrete operations, making the tool's purpose unmistakable. It is less explicit about how it differs from closely related siblings like viewport_manage or rendering_manage, so it loses one point.

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

Usage Guidelines3/5

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

Usage guidance is implied through the op list: an agent can infer that window/display configuration goes here and subwindow scaffolding also goes here. However, there is no explicit statement of when to choose this over alternatives, nor any exclusions or 'use X instead' guidance, leaving some routing decisions to inference.

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

editor_manageA

Editor selection, performance monitors, quit, log clearing, game eval.

Resource forms (prefer for active-session reads): godot://editor/state, godot://selection/current, godot://performance

Ops: • state() Editor version, project name, current scene, readiness, play state. • selection_get() Currently selected node paths in the editor. • selection_set(paths) Replace the selection with the given list of scene paths. • monitors_get(monitors=None) Performance singleton values (FPS, memory, draw calls, etc.). Pass a list of monitor names to filter; None returns everything. • quit() Gracefully quit the Godot editor on next frame. • logs_clear(clear_debugger_errors=False) Clear the MCP log buffer. Returns cleared_count. Pass clear_debugger_errors=True to also clear the Debugger dock's visible Errors-tab rows (user-facing UI, so opt-in only); the response then includes debugger_errors_cleared. • eval(code, mode="auto", inputs={}) Execute arbitrary GDScript directly in the Godot Editor process with full permissions. • execute_script(code="", path="", inputs={}) Execute a script file or inline GDScript code in the Godot Editor process. • game_eval(code) Execute GDScript in the running game with return values. Uses 'await' so user code can await internally. Errors return fast and actionable: EVAL_COMPILE_ERROR for a syntax/parse error, EVAL_RUNTIME_ERROR (with the real message + line) for a runtime error; EVAL_GAME_NOT_READY if the game can't service evals — still launching (retry once it's up), the _mcp_game_helper autoload is missing/disabled, its main loop is not advancing (focus the game), or its debugger session closed; EVAL_HUNG for a live game's genuine infinite loop / never-firing await; EVAL_RESULT_TOO_LARGE if the returned value serializes past the debugger channel's capacity (return a smaller slice).

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and excels. It discloses side effects (quit() 'Gracefully quit the Godot editor on next frame'), permission implications (eval 'Execute arbitrary GDScript directly... with full permissions'), and error semantics for game_eval (detailed EVAL_* codes with conditions). The canonical call shape is also explained. This is exemplary transparency.

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 long but well-organized: a summary line, a resource-forms note, then a bulleted list of ops with precise details. It is front-loaded with the summary and each line serves a purpose. Slight redundancy in the canonical call shape could be trimmed, but overall structure is effective.

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

Completeness5/5

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

For a complex tool with nine operations, the description covers everything an agent needs: parameter formats, return values (e.g., logs_clear returns cleared_count), error codes with actionable resolutions, and the call shape. It also notes output schema exists, so return structure is not missing. No gaps are apparent for correct usage.

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

Parameters5/5

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

The input schema only provides op as an enum and params as a free-form object, with 0% schema description coverage. The description compensates fully by explaining each operation's parameters (e.g., monitors_get with optional list, logs_clear with clear_debugger_errors, eval with code/mode/inputs). This adds meaning far beyond the schema, making it essential for correct invocation.

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

Purpose4/5

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

The description opens with a concise summary of the tool's scope: 'Editor selection, performance monitors, quit, log clearing, game eval.' It then enumerates specific operations, making it clear that this is a multi-purpose editor management tool. It does not present a single verb+resource, but the list of ops is unambiguous and differentiates from sibling tools like editor_state and logs_read by covering a broader set of editor actions.

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 internal guidance: it suggests preferring resource forms (godot://editor/state, etc.) for active-session reads, and explains when to use the opt-in flag for logs_clear. However, it does not explicitly contrast editor_manage with sibling tools or state conditions for choosing this tool over others. It gives usage context for specific ops but not cross-tool comparisons.

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

editor_reload_pluginA

Reload the Godot editor plugin.

Disables and re-enables the plugin on the next frame. The response shape depends on whether this MCP server was spawned by the plugin or launched externally:

  • Plugin-managed (default install): returns a pre-flight ack {status: "reload_initiated", transport_will_drop: true, old_session_id, guidance} immediately. The reload kills this server, so the WebSocket transport drops; reconnect and call session_manage(op="list") to find the new session_id.

  • Externally launched (e.g. python -m godot_ai --transport streamable-http --port 8000 --reload): waits for the new session to register and returns {status: "reloaded", old_session_id, new_session_id}. If the old bridge disappears and no replacement registers within 90 seconds, raises PLUGIN_DISCONNECTED with data.reason == "reload_timeout" and recovery diagnostics.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral disclosure burden. It openly states that a plugin-managed reload kills the server, drops the WebSocket transport, requires reconnect and session lookup, can time out after 90 seconds, and returns recovery diagnostics.

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 longer than average but earns its length: it is front-loaded with a one-line purpose and then organized into clear bulleted modes. Every sentence conveys necessary operational detail, and the structure makes conditional behavior easy to parse.

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 high complexity and the absence of annotations, the description is remarkably complete: it covers both execution contexts, response shapes, timeout behavior, error semantics, and recovery steps. Nothing meaningful is missing for an agent to call and handle the result correctly.

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

Parameters3/5

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

The single parameter session_id is already 100% covered by the schema, including its default and empty-means-active semantics. The description adds no additional parameter detail, but none is needed because the schema fully documents the parameter.

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

Purpose5/5

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

States a specific verb and resource ('Reload the Godot editor plugin') and immediately defines the concrete behavior: disables and re-enables the plugin on the next frame. The two-mode breakdown further differentiates this from sibling maintenance tools.

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

Usage Guidelines4/5

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

Provides very clear execution context by explaining both launch modes and the expected response in each, which effectively tells an agent when this tool is appropriate. It does not explicitly name alternatives or exclusions, but the modal detail makes selection unambiguous.

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

editor_screenshotA

Capture a screenshot of the Godot editor viewport or running game.

Picking a source: the default "viewport" captures the editor's 3D viewport, which is empty if the edited scene has no Node3D anywhere in the tree (or no scene is open). Those cases return EDITOR_NOT_READY with error.data = {editor_state: "viewport_not_3d", scene_root_type} and an actionable error.message — switch to "cinematic" if the scene has a Camera3D, or open a scene with 3D content.

Sources:

  • "viewport" (default): editor 3D viewport. Requires Node3D content in the edited scene (root or any descendant); see above for the no-3D-content / no-scene error shape.

  • "viewport_2d": editor 2D viewport. Use for 2D scenes. Not compatible with view_target/coverage/elevation/azimuth/fov.

  • "cinematic": render edited scene through its active Camera3D (no editor gizmos). Prefers a Camera3D marked current; falls back to the first Camera3D found in a depth-first walk. NODE_NOT_FOUND only when the scene contains no Camera3D at all.

  • "game": running game's framebuffer (only when project is running). A backgrounded/minimized game window freezes its main loop; the capture then returns the last rendered frame with stale_frame: true and a note in the metadata — focus the game window and retry for a current frame. GAME_HELPER_TIMEOUT means the game process never replied at all (nothing rendered yet, main thread blocked, or helper dead) — focus the window and retry, or use game_command to confirm liveness.

include_image=True (default) returns an MCP ImageContent block. view_target (comma-separated Node3D paths) reframes editor camera; AABB metadata always returned. coverage=True with view_target captures perspective + orthographic top-down references.

ParametersJSON Schema
NameRequiredDescriptionDefault
fovNoCamera FOV in degrees. Tight 20-30 = zoom; 60-75 = context.
sourceNo"viewport" | "viewport_2d" | "cinematic" | "game". Default "viewport".viewport
azimuthNoCamera azimuth in degrees (0=front, 90=right).
coverageNoWith view_target, capture two reference shots + AABB.
elevationNoCamera elevation in degrees (0=level, 90=overhead).
session_idNoOptional Godot session to target. Empty = active session.
user_promptNoOptional context from the agent that requested the capture. With Vision Routing enabled it is sent alongside the image so the vision model can describe what the agent is looking for.
view_targetNoNode3D scene path(s) to frame, comma-separated.
include_imageNoReturn image data. Default True.
max_resolutionNoLongest-edge resolution. Default 640. 0 = full res.

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries full burden and excels: it documents error shapes (EDITOR_NOT_READY, NODE_NOT_FOUND, GAME_HELPER_TIMEOUT), the stale_frame note for backgrounded games, camera selection fallback for cinematic, and return behaviors like include_image and AABB metadata.

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 structured with a lead sentence, a guidance paragraph, a bulleted source list, and a closing note on parameters. Each section earns its place; the length is justified by the tool's four modes and ten parameters.

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 no output schema, the description explains what callers receive (MCP ImageContent, AABB metadata, error data) and covers edge cases (no scene, no 3D content, no Camera3D, game not running, backgrounded game). It is fully actionable.

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

Parameters5/5

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

Even though schema coverage is 100%, the description adds significant meaning: it explains that view_target takes comma-separated Node3D paths and reframes the editor camera, that coverage=True captures perspective + orthographic top-down references alongside AABB, and clarifies the behavior of include_image and default source.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Capture a screenshot of the Godot editor viewport or running game.' It clearly delineates four sources and is distinct from any sibling tool, so purpose is unambiguous.

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

Usage Guidelines5/5

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

It provides explicit source-selection guidance: default 'viewport' requires Node3D content, 'viewport_2d' for 2D scenes, 'cinematic' requires a Camera3D, and 'game' requires a running project. It also gives exclusionary constraints, e.g., 'viewport_2d' is 'Not compatible with view_target/coverage/elevation/azimuth/fov.' and advises switching to 'cinematic' under specific conditions.

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

editor_settings_manageA

Editor Settings and Configuration Management.

Ops:

  • get_setting(setting_name) Get an editor setting value by its configuration key path.

  • set_setting(setting_name, value) Set an editor setting value.

  • list_settings(prefix="") List available editor setting key paths matching an optional prefix.

  • get_editor_paths() Get standard Godot editor directory paths from EditorPaths.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains what each operation does (e.g., 'Set an editor setting value'), but does not mention side effects, persistence, permissions, or error behavior. It does note the canonical call shape and compatibility alias, which is a minor behavioral detail, but overall it provides minimal transparency beyond the basic action.

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 structured as a compact list of operations with one-line explanations, front-loaded with a clear purpose. It also includes the canonical call shape in a single sentence, keeping the whole description terse and scannable.

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

Completeness4/5

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

The description covers all operations, their parameters, and the call format, which is sufficient for a multi-op tool. It omits explicit usage guidelines, but the operations are self-explanatory, and an output schema exists to define returns. Thus it's mostly complete.

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

Parameters5/5

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

The description explicitly names and defines parameters for each operation (e.g., 'get_setting(setting_name)', 'set_setting(setting_name, value)', 'list_settings(prefix="")'), which directly compensates for the schema's generic 'params' field. Since schema coverage is 0%, this descriptive detail is essential and well-provided.

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

Purpose5/5

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

The description clearly states the tool's purpose as 'Editor Settings and Configuration Management' and then enumerates four specific operations (get_setting, set_setting, list_settings, get_editor_paths), each with a clear verb and resource. This specificity distinguishes it from the many sibling *_manage tools, though it doesn't explicitly name 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 does not provide explicit guidance on when to use this tool versus other configuration or editor management tools. It implies usage through the listed operations, but lacks any conditional or alternative references, so an agent may not know if it should use this or a similar tool like config_manage.

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

editor_stateA

Get current Godot editor state: version, readiness, open scene, play state.

Resource form: godot://editor/state — prefer for active-session reads. Also reachable as editor_manage(op="state") (same handler) for clients that prefer a single rolled-up tool.

Code-mode MCP adapters keep the server and tool names separate: call('godot-ai', 'editor_state', {}). Never pass a server-prefixed tool name such as godot-ai/get_editor_state; that is neither the adapter's call signature nor a registered tool. For dedicated current- scene data, use readResource('godot-ai', 'godot://scene/current').

Side effect: refreshes the server's session readiness cache from the live editor reply. Useful as a recovery step after a write call is rejected as EDITOR_NOT_READY (state=playing) when you already know the game has stopped — calling editor_state once syncs the cache and the next write proceeds. Issue #262.

Response includes game_status for authoritative game liveness, plus helper_live (status == "live") and session_active (status not in {"not_live", "stopped"}) mirrored from the same fields inside game_status. is_playing remains raw editor play-state; use game_status.status for liveness decisions. game_status.status="break" means the game process is parked in a remote-debugger break (boot-time parse errors do this before the game helper registers); it will not resume on its own — call project_manage(op="stop").

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description fully discloses the side effect (refreshes session readiness cache), the non-mutating nature of the call, and nuanced field semantics like game_status.status='break' requiring a follow-up project_manage(op='stop'). No annotation contradictions.

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 long but extremely dense; every paragraph adds necessary operational details (resource form, adapter call conventions, side effect, field semantics). It is front-loaded with purpose and structured logically, though slightly longer than the minimum needed.

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?

Even with an output schema present, the description provides essential context the schema cannot: the resource form preference, cache-refresh side effect, adapter calling quirks, and the special 'break' state handling. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema coverage is 100% and the only parameter, session_id, is already well-documented in the schema ('Optional Godot session to target. Empty = active session.'). The description does not add further parameter guidance, but the schema fully covers it, so baseline 3 is appropriate.

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

Purpose5/5

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

The opening line states the verb ('Get'), the resource ('current Godot editor state'), and the key fields (version, readiness, open scene, play state). It clearly distinguishes from siblings like project_manage and scene_open by referencing the dedicated current-scene resource for that need.

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

Usage Guidelines5/5

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

The description explicitly says to prefer the resource form for active-session reads, names readResource('godot-ai', 'godot://scene/current') as the alternative for scene-only data, and gives a concrete recovery use case after EDITOR_NOT_READY. It also includes a 'never' instruction for server-prefixed tool names, so the agent knows exactly when and how to call this.

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

export_manageA

Project Export Automation, Presets Inspection, and Headless Game Builds.

Ops:

  • list_presets() List all configured platform export targets in export_presets.cfg.

  • get_preset_info(preset_name) Inspect detailed build settings and options for a specific preset.

  • run_export(preset_name, output_path="", debug=false) Execute a headless project export via Godot CLI.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden of disclosing behavior. It does disclose headless CLI execution and a debug flag, which is useful. However, it does not state whether run_export overwrites files, what artifacts it produces, what preconditions exist, or what failure modes look like.

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 bulleted operations are scannable, defaults are inline, and the call-shape note is a single focused paragraph. Every line adds useful information without filler or repetition.

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

Completeness4/5

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

For a three-operation tool with an output schema, the description covers every operation's parameters and invocation format. The main gaps are usage routing relative to siblings and run_export side effects, but the core calling contract is complete enough for an agent to invoke the tool correctly.

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

Parameters5/5

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

The input schema only exposes op, params, and session_id, with params as a free-form object. The description defines the exact per-operation signatures with defaults, including preset_name, output_path, and debug, and clarifies the canonical call shape plus the flat-parameter compatibility alias. This fully compensates for the 0% schema description coverage.

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

Purpose5/5

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

The opening line names the domain, and each listed operation uses a specific verb and resource: list_presets lists export targets, get_preset_info inspects preset settings, and run_export executes a headless Godot export. References to export_presets.cfg and the Godot CLI make it clearly distinguishable from broad sibling tools like project_manage.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no mention of alternative tools among the dozens of siblings such as project_run, project_manage, or pck_manage. The operations imply their own purpose, but the description does not help an agent choose this tool versus a sibling.

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

filesystem_manageA

Project filesystem access via the Godot editor's EditorFileSystem.

Ops: • read_text(path) Read a text file at a res:// path. Returns content, size, line_count. • write_text(path, content="") Create or overwrite a text file. Updates the editor filesystem entry for that one file (single-file update, not a full scan). Newly-created files include data.cleanup.rm for transient smoke tests; overwrite omits the field. • reimport(paths) Force-reimport the listed files via EditorFileSystem.update_file. paths is a list of res:// paths. Intended for imported assets such as textures, models, and audio. Paths that are not imported resources (.gd scripts, .tscn, hand-written .tres, or an asset the editor has not imported yet) report under skipped_non_imported rather than reimported: their filesystem entry is refreshed, but no import runs, so a success there is not evidence that a script parsed or that diagnostics were produced. Use script_patch/script_create to save a script and receive fresh diagnostics, or scan for an asset awaiting its first import. Returns reimported, skipped_non_imported, not_found and their counts. • list(path="res://", recursive=False, max_depth=1) Browse the project's res:// tree (files, sizes, UIDs, and directories). • delete(path) Delete a file or directory from the project along with its .uid and .import sidecars. • move(from_path, to_path) Move or rename a file in the project, keeping sidecars consistent. • scan() Force a full EditorFileSystem.scan() and wait for it to settle. This is the headless equivalent of the editor regaining window focus: write_text/script_create register single files but do NOT rebuild the global class_name table, so a freshly-created class_name MyThing extends Resource is invisible to resource_manage/type references until a scan runs. Call this once after adding class_name scripts when the editor isn't focused. Single-flight (awaits any in-progress scan rather than stacking another). Returns scan_completed and global_classes_registered_delta. • search(name="", type="", path="", offset=0, limit=100) Find files by name, resource type, or path substring. At least one filter must be set. Paginated. • download_and_import(url, dest="", path="", extract=False, filter="", reimport=True) Download an asset or archive, optionally unpack, configure filter ("nearest" for pixel art), and trigger Godot reimport and scan. • download_asset(url, path="", dest="", extract=False, filter="", reimport=True) Download an asset or zip archive from the internet directly into the Godot project (res:// path). If extract=True or archive is zip, extracts into target directory. Automatically triggers editor reimport and scan. Returns: {url, path, size_bytes, is_archive, extracted_files, filter_applied} • search_assets(query="", category="all", limit=20) Search curated free/CC0 game assets (tilesets, audio, textures, UI, 3D models). Categories: "all", "tileset", "audio", "texture", "ui". Returns matching assets with direct download URLs ready for download_asset.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries full responsibility for behavior disclosure. It is exceptionally transparent: it details side effects (write_text adds data.cleanup.rm for new files), scope of updates (single-file vs full scan), return structures, and caveats (reimport on non-imported resources does not prove parsing). It even explains the headless scan behavior and single-flight semantics. No behavioral traits are hidden.

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?

Although the description is long, it is well-structured: an opening summary, a bulleted list of operations with consistent formatting, and a closing note on call shape. Each sentence carries essential information—no filler. The information is front-loaded with the purpose, and the detailed operation blocks are logically ordered. The length is justified by the tool's multi-op nature.

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

Completeness5/5

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

The description is complete for a complex multi-op tool. It covers every operation's parameters, return values, side effects, and edge cases. It even addresses when a full scan is needed versus single-file updates, and how to interpret results (e.g., skipped_non_imported). Given that an output schema exists but the description provides per-op return details, nothing an agent needs to call it correctly is missing.

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

Parameters5/5

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

The schema coverage is 0% (no descriptions in schema), so the description must compensate. It does so comprehensively: each operation lists its parameters with types, defaults, and meaning (e.g., read_text(path), write_text(path, content=''), reimport(paths), list(path, recursive, max_depth)). It also describes the canonical call shape and accepts aliases. This fully bridges the gap left by the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Project filesystem access via the Godot editor's EditorFileSystem.' It lists specific operations (read, write, reimport, list, delete, move, scan, search, download, etc.) with a clear verb+resource structure. It distinguishes itself from sibling tools by focusing on the filesystem layer, and it names alternatives within the tool (e.g., script_patch/script_create for diagnostics).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use each operation and when to prefer alternatives. For example, reimport notes that non-imported resources are skipped and recommends script_patch/script_create for scripts, and scan for assets awaiting first import. It also explains when a full scan is necessary (after adding class_name scripts) versus single-file updates. This internal guidance helps agents choose correctly without external references.

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

font_manageA

Font and Label Styling Management.

Ops:

  • create_system_font(font_names=["Sans-Serif"], italic=False, weight=400, save_path="") Create a SystemFont resource and optionally save to disk.

  • create_font_variation(base_font_path, variation_embolden=0.0, save_path="") Create a FontVariation resource derived from a base font.

  • create_label_settings(font_path="", font_size=16, font_color="#ffffff", outline_size=0, outline_color="#000000", shadow_size=0, shadow_color="#000000", save_path="") Create a LabelSettings resource with font styling options.

  • get_font_info(font_path) Inspect metadata and properties of a font resource.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does describe core behaviors: create operations, 'optionally save to disk', derivation from a base font, and inspect-only behavior for get_font_info. However, it does not disclose editor-session side effects, persistence rules beyond save_path, overwrite behavior, error conditions, or what happens to resources not saved to disk.

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 scannable bullet list with no filler; each line presents an operation and its signature or a needed call-shape detail. The note about canonical call shape and flat-parameter compatibility is useful rather than redundant. The structure allows an agent to quickly locate the relevant operation.

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

Completeness4/5

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

Given the generic input schema and lack of annotations, the description supplies the essential operation catalog, parameter signatures, and invocation shape, and an output schema exists to document return values. The main gaps are the absence of tool-selection guidance against sibling tools and deeper behavioral caveats. An agent can still correctly select and invoke the documented operations, so this is above minimum viability but not fully complete.

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

Parameters4/5

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

Schema description coverage is 0% and the params object is generic free-form, so the description is the main source of parameter meaning. It provides full call signatures with defaults for every operation, conveying parameter names, optionality, and basic types. It stops short of explaining value domains such as weight ranges, variation_embolden scale, hex color format, or save_path behavior, so it is not a fully comprehensive reference.

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

Purpose5/5

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

The description opens with a clear domain statement and then enumerates four concrete operations, each with a specific verb and resource: 'Create a SystemFont resource', 'Create a FontVariation resource', 'Create a LabelSettings resource', and 'Inspect metadata and properties'. This makes it clear that font_manage handles font/label resource creation and inspection, distinguishing it from the many other *_manage sibling tools.

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

Usage Guidelines3/5

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

The title and operation list imply when the tool is relevant: creating or inspecting font and label styling resources. However, the description never explicitly tells the agent when to prefer font_manage over related tools like theme_manage, ui_manage, or resource_manage, and it gives no exclusions or alternative routing. This is clear implied usage, but not explicit guidance.

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

fsm_manageB

Finite State Machine (FSM) Management.

Ops: • scaffold_fsm(target_node_path="", name="StateMachine", script_dir="res://scripts/fsm/", preset="enemy_ai", custom_states=[], initial_state="") Scaffold a modular node-based finite state machine architecture with base State class and StateMachine controller. Presets: - 'enemy_ai': Idle, Patrol, Chase, Attack, Hurt, Dead states. - 'character': Idle, Move, Jump, Fall states. - 'custom': Generates scripts for names listed in custom_states. If target_node_path is specified, attaches the StateMachine and child State nodes directly to the target node in the active scene.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does disclose that files are scaffolded and that nodes are attached when target_node_path is set, which is meaningful. However, it does not mention side effects like potential file overwrites, directory creation, or whether an active scene is required, leaving important behavioral context unclear.

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 well-organized with a clear op listing, preset breakdown, and a canonical call shape note. It is compact and front-loaded with purpose, though the call-shape paragraph adds a bit of protocol detail that could be trimmed.

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 presence of an output schema reduces the need to explain return values, and the description covers the main scaffold behavior and presets. Still, initial_state is left unexplained, side effects are not fully disclosed, and there is no guidance about preconditions such as having an active scene or project context.

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

Parameters4/5

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

The input schema provides only a generic params object with 0% description coverage, so the description must compensate. It documents target_node_path, name, script_dir, preset, custom_states, and initial_state, and explains preset behavior and the effect of target_node_path. It still omits the meaning of initial_state, but it adds substantial parameter semantics beyond the schema.

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

Purpose4/5

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

The description clearly states a specific verb ('scaffold') and resource ('modular node-based finite state machine architecture'), and names concrete presets and outcomes. It does not explicitly contrast itself with sibling management tools, but the domain is unambiguous from the name and content.

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 implies when to use the tool by describing FSM scaffolding, but it gives no explicit guidance about when to choose this tool over alternatives, nor does it state prerequisites or exclusions. The conditional behavior about target_node_path is useful but is not usage guidance relative to sibling tools.

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

game_manageA

Runtime game inspection and input simulation.

These ops target the running game process through Godot's EngineDebugger bridge. Start the project first with project_run and poll editor_state until game_capture_ready=true.

Ops:

  • get_scene_tree(depth=10, root_path="") Inspect the running scene tree. root_path accepts an absolute runtime path or a scene-relative path rooted at the current scene.

  • get_node_info(path, include_properties=True) Inspect one running node's metadata and optional property snapshot.

  • get_ui_elements(root_path="", include_hidden=False, include_disabled=True, max_depth=10) Inspect visible runtime Control nodes for UI testing. Includes path, type, text where present, disabled state, and rect metadata.

  • suspend() Suspend the running game through Godot's native debugger path.

  • resume() Resume a suspended game. Idempotent when it is already running.

  • next_frame() Advance exactly one process tick while suspended. The response reports verification and any Embedded Game View focus handoff. Runtime-control mutations also report path="embed_signal" or "direct_session"; the direct fallback works without embedding but cannot synchronize the Game View suspend button's visual pressed state.

  • debug_status() Probe suspend state and the game-helper process tick counter through the debugger capture, including while SceneTree processing is suspended.

  • input_key(key, pressed=True, echo=False) Send a key press/release to the running game.

  • input_mouse(event, position=None, button="left", pressed=True) Send a mouse motion or button event. event: "motion" | "button". position is a {x, y} object or [x, y] array; omit it to use the game's current cursor position. A present but malformed position is rejected rather than silently falling back to the cursor.

  • input_gamepad(device=0, control="button", index=0, pressed=True, value=0.0) Send a joypad button or axis event. control: "button" | "axis".

  • input_action(action, pressed=True, strength=1.0) Set a project action's pressed state directly in the running game.

  • input_sequence(steps, settle_frames=0) Apply a frame-timed action timeline in one call — the frame-accurate, multi-step form of input_action. Each step is {at_frame, action, pressed=True, strength=1.0}; the game applies each step's action on its scheduled frame, awaits settle_frames more, then replies once. Use this instead of separate input_action calls whenever timing matters (jump arcs, combos, walk-into-trigger): per-call network latency makes hitting a target frame impossible otherwise. Steps must be ordered by non-decreasing at_frame; frames (not ms) are the timing basis. Action-based input is focus-independent, so it works on a backgrounded game window. Cannot run inside batch_execute.

  • simulate_input(action="", key="", duration=0.5, press=True, strength=1.0) Simulate hardware or action input with duration and automatic clean release. For actions, executes a timed sequence and releases after duration seconds.

  • input_state(actions=None) Read current action pressed states. Empty actions = all project actions.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers richly: resume is declared idempotent, next_frame advances exactly one tick with verification and embed_signal/direct_session response semantics, input_mouse rejects malformed positions instead of silently falling back, input_sequence is frame-timed with non-decreasing at_frame ordering and focus-independent action input, and simulate_input has automatic clean release. This is exemplary behavioral disclosure of side effects, timing, failure modes, and environmental dependencies.

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 long (~600 words) but earns its length for 14 operations, with each op presented as a compact signature plus only semantically important notes. Purpose is front-loaded and the prerequisite placement is logical. Two minor structural flaws: the canonical call shape — needed for every invocation — is buried at the end, and the ops block is dense enough to tax a quick scan.

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

Completeness4/5

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

Given no annotations and an open params object, the description covers prerequisites, per-op semantics, timing rules, environment constraints (batch_execute, embedding fallback, backgrounded-window support), and failure behaviors for all documented ops — essentially a full API manual. The material gap is the three undocumented enum ops, which an agent would discover from the schema but could not invoke correctly, and the absence of any mention of how playtest/simulate relate to the documented ops or siblings.

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

Parameters4/5

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

Schema coverage is 0% and params is an open object (additionalProperties: true), so the description is the only parameter documentation. It comprehensively details signatures and semantics for 14 ops: root_path path types, position as {x,y} or [x,y], control enum values, the input_sequence step schema with frame-based timing, and input_state's empty=all-actions rule. The gap: playtest, run_playtest_suite, and simulate appear in the op enum but have zero parameter documentation anywhere.

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 title 'Runtime game inspection and input simulation' plus the opening line names a specific target resource (the running game process via Godot's EngineDebugger bridge) and a clear verb set (inspect, simulate). This distills cleanly against siblings: scene_manage/node_manage handle static scene/node editing, project_run launches the game, and input_map_manage configures mappings — none cover runtime inspection and input simulation.

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

Usage Guidelines4/5

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

Explicit prerequisites are given ('Start the project first with project_run and poll editor_state until game_capture_ready=true'), and input_sequence gets an explicit when-to-use vs. input_action plus a when-not ('Cannot run inside batch_execute'). However, three ops in the op enum (playtest, run_playtest_suite, simulate) are undocumented, so an agent gets no guidance on when to choose them over the documented simulate_input or the sibling test_run.

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

geometry_manageA

Constructive 2D Solid Geometry and Procedural 3D Mesh Generation.

Ops:

  • polygon_boolean(operation="merge", poly_a=[...], poly_b=[...]) Perform 2D constructive solid polygon operations (merge, clip, intersect, exclude).

  • polygon_offset(polygon=[...], delta=5.0, join_type="square") Deflate or inflate a 2D polygon via Geometry2D.offset_polygon.

  • triangulate(polygon=[...]) Triangulate a 2D polygon into index arrays via Geometry2D.triangulate_polygon.

  • convex_hull(points=[...]) Compute the 2D convex hull wrapping an arbitrary point set.

  • scaffold_polygon_2d(parent_path="", points=[...], polygon_name="CustomPolygon", is_collision=False, color=[1.0, 1.0, 1.0, 1.0]) Instantiate and attach a Polygon2D or CollisionPolygon2D to the active scene.

  • generate_mesh(mesh_type="cube", size=[2.0, 2.0, 2.0], dest_path="", parent_path="") Generate a procedural 3D mesh via SurfaceTool (cube, plane, pyramid) and attach to scene or save.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the disclosure burden. It does reveal important side effects: scaffold_polygon_2d 'Instantiate and attach' to the active scene and generate_mesh 'attach to scene or save.' However, it does not mention whether the pure geometry ops (boolean, offset, triangulate, hull) have side effects, nor does it discuss permissions, reversibility, or failure modes. The compatibility-alias note is useful.

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 longer than average, but it is efficiently structured: a one-line summary followed by a compact op list with call signatures. Every line contributes. The canonical call shape note is important and not padding. It could be slightly tightened, but it earns its length.

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

Completeness4/5

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

For a tool with six operations and no annotations, the description covers all operation signatures, defaults, and key side effects. It does not explain prerequisites like requiring an active scene for scaffold/generate_mesh, and return values are not mentioned (though an output schema exists). Still, it is largely complete for an agent to invoke correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It does thoroughly: each op lists its parameters with defaults and expected inputs, e.g., polygon_boolean(operation='merge', poly_a=[...], poly_b=[...]), polygon_offset(polygon, delta, join_type), scaffold_polygon_2d(parent_path, points, polygon_name, is_collision, color). This is exactly the meaning the generic 'params' object in the schema lacks.

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

Purpose4/5

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

The description opens with a clear domain statement ('Constructive 2D Solid Geometry and Procedural 3D Mesh Generation') and then enumerates six specific operations with verbs like polygon_boolean, triangulate, and generate_mesh. This makes the tool's purpose and scope evident, and it distinguishes itself from sibling tools such as mesh_manage by focusing on geometry construction/procedural generation rather than asset management.

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 through the operation list and the canonical call shape, but it never explicitly states when to choose geometry_manage over alternatives, nor does it mention exclusions or when-not conditions. It provides call formatting guidance but not situational routing.

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

gi_manageB

Global Illumination, Decal Projections, and Lighting Probes Management.

Ops:

  • create_decal(parent_path="", name="Decal", size=[2.0, 2.0, 2.0], texture_albedo="") Create a Decal node under parent with optional albedo texture and dimensions.

  • configure_decal(node_path="", size=None, texture_albedo=None, texture_normal=None, texture_orm=None, emission_energy=None, upper_fade=None, lower_fade=None) Configure properties and PBR textures of an existing Decal node.

  • create_reflection_probe(parent_path="", name="ReflectionProbe", size=[20.0, 20.0, 20.0], update_mode="once") Create a ReflectionProbe node for local specular reflections.

  • create_voxel_gi(parent_path="", name="VoxelGI", size=[20.0, 20.0, 20.0], subdivide=1) Create a VoxelGI node for real-time indirect lighting and ambient bounce.

  • create_lightmap_gi(parent_path="", name="LightmapGI", bounces=3) Create a LightmapGI node for high-performance baked lighting.

  • get_gi_info(node_path="") Inspect properties and settings of a Decal, ReflectionProbe, VoxelGI, or LightmapGI.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for disclosing side effects, preconditions, and return behavior. It only gives terse one-line summaries like 'Create a Decal node' and 'Inspect properties', without mentioning requirements (e.g., an active scene), destructive potential, error handling, or what the output schema contains. This is insufficient for a mutation-heavy tool.

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

Conciseness4/5

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

The description is well-structured with a clear top-level purpose, bulleted operations, and a concise canonical call shape note. Each operation is one line plus a brief summary, avoiding fluff. The front-loaded purpose and operation list make it easy to scan. It earns high marks for efficiency, though the parameter lists add bulk.

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 (six ops, many parameters, no annotations, and an output schema not described), the description is not complete. It lacks return value details, error handling, preconditions, and example calls. While it covers the basic purpose of each op, an agent would need to inspect the output schema or experiment to understand behavior fully.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It lists parameters in the op signatures and gives partial explanations (e.g., create_decal's 'optional albedo texture and dimensions' hints at texture_albedo and size). However, many parameters like subdivide, update_mode, and bounces are not explained, and configure_decal's long parameter list lacks individual descriptions. The op-level summaries add some value but are not exhaustive.

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

Purpose5/5

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

The description clearly states the tool's domain ('Global Illumination, Decal Projections, and Lighting Probes Management') and enumerates each operation with a specific verb+resource pair (e.g., 'create_decal', 'configure_decal'). This distinguishes it from the many sibling *manage tools, which target different subsystems.

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 lists operations but provides no explicit guidance on when to choose this tool over alternatives. While the domain is self-evident, there is no mention of when not to use it or which sibling tool might be more appropriate for related tasks (e.g., light_manage for general lights). Usage is implied by the operation names but not explicitly scoped.

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

gridmap_manageA

GridMap authoring (set items, fill 3D regions, clear, read cells + library items).

All operations target GridMap nodes in the currently edited scene by scene-relative path (e.g. "/Main/Terrain"). All write ops are undoable via EditorUndoRedoManager.

item is the item id from the GridMap's MeshLibrary. Use gridmap_list_library_items to discover valid ids and names before placing cells (the 3D analogue of tileset atlas inspection). orientation is the GridMap baked rotation index (0..24).

Ops: • gridmap_set_item(path, item, map_x, map_y, map_z, orientation=0) Set a single cell item at (map_x, map_y, map_z). item=-1 erases. Returns: {map_x, map_y, map_z, item, orientation}

• gridmap_fill(path, item, rect_x, rect_y, rect_z, rect_w, rect_h, rect_d, orientation=0) Fill a rect_w × rect_h × rect_d region starting at (rect_x, rect_y, rect_z) with one item in a single undo action. Returns: {cells_filled, rect: {x, y, z, w, h, d}}

• gridmap_clear(path) Remove all cells from the GridMap. Returns: {cleared: true}

• gridmap_get_used_cells(path) Return all used cell coordinates. Returns: {cells: [{x, y, z}, ...], count: int}

• gridmap_list_library_items(path) List the MeshLibrary items available to the GridMap. Returns: {library, items: [{item, name, mesh}...], count: int}

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries full behavioral disclosure. It reveals that write operations are undoable via EditorUndoRedoManager, explains item=-1 erase semantics and orientation range 0..24, and specifies return structures for every operation. This is exemplary transparency.

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

Conciseness5/5

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

The description is well-structured with a summary, a 'Ops:' bulleted list, and a closing canonical call-shape note. Each sentence adds value, and the bullet format makes complex multi-operation details easy to scan.

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

Completeness5/5

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

The description covers all five sub-operations with parameters and returns, the call shape, scene targeting, and undo behavior. Given the tool's complexity and lack of annotations, this is fully complete for agent invocation.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by documenting every operation's parameters (path, item, map coordinates, rect dimensions, orientation) and giving semantic details like valid item discovery and orientation index meaning. It adds far more meaning than the sparse schema provides.

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

Purpose5/5

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

The description opens with 'GridMap authoring (set items, fill 3D regions, clear, read cells + library items)', naming specific verbs and a concrete resource (GridMap nodes). It distinguishes itself from sibling 2D tile/tileset tools by explicitly focusing on 3D GridMap operations.

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

Usage Guidelines4/5

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

The description clearly states that all operations target GridMap nodes in the currently edited scene by scene-relative path, and it recommends using gridmap_list_library_items before placing cells. It doesn't explicitly exclude alternative tools, but the '3D analogue of tileset atlas inspection' note gives contextual differentiation from sibling 2D tools.

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

headless_manageB

Standalone Headless Engine & CLI Management.

Ops:

  • run_script(script_path="", inline_code="") Execute a GDScript file or inline code snippet in headless mode.

  • run_headless_scene(scene_path, quit_after_frames=60) Execute a scene headlessly for testing or headless game simulation.

  • export_project_cli(preset, output_path, is_debug=False) Trigger a headless project export via Godot CLI preset.

  • reimport_assets_cli() Reimport modified assets via a headless editor pass.

  • get_engine_info() Inspect Godot engine version, platform, and headless CLI capabilities.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations are absent, so the description must carry the full burden. Each operation's one-liner implies some behavior: export_project_cli 'Triggers a headless project export'; reimport_assets_cli 'Reimport modified assets' – these hint at write effects. However, there is no disclosure of side effects, prerequisites (e.g., Godot executable, project config), or potential errors. The description is behaviorally informative but not comprehensive for a multi-action tool.

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

Conciseness4/5

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

The description is well-structured: a summary line, a bulleted list of operations with parameters and one-line purposes, and a note on call format. It is front-loaded with the core purpose and uses whitespace effectively. Every sentence adds value; there is no redundancy or fluff. Slightly long due to the five ops, but each earns its place.

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

Completeness3/5

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

Given the tool's complexity (five distinct operations) and the presence of an output schema (not shown here), the description covers the 'what' but not the 'how' in depth. It omits important context like error handling, session requirements, and whether operations modify the project (export and reimport are implied writes). The lack of explicit usage guidance and behavioral detail leaves an agent needing to infer too much.

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

Parameters3/5

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

The schema has zero descriptions for properties (op, params, session_id). The description compensates by listing each operation's parameters with defaults (e.g., run_script(script_path="", inline_code="")), and the operation text gives some semantic meaning (e.g., 'Execute a GDScript file or inline code snippet'). However, not all parameters are explained – is_debug is never defined, and the generic 'params' container is left opaque. This partial coverage earns a 3.

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's purpose: 'Standalone Headless Engine & CLI Management.' It enumerates five distinct operations with specific verbs (run, export, reimport, inspect), each with a resource and intent. This distinguishes it from sibling tools like export_manage or editor_manage, which focus on different scopes. The title alone would be ambiguous, but the bullet list removes doubt.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It never mentions scenarios where a different tool would be more appropriate (e.g., for non-headless operations) or any exclusions. It simply lists operations without routing the agent to siblings. Given the large sibling set, this is a significant gap.

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

http_manageA

In-Engine HTTP Requests, File Downloads, and HTTPRequest Scaffolding.

Ops:

  • scaffold_http_request(parent_path="", name="HTTPRequest", timeout=30.0) Scaffold an HTTPRequest node into the scene hierarchy.

  • send_request(url, method="GET", headers=[], body="", timeout=10.0) Execute an in-engine REST/HTTP request via Godot's networking stack.

  • download_file(url, target_path, timeout=30.0) Download a remote file into the project virtual filesystem (res:// or user://).

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does substantial work: it discloses that send_request executes via Godot's networking stack, download_file writes into res:// or user://, and scaffold_http_request inserts a node into the scene hierarchy. It stops short of discussing side effects like overwriting files or network error behavior, but it gives meaningful behavioral context beyond the tool's name.

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 tightly organized: a one-line purpose summary, three bullet-pointed ops with signatures, and a brief note on call shape. Every sentence earns its place, and the structure makes op variants scannable without extraneous prose.

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 multi-op tool with an output schema present, the description covers operation behavior and parameter lists, and the output schema can handle return-value details. The remaining gap is per-parameter format documentation, which is partly addressed in parameter semantics. Overall, an agent has enough to invoke all three ops correctly in most cases.

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

Parameters3/5

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

Schema coverage is 0% and the params property is a free-form object, so the description is the only parameter source. It provides each op's signature with names and defaults (e.g., method='GET', timeout=10.0), which adds some meaning, but it does not define formats for headers, body, or valid method values. This partially compensates for the schema gap but not completely.

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

Purpose5/5

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

The description names the resource and verbs explicitly: 'In-Engine HTTP Requests, File Downloads, and HTTPRequest Scaffolding' and then enumerates three distinct operations with signatures. This clearly differentiates the tool from broad siblings like network_manage or api_manage by scoping it to Godot's in-engine networking stack and project filesystem.

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 lists concrete operations and a canonical call shape, so an agent can infer when to use this tool (e.g., when it needs an HTTP request, file download, or HTTPRequest node scaffold). However, it provides no explicit guidance on when to prefer this tool over siblings such as network_manage or api_manage, nor any when-not-to-use conditions.

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

input_event_manageA

Input Event Simulation, Macro Replay, and Virtual Actions.

Ops:

  • simulate_action(action, pressed=True, strength=1.0) Simulate an input action press or release in the running game or editor.

  • simulate_key(key, pressed=True, echo=False, shift=False, ctrl=False, alt=False) Simulate a keyboard key event (e.g. 'W', 'Space', 'Escape', or keycode).

  • simulate_mouse_button(button_index=1, pressed=True, position=[0.0, 0.0]) Simulate a mouse button press or release at coordinates (1=Left, 2=Right, 3=Middle).

  • simulate_mouse_motion(position=[0.0, 0.0], relative=[0.0, 0.0], velocity=[0.0, 0.0]) Simulate a mouse cursor motion event.

  • replay_macro(events=[]) Replay a sequential list of input events for automated gameplay testing.

  • get_input_state(action) Inspect whether an input action is pressed and its current strength.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It lists operations and parameters but does not disclose side effects (e.g., whether simulated inputs permanently affect game state), permissions required, reversibility, or rate limits. It mentions 'in the running game or editor' for one op but omits broader behavioral traits like whether actions are destructive or require a paused state.

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

Conciseness4/5

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

The description is well-structured with a summary line followed by a bullet-like list of operations and their parameters. It is slightly long but each line adds necessary information because the schema is generic. The canonical call shape is included, which aids parsing. It is efficient for the complexity covered.

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

Completeness4/5

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

Given the tool has multiple operations and the schema provides no parameter details, the description is quite complete: it covers all ops, their parameters, and the call format. However, it does not describe return values for operations like get_input_state beyond implying inspection, nor does it mention error conditions. For a tool of this complexity, it is fairly complete but not exhaustive.

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

Parameters5/5

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

The input schema is generic (only 'op' and 'params'), covering 0% of the actual parameters. The description compensates fully by documenting each op's parameters in detail (e.g., action, pressed, strength; key, echo, shift; button_index, position; etc.). This provides meaning that the schema lacks, making it easy for an agent to construct correct calls.

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 it is for 'Input Event Simulation, Macro Replay, and Virtual Actions' and then enumerates specific operations like simulate_action, simulate_key, replay_macro, etc. This distinguishes it from siblings like input_map_manage (which is about configuring input mappings) by focusing on runtime simulation and inspection.

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 (simulate input events in a running game/editor) but does not explicitly state when to use this tool versus alternatives, nor does it give exclusion criteria. For instance, it doesn't mention that input_map_manage should be used for defining mappings rather than simulating. The usage context is clear but not formally contrasted with siblings.

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

input_map_manageA

InputMap actions and bindings (keyboard, mouse, gamepad). Persisted to project.godot.

Resource form: godot://input_map — prefer for active-session reads.

Ops: • list(include_builtin=False) List input actions and their bound events. By default only user-authored actions (those persisted in project.godot under input/<name>) are returned; pass include_builtin=True to also surface Godot's ui_* and editor-runtime actions (spatial_editor/*, etc.). The is_builtin field on each entry is true for any action not authored by the user. • add_action(action, deadzone=0.5) Create a new empty input action. deadzone must be in [0.0, 1.0] — Godot uses it as the analog-stick dead-zone threshold; values outside this range are rejected with VALUE_OUT_OF_RANGE. Typical values are 0.2-0.5; leave the default 0.5 unless you have a reason. Not a key-repeat delay. • ensure_action(action, deadzone=0.5) Idempotently create or persist an input action. If the action exists in live InputMap or in project.godot, the existing state is preserved. • remove_action(action) Remove an action and all its event bindings. Also removes actions persisted in project.godot but not loaded in the live InputMap (loaded_in_input_map: false in list), e.g. actions created by a previous editor session. • bind_event(action, event_type, keycode="", ctrl=False, alt=False, shift=False, meta=False, button=None, axis=None, axis_value=1.0) Bind a key/mouse/gamepad event to an action. The action must already exist (call add_action first). event_type is "key" | "mouse_button" | "joy_button" | "joy_axis". - key: keycode is a Godot keycode name string like "A", "Space", "Enter", "Escape", "F1", "Left" — not an integer and not KEY_*. Modifier booleans ctrl / alt / shift / meta optional. - mouse_button: button is an int — 1=left, 2=right, 3=middle, 4=wheel up, 5=wheel down. - joy_button: button is the JoyButton index (e.g. 0=A/Cross, 1=B/Circle). - joy_axis: axis is the JoyAxis index and axis_value is the direction/value, usually -1.0 or 1.0. • ensure_binding(action, event_type, ...) Idempotently ensure the action exists and has the requested binding. • scaffold_preset(preset="wasd_platformer") Scaffold a standard input mapping preset. Presets: 'wasd_platformer' (A/D/Space/W/Arrows), 'wasd_topdown' (WASD/Arrows/E/Space), 'first_person' (WASD/Space/Shift/E), 'driving' (W/S/A/D/Arrows/Space).

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well: it explains persistence, idempotency, error conditions (out-of-range deadzone rejected with VALUE_OUT_OF_RANGE), and the distinction between live InputMap and project.godot state. It also clarifies that deadzone is not a key-repeat delay. However, it doesn't mention the output format of list or what happens on failures beyond the error code, which would be expected for a tool with this many operations.

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 lengthy but well-organized with a clear introduction, bullet-pointed operations, and a canonical call shape. It front-loads the most important information (resource form preference) and each operation is concise yet complete. However, it could be slightly trimmed in places, but the length is justified given the tool's complexity and the lack of schema parameter documentation.

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

Completeness4/5

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

Given the tool's complexity (7 operations, 3 parameters, output schema present), the description is quite complete. It covers when to use, how to use, and what to expect, including edge cases like persisted-but-not-loaded actions. The output schema provides return formats, so the description doesn't need to repeat that. The only minor gap is the lack of error handling for other operations besides deadzone, but that doesn't prevent correct usage.

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

Parameters5/5

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

Schema coverage is 0% for the params object (it's just a generic anyOf), so the description must fully compensate. It does: for each operation, every parameter is explained with types, allowed values, and examples. For bind_event, it details event_type, keycode (as Godot keycode name strings), button indices, axis values, and modifier booleans. This is far beyond what the schema provides and is essential for correct invocation.

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 starts with a clear statement of the tool's function: managing input actions and bindings (keyboard, mouse, gamepad) with persistence to project.godot. It then breaks down each operation with specific verbs (list, add_action, etc.) and details that distinguish it from generic manage tools. This clearly differentiates it from siblings like input_event_manage and ui_manage, which likely handle different aspects of input.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use the resource form over the file form, and for each operation includes prerequisites (e.g., 'action must already exist' for bind_event) and idempotency notes (ensure_action, ensure_binding). It also mentions that list by default excludes built-in actions, guiding when to set include_builtin=True. This is comprehensive and leaves little to inference.

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

joint_manageA

Physics Joints Management (2D and 3D).

Ops:

  • scaffold_joint_2d(parent_path="", joint_type="pin", node_a_path="", node_b_path="", node_name="Joint2D") Scaffold a 2D physics joint (pin, groove, damped_spring).

  • scaffold_joint_3d(parent_path="", joint_type="pin", node_a_path="", node_b_path="", node_name="Joint3D") Scaffold a 3D physics joint (pin, hinge, slider, cone_twist, generic_6dof).

  • configure_joint(joint_path, properties={}) Configure properties and parameters of a physics joint node.

  • get_joint_info(joint_path) Inspect connected nodes and properties of a physics joint node.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It explains the canonical call shape and op handling, but does not disclose side effects (e.g., whether scaffolding modifies the scene graph), error conditions, required permissions, or reversibility of operations. The get_joint_info operation is read-only but never stated, and configure_joint implies mutation without elaboration.

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 well-structured with a clear header and bullet-like list of operations, each with parameters and purpose. It front-loads the domain and call shape. While it is somewhat long, every sentence serves a purpose—detailing ops, defaults, and the call convention—without redundancy.

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

Completeness4/5

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

The description covers all four operations, parameter syntax, and the call shape (including flat-parameter alias). It does not explain return values or error handling, but an output schema exists, which likely covers return structure. Missing details like prerequisites (e.g., need for an open scene) are not mentioned, but overall the description is sufficiently complete for an agent to invoke the tool correctly.

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

Parameters5/5

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

The description provides exhaustive parameter details for each op, including names, defaults, and allowed joint types (pin, hinge, slider, etc.). This goes far beyond the generic input schema, which only defines op, params, and session_id with 0% coverage of inner parameters. The description fully compensates for the schema's lack of detail.

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

Purpose5/5

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

The description explicitly states 'Physics Joints Management (2D and 3D)' and enumerates four concrete operations (scaffold_joint_2d, scaffold_joint_3d, configure_joint, get_joint_info), each with a specific verb and resource. This clearly distinguishes it from sibling tools like physics_manage or body_manage, which manage other aspects of physics.

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

Usage Guidelines3/5

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

The description implies usage by listing joint-specific operations, but it does not explicitly state when to choose this tool over alternatives like physics_manage or node_manage. It lacks any 'when not to use' or cross-referencing to sibling tools, leaving the agent to infer the domain from the title and operation names.

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

light_manageA

2D and 3D Lighting, Shadow Tuning, Decal Projection, and Reflection/GI Probes.

Ops:

  • scaffold_light_3d(type="DirectionalLight3D", parent_path="", name="Light3D", color=None, energy=1.0, shadows=True, range=5.0, attenuation=1.0, spot_angle=45.0) Scaffold a DirectionalLight3D, OmniLight3D, or SpotLight3D node.

  • scaffold_light_2d(type="PointLight2D", parent_path="", name="Light2D", color=None, energy=1.0, shadows=False) Scaffold a PointLight2D or DirectionalLight2D node.

  • scaffold_decal(parent_path="", name="Decal", size=None, texture_albedo="") Scaffold a Decal node with projection volume and albedo texture.

  • scaffold_probe(type="ReflectionProbe", parent_path="", name="Probe", size=None) Scaffold a ReflectionProbe, LightmapGI, or VoxelGI node.

  • set_light_properties(light_path, color=None, energy=None, shadows=None, volumetric_fog_energy=None) Update lighting parameters on an existing 2D or 3D light node.

  • get_light_info(light_path) Inspect light energy, color, and shadow properties.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It mentions operations like 'Scaffold' and 'Update' but does not detail side effects, permission requirements, or whether operations are destructive or reversible. The canonical call shape and compatibility alias are mentioned, but the broader behavioral profile (e.g., impact on scene, potential overwriting) 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.

Conciseness4/5

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

The description is structured with a clear header and a bulleted list of ops, each with a one-line signature and brief comment. It front-loads the overall purpose and uses consistent formatting. While long, it is dense with useful information and avoids fluff, though the canonical call shape note could be considered slightly redundant given the schema.

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

Completeness4/5

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

Given the tool's complexity (six distinct operations) and the generic schema, the description provides sufficient context for an agent to construct calls. It includes the canonical call shape and per-op parameter details. The output schema exists (though not shown), which may cover return values, so the description's lack of return-value explanation is acceptable. It covers operation semantics adequately, though it could add examples of valid parameter values.

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

Parameters5/5

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

The schema provides only a generic 'op' enum and a 'params' object with no property definitions (0% schema coverage). The description compensates thoroughly by listing every operation with its parameters, defaults, and types, such as scaffold_light_3d(type, parent_path, name, color, energy, shadows, range, attenuation, spot_angle). This gives agents complete understanding of how to construct parameters beyond the schema.

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

Purpose5/5

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

The description clearly identifies the tool's domain: '2D and 3D Lighting, Shadow Tuning, Decal Projection, and Reflection/GI Probes.' It enumerates specific operations with detailed signatures, making the purpose unambiguous and distinguishing it from sibling tools that handle other domains like mesh, animation, or physics.

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 versus alternatives or when not to use it. The domain is clear, but there is no guidance on selection criteria among the many sibling tools. It implies usage through the listed ops, but lacks exclusions or alternative routing.

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

loader_manageA

Asynchronous Threaded Resource Loading, Progress Polling, and Loading Screen Scaffolding.

Ops:

  • start_load(path, type_hint="", use_sub_threads=false, cache_mode=1) Begin background asynchronous loading of a scene or resource.

  • get_status(path) Poll progress percentage (0.0 - 1.0) and status (in_progress, loaded, failed).

  • get_resource(path) Retrieve confirmation and metadata for a loaded resource.

  • scaffold_loading_screen(save_path="res://scripts/loading_screen.gd") Scaffold a complete asynchronous loading screen script.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden—and it delivers: it discloses asynchronous/threaded/background execution, the canonical call shape ('Canonical call shape: {"op": ..., "params": ...}'), the flat-alias compatibility behavior, and status/progress ranges (0.0-1.0, in_progress/loaded/failed). The only gaps are error-handling behavior on failure and side effects, but the described invocation contract is substantial.

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

Conciseness4/5

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

Well-structured: a one-line purpose summary front-loads intent, then a tight bulleted op list earns its space because the schema is opaque and needs the per-op parameter documentation. The canonical-call-shape line adds genuine invocation value. Slightly verbose for four ops, but every sentence pulls its weight given the opaque schema.

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

Completeness4/5

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

For a multi-op tool with an opaque params schema, zero annotations, and an output schema that the agent must interpret, this description is nearly complete: it covers all ops, their parameters/defaults, the call envelope, and status result values. Minor omissions—failure semantics and routing vs. sibling tools—keep it from a 5, but it's strong given the tool's complexity.

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

Parameters5/5

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

Schema description coverage is 0% and the schema's params field is a generic anyOf object with additionalProperties true, so it documents nothing. The description fully compensates by documenting every op's parameters with names, types, defaults (e.g., start_load(path, type_hint="", use_sub_threads=false, cache_mode=1)) and per-op signatures. This is where the description adds the most value, beyond what any structured field provides.

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 very first line names a specific purpose: 'Asynchronous Threaded Resource Loading, Progress Polling, and Loading Screen Scaffolding.' The four ops are each given a verb + resource + documented parameters (start_load, get_status, get_resource, scaffold_loading_screen), leaving no ambiguity about what the tool does or how it separates from the broader *_manage family.

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 op list makes the tool's jobs clear (async load, poll progress, retrieve results, scaffold a loading screen), so usage is implied well. However, with ~90 siblings including resource_manage, scene_manage, and filesystem_manage, the description never states when this tool is preferred over alternatives or when NOT to use it (e.g., sync loading, direct resource access). The guidance is implied, not explicit.

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

localization_manageA

Godot TranslationServer Localization and CSV Translation Workflows.

Ops:

  • scaffold_csv(path="res://localization.csv", languages=["en", "es", "fr", "de", "ja", "zh"]) Generate a starter localization CSV file and register it in ProjectSettings.

  • add_entry(path="res://localization.csv", key="ui_start", translations={"en": "Start", "es": "Iniciar"}) Add or update a translation string row in the project's localization CSV.

  • get_locales() Query loaded locales, active locale, and translation settings from TranslationServer.

  • set_locale(locale="es") Switch the active test locale in TranslationServer.

  • translate(message="ui_start", context="") Test and evaluate translation string resolution via TranslationServer.

  • extract_strings(root_dir="res://") Scan project GDScript and scene files for tr() message lookup occurrences.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are supplied, so the description carries full responsibility for behavioral disclosure. It does state what each operation does (e.g., generates a CSV, adds a row, queries locales) and mentions the canonical call shape and a compatibility alias, which is useful. However, it omits side effects like file system changes, reversibility, prerequisites (e.g., whether a project must be open), or error behavior, so transparency is only partial.

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 long but well-structured: it starts with the overall purpose, then breaks down each operation into bullets with signatures and examples. It front-loads the key information and avoids redundancy. While it could be shortened by removing examples, they add value for agent comprehension, so a 4 is appropriate.

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 complexity (multiple operations) and a minimal schema (only op and params), the description provides all necessary details to invoke each operation correctly. It covers each op's parameters, defaults, and the overall call shape. Since an output schema exists, the description is not required to explain return values, so the tool is effectively complete for an agent to use.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It does so by listing every operation's parameters with types and defaults (e.g., path, languages, key, translations, locale, message, context, root_dir) and even shows example calls. This goes well beyond the bare schema and leaves no ambiguity about parameter meaning.

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 identifies the tool as managing Godot TranslationServer localization and CSV translation workflows, then enumerates six distinct operations (scaffold_csv, add_entry, get_locales, set_locale, translate, extract_strings) each with a specific verb and resource. An agent can immediately understand what the tool does and differentiate between its operations without opening the schema.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention any sibling tools, nor does it state conditions for when this tool should be preferred or avoided. The usage context is implied by the operations themselves but not explicitly compared against other management tools.

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

logs_readA

Read recent log lines from the Godot editor, plugin, or running game.

Resource form: godot://logs/recent — prefer for active-session reads.

Sources:

  • "plugin" (default): MCP plugin recv/send/event traffic. Buffer 500.

  • "game": stdout/stderr/push_error/push_warning from playing game via _mcp_game_helper autoload. Buffer 2000, with lines retained across runs and tagged by run_id. Default reads return current-run lines only; pass since_run_id from an earlier response to read that prior run. Entries: {source, level, text, run_id}; response carries run_id, current_run_id, game_status, helper_live, session_active, dropped_count, stale_run_id. helper_live and session_active mirror the same fields inside game_status; is_running is retained as a compatibility alias of session_active. Boot-time parse/load errors fire before the game helper's logger attaches, so they are NEVER in this buffer; when editor-side errors were recorded during the current run the response adds editor_errors_count and editor_errors_hint pointing at source="editor" — treat a clean game log carrying that hint as a run that lost scripts, not a clean launch.

  • "editor": editor-process script errors and the Debugger dock's visible Errors-tab rows — parse errors, GDScript reload warnings, @tool/EditorPlugin runtime errors, push_error/push_warning. Logger-backed entries and Errors-tab rows are read from the editor UI when available. Use when the editor Output or Debugger Errors panel shows red/yellow rows but other sources turned up nothing. Buffer 500 for logger-backed entries; Debugger rows are live UI state. Entries: {source, level, text, path, line, function}. Filtered to .gd/.cs in the user project for Logger-backed entries; addons/godot_ai/ dropped. Logger entries fired before plugin enable are not captured.

  • "all": plugin → editor → game lines (with source per entry).

Tail pattern: for game logs, poll the current run with offset=N and keep the returned run_id. current_run_id identifies the active run; run_id identifies the run being read. Passing since_run_id=old_run_id reads retained lines for that prior run, and stale_run_id: true means the requested run is not the current run. For editor logs, read once to capture next_cursor and pass it back as since_cursor on later calls. since_cursor reads Logger-backed editor entries only; live Debugger Errors-tab rows are included in regular source="editor" reads but do not have stable cursors. When since_cursor is set, it supersedes offset. truncated: true means older entries fell out of the ring before the poll; continue from the returned next_cursor and treat oldest_cursor as the earliest retained sequence. Set include_details=True for Errors-tab style metadata on game/editor entries: original code/rationale, error type, resolved source, and stack frames. Default false preserves compact responses.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoMax lines to return. Default 50.
offsetNoLines to skip. Default 0.
sourceNo"plugin" | "game" | "editor" | "all". Default "plugin".plugin
session_idNoOptional Godot session to target. Empty = active session.
since_cursorNoEditor-log cursor from a previous source="editor" response.
since_run_idNoGame-log run id from a previous response; reads that retained run instead of the current run.
include_detailsNoInclude rich error metadata for game/editor entries.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden, and it delivers extensively: buffer sizes (500/2000), retention across runs, boot-time parse errors never included, editor_errors_count/hint semantics, filtering rules, addons dropped, cursor superseding offset, and truncation behavior. This is exemplary behavioral disclosure.

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

Conciseness4/5

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

The description is long, but every block earns its place given the tool's complexity and the absence of annotations. It is front-loaded with a one-sentence purpose, then structured into source categories and tail-pattern guidance. It is dense rather than padded, though slightly longer than strictly necessary.

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

Completeness5/5

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

The description covers return-field semantics (run_id, current_run_id, stale_run_id, dropped_count, editor_errors_hint), source-specific entry shapes, cursor/run lifecycle, edge cases like lost scripts, and polling patterns. Combined with the existing output schema, an agent has everything needed to invoke and interpret results correctly.

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

Parameters5/5

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

Although the schema covers all 7 parameters (100%), the description adds substantial meaning beyond the schema: since_cursor supersedes offset, since_run_id reads retained prior runs, include_details returns Errors-tab metadata, and source determines entry shape. It transforms the parameters into a coherent replay/pagination model.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Read recent log lines from the Godot editor, plugin, or running game.' It then enumerates the exact source modes (plugin/game/editor/all) and the resource form, making the tool's scope unambiguous and clearly distinct from the unrelated sibling tools.

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

Usage Guidelines5/5

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

The description gives explicit when-to-use guidance, e.g., 'Use when the editor Output or Debugger Errors panel shows red/yellow rows but other sources turned up nothing.' It also explains the default source, when to use since_run_id versus since_cursor, and how to poll game logs with offset and run_id. This is far beyond minimal guidance.

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

material_manageA

Material authoring (StandardMaterial3D, ORMMaterial3D, ShaderMaterial, CanvasItemMaterial). Albedo, metallic/roughness, emission, transparency, shader uniforms.

Resource form: godot://materials — prefer for active-session reads.

Ops: • create(path, type="standard", shader_path="", overwrite=False) Create + save a material .tres at a res:// path. type: "standard" | "orm" | "canvas_item" | "shader". For "shader", shader_path points to the .gdshader. • set_param(path, param, value) Set a built-in property on a .tres material. Enum-valued params accept names ("alpha" -> TRANSPARENCY_ALPHA). Color/Vector dicts. Texture properties accept res:// paths. • set_shader_param(path, param, value) Set a shader uniform on a ShaderMaterial. • get(path) Inspect a material (type, params, uniforms, current values). • list(root="res://", type="") List materials under root, optional type filter. • assign(node_path, resource_path="", slot="override", create_if_missing=False, type="standard") Assign a material to a node slot. Slots: "override" | "surface_" | "canvas" | "process". When create_if_missing=True and no resource_path, makes an inline material of type. • apply_to_node(node_path, type="standard", params=None, slot="override", save_to="", overwrite=False) High-level: build + set params + assign in one undo. save_to optionally persists to disk; errors if the file already exists unless overwrite=True. • apply_preset(preset, path="", node_path="", overrides=None) Curated looks: metal, glass, emissive, unlit, matte, ceramic. path saves to disk; node_path assigns to a node; overrides merge.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations exist, so the description fully carries the transparency burden, and it does so excellently. Each op lists its side effects: save to disk, assign to node, inline material creation, error when file exists unless overwrite=True, and one undo action for apply_to_node. The compatibility alias for flat parameters is also disclosed.

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

Conciseness4/5

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

The description is long but extremely well-structured: it opens with the tool's scope, then uses bullet-pointed op signatures, and closes with a note on call shape. Every sentence carries necessary information for a multi-op tool, though a couple of lines could be tightened without losing value.

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 complexity (eight operations, many parameter combinations) and the generic schema, the description leaves no critical gaps. It covers all ops, their parameters, error semantics, resource-form usage, and edge cases. Since an output schema exists, the lack of return-value descriptions is appropriate.

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

Parameters5/5

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

The input schema only exposes op, params, and session_id with 0% coverage of actual parameters. The description compensates comprehensively by providing full pseudo-signatures for every operation, including defaults, enum values, and domain-specific rules like texture properties accepting res:// paths and enum-valued params accepting names.

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 identifies the tool as a material authoring and management tool, listing specific material types (StandardMaterial3D, ORMMaterial3D, ShaderMaterial, CanvasItemMaterial) and eight concrete operations. It uses strong verbs like create, set_param, get, list, assign, apply_to_node, and apply_preset, making the tool's purpose very distinct from the vague 'material_manage' name.

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

Usage Guidelines4/5

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

It provides detailed per-operation guidance, including parameter signatures, valid types, and behavior like overwrite errors and undo grouping. It also notes the canonical call shape and a compatibility alias. However, it does not explicitly compare this tool to siblings like resource_manage, so alternatives are not discussed.

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

mesh_manageC

Procedural 3D Mesh Synthesis, MeshDataTool Deformation, and Primitive Generation.

Ops:

  • generate_surface_mesh(primitive_type="TRIANGLES", vertices=None, normals=None, uvs=None, colors=None, indices=None, generate_normals=false, generate_tangents=false, save_path="", attach_to="") Generate custom ArrayMesh geometry via SurfaceTool.

  • deform_mesh(mesh_path, mode="displace", axis="y", factor=1.0, save_path="") Inspect and deform an existing mesh via MeshDataTool.

  • create_primitive(primitive="BoxMesh", properties=None, save_path="", attach_to="") Create a configured PrimitiveMesh resource.

  • get_mesh_info(mesh_path="", node_path="") Read mesh class, surface count, and AABB dimensions.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It mentions that deform_mesh 'inspects and deforms an existing mesh' (implying mutation), and generate_surface_mesh 'generates' new geometry, but it does not specify whether operations are destructive, reversible, or require save_path to persist. It also omits any permission or side-effect details, leaving safety and side-effect behavior under-specified.

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 well-structured with an introductory phrase, a bulleted list of operations, and a call-shape note. It is front-loaded with the overall purpose and each line serves a distinct role. While lengthy, it is organized and avoids redundancy.

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

Completeness3/5

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

For a tool with four operations and many parameters, the description is moderately complete. It covers the existence and purpose of each op and the call shape, but it omits return values (partially covered by the output schema), error handling, and path resolution details. Given the tool's complexity, more context on expected inputs and outputs would improve completeness.

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

Parameters3/5

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

Schema coverage is 0%, but the description compensates by listing each operation's parameters with defaults. However, it does not explain parameter formats or expected values (e.g., how vertices should be structured, what primitive types are valid). The description provides a basic map but lacks depth for correct invocation.

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

Purpose4/5

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

The description clearly states the tool's purpose: procedural mesh synthesis, deformation, and primitive generation. It enumerates four specific operations with brief one-line descriptions, making it distinct from generic manage tools. However, it does not explicitly contrast with sibling tools like geometry_manage, leaving some ambiguity about when this is the right choice.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It explains the call shape (canonical and flat op parameters) but does not mention scenarios where mesh_manage is preferred over other tools or when it is not appropriate. This leaves the agent to infer usage context.

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

multiplayer_manageA

High-Level Godot Multiplayer Networking Scaffolding and Topology Inspection.

Ops:

  • scaffold_network_manager(save_path="res://scripts/network_manager.gd", default_port=8910, max_clients=32, as_autoload=false, autoload_name="NetworkManager") Generate an ENetMultiplayerPeer network manager script with host/join/disconnect methods and peer signal handling.

  • scaffold_spawner(parent_path="", spawner_name="MultiplayerSpawner", spawn_path="..", spawnable_scenes=[...], auto_spawn=true) Attach and configure a MultiplayerSpawner node with spawnable scene paths.

  • scaffold_synchronizer(parent_path="", synchronizer_name="MultiplayerSynchronizer", root_path="..", properties=[":position", ":rotation"]) Attach and configure a MultiplayerSynchronizer node with SceneReplicationConfig.

  • get_network_status() Query active multiplayer peer state, server role, unique ID, and connected peers.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. While it explains what each op does (e.g., generates a script, attaches a node), it does not disclose side effects such as file overwriting, scene modification prerequisites, or whether operations are destructive. The mutation vs read-only distinction is also absent, leaving safety-relevant behavior unclear.

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 longer than a single-purpose tool's, but it is well-structured with a summary line, bullet-pointed op signatures, and a final note on call shape. Each section earns its place; there is no filler. It is appropriately detailed for a multi-op tool.

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

Completeness4/5

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

Given the complexity of four sub-operations and the presence of an output schema (which covers return values), the description is largely complete. Minor gaps include missing error-handling behavior, prerequisites like an open project, and explicit notes on when to use the canonical vs alias call shape. These are not critical for basic invocation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It provides full signatures for each op with parameter names, defaults, and brief contextual descriptions (e.g., 'Generate an ENetMultiplayerPeer network manager script with host/join/disconnect methods and peer signal handling'). This adds meaningful semantics beyond the empty params object in the schema.

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

Purpose5/5

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

The description states a specific purpose: high-level Godot multiplayer networking scaffolding and topology inspection. It enumerates four distinct verb operations (scaffold_network_manager, scaffold_spawner, scaffold_synchronizer, get_network_status), each with a clear resource target, which distinguishes it from siblings like network_manage or scene_manage that focus on other aspects.

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

Usage Guidelines3/5

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

The description implies usage by listing the operations, so an agent can infer when to call it, but it does not explicitly state when to prefer this tool over alternatives (e.g., network_manage) or when not to use it. No exclusions are provided.

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

network_manageA

Networking and Socket Scaffolding.

Ops:

  • scaffold_tcp_server(parent_path="", port=8080, bind_address="*", node_name="TcpServer") Scaffold a TCP server node in the current scene.

  • scaffold_websocket_peer(parent_path="", url="", node_name="WebSocketClient") Scaffold a WebSocket peer node in the current scene.

  • scaffold_udp_peer(parent_path="", port=9000, node_name="UdpPeer") Scaffold a UDP packet peer node in the current scene.

  • get_network_interfaces() List local network IP addresses and adapter interfaces.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It lists operations and arguments, but doesn't disclose side effects, permissions, or network access implications. It does note the canonical call shape and flat parameter alias, which is behavioral detail, but lacks depth on what each scaffolding operation does to the scene or system.

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 reasonably concise and front-loads the purpose, then lists ops in a structured list. The canonical call shape note adds necessary context, though the op list could be tightened with default values shown inline.

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

Completeness4/5

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

Given the tool has multiple ops and a simple schema, the description provides enough to call basic operations. It includes return behavior implicitly through 'list' ops and output schema existence, but could benefit from examples or error handling notes. Still, it's complete for typical use.

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

Parameters4/5

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

Schema coverage is 0%, but the description details each parameter's name, type, and default within the ops list, adding semantic meaning beyond the schema. It also clarifies the 'params' object structure and compatibility alias, which is valuable.

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 lists four specific operations under a clear 'Networking and Socket Scaffolding' purpose, each with a verb and target (e.g., 'scaffold_tcp_server'). It distinguishes from siblings by being the only tool focused on network scaffolding, though it doesn't explicitly contrast with any sibling.

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

Usage Guidelines4/5

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

The description implies usage for networking tasks by enumerating distinct ops, and the canonical call shape provides instructions on how to structure calls. However, it doesn't explicitly state when to use this tool versus siblings or when not to use it, so it misses explicit exclusion guidance.

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

node_createA

Create (spawn) a new node in the scene tree.

Creates a node of the given type and adds it to the parent, or instantiates a PackedScene from scene_path. type and scene_path are mutually exclusive — when scene_path is given, type is ignored.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoOptional name; Godot auto-names if empty.
typeNoGodot node class (e.g. "Node3D", "MeshInstance3D").
scene_fileNoOptional editor-scene guard (EDITED_SCENE_MISMATCH).
scene_pathNoOptional res:// path of a PackedScene to instantiate.
session_idNoOptional Godot session to target. Empty = active session.
parent_pathNoParent path relative to the edited scene root (e.g. "/Main"), NOT runtime "/root/...". Empty = scene root.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose core behavior (creates, adds to parent, instantiates scene) and the mutual exclusivity rule. However, it omits potential side effects like modifying the scene file, needing to save, or error conditions. More transparency would be beneficial for a mutation tool.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the primary action, and contains no filler. It efficiently covers both modes of operation and the key interaction rule. A model of conciseness.

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

Completeness4/5

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

Given the 6-parameter tool with an output schema present, the description is reasonably complete. It explains the two modes and the parent relationship. It could mention error handling or save requirements, but the core behavior and parameter semantics are adequately covered, and the output schema handles return values.

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?

All six parameters are fully described in the schema (100% coverage), so the baseline is 3. The description adds valuable parameter semantics by explaining that type and scene_path are mutually exclusive and that scene_path takes precedence, which is not stated in the schema. This pushes the score to 4.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Create (spawn) a new node in the scene tree.' It clearly distinguishes itself from sibling tools like node_find and node_set_property by focusing on creation, and further clarifies the two modes of operation (type vs. scene instantiation).

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool: when you need to create a new node or instantiate a PackedScene. It also offers a usage caveat about type/scene_path mutual exclusivity. However, it does not explicitly name alternatives or state when not to use this tool, so it stops short of a 5.

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

node_findA

Find nodes in the scene tree by name, type, or group.

At least one filter must be provided. Filters AND together. Paginated.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSubstring match on node name (case-insensitive).
typeNoExact Godot class name (e.g. "MeshInstance3D").
groupNoGroup name the node must belong to.
limitNoMax number of results. Default 100.
offsetNoNumber of results to skip. Default 0.
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description must disclose behavioral traits. It appropriately discloses that pagination is in effect and that filters are combined with AND, which are important semantics not present in the schema. It does not mention side effects or error conditions, but the read-only nature of 'Find' is reasonably implied.

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

Conciseness5/5

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

The description is extremely concise, using two short sentences to convey purpose and core constraints. It is front-loaded with the action and resource, and every sentence adds value.

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 moderate complexity and the presence of a detailed output schema, the description adequately covers the key usage constraints (required filter, AND semantics, pagination) and purpose. It is complete enough for an agent to select and invoke this tool correctly, especially with the rich input schema.

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 does mention the three filter types (name, type, group) and pagination, but these are already fully documented in the input schema. It adds no extra nuance about parameter values beyond what the schema provides.

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

Purpose5/5

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

The description uses a specific verb 'Find' and identifies the resource 'nodes in the scene tree' with filters by name, type, or group. This clearly distinguishes it from siblings like scene_get_hierarchy, which lists the hierarchy, and node_get_properties, which inspects a specific node's properties.

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

Usage Guidelines4/5

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

It explicitly states the requirement 'At least one filter must be provided' and explains that filters AND together, giving clear usage constraints. It also mentions pagination, implying use of limit/offset for large results. However, it does not name alternative tools or specify when not to use this tool, so it falls short of a 5.

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

node_get_propertiesA

Get properties of a node.

Resource form: godot://node/{path}/properties — prefer for active-session reads (returns the full property set).

The default returns every editor-visible property, which can be 50-150 entries. Pass fields to return only the properties you need — a large response-size cut on this hot read. The response always carries total_count (all editor-visible properties) alongside count (returned): an unfiltered call returns the full set, so count == total_count; only the fields filter can make count smaller. Requested names that match no editor-visible property are listed in unknown_fields, so a nonexistent name is distinguishable from a property that exists with a null value.

Null-valued properties are included: an unset object/resource slot (script on an unscripted node, an empty mesh or material, …) returns "value": null with its declared type. An attached script serializes to its res:// path; built-in scripts (no resource path) fall back to their string representation.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesScene path relative to the edited scene root (e.g. "/Main/Camera3D"), NOT runtime "/root/..." paths. Derive from prior tool responses or scene_get_hierarchy.
fieldsNoWhen non-empty, return only these property names.
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It thoroughly discloses behavior: default response size (50-150 entries), the meaning of count/total_count, handling of unknown fields, inclusion of null-valued properties, and script serialization details. This goes far beyond basic transparency.

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

Conciseness4/5

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

The description is front-loaded with the purpose, then progressively adds detail. It is longer than minimal but every sentence adds value, with clear paragraph breaks for readability. No redundant or filler content.

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

Completeness5/5

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

The description covers edge cases (null values, unknown fields, script paths), response semantics, and performance considerations. While an output schema exists, the description still adds essential context that the schema alone would not provide, making it fully comprehensive.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds meaningful semantics beyond the schema by explaining how the fields parameter affects the response, the relationship between count and total_count, and the unknown_fields behavior, enriching parameter understanding.

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

Purpose5/5

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

The description opens with 'Get properties of a node,' using a specific verb and resource. It clearly differentiates from sibling tools like node_set_property (set) and node_find (search), making the tool's purpose unmistakable.

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

Usage Guidelines4/5

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

The description provides context for when to use this tool ('prefer for active-session reads') and offers performance guidance on using the fields filter. It does not explicitly exclude alternatives, but the mention of hot reads and filtering implies practical usage scenarios.

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

node_manageA

Node tree manipulation (delete, duplicate, rename, reorder, reparent, groups, hierarchy reads).

Resource forms (prefer for active-session reads): godot://node/{path}/properties, godot://node/{path}/children, godot://node/{path}/groups

Ops: • get_children(path) Direct children of a node (name, type, path each). • get_groups(path) Group names the node belongs to. • delete(path, scene_file="") Remove the node. Cannot delete scene root. Undoable. • duplicate(path, name="", scene_file="") Deep-copy a node + children as a sibling. Cannot duplicate scene root. • rename(path, new_name, scene_file="") Rename a node. Sibling-name collision and "/" / ":" / "@" rules apply. • move(path, index, scene_file="") Reorder among siblings. Index 0 = first. • reparent(path, new_parent, scene_file="") Move under a new parent. Children preserved. Cannot move into descendants. • add_to_group(path, group, scene_file="") Add the node to a group. • remove_from_group(path, group, scene_file="") Remove the node from a group. • rotate(path, degrees, axis="y", relative=false, scene_file="") Rotate a 2D or 3D node by degrees. Undoable. • scale(path, scale, relative=false, scene_file="") Scale a 2D or 3D node or Control. Undoable. • translate(path, offset, relative=true, scene_file="") Move / offset a node position. Undoable. • call_method(path, method, args=[], scene_file="") Call any method on a node with arguments.

All write ops accept the optional scene_file guard — if non-empty, the mutation fails with EDITED_SCENE_MISMATCH when the editor's current scene doesn't match.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so thoroughly: it discloses invariants like 'Cannot delete scene root', 'Cannot duplicate scene root', 'Cannot move into descendants', sibling-name collision rules, which operations are undoable, and the EDITED_SCENE_MISMATCH failure mode. It also warns that call_method can invoke 'any method', which is an important behavioral trait.

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 long but appropriately structured: a front-loaded summary, resource forms, compact bullet signatures, and a canonical call shape. There is minor redundancy between the resource-forms section and the get_children/get_groups ops, but the length is largely justified by the number of operations.

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

Completeness3/5

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

The description is impressively complete for the documented ops, covering invariants, call shape, and scene_file guard behavior, and an output schema exists so return values need not be repeated. However, the operation enum includes instantiate_batch, which is entirely missing from the description, leaving a real gap in what an agent can validly invoke.

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

Parameters4/5

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

The input schema has 0% description coverage and a generic params object, so the description compensates well by listing per-op parameters, defaults, and meanings such as 'Index 0 = first', 'axis="y"', and 'relative=false'. However, the enum includes instantiate_batch with no parameter documentation anywhere in the description, and the format of call_method's args is left underspecified.

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

Purpose4/5

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

The description opens with a clear resource and action list: 'Node tree manipulation (delete, duplicate, rename, reorder, reparent, groups, hierarchy reads)' and then enumerates concrete operations. It is clear what the tool does, though it does not explicitly differentiate itself from sibling tools like node_get_properties or node_create, and it omits the instantiate_batch op that appears in the input schema enum.

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

Usage Guidelines3/5

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

There is some usage guidance, such as 'prefer for active-session reads' and the explanation of the scene_file guard and canonical call shape. However, the description does not state when to prefer this tool over alternatives or when not to use it, which is needed given the very large sibling list.

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

node_set_propertyA

Set a property on a node.

Verify the property name first — call node_get_properties (or read godot://node/{path}/properties) to confirm the exact name and type before writing. Guessing common Godot names often fails with PROPERTY_NOT_ON_CLASS because Godot's actual properties differ from intuition (e.g. Camera3D uses fov/current, not field_of_view; Sprite2D uses texture, not image; Node3D uses position/rotation/scale, not transform.origin).

Coerces value to the property's type:

  • Vector2/Vector3: dict with x/y/z keys.

  • Color: dict {r,g,b,a} or hex string ("#ff0000").

  • NodePath: string ("../Other/Node").

  • Resource: res:// path string (loads + assigns); null/"" clears. {"__class__": "BoxMesh", ...} creates a built-in resource owned by this property. After scene_save it is serialized in-place as a [sub_resource] inside the .tscn; it is not a reusable .tres. For sharing, first call resource_manage(op="create", params={"type": "BoxMesh", "properties": {...}, "resource_path": "res://meshes/box.tres"}), then pass that res:// path here (or use resource_manage(op="assign")).

  • StringName: plain string. Array/Dictionary: JSON list/object.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesScene path relative to the edited scene root (e.g. "/Main/Camera3D"), NOT runtime "/root/..." paths.
valueYesNew value. Pass null (or "" for resources) to clear.
propertyYesProperty name (e.g. "fov", "position", "mesh"). Must match Godot's exact identifier — introspect with ``node_get_properties`` if unsure rather than guessing.
scene_fileNoOptional editor-scene guard.
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

No annotations exist, so the description carries the full burden, and it delivers: it discloses type coercion formats for Vector, Color, NodePath, Resource, StringName, and Array/Dictionary, and explains resource ownership, serialization as [sub_resource], and that null/'' clears. This is rich behavioral disclosure beyond the obvious 'setter' semantics.

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

Conciseness5/5

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

The description is front-loaded with the core action, then uses compact bullet-like sections for coercion and resource behavior. Every sentence adds operational value, and the organization makes the long content scannable.

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?

Covers the critical failure mode (PROPERTY_NOT_ON_CLASS), value clearing, resource lifecycle, sharing strategy, and serialization timing. With an output schema available to describe return values, nothing essential is missing for correct invocation.

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

Parameters5/5

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

Although schema coverage is 100%, the description substantially extends the schema by explaining how to encode Godot property values (e.g., Vector3 dict keys, Color hex strings, res:// paths, __class__ resource creation). It also clarifies the path parameter's relative-to-scene-root meaning and property-name exactness.

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

Purpose5/5

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

Opens with a clear verb+resource statement ('Set a property on a node'), then reinforces scope by contrasting with node_get_properties and giving Godot-specific examples. It is easily distinguished from sibling tools like node_create or node_manage.

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

Usage Guidelines5/5

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

Explicitly instructs the agent to verify property names with node_get_properties before writing, and explains when to use resource_manage(op='create') instead of inline resource creation for shareable resources. This gives concrete selection and sequencing guidance.

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

occluder_manageA

Occlusion Culling Management.

Ops:

  • scaffold_occluder_3d(parent_path="", occluder_type="box", size=[1.0,1.0,1.0], node_name="OccluderInstance3D") Scaffold a 3D occlusion culling node (box, sphere, quad).

  • scaffold_occluder_2d(parent_path="", polygon_points=[[-16,-16],[16,-16],[16,16],[-16,16]], closed=True, node_name="LightOccluder2D") Scaffold a 2D light/occlusion polygon node in current scene.

  • get_occluder_info(occluder_path) Inspect occluder node and attached occluder resource.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are present, so the description carries the behavioral disclosure burden. It distinguishes mutating scaffold operations from the read-only get_occluder_info and notes that the 2D scaffold creates a node 'in current scene'. However, it does not disclose side effects such as scene modification, prerequisites like needing an open scene, or reversibility.

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

Conciseness5/5

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

The description is compact and well-structured: a one-line domain summary, a bulleted operation list, and a call-shape note. Every sentence provides useful information, and the canonical call shape is front-loaded for interoperability.

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

Completeness3/5

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

With an output schema present and the canonical call shape explicitly documented, the description covers most operational needs. However, it leaves minor gaps around scene prerequisites, side effects of scaffolding, and explicit usage alternatives, making it slightly incomplete for an agent without prior context.

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

Parameters4/5

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

The input schema has 0% description coverage, but the description compensates by listing every operation's parameters with defaults and type hints, such as occluder_type='box' and polygon_points. This gives agents enough information to construct valid params, though it could add more prose per parameter.

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

Purpose5/5

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

The description clearly states the domain (occlusion culling management) and enumerates three distinct operations with specific verbs and resources: scaffold_occluder_3d, scaffold_occluder_2d, and get_occluder_info. This makes the tool's purpose unambiguous and distinguishes it from the broader set of sibling manage tools.

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

Usage Guidelines4/5

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

The domain-focused title and operation list give clear context for when to use this tool: when an agent needs to create or inspect occluder nodes. It does not explicitly name alternatives or exclusion conditions, but the purpose is clear enough among the many sibling tools.

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

omni_manageA

Universal Godot engine control, reflection, script evaluation, and editor UI automation.

Ops:

  • eval(code, mode="auto", inputs={}) Execute arbitrary GDScript in the Editor process with full permissions.

  • call(target, method, args=[]) Call ANY method on ANY Godot Object (Node, Resource, Singleton, RefCounted).

  • get(target, property) Read any property on any Godot Object.

  • set(target, property, value) Write any property on any Godot Object.

  • inspect(target) Inspect complete methods, properties, and signals of any Object.

  • instantiate(class_name="", script_path="") Instantiate any ClassDB class or GDScript.

  • ui_tree(max_depth=8) Extract the full hierarchical semantic UI Control tree of the Editor.

  • ui_click(text="", path="") Click any button, tab, checkbox, or control in the Editor.

  • ui_type(text, target="") Type text into any LineEdit or TextEdit in the Editor.

  • instantiate_prefab(scene_path, parent_path="", node_name="", position=None) Instantiate any .tscn prefab directly into the edited scene.

  • shader_create(shader_path, shader_type="canvas_item", code="", target_node_path="") Create a new GDShader and optionally assign it as a ShaderMaterial to a node.

  • mesh_primitive(primitive_type="box", node_name="", parent_path="", size=None, albedo_color=None, position=None) Create a 3D primitive mesh (box, sphere, cylinder, plane, capsule, prism).

  • collision_shape(parent_path, shape_type="box", is_2d=True, size=None, radius=16.0, height=32.0, node_name="CollisionShape") Create a 2D or 3D CollisionShape and attach it to a physics body.

  • preset_motion(preset="pulse", target_node_path="", animation_player_path="", anim_name="", duration=1.0, loop=True) Inject procedural motion presets (pulse, fade_in, fade_out, slide_in).

  • ping() Quick diagnostic ping returning engine version, process frames, and memory metrics.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It explicitly states 'Execute arbitrary GDScript in the Editor process with full permissions' and 'Call ANY method on ANY Godot Object', which discloses its high-impact nature. It also mentions writing properties and instantiating prefabs. However, it doesn't discuss potential side effects, reversibility, or the need for caution, so transparency is partial.

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 long but well-structured with a one-line summary, a bullet list of ops with code-like signatures, and a final note on call shape. Every line adds necessary detail for the many operations. It could be slightly trimmed, but the structure is logical and front-loaded with the key point. The length is justified by the tool's breadth.

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

Completeness4/5

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

The description covers all ops and their parameters, and explains the canonical call shape with op and params. It does not describe return values or error handling, but an output schema is indicated (though not shown), which might cover that. It also doesn't explain the session_id parameter, which is present in the schema. Overall, it's quite complete for such a multifaceted tool, with minor omissions.

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

Parameters5/5

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

The input schema has 0% description coverage and params is free-form (additionalProperties: true), so the description is the only source of parameter meaning. It fully compensates by listing each op with its parameter names, defaults, and some type hints (e.g., eval(code, mode='auto', inputs={}), mesh_primitive(primitive_type='box', ...)). This is essential for correct invocation and is exceptionally detailed.

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

Purpose4/5

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

The description clearly states a broad purpose: 'Universal Godot engine control, reflection, script evaluation, and editor UI automation.' It lists specific ops with verbs like eval, call, get, set, etc., making it evident what the tool does. However, it doesn't explicitly differentiate from the many sibling tools (e.g., node_manage, shader_manage), instead positioning itself as a catch-all, which is clear enough but not targeted.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus its siblings. It lists capabilities but doesn't state conditions like 'use this for generic reflection, use node_manage for node-specific operations' or mention exclusions. The canonical call shape is explained, but not the selection criteria. This leaves the agent to infer usage from the broad 'universal' claim.

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

parallax_manageA

Parallax and Canvas Layer Management.

Ops:

  • scaffold_parallax(parent_path="", scroll_scale=[1.0,1.0], repeat_size=[0.0,0.0], node_name="Parallax2D") Scaffold a Parallax2D node for background layer scrolling.

  • scaffold_canvas_layer(parent_path="", layer=1, follow_viewport=False, node_name="CanvasLayer") Scaffold a CanvasLayer node in the scene tree.

  • scaffold_visibility_notifier(parent_path="", is_2d=True, rect_size=[100.0,100.0], node_name="VisibilityNotifier") Scaffold a VisibleOnScreenNotifier2D or 3D node.

  • get_parallax_info(node_path) Inspect properties of a parallax or canvas layer node.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral disclosure burden. It does reveal core actions (scaffolding modifies the scene tree; get_parallax_info inspects) and the canonical call shape, including the flat-parameter compatibility alias. It does not mention side effects beyond scaffolding, permissions, or failure/return behavior, though the output schema can cover returns.

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 organized as a compact operation list with signature-style parameter lists and one explanatory sentence each, followed by a single necessary call-shape note. There is no filler, repetition, or preamble.

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 multi-op dispatch tool with a generic schema, the description covers all operations, their parameters, defaults, and the request envelope. It is slightly thin on path semantics and how this tool relates to sibling scene/node creation tools, but the output schema exists for return values and the op summaries make most calls unambiguous.

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

Parameters5/5

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

The input schema only defines the opaque op/params/session_id envelope with 0% description coverage, so parameter semantics depend entirely on the description. The description compensates fully by listing every operation's named parameters with defaults and a one-line meaning, e.g. scroll_scale=[1.0,1.0], repeat_size=[0.0,0.0], layer=1, follow_viewport=False, is_2d=True, rect_size=[100.0,100.0].

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

Purpose5/5

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

The description opens with the domain 'Parallax and Canvas Layer Management' and enumerates four concrete operations, each with a clear verb-object pair: 'Scaffold a Parallax2D node', 'Scaffold a CanvasLayer node', 'Scaffold a VisibleOnScreenNotifier2D or 3D node', and 'Inspect properties'. This is significantly more specific than the bare tool name and lets an agent identify what the tool owns.

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 per-operation sentences imply when each op should be used, and the op names are self-descriptive, but the description never states when to prefer this tool over sibling tools such as node_create or viewport_manage, nor does it give explicit exclusions. Guidance is inferred rather than stated.

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

particle_manageA

Particle systems (GPUParticles2D/3D, CPUParticles2D/3D). All write ops create the node + sub-resources (ProcessMaterial, default QuadMesh draw pass) in a single undo action.

Ops: • create(parent_path, name="Particles", type="gpu_3d") Create an emitter. type: "gpu_3d" | "gpu_2d" | "cpu_3d" | "cpu_2d". For GPU emitters, auto-creates ProcessMaterial; for gpu_3d, also a default QuadMesh draw pass. • set_main(node_path, properties) Node-level props: amount, lifetime, one_shot, explosiveness, preprocess, speed_scale, randomness, fixed_fps, emitting, local_coords, interp_to_end. • set_process(node_path, properties) Behavior props (auto-creates ProcessMaterial for GPU). Emission shape, velocity, gravity, color_ramp, scale_curve, turbulence. See full property list in the Godot reference. GPU gravity is a Vector3 — pass {x, y, z} or [x, y, z], including for gpu_2d (the shared ProcessMaterial is 3D; z is ignored in 2D). • set_draw_pass(node_path, pass_=1, mesh="", texture="", material="") What gets drawn per particle. GPU 3D: mesh in draw_pass_N + optional material override. GPU 2D / CPU 2D: texture. CPU 3D: mesh. • restart(node_path) Restart emission. Runtime-only, not undoable. • get(node_path) Inspect main props, process material, draw passes. • apply_preset(parent_path, name, preset, type="gpu_3d", overrides=None) Curated effects: fire, smoke, spark_burst, magic_swirl, rain, explosion, lightning. One-shot presets re-trigger via restart. overrides = {"main": {...}, "process": {...}, "draw": {...}}; bare keys are auto-routed to main (amount, lifetime, one_shot, ...) or process — draw keys must be nested under "draw". draw configures the gpu_3d draw-pass StandardMaterial3D (blend_mode, albedo_color, emission, ...); on gpu_2d only draw.texture (res:// path) applies; cpu_* types reject draw overrides. Unknown or malformed override keys return INVALID_PARAMS (never silently dropped); response reports applied_main / applied_process / applied_draw. GPU gravity requires {x, y, z} (or [x, y, z]) even for gpu_2d.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations, the description carries full responsibility for behavioral disclosure, and it does so thoroughly: it documents undo grouping, runtime-only restart, auto-created sub-resources, INVALID_PARAMS for bad overrides, applied_* response reporting, and the GPU gravity vector format. This is exceptional transparency for an unannotated tool.

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

Conciseness4/5

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

The description is long but well-structured: a shared behavior note is front-loaded, followed by a scannable bullet list of operations. The only notable redundancy is repeating the GPU gravity vector requirement in both set_process and apply_preset, but overall every section earns its place.

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

Completeness3/5

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

The description is rich in operation-level detail, error behavior, and call shape, and the presence of an output schema means return values need not be re-explained. However, the input schema exposes spawn_preset_2d as a valid op, and the description never documents it, which is a significant completeness gap for an agent choosing operations.

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

Parameters4/5

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

The schema provides almost no parameter detail (0% coverage), and the description compensates with full op signatures, type enums, property lists, and override structures. However, it omits the spawn_preset_2d enum value and defers the full set_process property list to the Godot reference, leaving some parameter semantics incomplete.

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

Purpose4/5

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

The description clearly targets particle systems (GPUParticles2D/3D, CPUParticles2D/3D) and enumerates specific verbs for each operation, so an agent knows what resource this tool manages. It does not explicitly differentiate from sibling tools such as node_create or material_manage, instead relying on the particle-specific scope.

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

Usage Guidelines4/5

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

The op-by-op breakdown gives concrete guidance on when to use create, set_main, set_process, set_draw_pass, restart, get, and apply_preset, including type-specific behavior and override routing. It does not explicitly state when to prefer this tool over sibling node/material tools, so exclusion guidance is missing.

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

path_manageB

Path2D/Path3D Curves, Splines, and Patrol Route Automation.

Ops:

  • create_curve_2d(points=None, closed=false, save_path="") Create a Curve2D resource with Bezier control points.

  • create_curve_3d(points=None, closed=false, save_path="") Create a Curve3D resource with Bezier control points.

  • scaffold_path(parent_path="", type="Path3D", name="Path", with_follow=true, loop=true) Scaffold a Path2D or Path3D node with an optional PathFollow child.

  • sample_baked_points(path_node_path, interval=1.0) Sample baked positions along a Path2D or Path3D at fixed intervals.

  • generate_spline(shape="circle", is_3d=true, radius=5.0, points_count=16, save_path="") Procedurally generate standard spline curves (circle, sine, spiral, rect, s_curve).

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal meaningful behavior per operation: creating Curve2D/Curve3D resources, scaffolding nodes with PathFollow children, sampling baked positions, and generating spline shapes. However, it does not disclose key behaviors such as whether save_path writes resources to disk, whether scaffold_path mutates the current scene tree, what prerequisites sample_baked_points has (e.g., baking enabled), or what errors or responses occur.

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

Conciseness5/5

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

The description is well-structured with a short umbrella statement followed by scannable bullet entries for each operation. Each bullet includes a signature and a one-line description, and the final canonical call-shape note is useful and non-redundant. There is minimal wasted text for a tool with five operations.

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 high complexity of five operations, no annotations, and 0% schema parameter coverage, the description provides a reasonable but incomplete foundation. It covers operation names, parameter names, and basic intent, but omits usage context, file-save behavior, prerequisites, and examples. The presence of an output schema reduces the need to describe return values, but gaps remain around how the abstract params object maps to each operation's signature.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for the generic params object. It does so effectively by listing each operation's signature with parameter names, defaults, and some semantic hints, such as generate_spline's supported shapes (circle, sine, spiral, rect, s_curve). This adds substantial meaning beyond the schema. Still, some parameters like save_path and points lack explicit type/format semantics, which keeps it from being a 5.

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

Purpose4/5

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

The description clearly identifies the tool as handling Path2D/Path3D curves, splines, and patrol routes, and lists five specific operations with concrete verbs and resources (create_curve_2d, create_curve_3d, scaffold_path, sample_baked_points, generate_spline). It is not a tautology and gives enough detail to understand what the tool does. However, it does not explicitly distinguish this tool from potentially overlapping siblings like curve_manage or geometry_manage.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no exclusions, and no decision criteria. Each operation is named and briefly described, but there is no statement like 'use this for path/curve creation rather than X' or 'do not use for navigation meshes'. Usage context is only implied by the tool name and operation names.

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

pck_manageA

PCK Virtual Package Creation, Dynamic Mounting, and Inspection.

Ops:

  • create_pck(pck_path, files=[], alignment=32) Pack a list of project resource files into a standalone .pck package.

  • load_pck(pck_path, replace_files=True) Dynamically mount a .pck package into the virtual filesystem.

  • inspect_pck(pck_path) Check existence and size in bytes of a .pck package.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses core behaviors: creation, dynamic mounting into the virtual filesystem, and inspection with byte size. However, it does not explain side effects of loading, whether create/load overwrite existing resources, or what happens when replace_files=True, so behavioral transparency is only partially addressed.

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

Conciseness5/5

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

The description is well-structured and front-loaded: a one-line title, three compact operation bullets, and a short canonical call-shape note. Each sentence earns its place, and the format is easy to scan quickly.

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

Completeness4/5

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

Given the tool's three-op multiplexed nature and lack of annotations, the description covers the operations, parameters, defaults, and invocation format. It does not explain alignment, the exact meaning of replace_files, or preconditions for mounting, but since an output schema exists, the absence of return-value detail is acceptable.

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

Parameters4/5

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

The schema has 0% description coverage, so the description must compensate. It does by providing op-specific signatures with defaults: create_pck(pck_path, files=[], alignment=32), load_pck(pck_path, replace_files=True), inspect_pck(pck_path). This gives meaningful parameter knowledge beyond the raw schema, though alignment and replace_files semantics are not explained in depth.

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

Purpose5/5

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

The description opens with a precise statement: 'PCK Virtual Package Creation, Dynamic Mounting, and Inspection.' Each sub-operation has a clear verb and resource: create_pck packs files, load_pck mounts a package, inspect_pck checks existence/size. This clearly distinguishes pck_manage from domain-adjacent siblings like resource_manage or filesystem_manage.

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

Usage Guidelines4/5

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

The description clearly specifies when each op is appropriate: use create_pck to pack files, load_pck to mount a package, inspect_pck to check existence and size. It does not explicitly name alternatives or state when not to use the tool, but the operation definitions give enough context for selection.

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

physics_manageA

Physics Queries, Raycasting, and Sensor Scaffolding.

Ops:

  • raycast_2d(from_pos=[0, 0], to_pos=[0, 100], collision_mask=4294967295, collide_with_bodies=True, collide_with_areas=False, hit_from_inside=False) Perform a 2D raycast query directly through the active World2D physics space, returning collision point, normal, collider path, and shape.

  • raycast_3d(from_pos=[0, 10, 0], to_pos=[0, -10, 0], collision_mask=4294967295, collide_with_bodies=True, collide_with_areas=False, hit_from_inside=False) Perform a 3D raycast query directly through the active World3D physics space, returning collision point, normal, collider path, and shape.

  • query_point_2d(point=[0, 0], collision_mask=4294967295, max_results=32, collide_with_bodies=True, collide_with_areas=False) Query intersecting physics bodies and areas overlapping a 2D world coordinate.

  • scaffold_sensor(parent_path="", target_position=[0, 50], is_2d=True, sensor_name="GroundSensor", collision_mask=1, enabled=True) Instantiate and attach a RayCast2D or RayCast3D sensor to a character or node.

  • query_point_3d(point=[0, 0, 0], collision_mask=4294967295, max_results=32, collide_with_bodies=True, collide_with_areas=False) Query intersecting physics bodies and areas overlapping a 3D world coordinate.

  • shapecast_scaffold(parent_path="", shape_type="sphere", radius=1.0, is_2d=False, sensor_name="ShapeCast", collision_mask=1) Create a ShapeCast2D or ShapeCast3D node with the specified collision shape.

  • set_layer_names(layer_type="2d_physics", layers={"1": "Environment", "2": "Player"}) Set project-wide layer names (layer_type: 2d_physics | 3d_physics | 2d_render | 3d_render).

  • get_layer_names(layer_type="all") Get configured layer names (layer_type: 2d_physics | 3d_physics | 2d_render | 3d_render | all).

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the actions of each operation, including return types (e.g., 'returning collision point, normal, collider path, and shape') and side effects ('Instantiate and attach a RayCast2D or RayCast3D sensor'). However, it does not mention potential pitfalls such as prerequisites (e.g., physics space must be active), error conditions, or the reversibility of layer name changes. It is moderately transparent but incomplete.

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 well-structured as a bullet-style list of operations, with each op showing default parameters and a one-line explanation. It also includes the canonical call shape, which is essential. The length is justified by the multi-operation nature, and it is front-loaded with the overall purpose. Minor waste: the backticks around params and session_id add little.

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

Completeness4/5

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

The description covers all the relevant operations and provides the call format. It does not elaborate on return structures for all ops (e.g., query_point_2d) but the output schema exists, so that burden is reduced. For a tool that bundles 8 operations, the description is sufficiently complete to get started, though more details about error handling and edge cases would help.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must compensate. It includes default values for parameters and brief contextual explanations per operation, but it does not define each parameter's meaning (e.g., 'collision_mask', 'hit_from_inside', 'max_results'). The operation summaries give some context (e.g., what is returned), but not enough for an agent to adjust parameters confidently without extra knowledge. It adds value but under-explains.

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 enumerates multiple specific physics operations (raycast, point query, sensor scaffold, layer names), each with a clear verb and resource. It distinguishes this tool as the physics query and scaffolding manager. While there is a sibling 'physics_query_manage', the description's explicit operation list makes the purpose unambiguous.

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

Usage Guidelines3/5

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

The description gives a clear sense of what each operation does, but it does not explicitly discuss when to prefer this tool over alternatives like physics_query_manage, nor does it provide any exclusions or conditions. The usage context is implied by the operations but not contrasted with siblings, leaving the agent to infer the boundary.

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

physics_query_manageA

Direct 2D and 3D Physics Space State Raycasts, Point Overlaps, and Shape Queries.

Ops:

  • intersect_ray_3d(from_pos=[0.0, 0.0, 0.0], to_pos=[0.0, -10.0, 0.0], collision_mask=0xFFFFFFFF, collide_with_bodies=True, collide_with_areas=False) Cast a ray in 3D world space and return hit position, normal, and collider.

  • intersect_ray_2d(from_pos=[0.0, 0.0], to_pos=[0.0, 100.0], collision_mask=0xFFFFFFFF, collide_with_bodies=True, collide_with_areas=False) Cast a ray in 2D world space and return hit position, normal, and collider.

  • intersect_point_3d(position=[0.0, 0.0, 0.0], max_results=32, collision_mask=0xFFFFFFFF) Query 3D colliders overlapping a point in world space.

  • intersect_point_2d(position=[0.0, 0.0], max_results=32, collision_mask=0xFFFFFFFF) Query 2D colliders overlapping a point in world space.

  • intersect_shape_3d(shape_type="sphere", radius=1.0, max_results=32) Query 3D colliders overlapping a shape in world space.

  • cast_motion_3d(shape_type="sphere", radius=1.0, motion=[0.0, -1.0, 0.0]) Simulate shape motion to determine safe and unsafe collision fractions.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are present, so the description carries full responsibility for disclosing behavior. It does state that these are state queries (raycasts, overlaps, shape queries) which implies read-only operations, and it describes return information ('hit position, normal, and collider'). However, it doesn't explicitly declare non-destructiveness, permission requirements, or side effects. It also notes a compatibility alias for flat parameters, which is useful. Overall, it provides moderate behavioral disclosure but leaves gaps around reversibility and error behavior.

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

Conciseness5/5

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

The description is well-organized using a bulleted list of ops, each with a compact signature and description. It front-loads the overall purpose, then enumerates ops in a structured manner, and ends with the call-shape note. There is no redundant text; every line contributes to understanding. Despite the length (six ops), it remains efficient and scannable.

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

Completeness4/5

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

Given the tool's complexity (six ops, varying parameter sets), the description is quite complete. It covers all ops, their parameters, and basic purpose. The output schema exists (not shown but indicated), so the description need not detail return formats. It does not mention error handling or performance caveats, but for query operations these are less critical. The only minor gap is that it doesn't specify parameter types explicitly (e.g., array of floats), though examples strongly imply them. Overall, it provides sufficient information for an agent to call the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description is the only source for parameter meaning. It compensates thoroughly by listing each op's parameters with default values (e.g., from_pos=[0.0, 0.0, 0.0], collision_mask=0xFFFFFFFF) and a one-line explanation. This is essential for correct invocation since the schema's 'params' is a generic object. The description also explains the canonical call structure, which clarifies how parameters are passed. This is high-value semantics beyond the schema.

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

Purpose5/5

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

The description opens with a precise purpose: 'Direct 2D and 3D Physics Space State Raycasts, Point Overlaps, and Shape Queries.' It then enumerates six specific ops (intersect_ray_3d, intersect_ray_2d, etc.), each with clear verbs and targets. This fully distinguishes the tool from siblings like physics_manage (general physics management) and nav_query_manage (navigation queries) without needing to open schemas.

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

Usage Guidelines3/5

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

The description implicitly communicates usage by listing the operations it supports, but it never explicitly states when to choose this tool over alternatives or when not to use it. Sibling tools like physics_manage and nav_query_manage exist, and the description provides no comparative guidance. Usage context is implied rather than stated, which is adequate but not fully explicit.

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

pingA

Lightweight readiness probe echoing engine status, version, and memory metrics.

Verifies the end-to-end MCP communication path between the AI agent, the local MCP server, and the active Godot Editor session.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations available, the description carries the behavioral burden. It transparently discloses that the tool is non-mutating (a probe) and that it returns engine status, version, and memory metrics while verifying the communication path. It could add explicit 'no side effects' phrasing, but the intent is clear.

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

Conciseness5/5

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

The description is two concise sentences with no filler. The core purpose—probe and returned metrics—is front-loaded, and the supporting sentence explains why the tool exists, making every word purposeful.

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

Completeness4/5

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

For a simple ping tool, the description covers what it does, what it returns, and its verification role. The optional session_id parameter is not explained, but the presence of an output schema and the lightweight nature reduce the need for deeper detail.

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

Parameters2/5

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

The schema has zero description coverage for the session_id parameter, and the description does not directly explain session_id. The phrase 'active Godot Editor session' hints at the parameter's context but does not clarify values, defaults, or behavior, so the description adds only minimal semantic value.

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 identifies the tool as a lightweight readiness probe that echoes engine status, version, and memory metrics, and it states the end-to-end verification purpose. This specific verb+resource framing distinguishes it from heavier management siblings like editor_state, logs_read, or session_manage.

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

Usage Guidelines3/5

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

The description implies when to use the tool: as a lightweight readiness check before relying on the MCP connection to the Godot Editor. However, it does not explicitly state when not to use it or name alternatives, leaving some inference required.

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

plugin_manageB

EditorPlugin Discovery, Addon Enable/Disable, and Custom Plugin Scaffolding.

Ops:

  • list_plugins(addons_dir="res://addons") Scan res://addons and list all installed editor plugins and statuses.

  • set_plugin_enabled(plugin_name, enabled=true) Enable or disable an editor plugin in ProjectSettings.

  • scaffold_plugin(plugin_id="my_custom_addon", plugin_name="My Custom Addon", description="A custom Godot EditorPlugin", author="Developer", version="1.0.0", with_dock=true) Generate complete scaffolding for a new custom EditorPlugin.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. While it states that set_plugin_enabled 'Enable or disable an editor plugin in ProjectSettings' and scaffold_plugin 'Generate complete scaffolding', it does not mention side effects like file writes, potential overwrites, or whether changes are persisted. For a mutation tool, this is a significant gap. The description offers only surface-level behavior without deeper context.

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

Conciseness4/5

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

The description is well-structured: a concise summary line, three operations with signatures and defaults, and a note about the canonical call shape. It is front-loaded with the purpose and details the ops efficiently. The canonical call shape note is valuable for invoking correctly. No redundant sentences; it earns a 4 for good efficiency and organization.

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 three distinct operations accessed via an op parameter, the description covers the core functionality and parameter meanings, and since an output schema exists, return values are not required. However, it misses contextual details such as error handling (e.g., plugin not found), whether operations require a project to be open, or any special behaviors (e.g., needing editor restart after enabling). These gaps prevent a higher score, so a 3 is appropriate.

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

Parameters4/5

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

The input schema has 0% property description coverage, but the description compensates well with inline signatures for each operation, including default values and brief explanations. For example, list_plugins states default addons_dir='res://addons', set_plugin_enabled explains plugin_name and enabled, and scaffold_plugin lists all parameters with defaults and a description. This adds meaning beyond the schema, though it does not provide type constraints or detailed format expectations, so it earns a 4 rather than a 5.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'EditorPlugin Discovery, Addon Enable/Disable, and Custom Plugin Scaffolding' and enumerates three specific operations (list_plugins, set_plugin_enabled, scaffold_plugin) with brief signatures. This makes the resource (editor plugins) and actions (list, enable/disable, scaffold) unambiguous. It doesn't explicitly contrast with sibling tools like editor_manage or editor_reload_plugin, so it falls short of a 5, but the purpose is clear enough for an agent to select it.

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

Usage Guidelines3/5

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

The description implies when to use the tool: if the agent needs to discover plugins, toggle them, or scaffold a new one, this is the tool. However, it does not provide explicit when-to-use vs. alternatives, no 'use this if' or 'do not use when' guidance. It also does not mention any prerequisites (e.g., project loaded) or limitations. This is an implied usage with no exclusions, warranting a 3 rather than a 2.

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

profiler_manageA

Engine Diagnostics, Performance Monitors, and Memory Analysis.

Ops:

  • get_monitors() Read active Godot Performance monitors (FPS, process time, physics time, draw calls, object counts, memory, and audio latency).

  • get_memory_info() Read detailed static, peak, message buffer, VRAM, and texture memory breakdown.

  • get_render_info() Read render pipeline frame statistics (draw calls, primitive count, render objects, VRAM).

  • get_physics_info() Read 2D and 3D physics server stats (active bodies, collision pairs, islands).

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden and discharges it by labeling every operation as 'Read' — clearly signaling no mutation or side effects. It also discloses the call-shape behavior (canonical op/params shape, flat-op compatibility alias, op/session_id top-level), which an agent needs before invoking.

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

Conciseness5/5

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

The description is compact and well organized: a one-line domain summary, four parallel operation bullets, and a single call-shape note. There is no filler or redundant schema repetition; every sentence earns its place and the most decision-relevant information is front-loaded.

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

Completeness4/5

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

For a multi-op read-only diagnostics tool with an output schema and no annotations, the description provides enough operational detail to select and invoke each op, including the canonical call shape. It is slightly incomplete in not explicitly stating that operations take no meaningful params and in not discussing when to use this tool instead of a sibling, but the output schema covers return details.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It semantically documents the op enum by mapping each value to the data it returns, and it clarifies the top-level call structure, but it never explains the params object's contents or the session_id parameter. This is partial compensation: the primary selector (op) is well covered, while the other two parameters remain underspecified.

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 leads with a clear domain ('Engine Diagnostics, Performance Monitors, and Memory Analysis') and defines each exposed operation with a concrete verb and resource: get_monitors() reads Godot performance monitors, get_memory_info() reads memory breakdowns, get_render_info() reads render pipeline statistics, and get_physics_info() reads physics server stats. This makes the tool's scope distinct from the many sibling *_manage tools without needing to open their schemas.

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

Usage Guidelines3/5

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

Usage is implied by the content: an agent can infer this tool is for reading profiling/monitoring data rather than configuring systems, but the description never states when to prefer profiler_manage over related siblings such as rendering_manage, physics_manage, or system_manage. It provides no explicit when-not-to-use guidance or exclusions.

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

project_manageA

Project run/stop and project.godot settings.

Resource form: godot://project/info and godot://project/settings — prefer for active-session reads.

Ops: • stop() Stop the running project (game). Takes no params — call as project_manage(op="stop") or with params={}. Idempotent: succeeds with was_running=false if the project isn't running. Do NOT pass extra fields like force or reason inside params — only the registered keys are accepted (here, none). For multi-editor setups, pass session_id as a sibling of op/params, not inside params. • settings_get(key) Read a ProjectSettings key (e.g. "application/config/name"). • settings_set(key, value) Write a ProjectSettings key and persist to project.godot. Refuses the startup-execution keys (autoload/*, editor_plugins/*, application/run/main_scene, editor/run/main_run_args, editor/script/templates_search_path); use set_main_scene / autoload_manage(op="add") for the two that have a validated route. • set_main_scene(path) Set the project's main scene — the scene project_run(mode="main") boots and the engine loads at startup. Writes application/run/main_scene and persists to project.godot. path must be a res:// scene inside the project that already exists and loads as a PackedScene, so a scaffolded project can be made runnable without opening the generic startup-execution surface. • apply_preset(preset="pixel_art_2d", viewport_width=None, viewport_height=None) Configure project display resolution, stretch modes, and texture filtering in one atomic operation. Presets: 'pixel_art_2d' (320x180 viewport stretch, nearest filter), 'hd_2d' (1920x1080 canvas_items stretch, linear filter), 'low_poly_3d' (1280x720 canvas_items expand, FXAA), 'cinematic_3d' (1920x1080 canvas_items expand, 4x MSAA, FXAA, TAA).

  • get_info() Retrieve comprehensive project metadata: Godot version, project name, project path, display settings, rendering settings, active scenes, and registered autoloads.

  • get_map(max_files=180) Compact, read-only map of scenes, scripts, assets, resources, autoloads, input actions and open scenes. Results are capped and mark truncation.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden, and it delivers: stop is declared idempotent with a was_running=false result, settings_set lists refused keys and persistence behavior, set_main_scene requires an existing res:// scene that loads as PackedScene, apply_preset is atomic, and get_map returns capped results with truncation marking. These behavioral details go well beyond what any annotation would convey.

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 long because the tool is complex, but every sentence earns its place: key warnings are front-loaded (canonical call shape, idempotency, refusal list), each op is a scannable bullet, and no redundant phrasing exists. The structure groups related ops and highlights cross-references without bloat.

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

Completeness5/5

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

For a multi-operation tool with no annotations, the description covers all necessary context: prerequisites (set_main_scene path validation), side effects (persistence, atomicity), edge cases (was_running=false), and routing to siblings. The output schema exists, so return value details are not needed in the description. An agent can call any op correctly with only this text.

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

Parameters5/5

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

Schema coverage is 0%, so the description must fully explain every parameter. It does: each op lists its parameters with types, defaults, and constraints (e.g., apply_preset's viewport_width/height, set_main_scene's path requirements). It also explicitly states that params={} is allowed for stop and that extra fields are rejected, making the semantics unambiguous despite the generic 'params' object in the schema.

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

Purpose5/5

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

The description opens with a clear summary ('Project run/stop and project.godot settings') and then enumerates each operation with a specific verb and target resource (stop, settings_get, settings_set, set_main_scene, apply_preset, get_info, get_map). Each op is distinguished from relevant siblings (project_run, autoload_manage), so an agent can tell exactly what this tool does and what it doesn't.

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

Usage Guidelines5/5

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

The description explicitly says when to prefer the resource form (godot://project/info and godot://project/settings) for active-session reads, and directs users to set_main_scene and autoload_manage for operations that settings_set refuses. It also provides canonical call shape, warns against extra params, and explains session_id placement for multi-editor setups. Nothing is left to inference.

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

project_runA

Run (play) the Godot project from the editor.

Modes:

  • "main": Run the project's main scene (default).

  • "current": Run the currently open scene.

  • "custom": Run a specific scene (requires scene).

Idempotent: if the project is already running, returns success with data.was_already_running=true (no scene switch). To switch scenes, call project_manage(op="stop") first, then project_run again.

After starting playback, waits briefly for the Godot AI game helper to check in. The response includes game_status, helper_live (status == "live"), session_active (status not in {"not_live", "stopped"}), and any recent_errors observed during the run window. The top-level booleans mirror the same fields inside game_status. game_status.status="not_live" means playback launched but the game did not become live before the helper-ready window elapsed; "no_helper" means the project has no _mcp_game_helper autoload, as with some headless/custom-main-loop setups (helper_live=false, session_active=true); "stopped" means playback stopped or never became active before liveness could be confirmed (helper_live=false, session_active=false); "break" means the game process is parked in a remote-debugger break — during boot this is a GDScript parse/load error that froze the game before the helper could register, and the response names the failing script when captured (game_status.break = {reason, can_debug, pre_live}). A game at a break cannot continue on its own: call project_manage(op="stop"), fix the error, and relaunch. Poll editor_state to see late transitions.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"main" | "current" | "custom". Default "main".main
sceneNoScene path (e.g. "res://levels/level1.tscn"). Required for "custom".
autosaveNoWhen True (default), Godot persists in-memory MCP scene mutations to disk before running. Pass False for smoke tests where MCP edits should stay in memory.
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so thoroughly. It discloses idempotency, waits briefly for the helper, defines all status values (not_live, no_helper, stopped, break), explains the implications of a break state, and advises on recovery. Autosave side effects are also mentioned. This is exceptionally transparent behavior disclosure.

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

Conciseness4/5

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

The description is longer than average but every sentence adds essential information. It is well-structured with paragraphs for modes, idempotency, and response statuses. While the status explanation is detailed, it's necessary for correct interpretation. No fluff, but the length pushes the boundary of conciseness; still, it earns its place.

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

Completeness5/5

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

Given the tool's complexity (multiple modes, statuses, helper interaction, error states), the description is comprehensive. It covers edge cases like no helper autoload, break during boot with script errors, and late transitions via editor_state. The output schema exists, so return values are structured, but the description explains their semantics fully. This is a complete picture for an AI agent.

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

Parameters4/5

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

Schema coverage is 100%, and each parameter already has a description. The description adds extra context by explaining the meaning of mode values (e.g., custom requires scene), the autosave use case for smoke tests, and the role of session_id (though not explicitly named, the schema covers it). This adds value beyond the schema without redundancy.

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's purpose: 'Run (play) the Godot project from the editor.' It then lists specific modes (main, current, custom) and distinguishes from the sibling tool project_manage by explaining when to stop the project first. This is a specific verb+resource that stands out from siblings.

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

Usage Guidelines5/5

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

Explicit usage guidance is provided: when to use each mode, how to switch scenes (call project_manage(op="stop") first), and the optional autosave behavior for smoke tests. The description also explains what happens if the project is already running, guiding the agent on whether to stop first. This clearly differentiates when to use project_run vs alternatives.

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

recording_manageA

Viewport Capture, Image Export, and MovieWriter Recording Automation.

Ops:

  • capture_viewport(target_path="res://screenshot.png", viewport_path="") Capture current frame from a Viewport and save to PNG.

  • configure_movie_writer(movie_file="res://movie.avi", fps=60, quality=0.8) Configure MovieWriter settings in ProjectSettings.

  • get_writer_status() Check if MovieWriter mode is active and inspect configured output file.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden, and it does disclose the main side effects: saving a PNG file, configuring ProjectSettings, and read-only status inspection. However, it does not mention overwrite behavior, whether configure_movie_writer persists or replaces existing settings, or error/edge-case behavior, which would be valuable for a mutating recording tool.

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

Conciseness4/5

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

The description is compact and well structured: a one-line purpose, three tight operation bullets with defaults, and a final call-shape note. It contains no filler, though the phrase 'Image Export' is slightly redundant with capture_viewport and could be tightened.

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

Completeness4/5

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

The description covers all three ops, their parameters, defaults, and the accepted call envelope, and an output schema exists so return values do not need prose. It lacks a bit of environment context, such as MovieWriter prerequisites or what happens when no viewport is active, but an agent can likely invoke it correctly.

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

Parameters4/5

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

The schema has 0% description coverage, but the bullets document each operation's parameters with defaults and intent (target_path, viewport_path, movie_file, fps, quality). The canonical call-shape note also clarifies how params, op, and session_id relate. Some semantics, such as what an empty viewport_path means or the quality scale, are still implied rather than explicit.

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

Purpose5/5

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

The description opens with a clear domain statement ('Viewport Capture, Image Export, and MovieWriter Recording Automation') and each op names a specific verb and resource: capture_viewport saves a frame to PNG, configure_movie_writer sets MovieWriter ProjectSettings, and get_writer_status inspects active mode/output. This clearly differentiates the tool from generic viewport, export, and rendering siblings.

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

Usage Guidelines4/5

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

Each operation bullet gives a clear context for use: capture a one-shot PNG, configure MovieWriter settings, or check whether MovieWriter mode is active. The description does not explicitly name alternatives or say when not to use this tool, so it stops short of full routing guidance.

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

rendering_manageB

WorldEnvironment, Post-Processing Effects, CameraAttributes, and Lighting Presets.

Ops:

  • scaffold_world_environment(parent_path="", sky_mode="procedural", tonemap_mode="aces", name="WorldEnvironment") Scaffold a WorldEnvironment node with sky and tonemapping.

  • set_environment_effects(node_path="", glow_enabled=None, glow_intensity=None, ssr_enabled=None, ssao_enabled=None, ssil_enabled=None, sdfgi_enabled=None, volumetric_fog_enabled=None, volumetric_fog_density=None) Configure post-processing and volumetric lighting effects.

  • set_camera_attributes(camera_path, attributes_type="practical", auto_exposure_enabled=None, dof_blur_far_enabled=None, dof_blur_far_distance=None) Configure CameraAttributes on a Camera3D node.

  • apply_lighting_preset(preset="outdoor_sunny", node_path="") Apply a visual lighting preset to the environment.

  • get_environment_info(node_path="") Read active environment properties, background mode, and post-processing toggles.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose read vs. write behavior through op descriptions like 'Read active environment properties' and 'Configure post-processing...', but it omits side effects, persistence behavior, error cases, or node requirements. The one-line op descriptions are adequate but not deeply transparent.

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 long because it documents five operations, but each line serves a purpose. It front-loads the resource domain, then gives a structured op list, and ends with the call-shape note. It is organized and not repetitive.

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 embedded signatures make the tool callable, and an output schema exists, so return-value details are not required. However, the description lacks usage context, alternative routing, exact enum values, and behavioral caveats. It is sufficient for basic invocation but not fully complete for a multi-op tool with generic input schema.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It largely does by embedding full op signatures with parameter defaults and short explanations for each parameter group. It stops short of enumerating allowed values for enums like preset, sky_mode, and tonemap_mode, but the names and defaults provide substantial guidance.

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

Purpose4/5

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

The description clearly identifies the tool's domain: WorldEnvironment, post-processing, CameraAttributes, and lighting presets. It enumerates five concrete operations with verb-like names, so an agent can tell what the tool does. However, it does not explicitly distinguish itself from overlapping sibling tools like light_manage, gi_manage, or camera_manage.

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 related siblings, nor any mention of prerequisites or when not to use it. The resource-domain summary implies usage, but the description never states conditions or alternatives.

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

resource_manageA

Resource (asset) search, inspection, assignment, and creation. Covers generic Resource subclasses plus specialized authoring (Curve, Environment, physics shapes, gradient/noise textures).

Ops: • search(type="", path="", offset=0, limit=100) Search for resources by type or path. Type matching includes subclasses. At least one filter required. Paginated. • load(path) Inspect a .tres / .res — returns type and editor-visible properties. • assign(path, property, resource_path) Load and assign a resource to a node property. Undoable. • get_info(type) Introspect a Resource class — properties, parent, abstract flag, concrete_subclasses (for abstract bases). Read-only. • create(type, properties=None, path="", property="", resource_path="", overwrite=False) Instantiate a Resource subclass. Either path+property (assign to a node, undoable) or resource_path (save to .tres). For specific families (Curve, Environment, etc.) prefer the dedicated ops. • curve_set_points(points, path="", property="", resource_path="") Replace all points on a Curve / Curve2D / Curve3D. Auto-creates the curve resource if the slot is empty (curve_created flag). • environment_create(path="", preset="default", properties=None, sky=None, resource_path="", overwrite=False) Build Environment + Sky chain. Presets: default | clear | sunset | night | fog. sky may be bool or a procedural sky dict such as {"sky_material": "procedural", "sky_top_color": "#0f172a"}. Either assign to a WorldEnvironment node or save .tres. • environment_setup_3d(preset="daylight", parent_path="", create_sun=True, volumetric_fog=False, glow=False) Scaffold complete 3D environment and lighting. Presets: daylight | sunset | dark_dungeon | neon_night | clear. Auto-creates WorldEnvironment and DirectionalLight3D with matching sky, lighting, shadows, and tone mapping in a single undoable step. • environment_setup_2d(preset="dungeon", parent_path="", add_torch_to="", torch_energy=1.2, torch_radius=2.0, shadows=True) Scaffold complete 2D atmospheric lighting environment. Presets: dungeon | midnight | sunset | spooky | foggy. Creates CanvasModulate ambient tint, and optionally attaches a PointLight2D radial torch with falloff texture and shadows to the target character/object. • physics_shape_autofit(path, source_path="", shape_type="") Size a CollisionShape2D/3D to a nearby visual's bounds. Searches direct siblings then parent-siblings (handles nested Body→Collision layouts). Ambiguous matches return candidate paths in error.data.candidates. Auto-creates the concrete Shape subclass if needed. shape_type accepts either the short form ("box", "sphere", "capsule", "cylinder" for 3D; "rectangle", "circle", "capsule" for 2D) or the matching Godot class name ("BoxShape3D", "RectangleShape2D", etc.). • physics_shape_generate(paths, shape_type="box", body_type="static", scene_file="") Generate a StaticBody3D or Area3D sibling (named Collider) with a CollisionShape3D for every MeshInstance3D path. Shapes are fitted in body-local space; a mesh that already has a collider sibling, a duplicate path, or a scene-root mesh is refused before anything is written. shape_type: box | sphere | capsule | cylinder (or the class name); a sphere/capsule/cylinder under a non-uniformly scaled parent is refused. body_type: static | area. scene_file pins the request to that edited scene. Up to 1024 paths are processed in bounded work across editor frames; inside batch_execute at most 16. The bulk write is one undo action. Returns: {created: [{mesh_path, body_path, shape_path, shape_type, body_type}], undoable: true}. • gradient_texture_create(stops, width=256, height=1, fill="linear", path="", property="", resource_path="", overwrite=False) Build GradientTexture2D from color stops. fill: linear | radial | square. • noise_texture_create(noise_type="simplex_smooth", width=512, height=512, frequency=0.01, seed=0, fractal_octaves=0, path="", property="", resource_path="", overwrite=False) Build NoiseTexture2D wrapping FastNoiseLite. Noise types: simplex | simplex_smooth | perlin | cellular | value | value_cubic.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so richly. It discloses read-only behavior for get_info, undoable writes, auto-creation behavior, refusal conditions, bounded work, and an example return shape for physics_shape_generate. This goes well beyond a minimal behavioral statement.

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 long but well-structured: a purpose summary, grouped ops with inline signatures, and the canonical call shape. Everything present earns its place, though the amount of detail is substantial. It is appropriately sized for a multi-op dispatcher but sits at the upper bound of conciseness.

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

Completeness3/5

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

The description covers 13 of the 15 ops in the schema enum and gives return details where non-obvious, such as physics_shape_generate. However, delete and move are entirely absent, and with no annotations or visible output schema help, those ops are left undocumented. For a complex dispatcher, this incompleteness prevents full self-sufficiency.

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

Parameters4/5

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

The schema's params is an opaque object with 0% description coverage, so the per-op parameter lists are the only documentation. The description supplies defaults, enums-like presets, shape_type short/class name alternatives, and example sky dicts. The undocumented delete and move ops are a notable gap, but the described ops are thoroughly specified.

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

Purpose4/5

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

The description states a specific purpose: 'Resource (asset) search, inspection, assignment, and creation' and then details concrete operations. It is clear about the resource domain, but it does not explicitly differentiate from overlapping siblings like curve_manage or texture_manage, and it fails to mention the delete and move ops present in the schema enum.

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

Usage Guidelines4/5

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

The description gives clear internal usage context, such as 'For specific families (Curve, Environment, etc.) prefer the dedicated ops' and distinguishes when to use physics_shape_autofit vs physics_shape_generate. However, it does not explicitly explain when to choose resource_manage over sibling tools 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.

save_manageA

Save Game and Persistence Management.

Ops: • scaffold_save_system(name="SaveManager", script_path="res://scripts/save_manager.gd", save_directory="user://saves/", register_autoload=True, enable_encryption=False, encryption_password="") Scaffold an atomic, corruption-resistant SaveManager singleton that automatically orchestrates saving and loading across all nodes in the 'saveable' group, with optional password encryption and slot management.

• save_slot(slot_name="slot_1", data={}, directory="user://saves/") Save arbitrary game state data into a designated slot atomically.

• load_slot(slot_name="slot_1", directory="user://saves/") Load state data from a designated slot.

• list_slots(directory="user://saves/") List all saved game slots, timestamps, and metadata.

• delete_slot(slot_name="slot_1", directory="user://saves/") Delete a save game slot.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It meaningfully discloses behavioral details: atomic and corruption-resistant writes, automatic orchestration across nodes in the 'saveable' group, optional encryption, and slot metadata listing. It does not go into error or auth behavior, but the core side effects of each op are stated.

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

Conciseness5/5

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

The description is a compact, scannable list of operations with signatures and one-line semantics, followed by the canonical call shape. Every line adds necessary information and there is no filler or redundancy.

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

Completeness5/5

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

Given the tool has multiple internal operations and an output schema, the description is sufficient: it defines call shape, op names, params, defaults, and behavioral guarantees. It also covers the compatibility alias for flat parameters, so an agent has what it needs to invoke any listed op.

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

Parameters5/5

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

The input schema only defines op/params/session_id with 0% description coverage, but the description provides full per-op signatures with defaults and explanations (e.g., save_slot(slot_name='slot_1', data={}, directory='user://saves/')). It fully compensates for the schema's lack of param detail.

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

Purpose5/5

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

The description opens with 'Save Game and Persistence Management' and then enumerates five specific operations (scaffold_save_system, save_slot, load_slot, list_slots, delete_slot), each with a clear verb and target resource. This makes it easy to distinguish from sibling management tools like scene_save or filesystem_manage.

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

Usage Guidelines4/5

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

The title and op list provide clear context: use this tool for save/load slot orchestration, scaffolding a SaveManager, listing slots, and deleting saves. It does not explicitly name alternatives or state when-not-to-use, but the operation names and descriptions make the appropriate usage obvious.

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

scene_get_hierarchyA

Get the scene tree hierarchy from the open scene.

Returns a paginated flat list of nodes with name, type, path, and child count. Walks up to the specified depth.

Resource form: godot://scene/hierarchy — prefer for active-session reads.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoMaximum walk depth. Default 10.
limitNoMax number of nodes to return. Default 100.
offsetNoNumber of nodes to skip. Default 0.
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses that the return is a paginated flat list with specific fields (name, type, path, child count), that it walks to a specified depth, and that it operates on the active scene. This gives good behavioral insight, though it doesn't explicitly state read-only or error behavior.

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

Conciseness5/5

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

The description is two sentences plus a resource form line, with the core purpose stated first. Every sentence adds value and there is no redundancy or filler.

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

Completeness4/5

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

Given the output schema and fully documented parameters, the description covers the key behavioral aspects (pagination, depth, flat list, active scene). It doesn't mention error handling or explicit read-only safety, but those are less critical for a get-style tool with an output schema.

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 context by explaining the result is a paginated flat list and that depth controls walk depth, but this largely restates what the schema already provides. It does not significantly extend parameter understanding beyond the schema.

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

Purpose5/5

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

The description states 'Get the scene tree hierarchy from the open scene' with a specific verb and resource, and clearly distinguishes from sibling tools like node_find by focusing on the full hierarchy rather than searching. The resource form adds further specificity.

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

Usage Guidelines4/5

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

The description says 'prefer for active-session reads', providing clear context on when to use the resource form. However, it does not explicitly name alternative tools or state when not to use it, so exclusions are missing.

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

scene_manageA

Scene authoring (create, save_as, list open roots).

Resource form: godot://scene/current and godot://scene/hierarchy — prefer for active-session reads.

Ops: • create(path, root_type="Node3D", root_name="") Create the initial .tscn with the given root and open it. root_name defaults to filename basename when empty. This initial root is written immediately, but later node_create/node_set_property mutations remain in editor memory until scene_save or save_as is called. • save_as(path) Save the currently edited scene to a new file path. • get_roots() List scenes currently open in the editor; flag the edited one. • instantiate_batch(instances, parent_path="") Instantiate multiple PackedScenes into the active scene in a single UndoRedo action. instances: [{scene_path, name?, position?, rotation?, scale?, properties?}]. • diagnose(root_path="") Comprehensive health check / scene doctor for the open scene. Validates orphan collision shapes, unassigned shapes, non-uniform scaling, missing textures, camera configuration, and control hierarchy with actionable error/warning reports and fix suggestions.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does so well: it discloses that the initial root is written immediately while later node_create/node_set_property mutations persist in editor memory until save, and that instantiate_batch is one UndoRedo action. It also documents the flat-parameters compatibility alias. It does not cover failure modes or permissions, but the core write/persistence behavior is explicit.

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 summary and resource-routing note are front-loaded, then each op is a compact bullet with enough detail. Despite length, each sentence contributes, including the canonical call shape and compatibility alias note, so the structure is efficient for a five-op tool.

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 no annotations, a permissive schema, and five distinct ops, the description is complete: it covers call shape, op behaviors, defaults, persistence semantics, and the read-alternative resource form. An output schema exists, so the absence of return-value prose is not a gap.

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

Parameters5/5

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

Schema description coverage is 0% and the params object is permissive, so the description is the only documentation of parameters. It provides full signatures, defaults (root_type='Node3D', parent_path=''), the root_name default-to-basename rule, and the fields of instances. This exceeds what the input schema offers.

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

Purpose5/5

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

The description opens with a clear scope ('Scene authoring') and enumerates five operation verbs with their resources: create, save_as, get_roots, instantiate_batch, and diagnose. It also marks the resource form for active-session reads, distinguishing this authoring tool from read-oriented siblings such as scene_get_hierarchy.

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

Usage Guidelines4/5

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

It gives an explicit when-not-to-use signal: godot://scene/current and godot://scene/hierarchy should be preferred for active-session reads. It also explains op-specific contexts, e.g., save_as writes to a new path and create opens the initial scene. It does not directly contrast every sibling such as scene_save, but the op descriptions largely disambiguate.

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

scene_openA

Open an existing scene file (.tscn) in the editor.

If path is already the currently edited scene this is a no-op — the in-memory state (including any unsaved MCP mutations) is preserved. Pass force_reload=True when the file on disk is the authority and the editor should discard the open in-memory copy and re-read the scene from disk.

The reply is sent only after the editor has actually switched to the requested scene (switched: true), so follow-up writes are safe immediately. switched: false with settle: "timeout" means the switch had not landed within the wait window. In synchronous contexts (e.g. inside batch_execute) the reply returns immediately with switched: false and settle: "not_waited". In both of those cases, re-check editor_state before issuing follow-up writes.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesFile path of the scene to open (e.g. "res://main.tscn").
session_idNoOptional Godot session to target. Empty = active session.
force_reloadNoRe-read the scene from disk even when it is already open. This discards unsaved in-memory edits to that scene.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral burden. It discloses that force_reload discards unsaved in-memory edits, that the reply is sent only after the switch lands, and describes the two non-success paths (switched:false with settle timeout or not_waited) with a recommendation to re-check editor_state. This is exemplary.

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 dense but efficiently structured. The first sentence gives the purpose, the second paragraph explains edge cases and force_reload, and the third covers reply timing and safe write conditions. Every sentence contributes to decision-making, with no fluff or redundancy.

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

Completeness5/5

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

For a tool with moderate parameters and significant behavioral nuance, the description covers all critical aspects: synchronous vs asynchronous behavior, timeout semantics, discard behavior, and follow-up safety. An output schema exists, so return values are handled elsewhere. This is fully complete for an agent to use correctly.

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

Parameters5/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds substantial meaning: it gives a concrete path example (res://main.tscn), explains the no-op default, and details the force_reload parameter's destructive semantics (discarding unsaved edits). It also clarifies the interaction between path, force_reload, and settle behavior, going well beyond the schema.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Open an existing scene file (.tscn) in the editor.' This clearly identifies the tool's function and distinguishes it from siblings like scene_save or scene_manage. The .tscn extension and 'existing scene file' add precision.

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

Usage Guidelines4/5

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

Provides strong contextual guidance: explains the no-op behavior when the path is already the current scene, instructs when to use force_reload, and clarifies the reply timing and settle semantics. It does not explicitly name alternative tools or state when-not-to-use, but the context is unambiguous and actionable, missing only a direct comparison to siblings.

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

scene_saveA

Save the currently edited scene to disk.

Node and property mutation tools change the editor's in-memory scene; call this explicitly to persist those mutations to the existing path.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It discloses that the tool writes the in-memory scene to disk and targets the 'existing path,' implying overwrite. It could be more explicit about destructive overwrite or prerequisites, but it is substantially transparent for a simple save operation.

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

Conciseness5/5

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

Two concise sentences with no filler. The main purpose is front-loaded in the first sentence, and the second sentence earns its place by explaining when and why to call the tool.

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

Completeness4/5

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

For a low-complexity tool with one optional parameter and an output schema, the description covers the core workflow well: after mutations, save to the existing path. Some edge context such as overwrite warning or needing an open scene is not explicit, so it is strong but not fully complete.

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

Parameters3/5

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

Schema description coverage is 100% for the only parameter, session_id, and the schema already documents 'Optional Godot session to target. Empty = active session.' The description adds no parameter-specific meaning, but the baseline of 3 applies when the schema handles parameter semantics.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Save the currently edited scene to disk.' It also distinguishes this tool from sibling mutation tools by explaining that node/property mutations only alter the in-memory scene, while scene_save persists them.

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

Usage Guidelines4/5

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

It explicitly says when to call the tool: after node/property mutations, 'call this explicitly to persist those mutations to the existing path.' This is clear contextual guidance, though it does not name specific alternatives or explicit when-not-to-use conditions, so it falls just short of a 5.

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

script_attachA

Attach a script to a node in the scene tree.

Replaces any existing script on the node. Undoable.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesScene path of the node (e.g. "/Main/Player").
session_idNoOptional Godot session to target. Empty = active session.
script_pathYesres:// path of the .gd (e.g. "res://scripts/player.gd").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

In the absence of annotations, the description appropriately discloses the key destructive behavior ('Replaces any existing script') and assures undoability. This goes beyond minimal and covers the most impactful side effects, though it omits details like permission requirements or session behavior.

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

Conciseness5/5

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

The description is two concise sentences. It front-loads the primary action and immediately states the crucial caveat, with no filler or redundancy.

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

Completeness4/5

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

For a simple tool, the description covers the core purpose, the replacement behavior, and undoability. An output schema exists, so return details are likely covered elsewhere. It might benefit from mentioning node existence validation, but overall it is sufficiently complete for its complexity.

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%, with detailed parameter descriptions and examples. The description does not add any extra parameter-level semantics beyond what the schema already provides, so it earns the baseline score of 3.

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

Purpose5/5

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

The description uses a specific verb ('attach') and identifies the resource ('script' to a 'node'), making the tool's purpose unmistakable. It clearly distinguishes from sibling tools like script_create or script_patch by focusing on the act of attachment.

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

Usage Guidelines4/5

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

The context is clear: this tool is for attaching a script to a node. The phrase 'Replaces any existing script' hints that it can also be used to swap scripts. However, it does not explicitly mention alternatives or exclusion cases, so it falls short of a 5.

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

script_createA

Create a new GDScript source file (.gd) on disk.

Writes content to a .gd file in the project. Overwrites if it exists. Triggers a filesystem scan. New files include data.cleanup.rm listing the .gd + .gd.uid sidecar; overwrite omits it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesres:// path (e.g. "res://scripts/player.gd").
contentNoGDScript source. Empty creates a blank file.
session_idNoOptional Godot session to target. Empty = active session.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden for behavior disclosure. It explicitly mentions overwrite behavior, filesystem scan triggering, and the sidecar listing in data.cleanup.rm. This is substantial, though it omits permission/session context.

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

Conciseness5/5

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

The description is three sentences, front-loaded with a clear purpose, and every sentence contributes behavior or side-effect information. No filler or redundancy.

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

Completeness4/5

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

Given the moderate complexity and the presence of an output schema, the description is complete enough: it covers core functionality, overwrite semantics, and side effects. Minor gaps exist around session targeting and alternative tool guidance, but these are not critical.

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 already provides 100% coverage for all three parameters, including descriptions for path, content, and session_id. The description adds no parameter-specific detail beyond this, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool creates a .gd file on disk, explicitly naming the resource type and the action. It also distinguishes from siblings like script_patch by focusing on creation rather than patching.

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 use for creating new GDScript source files, but it does not explicitly state when to prefer this over alternatives like script_patch or script_manage. There are no clear exclusions or when-not-to-use notes.

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

script_manageA

Script (.gd) reading, detachment, and outline.

Resource form: godot://script/{path} — prefer for active-session reads.

Ops: • read(path) Read full source, line count, file size. • detach(path) Remove the currently attached script from a node. Undoable. • find_symbols(path) Outline a .gd — class_name, extends, functions, signals, @export vars. • validate(path="", content="") Validate a GDScript file or source string and return compiler diagnostics. • delete(path) Delete a script file and its .uid sidecar from the project.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden. It discloses important side effects: detach is undoable, delete removes both the file and its .uid sidecar, read returns full source plus line count and file size, and validate returns compiler diagnostics. It does not cover permissions or irreversible-change warnings beyond delete, but the provided behavioral detail is strong.

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

Conciseness5/5

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

The description is well structured: a short scope header, a resource-form tip, a controlled bullet list of operations with their parameters and return summaries, and a compact call-shape note. Every sentence earns its place and there is no redundant filler.

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

Completeness4/5

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

For a multi-operation tool with no annotations and minimal schema descriptions, this is substantially complete: all operations, parameter shapes, defaults, call convention, and key output/side effects are covered. The main gap is that session_id semantics are not explained, and there is no explicit statement about whether detach or delete require an active session beyond the read-preference note.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully document parameters. It does: each operation lists its parameter names, validate provides defaults for both path and content, and the canonical call shape explains how op and params relate. The compatibility alias for flat parameters and the reminder that op and session_id stay top-level add crucial semantic clarity beyond the sparse schema.

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

Purpose4/5

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

The description clearly names the resource type (.gd scripts) and enumerates five distinct operations with specific verbs: read, detach, find_symbols, validate, delete. It is easy to tell what the tool does, though the opening summary omits validate and delete, and it does not explicitly differentiate from sibling tools like script_patch or script_attach.

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

Usage Guidelines3/5

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

Usage is implied by the operation list and the note that the godot://script resource form is preferred for active-session reads. However, there is no explicit guidance about when to choose this tool over script_create, script_patch, script_attach, or other script-related siblings, and no when-not-to-use conditions.

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

script_patchA

Anchor-based string-replace edit on a .gd file.

Finds an exact old_text and replaces with new_text. Fails on multiple matches unless replace_all=True; fails on zero matches. Exact byte match (whitespace significant). Triggers filesystem scan and refreshes an already-loaded GDScript in place so the next call runs the new code (response reloaded=true; otherwise reload_reason says why). Not undoable via Ctrl+Z.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesres:// path ending in .gd.
new_textYesReplacement (empty deletes).
old_textYesExact substring to find. Must be unique unless replace_all.
session_idNoOptional Godot session to target. Empty = active session.
replace_allNoReplace every occurrence. Default False.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states failure modes (multiple/zero matches), exact byte matching, whitespace significance, filesystem scan behavior, in-place reload of loaded scripts, the reloaded/reload_reason response signal, and non-undoability. This is exemplary transparency.

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

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and every sentence adds essential operational detail. There is no filler, repetition, or unnecessary context. It fits substantial behavioral information into a tight structure.

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 modest complexity, full schema coverage, and an output schema, the description is complete. It covers matching behavior, failure conditions, side effects on loaded scripts, response hints, and undoability. An agent has enough context to invoke the tool correctly and anticipate outcomes.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema by explaining the uniqueness requirement for old_text, the replace_all fallback, the exact-match/whitespace-sensitive semantics, and the reload consequence of a patch. This exceeds the schema's simple property descriptions.

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

Purpose5/5

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

The description opens with a clear verb and resource: 'Anchor-based string-replace edit on a .gd file.' It further specifies the exact operation (find old_text, replace with new_text) and distinguishes this from siblings like script_create or script_manage by focusing on in-place patching.

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

Usage Guidelines4/5

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

The description clearly situates the tool as an editing operation on existing GDScript files, with detailed constraints about matches and reload behavior. It does not explicitly name alternatives or exclusion conditions, but the intended use case is strongly implied and unlikely to be confused with creation or management tools.

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

session_activateA

Set the active Godot editor session for subsequent tool calls.

Accepts either an exact session_id or a substring hint matched against the session's short name (project folder basename), project_path, or session_id. An exact id match always wins; a substring must resolve to exactly one session or the tool returns an error listing the candidates.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesAn exact session id (``<project-slug>@<16hex>``, e.g. ``my_game@7f9c3a10d8e426b1``, from ``session_manage`` with op="list") OR a substring hint like a project folder name ("test_project", "my_game").

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

The description explains behavior beyond simply stating the function: exact ID matches always win, substring matches must resolve to exactly one session, and ambiguous matches return an error with candidates. This is valuable because no annotations are provided.

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

Conciseness5/5

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

The description is concise and well-structured. It front-loads the purpose, then explains input matching rules in clear, minimal sentences with no wasted words.

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

Completeness5/5

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

For a single-required-parameter tool with an output schema, the description fully covers what the tool does, how input is interpreted, and the error behavior for ambiguous matches. Nothing essential is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds meaningful matching semantics: the exact versus substring matching behavior and the fields matched (short name, project_path, session_id). This goes beyond the schema's parameter description.

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

Purpose5/5

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

The description clearly states the specific action: 'Set the active Godot editor session for subsequent tool calls.' This distinguishes it from session_manage and other session-related operations, making the tool's role immediately understandable.

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

Usage Guidelines3/5

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

The phrase 'for subsequent tool calls' gives clear context for when the tool should be used, but there is no explicit guidance on when to use this versus session_manage or other session operations. No alternatives or exclusionary conditions are mentioned.

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

session_manageC

Session listing.

Resource form: godot://sessions — prefer for resource-aware clients.

Ops: • list() List every connected Godot editor with metadata: session_id, short name, godot_version, project_path, plugin_version, server_version, editor_pid, server_launch_mode, current_scene, play_state, readiness, connected_at, last_seen, is_active. The response also carries the server-global exclude_domains (tool domains not registered on this server via --exclude-domains).

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden and does disclose substantial behavior: the full metadata field list for list(), the server-global exclude_domains field, and the canonical vs. flat call-shape compatibility. However, the ping operation is completely undocumented, and there is no explicit statement about side effects or read-only behavior beyond the word 'listing.'

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 well-structured with a clear 'Ops' bullet, a concise resource-form note, and a detailed but relevant metadata list. It is front-loaded with the core 'Session listing' purpose, though the omission of ping makes the structure feel incomplete rather than intentionally concise.

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

Completeness2/5

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

The list() path is described in detail, but the tool is a dual-op tool according to the schema and the description covers only one op. The missing ping semantics, undefined session_id usage, and lack of differentiation from the sibling ping tool leave an agent without enough information to use the full tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only explains the call-shape convention and leaves session_id and params semantically undefined. The op parameter's valid values are mentioned only in the schema, and the meaning of the 'ping' op is not explained at all.

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 clearly identifies the list() operation and the session metadata it returns, which establishes a specific resource and action. However, the tool is named session_manage and the schema also exposes a 'ping' operation that the description never mentions, so the stated purpose ('Session listing') is incomplete and does not cover the full tool surface.

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 only usage guidance is 'prefer for resource-aware clients,' which addresses transport style rather than when to choose this tool over alternatives. It provides no guidance on when to use list() versus ping(), nor how session_manage relates to sibling tools like session_activate or ping.

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

shader_global_manageB

Global Shader Parameters, Uniform Variables, and Project-Wide Shader Settings.

Ops:

  • list_globals() List all global shader parameters defined in RenderingServer.

  • set_global(name, value) Set or update runtime value of a global shader parameter.

  • add_global(name, type="float", value=None) Define a new global shader parameter in ProjectSettings (shader_globals/).

  • remove_global(name) Remove a global shader parameter definition.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that set_global updates runtime values, add_global defines parameters in ProjectSettings, and remove_global removes definitions, which gives some behavioral context. However, it does not disclose side effects, persistence behavior, error conditions, or whether operations affect the running project immediately, which would be valuable for a tool with no annotation safety hints.

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

Conciseness4/5

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

The description is well-structured with a clear header, a bulleted list of operations, and a concise note about the canonical call shape. It is front-loaded with the tool's purpose and each operation is described in one line. The only minor inefficiency is the slightly redundant phrase 'Global Shader Parameters, Uniform Variables, and Project-Wide Shader Settings' which could be tighter, but overall it is appropriately sized.

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 and a moderate complexity level with four operations. The description covers the operations and their parameters, but it lacks guidance on when to use this tool versus shader_manage, and it does not describe return values or error behavior. Given the output schema exists, return values are less critical, but the missing usage differentiation and behavioral details leave some gaps.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter documentation. The description does explain the op-specific parameters (name, value, type) in the operation list, but it does not clarify the format of 'value' (e.g., type coercion, accepted types) or the meaning of 'type' beyond a default of 'float'. The canonical call shape is explained, but the parameter semantics are only partially covered.

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

Purpose4/5

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

The description clearly identifies the tool as managing global shader parameters, uniform variables, and project-wide shader settings, and enumerates four specific operations (list, set, add, remove). It distinguishes itself from the sibling shader_manage by focusing on global/project-wide shader parameters rather than general shader management, though it doesn't explicitly name that sibling.

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

Usage Guidelines3/5

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

The description implies usage by listing operations and their purposes, but it does not explicitly state when to use this tool versus alternatives like shader_manage or visual_shader_manage. It provides no exclusions or conditions for choosing this tool over siblings, leaving the agent to infer from the operation names.

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

shader_manageA

Shader System and Visual Effect Management.

Ops:

  • create(path="res://shaders/custom.gdshader", shader_type="canvas_item", code="", overwrite=False) Create a new .gdshader resource with boilerplate for canvas_item, spatial, particles, sky, or fog.

  • apply_preset(preset="outline_2d", target_node_path="", shader_path="", params={}) Compile and apply production shader presets: - outline_2d: Dynamic sprite border outline (outline_color, outline_width). - hit_flash: Combat damage flash effect (flash_color, flash_modifier). - dissolve_2d: Burning noise dissolve effect (dissolve_amount, burn_color, burn_size). - water_2d: Wave distortion and reflection (water_tint, wave_speed, wave_freq, wave_amp). - foliage_wind: Vertex displacement wind sway (wind_speed, wind_strength). - crt_scanline: Retro CRT monitor scanlines, curvature, and vignette. - hologram_glitch: Sci-fi holographic glitch and scanlines (holo_color, scanline_density). Optionally assign directly to target node's material.

  • set_param(param="outline_width", value=2.0, target_node_path="", material_path="") Set a uniform parameter on a ShaderMaterial by target node or material path.

  • get_params(target_node_path="", material_path="") Inspect shader code and parameters from a target node or material path.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It accurately describes what each operation does (e.g., 'Create a new .gdshader resource', 'Compile and apply production shader presets') but does not mention potential side effects such as overwriting files (create has overwrite param), required permissions, or whether operations are read-only or mutating. It also does not disclose error behavior or reversibility.

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 well-structured with a clear hierarchy: overall purpose, operation list, and canonical call shape. It is verbose but every section contributes value, and it front-loads the core purpose. The canonical call shape note is useful though slightly tangential. Could be tightened but remains efficient for its complexity.

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

Completeness4/5

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

Given the tool's complexity (four ops, multiple parameters, seven presets with custom params), the description is quite complete. It covers all operations, parameters, and preset details. However, it does not describe return values or error handling, and an output schema exists but its content is not described. Still, for an agent to correctly invoke the tool, the description provides sufficient guidance.

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

Parameters5/5

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

Schema coverage is 0% because the input schema only has generic op/params/session_id fields. The description fully compensates by listing every operation's specific parameters (e.g., create: path, shader_type, code, overwrite; apply_preset: preset, target_node_path, shader_path, params) and even enumerates preset names and their tunable parameters. This adds critical meaning beyond the schema.

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

Purpose5/5

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

The description clearly states its purpose as 'Shader System and Visual Effect Management' and enumerates four specific operations (create, apply_preset, set_param, get_params) with distinct verbs and resources. It differentiates from sibling tools like shader_global_manage and visual_shader_manage by focusing on per-node shader operations, making its scope unambiguous.

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

Usage Guidelines3/5

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

The description lists operations and presets but does not explicitly contrast with alternatives or state when to prefer this tool over shader_global_manage or visual_shader_manage. Usage context is implied by the operation names and preset categories, but there is no direct guidance on exclusions or alternative selection.

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

signal_manageA

Signals (Godot's event/observer mechanism) — list, connect, disconnect.

Ops: • list(path, include_editor=False) List all signals on the node and their current connections (built-in and custom). By default editor-internal connections (the SceneTreeEditor dock and friends) are filtered out — pass include_editor=True to surface them. The response carries editor_connection_count so an agent can tell how many were hidden. • connect(path, signal, target, method) Connect a signal from path to a method on the target node. Undoable. • disconnect(path, signal, target, method) Remove an existing connection. Undoable.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It adds meaningful detail: connect/disconnect are undoable, list filters out editor-internal connections by default but can surface them, and the response includes editor_connection_count. This goes beyond bare operation names, though it does not discuss permissions or error behavior.

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

Conciseness5/5

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

The description is well-organized with a brief intro, three bullet-pointed operations, and a compact call-shape note. Every sentence provides useful information, and the structure makes the multi-op behavior easy to parse without unnecessary verbosity.

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

Completeness4/5

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

The description covers all operations, their parameter semantics, and key behaviors like undoability and default filtering. Since an output schema exists, return-value specifics are not required. It could briefly mention error conditions or signal name requirements, but the provided information is sufficient for most use cases.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate fully, and it does. It names and explains each relevant parameter (path, include_editor, signal, target, method) within the operation snippets and clarifies the canonical call shape with op and params. This adds substantial meaning beyond the generic schema.

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

Purpose5/5

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

The description identifies signals as Godot's event/observer mechanism and enumerates the three operations: list, connect, and disconnect. This is a specific verb+resource statement that clearly distinguishes this tool from the broader sibling set.

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

Usage Guidelines4/5

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

Each operation is described with its intended use case: listing signals with optional editor-internal inclusion, connecting a signal to a target method, and disconnecting an existing connection. It does not explicitly name alternatives or exclusions among sibling tools, so it falls short of a 5.

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

skeleton_manageA

Skeleton3D Rigging, Bone Transform Inspection, BoneAttachment3D Sockets, and Ragdolls.

Ops:

  • get_skeleton_info(skeleton_path="") Inspect bone hierarchy, rest transforms, and pose transforms.

  • set_bone_pose(skeleton_path, bone_name, position=None, rotation=None, scale=None) Set position, rotation, or scale for a specific bone.

  • scaffold_bone_attachment(skeleton_path, bone_name, name="BoneAttachment3D") Scaffold a BoneAttachment3D node attached to a designated bone.

  • scaffold_ragdoll(skeleton_path, collision_layer=1, collision_mask=1, total_mass=70.0) Generate PhysicalBone3D nodes for all bones in a Skeleton3D.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes mutating actions (set_bone_pose, scaffold_ragdoll) and inspection (get_skeleton_info), but it does not state side effects (e.g., whether set_bone_pose overwrites existing transforms, or whether scaffold_ragdoll replaces existing physics nodes). It also doesn't mention error behavior or whether operations require a selected Node. This is a moderate gap for a multi-op tool.

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

Conciseness4/5

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

The description is well-structured: a brief summary line followed by a bulleted list of ops. Each op is one line with parameter hints. It front-loads the tool's purpose and separates ops clearly. The only slight redundancy is the final paragraph about call shape and 'op' handling, but that is necessary because the schema is loose. No waste.

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

Completeness4/5

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

Given the tool's complexity (multiple ops, nested params, no schema details), the description is quite thorough. It covers all ops, parameter names, and the call format. However, it misses details like return values for each op (though an output schema exists), prerequisites (e.g., that a Skeleton3D node must be selected), and edge cases (e.g., what happens if bone_name doesn't exist). These are moderate gaps but not critical for an agent to call the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the schema provides no meaning for the 'op' enum values or the 'params' object. The description fully compensates by documenting each op's parameters inline (e.g., skeleton_path, bone_name, position, rotation, scale for set_bone_pose; collision_layer, total_mass for scaffold_ragdoll). It also clarifies the 'params' structure and the canonical call shape, which is essential given the schema's ambiguity.

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 starts with a clear summary: 'Skeleton3D Rigging, Bone Transform Inspection, BoneAttachment3D Sockets, and Ragdolls.' Then it lists four concrete operations, each with a specific verb and resource (e.g., 'get_skeleton_info' for inspection, 'set_bone_pose' for transform changes). This distinguishes it from siblings like 'joint_manage' or 'body_manage' by clarifying it deals with Skeleton3D bones and attachments.

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

Usage Guidelines4/5

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

The description provides clear guidance on what each op does, including the context for using 'scaffold_bone_attachment' (to attach a node to a bone) and 'scaffold_ragdoll' (to generate PhysicalBone3D nodes). However, it does not explicitly state when not to use this tool versus siblings, nor does it mention alternatives. The ops' purposes are clear enough that an agent can infer use cases, but explicit exclusion of, say, 'joint_manage' for physics joints would improve it.

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

sprite_manageA

Sprite, MultiMesh, and Line2D Management.

Ops:

  • create_sprite_frames(animations=[{"name":"default","fps":5.0,"loop":true}], save_path="") Create a new SpriteFrames resource with named animations.

  • scaffold_animated_sprite(parent_path="", sprite_type="2d", sprite_frames_path="", node_name="AnimatedSprite") Scaffold an AnimatedSprite2D or AnimatedSprite3D in current scene.

  • scaffold_multimesh(parent_path="", mesh_type="box", instance_count=100, is_2d=False, node_name="MultiMeshInstance") Scaffold a MultiMeshInstance2D or MultiMeshInstance3D with instances.

  • configure_line_2d(node_path, points=[], width=10.0, default_color="#ffffff") Configure points and styling of a Line2D node.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what each op does at a high level (e.g., 'Scaffold an AnimatedSprite2D or AnimatedSprite3D'), but does not state side effects like scene mutation, whether operations are destructive, permission requirements, or reversibility. The mutating nature of operations like scaffold and configure is implied but not explicit. This is a significant gap for a tool with no annotation safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured: a summary line, a bulleted list of ops with signatures and one-line explanations, and a note on call shape. It is front-loaded with the resource scope, and each entry earns its place. It is not overly verbose; the format makes it easy to scan. Minor redundancy exists between the summary and the op explanations, but overall it is compact and organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the four operations and their parameters, but lacks guidance on when to choose this tool versus alternatives, and does not discuss return values or error handling. Since an output schema exists (per context), the description need not explain return values, but for a multi-op tool, behavioral details like scene mutation or prerequisites are missing. It is adequate for basic invocation but not fully complete for complex scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It does so by listing each op's signature with parameters and defaults, e.g., create_sprite_frames(animations=[...], save_path=''), scaffold_animated_sprite(parent_path, sprite_type, sprite_frames_path, node_name). This provides meaning beyond the generic params object in the schema. However, details like exact types for points in configure_line_2d are not given, and the behavior of some parameters is only partially explained. Still, it covers most parameters effectively.

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 explicitly states it manages Sprite, MultiMesh, and Line2D, and lists four distinct operations with clear verbs and resources: create_sprite_frames, scaffold_animated_sprite, scaffold_multimesh, configure_line_2d. This differentiates it from siblings like mesh_manage or texture_manage, giving an agent a clear idea of what it does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it based on the resource type (sprite, multimesh, line), but does not explicitly mention alternatives or conditions for choosing this tool over others. It does provide a canonical call shape, which helps with invocation, but no explicit 'when not to use' guidance. The usage context is clear enough for basic selection, but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

system_manageA

Operating System Information, Time APIs, Engine Time Scale, Clipboard, and Environment.

Ops:

  • get_system_info() Inspect OS name, processor count, device model, video adapter, and locale.

  • get_time() Query current Unix epoch, ISO 8601 string, timezone offset, and datetime dict.

  • set_time_scale(time_scale=1.0) Accelerate or slow down the game engine time scale.

  • get_clipboard() Retrieve text from the system clipboard.

  • set_clipboard(text="") Set text into the system clipboard.

  • get_env(var_name) Read a process environment variable.

  • set_env(var_name, value="") Set a process environment variable.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the fundamental read/write nature of each op (e.g., get_env 'Read' vs set_env 'Set', set_time_scale 'Accelerate or slow down'). It stops short of richer behavioral context such as side effects on persistent process state, clipboard permission implications, or whether time-scale changes are reversible.

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 opens with a one-line domain summary and then uses a compact bullet list where every line names an op and its effect. The canonical call-shape note is necessary and placed last; no filler or redundant restatement of the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-op tool, all seven operations are described with their key parameters, and an output schema exists so return values need not be spelled out. It is complete enough to invoke correctly, though it lacks any caveats about environment persistence, clipboard side effects, or rate-limit/authorization expectations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description compensates by listing per-op signatures with defaults (time_scale=1.0, text='', value='') and by explaining the dispatch envelope: {'op': '<verb>', 'params': {...}}. This meaningfully exceeds the bare schema, though session_id and the exact param container types are not expanded.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete scope (OS information, time APIs, engine time scale, clipboard, environment) and enumerates seven operations with explicit verbs and targets, e.g. 'get_system_info() Inspect OS name...' and 'set_time_scale(time_scale=1.0) Accelerate or slow down...'. This makes the tool's function unambiguous and separates it from sibling 'manage' tools that target game scenes, resources, or editors.

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 domain list and operation names imply when to use it: whenever the agent needs system info, time, time scale, clipboard, or environment variables. However, there is no explicit 'use this instead of X' guidance or exclusions, and with nearly 100 sibling *-manage tools the routing is left mostly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_manageA

Test result inspection (re-fetches the most recent test_run payload).

Resource form: godot://test/results — prefer for active-session reads.

Ops: • results_get(verbose=False) Same shape as test_run — full results from the last run, no re-execution. verbose=True includes every individual test result.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses that the tool only re-fetches the most recent payload, does not re-execute tests, and that verbose=True expands individual result details. This clearly signals a non-mutating inspection operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and well-structured: purpose, resource form, operation list, and call shape are each clearly separated. Every sentence contributes operational value, and the purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema covers return structure, so the description does not need to detail responses. It adequately covers purpose, usage, and core parameter semantics for a one-op tool. The only noticeable omission is session_id semantics, but this is a minor gap given the overall clarity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, so the description compensates by explaining the core parameters. It documents the canonical call shape, constrains op to results_get, and describes the verbose flag within params. However, session_id is only mentioned as top-level without explaining its meaning, leaving a small gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Test result inspection (re-fetches the most recent test_run payload)', using a specific verb and resource. It clearly distinguishes this from the sibling test_run by emphasizing 'no re-execution' and positioning it as a read-oriented tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It says 'prefer for active-session reads', giving clear context for when to use this tool. It also notes that it returns 'full results from the last run, no re-execution', implying it is the right choice when results are needed without rerunning tests. It does not explicitly list exclusions or alternatives, but the guidance is still useful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_runA

Run GDScript test suites inside the connected Godot editor.

Discovers test_*.gd in res://tests/, instantiates them, and runs all test_* methods. Returns a compact summary by default (counts, suite names, duration) plus failures only. verbose=True includes every individual test result (each with per-test duration_ms).

Preloaded GDScript dependencies may remain stale after source edits; the response includes cache_warning. Restart the editor before using a rerun to validate dependency edits. ResourceLoader cache modes alone do not refresh the GDScript preload cache.

The whole run has a 300s budget; the plugin aborts between tests shortly before it expires and returns TEST_RUN_TIMEOUT with the partial summary (full partials via test_manage(op="results_get")). Long suites are safe — the editor services the MCP transport between tests — but one single test blocking the main thread for 20s+ can still drop the session. Not allowed inside batch_execute.

The response includes edited_scene (the scene currently open in the editor). Many suites assume the project's main scene is open; if it is not and there are failures, the response also carries a scene_warning — open the main scene (scene_open) and re-run before treating those failures as real.

ParametersJSON Schema
NameRequiredDescriptionDefault
suiteNoRun only the named suite (e.g. "scene", "node", "editor"). Empty runs all suites.
verboseNoInclude every individual test result. Default False.
test_nameNoRun only tests whose name contains this substring.
session_idNoOptional Godot session to target. Empty = active session.
exclude_test_nameNoSkip tests whose name contains this substring.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses several behaviors: caching issues (preload cache), timeouts (300s budget), potential session drop, return of partial summaries, and warnings. This gives the agent a clear picture of side effects and failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is lengthy and repeats some information (e.g., response includes edited_scene). While it provides valuable details, it could be more concise. However, it is structured into paragraphs and fronts the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers important operational context: timeouts, cache, scene requirements, and restrictions. Given the tool's complexity, it is fairly complete. Output schema exists so return values are not described, which is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema descriptions cover all parameters comprehensively. The tool description adds context for 'verbose' and 'suite' but doesn't explain test_name, session_id, exclude_test_name. Since schema coverage is 100%, the description doesn't need to repeat, but it does not add much beyond.

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's purpose: running GDScript test suites in the Godot editor and describes what it does (discovers, instantiates, runs). It also mentions the default behavior and verbose option, making it distinct from other tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance on when to use: it mentions restrictions like 'Not allowed inside batch_execute', advice to restart editor for cache issues, and suggests opening the main scene. It also points to test_manage for full partials. However, it doesn't explicitly contrast with other test-related tools beyond that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

texture_manageA

Texture and Image Resource Management.

Ops:

  • create_image(width=64, height=64, use_mipmaps=False, format="rgba8", fill_color=None, save_path="") Create a new Image resource and optionally fill color and save to disk.

  • create_atlas(atlas_path, region_rect=[0,0,32,32], filter_clip=False, save_path="") Create an AtlasTexture referencing a region of an existing texture.

  • get_texture_info(path) Get metadata for a texture or image resource.

  • create_curve_texture(points=[[0.0,0.0],[1.0,1.0]], width=256, save_path="") Create a CurveTexture resource from control points.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It does explicitly mention optional save-to-disk behavior, default values, and that atlas creation references an existing texture, which gives useful side-effect context. It does not cover error cases, permissions, or what happens when save_path is omitted, but the presence of an output schema helps cover return-value expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a concise heading, bulleted operation signatures, and a final canonical-call-shape note. Each line serves a purpose, and the operation-specific parameters are front-loaded. Despite its length, the detail is justified because the tool is a multi-operation dispatcher and the schema provides almost no parameter documentation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with multiple sub-operations, no annotations, and a generic schema, the description provides enough operational and parameter context to invoke the tool correctly. The output schema covers return values, so the main remaining gaps are higher-level usage heuristics and error/edge-case behavior, which are not essential for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is generic (op/params/session_id) with 0% description coverage, so the description must supply all parameter meaning. It compensates well by listing each operation's parameters with defaults and brief semantic comments, such as width, height, use_mipmaps, format, fill_color, save_path, atlas_path, region_rect, filter_clip, and points. It does not fully specify accepted format values or coordinate formats, but it adds substantial value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Texture and Image Resource Management' and enumerates four specific operations—create_image, create_atlas, get_texture_info, and create_curve_texture—each with a one-line explanation. This distinguishes the tool's category and responsibilities, though it does not explicitly distinguish it from sibling resource-management tools.

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 operation list strongly implies usage: this tool is for creating or inspecting texture/image resources. However, there is no explicit when-to-use or when-not-to-use guidance, and no sibling alternatives are mentioned, so the agent must infer the boundary between this tool and tools like resource_manage or filesystem_manage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

theme_manageA

Theme authoring (Godot's stylesheet-like resource for Controls). Cascades down a Control subtree when assigned via theme_apply.

Ops (pass via op="..." plus a params dict): • create(path, overwrite=False) Create a new empty Theme .tres at a res:// path. • set_color(theme_path, class_name, name, value) Set a color slot. value: "#rrggbb"/"#rrggbbaa", named, or {"r","g","b","a"}. • set_constant(theme_path, class_name, name, value) Set an integer constant (separation, margin, padding). • set_font_size(theme_path, class_name, name, value) Set a font_size slot in pixels. • set_stylebox_flat(theme_path, class_name, name, bg_color?, border_color?, border?, corners?, margins?, shadow?, anti_aliasing?) Compose a StyleBoxFlat (panels, button states, line edits). border/corners/margins/shadow each accept "all" + per-side keys. • apply(node_path, theme_path="") Assign the theme to a Control (cascades to descendants). Empty theme_path clears. • apply_preset(preset="dark_modern", theme_path="", node_path="", set_as_default=False, overwrite=True) Apply a full cohesive Theme preset (Button states, Panels, LineEdits, Sliders, ProgressBars, Labels) in one call. Presets: 'cyberpunk_neon', 'dark_modern', 'retro_pixel', 'fantasy_parchment', 'clean_light'.

All ops accept session_id on the wrapper to target a specific editor.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Since no annotations are provided, the description carries the transparency burden. It discloses meaningful behaviors: apply cascades to descendants, empty theme_path clears, and overwrite flags exist for create and apply_preset. However, it does not mention side effects like writing .tres files to disk, mutating existing resources, undo implications, or whether any operation is readonly.

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 long but well-structured as a bulleted op list with front-loaded domain context. Each line adds operational information; the only slight redundancy is repeating the canonical call shape after already explaining op/params dicts, but this is useful for clarity. It is dense without being bloated.

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 seven-op tool with minimal schema and no annotations, the description covers the essential operational space: parameter formats, defaults, presets, session targeting, and behaviors. Since an output schema exists, return values need not be described. It lacks explicit side-effect warnings and sibling-routing guidance, but the operation manual itself is largely complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description fully compensates. It documents every op's parameters, color formats ('#rrggbb', named, or {'r','g','b','a'}), StyleBoxFlat sub-options (border/corners/margins/shadow with 'all' or per-side keys), preset names, and the canonical call shape. This is the only source of param semantics and it is thorough.

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 explicitly states the resource ('Theme', Godot's stylesheet-like resource for Controls) and its key behavior ('Cascades down a Control subtree when assigned via theme_apply'). It lists concrete operations (create, set_color, set_stylebox_flat, apply_preset), making the tool's function unambiguous. This clearly differentiates theme_manage from the large sibling group of `*_manage` tools even though the tool name is generic.

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 implies usage for theme authoring but never explicitly states when to choose this tool over alternatives such as ui_manage, resource_manage, or stylebox-related tools. It offers no exclusion criteria, no prerequisites, and no sibling comparisons. Given the extensive list of sibling `*_manage` tools, the agent gets no active routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tilemap_manageA

TileMap / TileMapLayer authoring (set tiles, fill rects, clear, read cells, generate layouts).

CRITICAL DIRECTIVE: ALWAYS place tiles directly down into the TileMap or TileMapLayer node in the active editor scene using this tool. NEVER generate maps by writing procedural GDScript code in _ready() unless the user explicitly requested runtime procedural generation. Direct tile placement enables visual editing, native Godot physics, and instant editor inspection.

All operations target TileMapLayer or TileMap nodes in the currently edited scene by scene-relative path (e.g. "/LavaLake20x20/Ground"). All write ops are undoable via EditorUndoRedoManager.

source_id is the TileSet source index. atlas_col/atlas_row are the atlas coordinates of the tile within that source. For full-tile animated sources (lava, water, sewage) use atlas_col=0, atlas_row=0.

IMPORTANT — Source-ID remapping in specialized .tres files: When a layer uses a specialized .tres (e.g. volcano_animated.tres), Source-IDs are re-numbered from 0. Example: volcano lava is Source 8 in the main volcano.tres but Source 0 in volcano_animated.tres. Always use the remapped ID when the TileMapLayer references a specialized .tres, not the original ID from the main .tres.

Ops: • tilemap_set_cell(path, source_id, atlas_col, atlas_row, map_x, map_y) Set a single tile at (map_x, map_y). Returns: {map_x, map_y, source_id, atlas_col, atlas_row}

• tilemap_set_cells_rect(path, source_id, atlas_col, atlas_row, rect_x, rect_y, rect_w, rect_h) Fill a rect_w × rect_h region starting at (rect_x, rect_y) with one tile type in a single undo action. Returns: {cells_filled, rect: {x, y, w, h}}

• tilemap_clear(path) Remove all tiles from the layer. Returns: {cleared: true}

• tilemap_get_cells(path) Return all used cell coordinates. Returns: {cells: [{x, y}, ...], count: int}

• tilemap_place_tile(path, source_id, atlas_col, atlas_row, map_x, map_y, rotation_degrees=0, flip_h=false, flip_v=false, alternative_tile=-1) Place a tile with exact rotation (0, 90, 180, 270) and flip flags. Returns: {map_x, map_y, source_id, atlas_col, atlas_row, alternative_tile, rotation_degrees, flip_h, flip_v}

• tilemap_rotate_cell(path, map_x, map_y, degrees=90) Rotate tile cell at (map_x, map_y) clockwise by degrees (90, 180, 270). Returns: {map_x, map_y, degrees, old_alternative, new_alternative}

• tilemap_flip_cell(path, map_x, map_y, flip_h=false, flip_v=false) Flip an existing tile cell at (map_x, map_y) horizontally and/or vertically. Returns: {map_x, map_y, flip_h_applied, flip_v_applied, new_alternative}

• tilemap_erase_cell(path, map_x, map_y) Erase a single tile cell at (map_x, map_y). Returns: {map_x, map_y, erased}

• tilemap_get_cell(path, map_x, map_y) Get detailed information of a tile cell. Returns: {has_tile, map_x, map_y, source_id, atlas_col, atlas_row, alternative_tile, flip_h, flip_v, transpose}

• tilemap_generate_layout(path, genre="platformer", rect_w=32, rect_h=18, rect_x=0, rect_y=0, source_id=0, floor_col=0, floor_row=0, wall_col=1, wall_row=0, accent_col=2, accent_row=0, layer=0) Generate a complete layout placed directly into the editor. Supported genres: 'platformer', 'topdown', 'rpg', 'dungeon', 'arena'. Returns: {genre, cells_placed, rect, source_id, layer, undoable}

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description must carry the burden of behavioral disclosure. It does this well by noting that write operations are undoable via EditorUndoRedoManager, explaining source-ID remapping for specialized .tres files, and listing return shapes. Gaps remain for three operations present in the schema enum but absent from the description, but the documented operations are well covered.

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 long but well organized: purpose, directive, key concepts, then a labeled op list with signatures and return values. Each sentence carries meaning, though the lengthy op list and canonical-call note could be tightened. The front-loaded directive makes the most critical guidance immediately visible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex multi-operation tool with no annotations and minimal schema parameter coverage, the description provides substantial context: paths, undoability, source-ID remapping, operation signatures, and return values. It is incomplete, though, because the op enum includes import_matrix, paint_terrain, and scatter_props with no corresponding description or parameter semantics, leaving those invocations underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates by providing inline signatures for each operation, explaining source_id, atlas_col/atlas_row, remapped source IDs, allowed rotation degrees, flip flags, and supported genres. However, import_matrix, paint_terrain, and scatter_props are listed in the op enum but have no parameter documentation, preventing a perfect score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear verb-resource pairing: 'TileMap / TileMapLayer authoring (set tiles, fill rects, clear, read cells, generate layouts).' It enumerates concrete operations and explicitly targets an editor context, distinguishing this tool from nearby siblings like gridmap_manage and tileset_manage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'CRITICAL DIRECTIVE' explicitly states when to use direct tile placement versus procedural GDScript generation, including the exception if the user requested runtime generation. It also scopes all operations to the currently edited scene and scene-relative paths, which is strong guidance for when and how to invoke the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tileset_manageB

TileSet management — atlas inspection tools.

Ops: • tileset_diagnose(tileset_path, check_collision=False, physics_layer=0, max_findings=80) Read-only TileSet doctor: missing textures, atlas sizing, tiles outside textures, tile pixel-size inconsistencies, and optional missing collision. Collision checks are opt-in because decorative tiles need no shapes. Rotated tile variants are not errors by themselves.

• tileset_get_atlas_tiles(tileset_path, source_id) Return all occupied atlas tile positions for one source in a TileSet. Read-only — does not modify any resource or project file.

    tileset_path: res:// path to the .tres TileSet resource (required)
    source_id:    raw TileSet source id of the TileSetAtlasSource to query (required, ≥ 0)

    Returns:
      {"tiles": [{"col": int, "row": int}, ...], "count": int}

    Error codes (passed through from GDScript handler):
      MISSING_REQUIRED_PARAM  — tileset_path empty or source_id absent
      RESOURCE_NOT_FOUND      — tileset_path does not exist on disk
      WRONG_TYPE              — not a TileSet, or source is not a TileSetAtlasSource
      VALUE_OUT_OF_RANGE      — source_id does not exist in this TileSet

• tileset_get_atlas_image(tileset_path, source_id, max_size=0) Return the atlas sprite-sheet texture of a TileSetAtlasSource as a Base64-encoded PNG image. Read-only — reads the texture directly from the resource without any UI interaction.

    tileset_path: res:// path to the .tres TileSet resource (required)
    source_id:    raw TileSet source id of the TileSetAtlasSource to query (required, ≥ 0)
    max_size:     optional int; if > 0, scale the image so its longest
                  edge is at most max_size pixels (default 0 = full res)

    Returns:
      {"image_base64": str, "width": int, "height": int,
       "original_width": int, "original_height": int, "format": "png"}

    Error codes (passed through from GDScript handler):
      MISSING_REQUIRED_PARAM  — tileset_path empty or source_id absent
      RESOURCE_NOT_FOUND      — tileset_path does not exist on disk
      WRONG_TYPE              — not a TileSet, source not a TileSetAtlasSource,
                                or source has no texture assigned
      VALUE_OUT_OF_RANGE      — source_id does not exist in this TileSet

• Atlas image workflow: To visually inspect what tiles look like, use tileset_get_atlas_image instead of editor screenshots. It reads the texture directly from the resource — no UI interaction or editor state required.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

For the documented ops, the description is highly transparent: it explicitly declares read-only behavior, explains opt-in collision checks, and enumerates error codes. However, because the schema includes mutation ops not mentioned in the description, the blanket read-only framing is misleading and the mutation behaviors are undisclosed. With no annotations, the description carries the full burden and falls short of revealing the tool's actual scope.

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 well-organized: a summary line, then each op with parameter lists, returns, and error codes, plus a workflow note and canonical call shape at the end. It is front-loaded with the purpose. It is somewhat verbose — the read-only status and error-code patterns repeat — but the structure makes it scannable and the length is justified by the detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has nine ops in the enum but only three are described, and the create operations are entirely missing. The description includes return shapes for two ops but not for diagnose, and the output schema (though present) isn't used. The mischaracterization as read-only atlas inspection further undermines completeness for an agent trying to decide whether to invoke this tool for creation workflows.

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 description provides detailed parameter semantics for the three documented ops (tileset_path, source_id, max_size, check_collision, etc.), fully compensating for the 0% schema coverage for those ops. But it gives zero parameter documentation for the six other ops in the enum, so overall coverage is partial. For the described subset it's excellent, but as a tool-wide definition it's incomplete.

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 clearly states the tool's purpose for the three atlas-inspection ops (diagnose, get_atlas_tiles, get_atlas_image) and differentiates from editor_screenshot in the workflow note. However, the op enum includes create operations (create_collision_polygon, create_from_texture, etc.) that are completely omitted, making the stated purpose 'atlas inspection tools' misleading about the tool's full scope.

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 workflow note gives explicit guidance to use tileset_get_atlas_image over editor_screenshot, and the read-only nature of the documented ops is stated. But there is no guidance for the create ops (which exist in the schema), no comparison to sibling tools like resource_manage or tilemap_manage, and no when-not-to-use conditions beyond the screenshot alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tween_manageA

Procedural Motion, Game-Feel Tween Recipes, and Tween Code Generation.

Ops:

  • create(node_path, property, target_value, duration=0.5, trans_type="linear", ease_type="in_out", delay=0.0, relative=false) Create and run a Tween interpolating a property on a node.

  • preset_animation(node_path, preset="punch_scale", duration=0.3, ...) Execute instant procedural animation presets: - punch_scale: impact scale pop and overshoot (punch_factor) - shake_2d: screen/node trauma shake with decay (amplitude) - float_bob: looping levitation / idle hover (bob_distance, loops) - fade: alpha fade (target_alpha) - flash_color: flash modulate highlight (flash_color) - progress_fill: smooth bar / gauge value fill (target_value) - bounce_in: drop into place with bounce ease (drop_offset) - spin: rotation spin (revolutions)

  • generate_code(target_var="self", property="position", target_value="Vector2(100, 100)", duration=0.5, trans_type="linear", ease_type="in_out", delay=0.0, relative=false) Generate production GDScript Tween code.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses key behaviors: create runs a tween immediately, preset_animation executes instant procedural animations, and generate_code only produces code (doesn't run). It notes that flat op parameters are accepted as a compatibility alias, indicating flexibility in input format. However, it doesn't mention side effects like error handling or whether create affects the scene immediately, though the behavioral descriptions are fairly clear.

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 fairly structured, starting with a high-level summary, then listing Ops with clear headers and bullet-like details. The preset list is efficient and front-loaded with the most common usage. It's longer than ideal but each part adds value; the canonical call shape note is placed at the end, which is less critical. Overall, it's organized and informative without excessive verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (3 ops, many parameters, output schema for code generation), the description is quite complete. It covers what each op does, key parameters, presets, and the call shape. However, it lacks details on error handling, default values beyond what's shown, and edge cases like what happens with invalid node paths. For an agent, this is probably sufficient for correct invocation in typical scenarios.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% coverage (no descriptions), so the description must compensate. It does list parameters for each op and explains preset types, but the details for create and generate_code are minimal—it repeats parameter names without explaining semantics like 'relative' meaning or trans/ease types. For presets, it explains each preset's parameters and effect, which is helpful. Overall, it partially compensates but leaves some meaning to be inferred.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the tool's purpose: procedural motion, tween recipes, and tween code generation. It details three operations (create, preset_animation, generate_code) with specific actions and parameters, distinguishing it from animation_manage and animation_tree_manage which likely handle full AnimationPlayer resources. However, it could be more explicit about differentiation from those siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit contexts for each op: create for simple property tweens, preset_animation for instant animation presets (listing each preset's use case), and generate_code for producing GDScript code. It implies when to use this tool (e.g., for simple tweens) vs animation_manage (full animation) but does not explicitly state when not to use it. The presets list common patterns, giving clear usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ui_manageA

UI / Control authoring (HUD, menus, layouts, vector decoration).

Ops: • set_anchor_preset(path, preset, resize_mode="minsize", margin=0) Apply a Control layout preset. preset: top_left | top_right | bottom_left | bottom_right | center_left | center_top | center_right | center_bottom | center | left_wide | top_wide | right_wide | bottom_wide | vcenter_wide | hcenter_wide | full_rect. resize_mode: minsize | keep_width | keep_height | keep_size. Target must be a Control. CanvasLayer is the canonical HUD parent but is not a Control — put a Control child under the CanvasLayer and apply the preset to that overlay. • set_text(path, text) Set text on a Label/Button/LineEdit/TextEdit/RichTextLabel. • build_layout(tree, parent_path="") Atomically build a UI subtree from a nested spec ({type, name?, properties?, anchor_preset?, anchor_margin?, theme?, children?}). Validates everything before mutating. properties is direct node properties only. Theme constants like container spacing live under theme_override_constants/<name> — e.g. {"theme_override_constants/separation": 8} on a VBoxContainer, not {"separation": 8} (which errors). theme and anchor_preset require a Control / Window — for a HUD, nest a Control under a CanvasLayer and apply them to the Control child, not the layer itself. • draw_recipe(path, ops, clear_existing=True) Attach a declarative list of vector _draw() ops to a Control — radar sweeps, gauges, corner brackets, crosshairs, waveforms. Op kinds: line | rect | arc | circle | polyline | polygon | string. • scaffold_screen(kind="main_menu", parent_path="", name="", title="", layer=10, buttons=None) Instantly scaffold a complete, production-ready UI screen hierarchy under a CanvasLayer with responsive anchors, panels, title headers, and buttons. Supported kinds: main_menu | pause_menu | hud | game_over | dialog_box.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and largely succeeds: it states that build_layout 'Validates everything before mutating', that set_anchor_preset applies a preset and requires a Control, and that scaffold_screen creates a hierarchy under a CanvasLayer. It does not detail failure modes, permission requirements, or side effects beyond the described mutations, but the core behavioral traits of each op are disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is organized as a scannable bulleted list with a clear one-line scope summary, each op shown as a signature with defaults, followed by necessary caveats and examples. It ends with the canonical call shape and compatibility alias, which is directly useful for invocation. Every section adds value and the structure makes the long content navigable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a multi-op tool with a generic schema and no annotations, the description covers all operational dimensions: valid parameter values, defaults, target node constraints, examples of correct vs. incorrect property paths, and the canonical request format. Since an output schema exists, return-value documentation is not required, and nothing critical appears missing for an agent to select and invoke the right op.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the generic schema only exposes 'op', 'params', and 'session_id' with no per-parameter documentation. The description fully compensates by providing concrete signatures, defaults, allowed values, and examples for every op: e.g., preset enums, resize_mode options, the tree spec structure, draw op kinds, and scaffold_screen kinds. This gives the agent far more semantic meaning than the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a clear scope statement ('UI / Control authoring') and then enumerates five concrete operations with explicit verbs and targets: set_anchor_preset, set_text, build_layout, draw_recipe, scaffold_screen. Each op is described with enough specificity to distinguish it from the other ops in the same tool, and the tool's focus on UI/Control work separates it from the many sibling tools like node_manage or theme_manage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Each operation includes guidance on when to use it: set_anchor_preset for layout presets, build_layout for atomic subtree construction, draw_recipe for vector drawing, scaffold_screen for complete screen hierarchies. It also gives concrete exclusions, such as 'Target must be a Control' and 'CanvasLayer ... is not a Control', which prevents misuse. It does not explicitly compare against sibling tools like theme_manage, but the op-level usage context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

undo_redo_manageA

Editor Undo/Redo History Introspection and Transaction Execution.

Ops:

  • get_history() Query active action name, undo stack depth, and history IDs.

  • undo() Execute an undo action in the active editor.

  • redo() Execute a redo action in the active editor.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full behavioral burden. It labels get_history as a query and undo/redo as 'Execute', which hints at read vs. mutating behavior, but it never discloses failure modes (e.g., empty undo stack), side effects on history, permissions, or whether changes are reversible beyond the undo/redo pair.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with a clear summary line followed by a bulleted op list and a brief call-shape note. There is no filler or redundant restatement of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema exists, so explaining return values is not necessary; the op list gives enough to invoke each operation. However, missing session/active-editor preconditions, failure behavior, and per-op parameter semantics leave an agent to infer important operational constraints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain op, params, and session_id. It adds a canonical call shape and notes that op/session_id remain top-level, which is useful structural guidance. However, it does not define what session_id means, what values params may contain, or prerequisites for any operation, so it only partially compensates for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is specific: 'Editor Undo/Redo History Introspection and Transaction Execution' and then enumerates three distinct operations (get_history, undo, redo) with one-line behaviors. This clearly separates it from the many sibling *_manage tools by domain and action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The opening line and op list make the use context explicit: use this tool when you need to inspect the active editor's undo/redo history or execute an undo/redo transaction. It does not name an alternative or exclusion, but the domain is clear enough that an agent can select it among siblings like editor_manage or editor_state.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewport_manageA

Godot Viewport and SubViewport Lifecycle, Splitscreen, and Render Texture Routing.

Ops:

  • create_subviewport(parent_path="", name="SubViewport", size=[512, 512], render_target_update_mode=3, transparent_bg=false, own_world_3d=false, as_container=false) Create a SubViewport or SubViewportContainer in the active scene.

  • scaffold_splitscreen(layout="2p_horizontal", is_3d=false, parent_path="") Scaffold a multi-player splitscreen layout (2p_horizontal, 2p_vertical, 4p_quad) with SubViewports, SubViewportContainers, and independent cameras.

  • wire_render_texture(viewport_path, target_node_path, target_property="") Route a SubViewport's ViewportTexture into a Sprite2D, TextureRect, or MeshInstance3D material albedo.

  • get_viewport_tree() Inspect all Viewports in the active scene, their sizes, update modes, and active cameras.

  • set_properties(viewport_path, size=..., transparent_bg=..., render_target_update_mode=..., own_world_3d=..., msaa_2d=..., msaa_3d=..., screen_space_aa=..., use_hdr_2d=...) Configure rendering fidelity and options for an existing Viewport.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It does a good job by explaining the effect of each op and disclosing the compatibility alias for canonical call shape. It could add more about side effects or error conditions, but the verbs and details are largely transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear title, bulleted op signatures, and one-line explanations. The canonical call shape note is useful and placed at the end. There is no filler or redundant prose.

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?

All five operations are documented with signatures and purpose, and an output schema exists so return-value details are not required. Minor gaps remain around the precise meaning of some optional rendering parameters and cross-tool guidance, but the description is otherwise complete for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is generic (op/params/session_id with 0% schema description coverage), so the description is the sole source of parameter meaning. It provides named signatures with defaults and some enums (e.g., layout='2p_horizontal', size=[512, 512]). Some values, such as render_target_update_mode=3, are left unexplained, but the level of compensation is strong.

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 title immediately scopes the tool to Godot Viewport/SubViewport management, and the op list enumerates concrete actions with specific resources: create_subviewport, scaffold_splitscreen, wire_render_texture, get_viewport_tree, and set_properties. This is sufficiently distinct from sibling tools like camera_manage, texture_manage, and node_manage.

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?

Each operation's one-line purpose gives clear functional context (e.g., "Scaffold a multi-player splitscreen layout..."), so an agent can infer when to use a given op. However, the description never explicitly contrasts alternatives or states when not to use this tool versus sibling tools such as camera_manage or rendering_manage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

visual_shader_manageC

VisualShader Graph Management.

Ops:

  • create_visual_shader(shader_type="spatial", save_path="") Create a new VisualShader resource for spatial, canvas_item, particles, etc.

  • add_node(shader_path, node_type="VisualShaderNodeColorConstant", shader_type_enum=0, position=[0,0]) Add a VisualShaderNode into the visual shader graph.

  • connect_nodes(shader_path, shader_type_enum=0, from_node=0, from_port=0, to_node=0, to_port=0) Connect two node ports in a VisualShader graph.

  • get_graph(shader_path, shader_type_enum=0) Inspect all nodes and connections in a VisualShader graph.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must fully disclose behavioral traits. It describes what each operation does, but omits side effects (e.g., file writes, project state changes), permission requirements, error behavior, or whether operations are reversible. It does mention the canonical call shape, which is helpful, but that is more about protocol than tool behavior. Significant gaps remain for a mutation-capable tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with bullet-like operation listings, front-loading the resource type and core operations. It is not overly verbose for the number of operations covered. The call-shape note adds necessary protocol context without bloating. Slightly long but appropriate for the scope.

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's multi-operation complexity and the presence of an output schema (which may cover returns), the description is reasonably complete at a high level. It covers the operations and their parameters, but lacks details like valid ranges for shader_type_enum, node_type categories, or error handling. It also doesn't mention whether operations require an active session or project. These gaps could lead to misinvocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It lists each operation's parameters with defaults and a one-line summary, giving some meaning (e.g., shader_type for spatial, canvas_item). However, it does not explain the meaning of many parameters (e.g., shader_type_enum, from_port, to_port) or enumerate allowed values beyond the default node_type. It adds value but leaves ambiguity for less obvious parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as VisualShader Graph Management and enumerates four specific operations (create, add_node, connect_nodes, get_graph). It is specific about the resource type (VisualShader) and the graph operations, which distinguishes it from generic shader tools. However, it does not explicitly contrast with siblings like shader_manage or shader_global_manage, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternative shader-related tools. It lists operations but does not mention prerequisites (e.g., a project must be open) or exclusions (e.g., for global shader parameters use shader_global_manage). An agent would have to infer appropriate usage from the operation names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

world_manageB

WorldEnvironment, Sky, and Post-Processing Management.

Ops:

  • configure_world_environment(node_path="", properties={}) Configure properties of WorldEnvironment and its Environment resource.

  • create_sky_material(node_path="", sky_type="procedural", sky_top_color="", ground_bottom_color="", texture_path="") Create and assign procedural or panorama sky material to Environment.

  • set_volumetric_fog(node_path="", enabled=True, density=None, albedo=None, emission=None, anisotropy=None, length=None) Enable and configure volumetric fog parameters on Environment.

  • configure_camera_attributes(node_path="", attribute_type="practical", properties={}) Configure CameraAttributesPractical or CameraAttributesPhysical.

  • get_world_info(node_path="") Inspect active world environment, fog, sky, and post-processing settings.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits. It mentions actions like 'Create and assign' and 'Enable and configure,' implying modification, but does not state side effects, required permissions, or reversibility. It also does not explain what happens if node_path is empty or whether changes are immediately applied to the scene. This is insufficient for a tool that mutates environment settings.

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 well-structured with a clear header and a bulleted list of operations, making it easy to scan. It front-loads the domain and then details each op. The canonical call shape note adds value without redundancy. While lengthy, the detail is necessary given the multiple operations and their parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the main operations but omits crucial context such as whether a WorldEnvironment node must already exist, how node_path resolves, and what the output schema provides. Since an output schema exists (not shown here), the description need not explain return values, but it should clarify prerequisites and edge cases. It is adequate for basic use but lacks depth for robust agent decision-making.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is highly generic (op, params, session_id) with 0% description coverage, so the description must compensate. It does so by listing each operation's specific parameters with defaults, e.g., 'create_sky_material(node_path="", sky_type="procedural", ...)'. This provides the agent with necessary parameter meaning that the schema lacks, though it could be more explicit about parameter types and allowed values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the domain ('WorldEnvironment, Sky, and Post-Processing Management') and enumerates specific operations with concise summaries, such as 'Configure properties of WorldEnvironment and its Environment resource.' It distinguishes from siblings like camera_manage by focusing on world environment attributes, though it doesn't explicitly state what it does not cover. Overall, the purpose is specific and actionable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no explicit guidance on when to use this tool versus alternatives like camera_manage or rendering_manage. It lists operations but does not state conditions, prerequisites, or when to prefer this tool. The only usage note is about the canonical call shape, which is about invocation syntax, not usage context. This leaves the agent without clear direction on selecting this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

xr_manageA

AR/VR OpenXR Rigging, Controller Setup, and XRServer Tracking Status.

Ops:

  • scaffold_xr_rig(parent_path="", rig_name="XROrigin3D") Scaffold complete OpenXR player hierarchy (origin, camera, left/right controllers).

  • get_xr_status() Inspect XRServer active interfaces, tracking status, and OpenXR availability.

  • generate_xr_startup_script(save_path="res://scripts/xr_initializer.gd") Generate an OpenXR initialization bootstrap script.

Canonical call shape: {"op": "<verb>", "params": {...}}. Flat op parameters are accepted as a compatibility alias when the client transmits them; op and session_id remain top-level.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
paramsNo
session_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does add value beyond the schema by disclosing the op-dispatch call shape and the flat-params compatibility alias, and the verbs scaffold/generate/inspect imply side-effect character. However, it never states prerequisites (XR runtime/hardware), overwrite behavior for the generated res:// script, or scene requirements for scaffold_xr_rig — meaningful gaps for a tool with two writing ops.

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?

Tightly structured and front-loaded: a one-line scope statement, a scannable three-op list with signatures, and a closing invocation-protocol note. Each sentence earns its place, though the 'flat op parameters... compatibility alias' phrasing is slightly convoluted and could be tightened.

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 op coverage, defaults, and call-shape documentation make direct invocation feasible, and the presence of an output schema relieves the description of return-value documentation. However, with zero annotations and roughly 100 siblings, the absence of selection guidance, side-effect warnings, and prerequisite notes leaves the definition at minimum viable rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and params is an opaque wildcard object with no property descriptions, so the description must compensate — and it does: inline signatures document parameter names and defaults (parent_path='', rig_name='XROrigin3D', save_path='res://scripts/xr_initializer.gd') and mark get_xr_status as parameterless. It stops short of defining value formats (e.g., what parent_path should be as a node path), which keeps it from a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise scope statement, 'AR/VR OpenXR Rigging, Controller Setup, and XRServer Tracking Status,' then enumerates three ops each with a specific verb and resource: 'Scaffold complete OpenXR player hierarchy,' 'Inspect XRServer active interfaces,' and 'Generate an OpenXR initialization bootstrap script.' No sibling tool targets OpenXR/XRServer, so this tool is fully distinguishable from the large sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is only implied through the op lines (scaffold_xr_rig for rigging, get_xr_status for tracking checks) and the header scoping phrase. There is no explicit when-to-use/when-not-to-use guidance or alternative routing, even though dozens of sibling tools like camera_manage and viewport_manage occupy adjacent space.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv5.0.36
    • Changedbatch_execute1 field changed
      • addedInput schema / properties / preview
        Added value: +{
        +  "default": false,
        +  "type": "boolean"
        +}
    • Changedproject_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "apply_preset",
        -  "get_info",
        -  "set_main_scene",
        -  "settings_get",
        -  "settings_set",
        -  "stop"
        -]New value: +[
        +  "apply_preset",
        +  "get_info",
        +  "get_map",
        +  "set_main_scene",
        +  "settings_get",
        +  "settings_set",
        +  "stop"
        +]
    • Changedtileset_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "create_collision_polygon",
        -  "create_from_texture",
        -  "scaffold_terrain_bitmasks",
        -  "tileset_create_collision_polygon",
        -  "tileset_create_from_texture",
        -  "tileset_get_atlas_image",
        -  "tileset_get_atlas_tiles",
        -  "tileset_scaffold_terrain_bitmasks"
        -]New value: +[
        +  "create_collision_polygon",
        +  "create_from_texture",
        +  "scaffold_terrain_bitmasks",
        +  "tileset_create_collision_polygon",
        +  "tileset_create_from_texture",
        +  "tileset_diagnose",
        +  "tileset_get_atlas_image",
        +  "tileset_get_atlas_tiles",
        +  "tileset_scaffold_terrain_bitmasks"
        +]
  2. 65 tool updatesv5.0.28
    • Addedanimation_tree_manage
    • Addedaudio_effect_manage
    • Changedaudio_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "list",
        -  "play",
        -  "player_create",
        -  "player_set_playback",
        -  "player_set_stream",
        -  "stop"
        -]New value: +[
        +  "bus_add",
        +  "bus_add_effect",
        +  "bus_list",
        +  "bus_remove",
        +  "bus_save_layout",
        +  "bus_set_properties",
        +  "generate_procedural_sfx",
        +  "list",
        +  "play",
        +  "player_create",
        +  "player_set_playback",
        +  "player_set_stream",
        +  "scaffold_buses",
        +  "scaffold_music_player",
        +  "scaffold_sound_manager",
        +  "stop"
        +]
    • Changedautoload_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "add",
        -  "list",
        -  "remove"
        -]New value: +[
        +  "add",
        +  "list",
        +  "remove",
        +  "scaffold_game_manager"
        +]
    • Addedbody_manage
    • Changedcamera_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "apply_preset",
        -  "configure",
        -  "create",
        -  "follow_2d",
        -  "get",
        -  "list",
        -  "set_damping_2d",
        -  "set_limits_2d"
        -]New value: +[
        +  "apply_preset",
        +  "configure",
        +  "create",
        +  "follow_2d",
        +  "get",
        +  "list",
        +  "scaffold_follow_2d",
        +  "set_damping_2d",
        +  "set_limits_2d"
        +]
    • Addedcharacter_manage
    • Addedcloud_manage
    • Addedcompute_manage
    • Addedconfig_manage
    • Addedcrypto_manage
    • Addedcurve_manage
    • Addeddialogue_manage
    • Addeddisplay_manage
    • Changededitor_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "game_eval",
        -  "logs_clear",
        -  "monitors_get",
        -  "quit",
        -  "selection_get",
        -  "selection_set",
        -  "state"
        -]New value: +[
        +  "eval",
        +  "execute_script",
        +  "game_eval",
        +  "logs_clear",
        +  "monitors_get",
        +  "quit",
        +  "selection_get",
        +  "selection_set",
        +  "state"
        +]
    • Addededitor_settings_manage
    • Addedexport_manage
    • Changedfilesystem_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "asset_search",
        -  "delete",
        -  "download_and_import",
        -  "download_asset",
        -  "download_file",
        -  "list",
        -  "move",
        -  "read_text",
        -  "reimport",
        -  "scan",
        -  "search",
        -  "search_assets",
        -  "write_text"
        -]New value: +[
        +  "asset_search",
        +  "delete",
        +  "delete_file",
        +  "download_and_import",
        +  "download_asset",
        +  "download_file",
        +  "list",
        +  "list_dir",
        +  "list_files",
        +  "ls",
        +  "move",
        +  "move_file",
        +  "read",
        +  "read_file",
        +  "read_text",
        +  "reimport",
        +  "scan",
        +  "search",
        +  "search_assets",
        +  "tree",
        +  "write",
        +  "write_file",
        +  "write_text"
        +]
    • Addedfont_manage
    • Addedfsm_manage
    • Addedgeometry_manage
    • Addedgi_manage
    • Addedheadless_manage
    • Addedhttp_manage
    • Addedinput_event_manage
    • Changedinput_map_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "add_action",
        -  "bind_event",
        -  "ensure_action",
        -  "ensure_binding",
        -  "list",
        -  "remove_action"
        -]New value: +[
        +  "add_action",
        +  "bind_event",
        +  "ensure_action",
        +  "ensure_binding",
        +  "list",
        +  "remove_action",
        +  "scaffold_preset"
        +]
    • Addedjoint_manage
    • Addedlight_manage
    • Addedloader_manage
    • Addedlocalization_manage
    • Addedmesh_manage
    • Addedmultiplayer_manage
    • Addednav_query_manage
    • Addednavigation_manage
    • Addednetwork_manage
    • Changednode_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "add_to_group",
        -  "delete",
        -  "duplicate",
        -  "get_children",
        -  "get_groups",
        -  "instantiate_batch",
        -  "move",
        -  "remove_from_group",
        -  "rename",
        -  "reparent",
        -  "rotate",
        -  "scale",
        -  "translate"
        -]New value: +[
        +  "add_to_group",
        +  "call_method",
        +  "delete",
        +  "duplicate",
        +  "get_children",
        +  "get_groups",
        +  "instantiate_batch",
        +  "move",
        +  "remove_from_group",
        +  "rename",
        +  "reparent",
        +  "rotate",
        +  "scale",
        +  "translate"
        +]
    • Addedoccluder_manage
    • Addedomni_manage
    • Addedparallax_manage
    • Addedpath_manage
    • Addedpck_manage
    • Addedphysics_manage
    • Addedphysics_query_manage
    • Addedplugin_manage
    • Addedprofiler_manage
    • Changedproject_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "set_main_scene",
        -  "settings_get",
        -  "settings_set",
        -  "stop"
        -]New value: +[
        +  "apply_preset",
        +  "get_info",
        +  "set_main_scene",
        +  "settings_get",
        +  "settings_set",
        +  "stop"
        +]
    • Addedrecording_manage
    • Addedrendering_manage
    • Changedresource_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "assign",
        -  "create",
        -  "curve_set_points",
        -  "delete",
        -  "environment_create",
        -  "get_info",
        -  "gradient_texture_create",
        -  "load",
        -  "move",
        -  "noise_texture_create",
        -  "physics_shape_autofit",
        -  "physics_shape_generate",
        -  "search"
        -]New value: +[
        +  "assign",
        +  "create",
        +  "curve_set_points",
        +  "delete",
        +  "environment_create",
        +  "environment_setup_2d",
        +  "environment_setup_3d",
        +  "get_info",
        +  "gradient_texture_create",
        +  "load",
        +  "move",
        +  "noise_texture_create",
        +  "physics_shape_autofit",
        +  "physics_shape_generate",
        +  "search"
        +]
    • Addedsave_manage
    • Changedscene_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "create",
        -  "get_roots",
        -  "instantiate_batch",
        -  "save_as"
        -]New value: +[
        +  "create",
        +  "diagnose",
        +  "get_roots",
        +  "instantiate_batch",
        +  "save_as"
        +]
    • Addedshader_global_manage
    • Addedshader_manage
    • Addedskeleton_manage
    • Addedsprite_manage
    • Addedsystem_manage
    • Addedtexture_manage
    • Changedtheme_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "apply",
        -  "create",
        -  "set_color",
        -  "set_constant",
        -  "set_font_size",
        -  "set_stylebox_flat"
        -]New value: +[
        +  "apply",
        +  "apply_preset",
        +  "create",
        +  "set_color",
        +  "set_constant",
        +  "set_font_size",
        +  "set_stylebox_flat"
        +]
    • Addedtween_manage
    • Changedui_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "build_layout",
        -  "draw_recipe",
        -  "set_anchor_preset",
        -  "set_text"
        -]New value: +[
        +  "build_layout",
        +  "draw_recipe",
        +  "scaffold_screen",
        +  "set_anchor_preset",
        +  "set_text"
        +]
    • Addedundo_redo_manage
    • Addedviewport_manage
    • Addedvisual_shader_manage
    • Addedworld_manage
    • Addedxr_manage
  3. 8 tool updatesv5.0.14
    • Changedanimation_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "add_method_track",
        -  "add_property_track",
        -  "create_simple",
        -  "delete",
        -  "get",
        -  "list",
        -  "play",
        -  "player_create",
        -  "preset_bounce",
        -  "preset_fade",
        -  "preset_pulse",
        -  "preset_shake",
        -  "preset_slide",
        -  "preset_spin",
        -  "set_autoplay",
        -  "stop",
        -  "validate"
        -]New value: +[
        +  "add_method_track",
        +  "add_property_track",
        +  "create_animated_sprite",
        +  "create_simple",
        +  "create_spritesheet_animation",
        +  "create_spritesheet_track",
        +  "delete",
        +  "get",
        +  "list",
        +  "play",
        +  "player_create",
        +  "preset_bounce",
        +  "preset_fade",
        +  "preset_pulse",
        +  "preset_shake",
        +  "preset_slide",
        +  "preset_spin",
        +  "scaffold_locomotion_tree",
        +  "scaffold_state_machine",
        +  "set_autoplay",
        +  "stop",
        +  "validate"
        +]
    • Changedfilesystem_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "asset_search",
        -  "delete",
        -  "download_asset",
        -  "download_file",
        -  "list",
        -  "move",
        -  "read_text",
        -  "reimport",
        -  "scan",
        -  "search",
        -  "search_assets",
        -  "write_text"
        -]New value: +[
        +  "asset_search",
        +  "delete",
        +  "download_and_import",
        +  "download_asset",
        +  "download_file",
        +  "list",
        +  "move",
        +  "read_text",
        +  "reimport",
        +  "scan",
        +  "search",
        +  "search_assets",
        +  "write_text"
        +]
    • Changedgame_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "debug_status",
        -  "get_node_info",
        -  "get_scene_tree",
        -  "get_ui_elements",
        -  "input_action",
        -  "input_gamepad",
        -  "input_key",
        -  "input_mouse",
        -  "input_sequence",
        -  "input_state",
        -  "next_frame",
        -  "resume",
        -  "suspend"
        -]New value: +[
        +  "debug_status",
        +  "get_node_info",
        +  "get_scene_tree",
        +  "get_ui_elements",
        +  "input_action",
        +  "input_gamepad",
        +  "input_key",
        +  "input_mouse",
        +  "input_sequence",
        +  "input_state",
        +  "next_frame",
        +  "playtest",
        +  "resume",
        +  "run_playtest_suite",
        +  "simulate",
        +  "simulate_input",
        +  "suspend"
        +]
    • Changednode_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "add_to_group",
        -  "delete",
        -  "duplicate",
        -  "get_children",
        -  "get_groups",
        -  "move",
        -  "remove_from_group",
        -  "rename",
        -  "reparent",
        -  "rotate",
        -  "scale",
        -  "translate"
        -]New value: +[
        +  "add_to_group",
        +  "delete",
        +  "duplicate",
        +  "get_children",
        +  "get_groups",
        +  "instantiate_batch",
        +  "move",
        +  "remove_from_group",
        +  "rename",
        +  "reparent",
        +  "rotate",
        +  "scale",
        +  "translate"
        +]
    • Changedparticle_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "apply_preset",
        -  "create",
        -  "get",
        -  "restart",
        -  "set_draw_pass",
        -  "set_main",
        -  "set_process"
        -]New value: +[
        +  "apply_preset",
        +  "create",
        +  "get",
        +  "restart",
        +  "set_draw_pass",
        +  "set_main",
        +  "set_process",
        +  "spawn_preset_2d"
        +]
    • Changedscene_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "create",
        -  "get_roots",
        -  "save_as"
        -]New value: +[
        +  "create",
        +  "get_roots",
        +  "instantiate_batch",
        +  "save_as"
        +]
    • Changedtilemap_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "clear",
        -  "erase_cell",
        -  "flip_cell",
        -  "generate_layout",
        -  "get_cell",
        -  "get_cells",
        -  "place_tile",
        -  "rotate_cell",
        -  "set_cell",
        -  "set_cells_rect",
        -  "tilemap_clear",
        -  "tilemap_erase_cell",
        -  "tilemap_flip_cell",
        -  "tilemap_generate_layout",
        -  "tilemap_get_cell",
        -  "tilemap_get_cells",
        -  "tilemap_place_tile",
        -  "tilemap_rotate_cell",
        -  "tilemap_set_cell",
        -  "tilemap_set_cells_rect"
        -]New value: +[
        +  "clear",
        +  "erase_cell",
        +  "flip_cell",
        +  "generate_layout",
        +  "get_cell",
        +  "get_cells",
        +  "import_matrix",
        +  "paint_terrain",
        +  "place_tile",
        +  "rotate_cell",
        +  "scatter_props",
        +  "set_cell",
        +  "set_cells_rect",
        +  "tilemap_clear",
        +  "tilemap_erase_cell",
        +  "tilemap_flip_cell",
        +  "tilemap_generate_layout",
        +  "tilemap_get_cell",
        +  "tilemap_get_cells",
        +  "tilemap_import_matrix",
        +  "tilemap_paint_terrain",
        +  "tilemap_place_tile",
        +  "tilemap_rotate_cell",
        +  "tilemap_scatter_props",
        +  "tilemap_set_cell",
        +  "tilemap_set_cells_rect"
        +]
    • Changedtileset_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "tileset_get_atlas_image",
        -  "tileset_get_atlas_tiles"
        -]New value: +[
        +  "create_collision_polygon",
        +  "create_from_texture",
        +  "scaffold_terrain_bitmasks",
        +  "tileset_create_collision_polygon",
        +  "tileset_create_from_texture",
        +  "tileset_get_atlas_image",
        +  "tileset_get_atlas_tiles",
        +  "tileset_scaffold_terrain_bitmasks"
        +]
  4. 6 tool updatesv5.0.9
    • Changedfilesystem_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "read_text",
        -  "reimport",
        -  "scan",
        -  "search",
        -  "write_text"
        -]New value: +[
        +  "asset_search",
        +  "delete",
        +  "download_asset",
        +  "download_file",
        +  "list",
        +  "move",
        +  "read_text",
        +  "reimport",
        +  "scan",
        +  "search",
        +  "search_assets",
        +  "write_text"
        +]
    • Addedping
    • Changedresource_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "assign",
        -  "create",
        -  "curve_set_points",
        -  "environment_create",
        -  "get_info",
        -  "gradient_texture_create",
        -  "load",
        -  "noise_texture_create",
        -  "physics_shape_autofit",
        -  "physics_shape_generate",
        -  "search"
        -]New value: +[
        +  "assign",
        +  "create",
        +  "curve_set_points",
        +  "delete",
        +  "environment_create",
        +  "get_info",
        +  "gradient_texture_create",
        +  "load",
        +  "move",
        +  "noise_texture_create",
        +  "physics_shape_autofit",
        +  "physics_shape_generate",
        +  "search"
        +]
    • Changedscript_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "detach",
        -  "find_symbols",
        -  "read"
        -]New value: +[
        +  "delete",
        +  "detach",
        +  "find_symbols",
        +  "read",
        +  "validate"
        +]
    • Changedsession_manage2 fields changed
      • removedInput schema / properties / op / const
        Removed value: -"list"
      • addedInput schema / properties / op / enum
        Added value: +[
        +  "list",
        +  "ping"
        +]
    • Changedtilemap_manage1 field changed
      • changedInput schema / properties / op / enum
        Previous value: -[
        -  "tilemap_clear",
        -  "tilemap_erase_cell",
        -  "tilemap_flip_cell",
        -  "tilemap_get_cell",
        -  "tilemap_get_cells",
        -  "tilemap_place_tile",
        -  "tilemap_rotate_cell",
        -  "tilemap_set_cell",
        -  "tilemap_set_cells_rect"
        -]New value: +[
        +  "clear",
        +  "erase_cell",
        +  "flip_cell",
        +  "generate_layout",
        +  "get_cell",
        +  "get_cells",
        +  "place_tile",
        +  "rotate_cell",
        +  "set_cell",
        +  "set_cells_rect",
        +  "tilemap_clear",
        +  "tilemap_erase_cell",
        +  "tilemap_flip_cell",
        +  "tilemap_generate_layout",
        +  "tilemap_get_cell",
        +  "tilemap_get_cells",
        +  "tilemap_place_tile",
        +  "tilemap_rotate_cell",
        +  "tilemap_set_cell",
        +  "tilemap_set_cells_rect"
        +]
  5. 46 tool updatesv4.1.0
    • First observedanimation_create
    • First observedanimation_manage
    • First observedapi_manage
    • First observedaudio_manage
    • First observedautoload_manage
    • First observedbatch_execute
    • First observedcamera_manage
    • First observedclient_manage
    • First observedcsg_manage
    • First observedcustom_manage
    • First observededitor_manage
    • First observededitor_reload_plugin
    • First observededitor_screenshot
    • First observededitor_state
    • First observedfilesystem_manage
    • First observedgame_manage
    • First observedgridmap_manage
    • First observedinput_map_manage
    • First observedlogs_read
    • First observedmaterial_manage
    • First observednode_create
    • First observednode_find
    • First observednode_get_properties
    • First observednode_manage
    • First observednode_set_property
    • First observedparticle_manage
    • First observedproject_manage
    • First observedproject_run
    • First observedresource_manage
    • First observedscene_get_hierarchy
    • First observedscene_manage
    • First observedscene_open
    • First observedscene_save
    • First observedscript_attach
    • First observedscript_create
    • First observedscript_manage
    • First observedscript_patch
    • First observedsession_activate
    • First observedsession_manage
    • First observedsignal_manage
    • First observedtest_manage
    • First observedtest_run
    • First observedtheme_manage
    • First observedtilemap_manage
    • First observedtileset_manage
    • First observedui_manage

TDQS

B3.1/5.0

Scored across 100 tools

Disambiguation1/5

Several tools perform the same operation under different names: eval appears in editor_manage, omni_manage, and execute_script; raycasting is duplicated in physics_manage and physics_query_manage; curve creation exists in resource_manage, path_manage, and curve_manage; input simulation is split across game_manage and input_event_manage. An agent will frequently misselect between these duplicate or near-duplicate tools.

Naming Consistency2/5

Most tools follow a snake_case *_manage pattern, but the same capability is named inconsistently (raycast_2d vs intersect_ray_2d, input_key vs simulate_key, editor_manage op=state vs standalone editor_state), and op naming inside *_manage tools mixes styles. The pattern is readable but not predictable enough across 100 tools.

Tool Count1/5

100 tools is far beyond a well-scoped MCP surface. Even a comprehensive Godot development server would struggle to justify this many, and a large portion of them are redundant with each other rather than earning their place.

Completeness4/5

Coverage of the Godot game-development domain is remarkably thorough: scenes, nodes, scripts, resources, UI, input, animation, physics, rendering, networking, localization, and more are present with no obvious dead-end workflows. Minor gaps exist (e.g., no 2D shape cast, some duplicated features are shallow), but the surface is essentially complete.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to edit, run, inspect, and fix Godot 4 projects through an MCP server with dynamic tool groups and setup-gated capabilities.
    163 npm
    264
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables AI-driven game development by providing MCP tools to interact with the Godot editor, including scene editing, node manipulation, script attachment, and scene execution.
    28
    8 npm
    MIT
  • F
    license
    A
    quality
    D
    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
    C
    quality
    C
    maintenance
    Godot MCP connects AI assistants directly to the Godot editor, exposing 300+ tools for scene construction, node manipulation, runtime inspection, input recording, physics setup, animation authoring, and more.
    100
    100 npm
    30
    MIT