godot-mcp-rts
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@godot-mcp-rtstest_run_scenario with a unit movement scenario"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Godot MCP RTS
Extended MCP (Model Context Protocol) server for the Godot game engine, with RTS agentic testing, scene/script introspection & mutation, and live game screenshot capture.
Forked from Coding-Solo/godot-mcp.
What this fork adds
On top of the original 14 godot-mcp tools, this fork ships 15 additional tools in three groups:
Test harness — agentic game testing (
test_get_info,test_get_game_state,test_validate_scenario,test_check_entity,test_validate_paths,test_run_scenario,test_check_mlx)Scene & script introspection / mutation —
get_scene_tree,remove_node,set_node_property,create_script,attach_script,list_scriptsVisual capture —
take_screenshot(script-mode, standalone scenes) andtest_take_screenshot(live game via TestController IPC, real scenes with autoloads)
Plus infrastructure improvements:
Upgraded to MCP SDK 1.x (from 0.6.0)
preflightProject()helper retrofit on the scene-op handlers (−150 LoC of validation boilerplate)Dropped the unused
axiosdependency (npm auditclean)End-to-end test suite (
npm test) covering protocol handshake, all mutation tools, and live screenshot capture
Related MCP server: Open Godot MCP
Tool reference
All 29 tools at a glance:
Original Godot MCP tools (14)
Tool | Purpose |
| Open the Godot editor for a project |
| Run a project in debug mode and capture output |
| Read stdout/stderr from the running project |
| Stop the running project |
| Print the installed Godot version |
| Find Godot projects in a directory |
| Project metadata + counts of scenes/scripts/assets |
| Create a new |
| Add a node to a scene |
| Load a texture into a Sprite2D/Sprite3D/TextureRect |
| Export a scene as a |
| Save a scene (optionally to a new path) |
| Get the UID of a file (Godot 4.4+) |
| Resave resources to refresh UID references |
Test harness tools (7)
Tool | Purpose |
| Test harness capabilities + project info |
| Snapshot of autoloads, constants, config |
| Validate a scenario config before running it |
| Verify a unit/building/resource scene exists |
| Validate all expected paths for a race |
| Launch the game with |
| MLX local LLM health + Apple Silicon platform info |
Scene & script tools (6, new in v0.3.0)
Tool | Purpose |
| Hierarchical JSON dump of a scene's nodes |
| Delete a node from a scene and save |
| Bulk-set properties on an existing node |
| Create a |
| Attach an existing script to a node in a scene |
| Recursively list |
Visual capture tools (2, new in v0.3.0)
Tool | Purpose |
| Render a scene via |
| Capture the currently running game via file-based IPC with TestController. Real game scenes with autoloads loaded. |
Installation
git clone https://github.com/mikeumus/godot-mcp-rts.git
cd godot-mcp-rts
npm install # also runs npm run build via the prepare hookConfiguration
Claude Code
Add to your MCP settings (.claude/settings.json or global settings):
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/absolute/path/to/godot-mcp-rts/build/index.js"],
"env": {
"GODOT_PATH": "/Applications/Godot.app/Contents/MacOS/Godot"
}
}
}
}Cline / Cursor / other MCP clients
Same configuration format. The server speaks MCP over stdio.
Environment variables
GODOT_PATH— Path to the Godot executable. If unset, the server auto-detects common install locations on macOS / Windows / Linux.DEBUG— Set totruefor verbose stderr logging.
Usage examples
Inspect a scene
get_scene_tree(
projectPath: "/path/to/game",
scenePath: "maps/test_map.tscn",
includeProperties: true
)Returns nested JSON with name, type, path, script, children, and
optionally properties.position / properties.visible for each node.
Create a script and attach it
create_script(
projectPath: "/path/to/game",
scriptPath: "scripts/my_unit.gd",
extendsClass: "CharacterBody3D"
)
attach_script(
projectPath: "/path/to/game",
scenePath: "units/my_unit.tscn",
nodePath: "MyUnit",
scriptPath: "scripts/my_unit.gd"
)Set node properties
set_node_property(
projectPath: "/path/to/game",
scenePath: "units/my_unit.tscn",
nodePath: "MyUnit",
properties: { visible: false, modulate.r: 0.5 }
)Note: Property names are converted to snake_case before reaching Godot. Built-in Godot properties (
position,rotation_degrees, etc.) are already snake_case so this is a no-op for them. Vector/Color values can't currently round-trip through JSON; pass scalar properties only.
Run a test scenario
test_run_scenario(
projectPath: "/path/to/game",
timeout: 30000
)Launches the game with the --test-harness flag, capturing stdout for
later inspection via get_debug_output.
Capture a live game screenshot
# 1. Start the game (must be running for IPC to work)
run_project(projectPath: "/path/to/game")
# 2. Wait a few seconds for it to render the first frame, then
test_take_screenshot(projectPath: "/path/to/game")
# → Screenshot saved to: /path/to/game/.mcp_screenshots/capture_<id>.png
# 3. Stop when done
stop_project()TestController integration
For the test harness tools and test_take_screenshot to work, your
Godot project needs to include the TestController autoload from
tests/harness/test_controller.gd (or its parent-repo equivalent).
Setup
Copy
tests/harness/test_controller.gdinto your projectRegister it as an autoload (Project Settings → AutoLoad)
The controller activates when the game runs with
--test-harness,--test-mode, or when theGODOT_MCP_TESTenv var is setThe screenshot polling code is independent of activation — it runs in any debug build so
test_take_screenshotworks even from a plainrun_projectinvocation
Screenshot IPC architecture
test_take_screenshot uses a file-based IPC handshake instead of trying
to capture from a headless --script subprocess (which can't load
autoloads or the main scene):
MCP server Running game
───────────── ────────────
1. Write request.json ──→ .mcp_screenshots/ ─→ TestController._process()
{ request_id, output_path? } polls every 6 frames
2. Detect request
3. get_viewport()
.get_texture()
.get_image()
.save_png(...)
4. Poll for response.json ←── .mcp_screenshots/ ←─ Write response.json
{ request_id, status, absolute_path } Print TestController logThe polling is gated on OS.is_debug_build() so exported builds are
unaffected. The polling interval is 6 frames (~10 Hz at 60 fps), which is
fast enough to feel synchronous from the MCP side and slow enough to be
free.
The IPC workspace lives at <projectPath>/.mcp_screenshots/. Add it to
your .gitignore:
.mcp_screenshots/Testing
This project has an end-to-end test suite that exercises a real Godot
binary. There are no unit tests — the value of testing this server lives
almost entirely in verifying that real godot --headless --script
invocations round-trip correctly, so e2e is the right shape.
npm run build # always build first
npm test # smoke + mutations (~35s, no game window)
npm run test:smoke # ~3s protocol handshake + tool registration
npm run test:mutations # ~30s every scene/script tool against a sandbox project
npm run test:screenshot # ~15s INTRUSIVE: opens a game window, opt-inThe screenshot test is opt-in and gated behind the MCP_TEST_PROJECT_PATH
env var:
MCP_TEST_PROJECT_PATH=/path/to/your/game npm run test:screenshotIt validates the full test_take_screenshot pipeline against a live game,
including the TestController IPC handshake. See
tests/e2e/README.md for the full breakdown.
Architecture
Claude Code / Cursor / etc.
│
│ MCP over stdio (SDK 1.x)
▼
godot-mcp-rts (Node/TypeScript)
│
├──→ child_process → godot --headless --script godot_operations.gd <op> <json>
│ (most tools: scene mutation, script create, etc.)
│
├──→ child_process → godot --headless --script test_operations.gd <op> <json>
│ (test harness tools: state snapshots, validation)
│
├──→ child_process → godot <project> [--debug | --test-harness]
│ (run_project, test_run_scenario; long-running)
│
└──→ file-based IPC at <project>/.mcp_screenshots/request.json
(test_take_screenshot, polled by TestController)Development
npm run build # compile TypeScript, copy .gd scripts to build/
npm run watch # tsc --watch
npm run inspector # launch the MCP inspector UI against the built server
npm test # run the e2e suite (see Testing above)When adding a new tool, see CONTRIBUTING.md for the full checklist.
Project layout
godot-mcp-rts/
├── src/
│ ├── index.ts # MCP server, tool definitions, handlers
│ └── scripts/
│ ├── godot_operations.gd # Headless GDScript dispatcher (file ops)
│ └── test_operations.gd # Headless GDScript dispatcher (test harness)
├── tests/
│ └── e2e/
│ ├── _client.mjs # JSON-RPC stdio client + tiny test runner
│ ├── smoke.mjs # Protocol + tool registration check
│ ├── mutations.mjs # All scene/script tools, 20 assertions
│ ├── screenshot.mjs # Live game capture via TestController IPC
│ └── README.md # How to run / extend the suite
├── scripts/
│ └── build.js # Post-tsc copy of .gd files into build/
├── build/ # Compiled JS + copied scripts (gitignored)
├── README.md
├── CONTRIBUTING.md
├── LICENSE # MIT
├── package.json
└── tsconfig.jsonLicense
MIT — see LICENSE.
Credits
Original godot-mcp by Coding-Solo
RTS testing extension and v0.3.0 tool additions by the As Above, So Below team
Available Tools
29 toolsadd_nodeB
Add a node to an existing scene
| Name | Required | Description | Default |
|---|---|---|---|
| nodeName | Yes | Name for the new node | |
| nodeType | Yes | Type of node to add (e.g., Sprite2D, CollisionShape2D) | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| properties | No | Optional properties to set on the node | |
| projectPath | Yes | Path to the Godot project directory | |
| parentNodePath | No | Path to the parent node (e.g., "root" or "root/Player") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose side effects, but it only says 'Add a node.' It does not state whether the scene file is modified in place, whether saving is required, whether the operation is reversible, or any permissions needed. This is a significant gap for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence without redundancy. It is appropriately concise, though it sacrifices content for brevity. The structure is fine, and the main purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters, nested objects, no output schema, and no annotations, the description is far from complete. It does not explain the return value, whether the scene is saved automatically, or the relationship between parameters (e.g., parentNodePath). The agent lacks essential context to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters have descriptions in the input schema. The description adds no additional semantic value beyond the schema, which is acceptable given the high coverage. The baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Add) and the resource (a node to an existing scene). It distinguishes itself from sibling tools like create_scene and save_scene by focusing on modifying an existing scene rather than creating or saving one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It does not mention that it modifies an existing scene and might require save_scene afterward, nor does it contrast with create_scene. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_scriptB
Attach an existing GDScript to a node in a scene
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the target node | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| scriptPath | Yes | Path to the script file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any side effects (e.g., modifying the scene file), error conditions, or return behavior. It only states the action without details on what happens after attachment.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations or output schema, the description is too minimal for a mutation tool. It doesn't mention that attaching a script modifies the scene, what happens if the script or node doesn't exist, or what the tool returns. The schema covers parameters but not behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter providing a description. However, the tool description adds no extra semantic detail beyond the schema, such as path formats or relationships between parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'attach' and clearly identifies the target (node in a scene) and object (existing GDScript), which distinguishes it from sibling tools like create_script (which creates scripts) and add_node (which adds nodes).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives, no prerequisites (e.g., that the script must already exist), and no mention of related tools such as create_script or set_node_property. Usage context is only implied by the word 'existing'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sceneA
Create a new Godot scene file
| Name | Required | Description | Default |
|---|---|---|---|
| scenePath | Yes | Path where the scene file will be saved (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| rootNodeType | No | Type of the root node (e.g., Node2D, Node3D) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must communicate side effects. It only says 'create' without disclosing whether it overwrites an existing file, what happens on failure, or what the return value is. This is minimal and leaves important behavioral details unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, succinct sentence that conveys the core functionality without extraneous words. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the primary action but lacks details about return values or error behavior, and it does not clarify whether the scene is saved immediately or merely created in memory. Given the simplicity of the operation, it is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides descriptions for all three parameters (projectPath, scenePath, rootNodeType), giving full coverage. The tool description itself adds no extra clarity, so it stays at the baseline expected for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create') and the resource ('a new Godot scene file'), making the purpose unambiguous. It also implicitly distinguishes itself from siblings like 'save_scene' (which saves an existing scene) and 'add_node' (which adds nodes to a scene).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating new scene files but does not explicitly state when to use this over alternatives like save_scene. No exclusions or conditions are given, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scriptB
Create a new GDScript file with optional content or default template
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Optional: full script content. If omitted, a default template is generated | |
| scriptPath | Yes | Path where the script will be saved (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| extendsClass | No | Optional: base class for the default template (default: Node) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It only mentions optional content/default template but does not state overwrite behavior, directory creation, path validation, or side effects. This is insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact, front-loaded sentence with no wasted words. It efficiently conveys the core purpose and at-a-glance options.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema covers all parameters and the description is clear on the basic operation, but important context is missing given no output schema and no annotations: overwriting behavior, return values, error handling, and prerequisites like valid projectPath are not mentioned. This is a simple create tool, so it is only moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds minimal semantic value beyond the schema, essentially paraphrasing the param docs. It does not clarify dependencies between parameters (e.g., extendsClass only applies when content is omitted), though the schema itself conveys this.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Create'), the resource ('a new GDScript file'), and additional scope ('with optional content or default template'). It differentiates from sibling tools like create_scene and attach_script by specifying the exact file type and creation action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor does it explain when to choose content vs the default template. It is a bare statement of functionality without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_mesh_libraryB
Export a scene as a MeshLibrary resource
| Name | Required | Description | Default |
|---|---|---|---|
| scenePath | Yes | Path to the scene file (.tscn) to export | |
| outputPath | Yes | Path where the mesh library (.res) will be saved | |
| projectPath | Yes | Path to the Godot project directory | |
| meshItemNames | No | Optional: Names of specific mesh items to include (defaults to all) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the action without mentioning side effects such as file creation, overwriting behavior, or read-only implications. The burden falls on the description, which is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant words, effectively conveying the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, yet the description omits details about return values, error handling, or overwrite semantics. While acceptable for a simple export operation, these gaps prevent a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all parameters with clear descriptions, including file extensions and the default behavior of meshItemNames. The description adds no additional context beyond the schema, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Export' and the resource 'a scene as a MeshLibrary resource', precisely distinguishing it from sibling tools like create_scene or save_scene.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It does not mention scenarios where export_mesh_library is preferred over save_scene or other scene-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_debug_outputB
Get the current debug output and errors
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavior. It merely states the action without mentioning side effects, requirements (e.g., running project), return format, or error behavior. The word 'Get' implies a read operation, but this is not explicit and no other behavioral traits 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence that efficiently communicates the core function with no filler. It is appropriately sized for a zero-parameter tool, though it sacrifices completeness for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the tool's simplicity, the description omits important context such as when debug output is available, whether a project must be running, and the format of the returned output. With no annotations or output schema, these gaps make the description incomplete for an agent deciding to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema already fully covers parameter semantics. The description adds no parameter information, but none is needed; baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('current debug output and errors'), clearly identifying the tool's function. It does not explicitly differentiate from sibling getters like get_project_info or get_uid, but the resource is unique enough that an agent can infer its purpose. However, 'current' is ambiguous (current project? current session?), so not a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., project running) or exclusion cases, and there is no reference to sibling tools like run_project or stop_project. An agent is left without context on when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_godot_versionA
Get the installed Godot version
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states what it does, without mentioning side effects, error handling (e.g., if Godot is not installed), or whether any configuration is modified. For a simple getter this is a gap, but the lack of side effects is implicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, clear sentence with no redundancy. The information is front-loaded and every word earns its place. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter getter with no output schema, the description is largely sufficient. It identifies what is retrieved, but does not explicitly describe the return format (e.g., version string) or behavior if Godot is absent. Given the simplicity, this is a minor omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the input schema confirms this with an empty properties object. Per the rubric, 0 parameters warrants a baseline of 4. The description does not need to add parameter details, and it correctly does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('installed Godot version'). It is specific and distinguishes itself from sibling tools like add_node or launch_editor, which are about different operations. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly mention when to use this tool versus alternatives. However, given its singular purpose and the lack of overlapping sibling getters, the usage is implied. There is no guidance on prerequisites or conditions, which could be added but is not critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_infoB
Retrieve metadata about a Godot project
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The verb 'retrieve' implies a read-only operation, but the description does not explicitly state that it has no side effects or what permissions it requires. Since there are no annotations, the description carries the full burden and only partially covers the behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no unnecessary words or repetition. It is well-structured and easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema or description of what metadata is returned. The term 'metadata' is vague and does not specify whether it returns project configuration, version info, or something else, leaving the agent without enough context to know what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'projectPath' is described as 'Path to the Godot project directory', which is clear and covers the basic meaning. However, since the schema already provides this description, the tool description adds no additional detail about path format, required existence, or edge cases.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'retrieve' and the target 'metadata about a Godot project', making the tool's basic purpose easy to understand. However, it does not explicitly differentiate itself from sibling tools like get_godot_version or get_uid, which could also be considered metadata retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus the sibling tools. There is no mention of scenarios, prerequisites, or exclusions, so an agent has little context for choosing this over more specific retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_treeA
Get the hierarchical node tree of a scene file as JSON
| Name | Required | Description | Default |
|---|---|---|---|
| scenePath | Yes | Path to the scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| includeProperties | No | Include basic properties (position, visible) on each node |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It states the output (JSON) but does not clarify that the operation is read-only, how errors are handled (e.g., missing scene file), or how the optional includeProperties parameter affects the result. This is minimal disclosure for a tool that reads from disk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the action and object, no wasted words. Every word contributes to understanding the tool's core function and output format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no output schema, but the description does not specify the shape of the JSON hierarchy, which is central to the tool's purpose. Context like 'returns a tree with node names and children' would improve completeness. Given the lack of annotations and output schema, the description is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds no extra parameter detail beyond what the schema already provides, but it does reinforce that the output is a hierarchy, which relates to scenePath. No gaps require compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the action ('Get'), the resource ('hierarchical node tree of a scene file'), and the output format ('as JSON'). It is specific and distinguishes itself from sibling tools like create_scene or add_node, which modify scenes rather than retrieve their structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage—call this when you need the node hierarchy of a scene—but provides no explicit guidance on when not to use it or what alternatives exist (e.g., using get_project_info for broad project details). It lacks context about prerequisites like loading the project first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uidB
Get the UID for a specific file in a Godot project (for Godot 4.4+)
| Name | Required | Description | Default |
|---|---|---|---|
| filePath | Yes | Path to the file (relative to project) for which to get the UID | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as read-only nature, permissions required, or side effects. The tool could be assumed to be a simple getter, but this is not explicitly stated, leaving the behavior opaque.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no unnecessary words. It efficiently conveys the tool's purpose and relevant version constraint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, and the description covers its basic purpose. However, it does not mention the return format, potential errors, or edge cases. While acceptable for a straightforward getter, it leaves some context incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters with clear descriptions, achieving 100% coverage. The tool description itself adds no extra meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: getting the UID for a specific file in a Godot project. It also specifies the Godot version constraint (4.4+), making it unambiguous and distinct from sibling tools like update_project_uids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool versus alternatives. While the purpose is obvious, there is no mention of scenarios where this tool is preferred or where other tools (e.g., update_project_uids) should be used instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_editorC
Launch Godot editor for a specific project
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without any side effects, blocking behavior, or requirements (e.g., whether it opens a new window, requires an existing project, or modifies any files). This is insufficient for an agent to predict the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—a single sentence with no filler. However, it is under-specified rather than efficiently comprehensive. It lacks necessary details about behavior and usage, so while it is short, it doesn't earn its place by providing full value. A 3 reflects the balance between brevity and adequacy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one parameter, no output schema, and no annotations, the description should provide enough context to call it correctly. It states the action but omits critical information such as whether the editor must be installed, whether the path must point to a valid project, and whether the call is blocking or returns immediately. This is incomplete for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter projectPath is fully documented in the schema. The description adds no additional semantics beyond the action, but the schema already explains the parameter. Baseline 3 is appropriate; the description doesn't harm, but it also doesn't enhance the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (launch) and the resource (Godot editor) for a specific project. It distinguishes implicitly from siblings like run_project (which runs the project rather than opening the editor) and list_projects (which lists projects). However, it doesn't explicitly name the alternative or the selection criteria, so it's clear but not maximally differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as run_project. The description does not mention any prerequisites, use cases, or conditions that would lead an agent to select this tool over its siblings. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsA
List Godot projects in a directory
| Name | Required | Description | Default |
|---|---|---|---|
| directory | Yes | Directory to search for Godot projects | |
| recursive | No | Whether to search recursively (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only restates the basic listing action and adds no details about whether the operation is read-only, how Godot projects are identified, what the return format is, or how the recursive parameter behaves in practice.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler or redundant wording. Every word earns its place, and the core action and scope are immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with two parameters, the description is minimally adequate: the schema covers parameter meanings. However, with no output schema and no annotations, the description does not clarify what the returned list contains (e.g., project names, paths) or whether directories without project.godot are ignored, leaving some contextual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and both parameters are already documented clearly in the schema ('Directory to search for Godot projects' and 'Whether to search recursively (default: false)'). The description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') with a clear resource ('Godot projects') and a scoping location ('in a directory'). It is unambiguous and easily distinguished from sibling tools like get_project_info or run_project, which target a single project or perform an action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'in a directory' implies the tool is for project discovery in a filesystem location, which gives some usage context. However, it does not explicitly state when to prefer this tool over alternatives, nor does it mention any exclusions or follow-up tools like get_project_info for inspecting a specific project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scriptsA
Recursively list all .gd scripts in the project or a subdirectory
| Name | Required | Description | Default |
|---|---|---|---|
| directory | No | Optional: subdirectory to search (relative to project, default: root) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds key behavioral detail ('recursively', 'all .gd scripts') beyond the schema. However, it omits return format, error handling, or hidden-file behavior, leaving some transparency gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, action-first, with no unnecessary words. It encodes purpose and scope efficiently, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool with two parameters and no output schema, the description covers purpose, scope, and recursion behavior. It doesn't describe the return value, but for a list operation this is largely implied. Missing error details are not critical for initial selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides complete descriptions for both parameters (100% coverage). The description adds the recursive scope but does not further enrich parameter meanings; it relies on the schema, which is adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific action (list), the resource (.gd scripts), and the scope (project or subdirectory). This clearly distinguishes it from sibling tools like create_script or attach_script.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes the tool's usage context clear: use it when you need a recursive inventory of scripts. It does not explicitly mention when not to use it or name alternatives, but the context is unambiguous for this straightforward operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_spriteC
Load a sprite into a Sprite2D node
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the Sprite2D node (e.g., "root/Player/Sprite2D") | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| texturePath | Yes | Path to the texture file (relative to project) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing side effects. It only states that a sprite is loaded into a node, without mentioning whether this modifies the scene file, requires a saved scene, returns a value, or has any persistent effects. This lack of detail leaves significant ambiguity about the tool's actual behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundant words or unnecessary details. It is concise and front-loaded, clearly stating the core action without distraction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema and the mutation-like nature of the action, the description is insufficiently contextual. It does not explain what 'load' means operationally (e.g., sets a texture property, replaces an existing asset), whether the scene must be saved, or what the expected result is. This leaves gaps for an agent attempting to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%—all four parameters have individual descriptions explaining their meaning (e.g., 'Path to the texture file (relative to project)'). The tool description itself adds no extra parameter information, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (load) and the target resource (a sprite into a Sprite2D node), making the tool's primary purpose understandable. It does not explicitly contrast with sibling tools like add_node, but the specific action is distinct enough for basic identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, such as add_node or other scene modification tools. It omits any contextual conditions or prerequisites, leaving the agent to infer appropriate usage solely from the action description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_nodeB
Remove a node from a scene and save
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the node to remove (e.g., "root/Player/Weapon") | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It mentions that the tool removes and saves, but does not elaborate on side effects such as whether the scene is reloaded, whether the removal is reversible, or error handling if the node does not exist. This is insufficient for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that directly states the tool's purpose without any filler. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with three documented parameters and no output schema, the description covers the core action (remove and save) but lacks additional context about return values, side effects, or failure modes. It is adequate for a basic understanding but not fully complete for an agent to anticipate all outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have descriptive entries in the input schema (100% coverage), so the schema already provides the necessary meaning. The description adds no additional parameter information, which is acceptable given the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove') and the resource ('a node from a scene'), and also mentions saving, which distinguishes it from sibling tools like add_node and save_scene. The verb and object are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description only states what it does, not when to prefer it over other node manipulation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_projectC
Run the Godot project and capture output
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | Optional: Specific scene to run | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral burden. It mentions 'capture output' but does not disclose side effects, blocking behavior, or whether the process continues running after invocation. The name 'run_project' implies execution but lacks specifics about what the user will observe.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no filler or redundant information. It efficiently conveys the primary purpose without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is present, and the description does not clarify what 'capture output' means—whether it returns logs, exit codes, or streams. It also omits whether the tool blocks until the project closes or returns immediately. This leaves the agent uncertain about the expected behavior and return format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full coverage for both parameters with their descriptions. The tool description adds no extra semantic detail beyond the schema, so it neither enhances nor detracts from the schema's clarity. The baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear action ('Run') and object ('the Godot project'), plus a specific outcome ('capture output'). It is distinct from siblings like `launch_editor` or `stop_project`, though the phrase 'capture output' could be more detailed about what output is captured.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. It does not mention prerequisites, like whether the project must exist or if the Godot editor must be closed, nor does it explain the effect of the optional 'scene' parameter in context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_sceneC
Save changes to a scene file
| Name | Required | Description | Default |
|---|---|---|---|
| newPath | No | Optional: New path to save the scene to (for creating variants) | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that the tool mutates/saves a scene file, not whether it overwrites the existing file, how newPath behaves beyond the schema's variant hint, or what happens on failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence with no filler or redundant content; the core action is front-loaded. It is appropriately concise, even though it sacrifices detail that is captured in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should compensate but does not; it omits overwrite behavior, success/failure signaling, and any preconditions. The schema covers parameters, so the tool is not wholly underspecified, but the description alone is insufficient for confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: projectPath and scenePath are described as paths, and newPath is explicitly documented as an optional path for creating variants. The description adds no additional parameter meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'save' with the resource 'scene file,' clearly indicating a persistence operation. It does not explicitly differentiate from create_scene, though 'save changes' implies an existing scene, so it stops short of full sibling distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus create_scene or other scene tools, and no prerequisites or exclusions are provided. The word 'changes' implies use after modifications, but that is not actionable enough to help an agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_node_propertyA
Set one or more properties on an existing node and save the scene
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the target node | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| properties | Yes | Map of property name to value | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explicitly discloses that the scene is saved, which is important side-effect behavior. However, it does not mention property overwrite behavior, error handling, permissions, or reversibility, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It efficiently communicates the core action and side effect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 4 required parameters, a nested object, no output schema, and no annotations. The description covers the main operation but lacks guidance on constructing the 'properties' object, error behavior, or success confirmation. It is minimally adequate for a simple mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds no parameter-specific details beyond the schema, which already provides short definitions for each parameter. The nested 'properties' object lacks explanation of allowed keys or value types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'set' with a resource 'node' and clearly indicates the save side effect. It distinguishes itself from sibling tools like add_node, remove_node, and get_scene_tree by focusing on modifying existing node properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'existing node' implies the tool is for already-created nodes, contrasting with add_node, but there is no explicit mention of alternatives or when not to use this tool. The context is clear but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_projectA
Stop the currently running Godot project
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action 'Stop' without explaining side effects (e.g., unsaved changes, process termination), error conditions (no running project), or whether it's reversible. For a destructive action, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, succinct sentence that directly states the action and target. It's front-loaded with the verb and resource, with zero redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters and no output schema, the description adequately covers the core action. However, it doesn't mention what happens if no project is running or whether the tool returns any feedback, which would be useful but not critical for a stop action. The description is mostly complete given its simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty (100% coverage). The description doesn't need to explain any parameters, and the baseline for 0-parameter tools is 4. It adds no extra parameter meaning because none exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Stop') and a specific resource ('the currently running Godot project'). It clearly distinguishes from siblings like run_project (which starts) and get_debug_output (which retrieves output), so an agent can easily infer its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (when you need to stop a running project) but does not explicitly mention when not to use it or alternatives. Since it's a simple action with no parameters, the context is clear, but it doesn't provide explicit routing like naming run_project as the counterpart.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
take_screenshotA
Render a scene headlessly via --script and capture a PNG. Best for standalone scenes without autoload deps. For real game scenes, prefer test_take_screenshot against a running game.
| Name | Required | Description | Default |
|---|---|---|---|
| scenePath | Yes | Path to the scene file (relative to project) | |
| outputPath | No | Optional: where to save PNG (user:// or res:// or project-relative). Default: user://screenshot.png | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses headless rendering via --script and the limitation about autoload dependencies. It does not detail error behavior, return value, or file overwrite semantics, but for a screenshot tool the core behavior and constraints are well conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the primary action and a practical usage note. No redundant content or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple screenshot tool, the description conveys purpose, usage context, and a sibling alternative. It lacks explicit return/error details, but the output (PNG) is implied. Given no annotations or output schema, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have descriptions in the schema (100% coverage), so baseline 3 applies. The description adds no additional parameter-specific detail beyond what the schema already provides; it only mentions 'capture a PNG' which maps to outputPath but doesn't elaborate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it renders a scene headlessly and captures a PNG, clearly distinguishing from test_take_screenshot by noting it's for standalone scenes without autoload deps. The purpose is specific and the resource (scene) is identified.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Best for standalone scenes without autoload deps' and 'For real game scenes, prefer test_take_screenshot', providing clear when-to-use and a named alternative. This fully addresses usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_check_entityC
Check if a unit, building, or resource scene exists and get its properties
| Name | Required | Description | Default |
|---|---|---|---|
| race | No | Race for race-specific entities (humans, orcs, undead). Default: humans | |
| entityType | Yes | Type of entity (worker, soldier, town_hall, gold_mine, etc.) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the primary action but omits details about return values (e.g., what happens if entity doesn't exist), error handling, or any side effects. For a read-only check, this is acceptable but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and object. It contains no filler or redundancy, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description should explain what 'get its properties' returns and how to interpret the result. It also lacks information on behavior when the entity is absent. Given the moderate parameter count, this is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds a small amount by mentioning 'unit, building, or resource scene,' which maps to entityType, but does not elaborate on projectPath or race beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: checking existence of a unit, building, or resource scene and retrieving its properties. This is a specific verb+resource combination that distinguishes it from siblings like test_get_info or test_check_mlx, 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives. The description does not mention prerequisites, typical use cases, or exclusions, leaving the agent to infer context from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_check_mlxB
Check MLX local LLM server health and Apple Silicon platform compatibility
| Name | Required | Description | Default |
|---|---|---|---|
| mlxUrl | No | Optional: MLX server URL (default: http://127.0.0.1:8090) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
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 only states 'Check' without specifying whether the tool makes network calls, what actions it takes (e.g., ping, request endpoint), or what side effects may occur. The agent is left guessing about safety and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no filler. It efficiently conveys the tool's purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's purpose and lack of output schema or annotations, the description is incomplete. It does not explain what the tool returns (e.g., health status, boolean), how it handles failures, or what 'compatibility' means in practice. The minimal description leaves significant gaps for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for both parameters, with descriptions for mlxUrl (including default) and projectPath. The description adds no additional parameter context beyond what the schema already provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: checking health and platform compatibility of an MLX local LLM server. The verb 'Check' combined with the specific resource 'MLX local LLM server' and additional 'Apple Silicon platform compatibility' distinguishes it from sibling tools, which are mostly game-state or scene related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage as a preflight health check but offers no explicit guidance on when to use it versus alternatives. Sibling tools are listed, but no direction is provided for choosing this tool for health verification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_get_game_stateC
Get a snapshot of game state including available autoloads, constants, and configuration
| Name | Required | Description | Default |
|---|---|---|---|
| include | No | Optional: specific categories to include (players, units, buildings, resources, disasters) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description must disclose behavioral traits. It says 'get a snapshot' implying read-only, but does not explicitly state side-effect-free, return format, error handling, or limitations. Lacks sufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, direct, and front-loaded with the action. No wasted words or redundant phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description should convey return expectations. It does not describe the structure of the snapshot, how the 'include' filter affects the result, or whether the operation is destructive. Under-specified for a tool with a filter parameter and no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters with descriptions. Description adds high-level context about game state contents but does not bridge the 'include' parameter categories (players, units, etc.) with the listed 'autoloads, constants, configuration'. Baseline 3 is appropriate since schema handles parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states a 'get' operation on 'game state' and lists example contents (autoloads, constants, configuration). It is specific in verb and resource, but does not explicitly differentiate from sibling test_* tools like test_get_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. No mention of the 'include' filter, prerequisites, or scenarios where this tool is preferred. The agent must infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_get_infoC
Get information about the test harness capabilities and game project
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a read-only operation via 'Get' but does not disclose what happens with the project path, whether any setup is required, or what side effects (if any) occur. Significant gaps in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, direct sentence with no wasted words. It front-loads the action and resource, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should explain what 'information' is returned and what 'capabilities' means. The tool appears to overlap with other test_* tools, and the description does not clarify its unique role or return format, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the only parameter (projectPath) with a clear description. The tool description adds no additional parameter semantics, but with 100% schema coverage the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Get') and identifies the resource ('test harness capabilities and game project'). It is specific enough to distinguish from general tools like get_project_info, but the exact meaning of 'capabilities' is vague, keeping it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like test_get_game_state or get_project_info. No context or exclusions are provided, leaving the agent to guess.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_run_scenarioB
Run the game with test harness mode enabled for a specific scenario
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | Optional: specific test scene to run | |
| timeout | No | Optional: timeout in milliseconds before stopping the test (default: 30000) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'test harness mode enabled' but doesn't explain its effects, whether the process blocks, output expectations, side effects, or interaction with other test tools. This is insufficient for a potentially long-running action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no redundancy. It front-loads the core action and condition, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and the presence of numerous sibling test tools, the description is underspecified. It lacks information about return values, side effects, how 'test harness mode' behaves, and how this tool relates to other test tools. This could lead to incorrect invocation or expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters clearly. The description adds minimal semantic value by linking 'specific scenario' to the scene parameter, but this is also present in the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Run' with the resource 'the game' and the distinctive condition 'test harness mode enabled', distinguishing it from run_project and other test_* siblings. It precisely conveys the tool's objective.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided for when to use this tool versus alternatives like run_project, test_validate_scenario, or get_debug_output. The description implies usage for test scenarios but lacks explicit context, 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.
test_take_screenshotA
Capture a screenshot of the currently running game via file-based IPC with TestController. Requires the game to already be running (use run_project or test_run_scenario first). Works with autoloads and real scenes.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Optional: poll timeout in ms (default: 10000) | |
| outputPath | No | Optional: where to save PNG (res:// or project-relative). Default: .mcp_screenshots/capture_<id>.png | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the IPC mechanism and that it works with autoloads/real scenes, adding context beyond schema. However, it does not mention timeout behavior, what happens if the game isn't running, or what the tool returns (e.g., success status or file path). This leaves gaps in behavioral expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by the key prerequisite and scope. Every sentence earns its place, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and no annotations, the description explains the core functionality and prerequisite but omits return value semantics and error behavior (e.g., timeout). While the schema covers parameters, the lack of return/error information makes it incomplete for an agent to fully understand the tool's contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already well-documented. The tool description adds context about the running game and IPC, which helps interpret 'projectPath' as the path to the running project, but does not add syntax or format details beyond schema. Meets baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Capture a screenshot'), the target ('the currently running game'), and the mechanism ('via file-based IPC with TestController'). It distinguishes from sibling 'take_screenshot' by specifying context (running game vs. editor scene), making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisite: 'Requires the game to already be running (use run_project or test_run_scenario first).' This gives clear context for when to use the tool and implies alternatives (run_project/test_run_scenario) for starting the game. No explicit exclusions or alternate tool comparisons, but enough guidance for typical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_validate_pathsB
Validate that all unit/building scene paths exist for a race
| Name | Required | Description | Default |
|---|---|---|---|
| race | No | Race to validate (humans, orcs, undead). Default: humans | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state what happens when paths are missing (e.g., errors, return values), whether the tool is read-only, or any side effects. This lack of detail is a gap for a validation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that effectively communicates the tool's purpose without unnecessary words. It is well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (2 params, no output schema, no annotations), the description covers the primary purpose and parameters via schema. However, it lacks details about the validation outcome or error behavior, which would be expected for a complete description. It is minimally adequate for tool selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, with race and projectPath clearly described. The description adds the context that the paths are for unit/building, but this is more of a purpose clarification than an enhancement of parameter meaning. Thus, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates unit/building scene paths for a race, with a specific verb ('validate') and resource ('scene paths'). This distinguishes it from sibling test tools like test_validate_scenario, which likely validates scenarios rather than path existence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives or any prerequisites. While 'for a race' implies it is used per-race, there is no explicit context on when validation is needed or what triggers its use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_validate_scenarioA
Validate that a test scenario configuration is valid before running it
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | Scenario configuration to validate | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It states the validation action and its purpose, but does not describe what happens on invalid configuration (e.g., return values, errors, side effects). Some context is added by framing it as a pre-run step, but details are lacking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word contributes to conveying the tool's purpose, making it exceptionally concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple validation purpose, well-covered parameters via schema, and no output schema, the description is reasonably complete. However, it omits details about the return value or validation result behavior, which would improve completeness for a tool without an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional parameter semantics beyond what the schema provides, justifying the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Validate' with the resource 'test scenario configuration,' clearly identifying its purpose as a pre-flight check. It differentiates from sibling tools like test_run_scenario or test_validate_paths by focusing specifically on scenario configuration validity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'before running it' gives clear contextual timing, indicating this should be used prior to test execution. It does not explicitly name alternatives or exclusions, but the implied usage is strong and helpful given the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_uidsB
Update UID references in a Godot project by resaving resources (for Godot 4.4+)
| Name | Required | Description | Default |
|---|---|---|---|
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It mentions resaving resources, implying file modifications, but does not disclose potential side effects, reversibility, permissions needed, or whether it may alter many files. The version requirement is useful but insufficient for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the primary action and resource. It avoids extraneous detail and is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one parameter, no output schema, and no annotations, the description is minimally adequate. It explains what it does and the version constraint, but omits guidance on when to use it and potential side effects. Given the simplicity, it is not severely incomplete but lacks context an agent might need to decide correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter has 100% schema coverage with a clear description ('Path to the Godot project directory'). The tool description adds no additional meaning beyond the schema, so it meets the baseline for a fully documented parameter but does not enhance understanding further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update'), a resource ('UID references in a Godot project'), and a method ('by resaving resources'). It clearly identifies the tool's function and includes a version constraint (Godot 4.4+), distinguishing it from sibling tools like get_uid that retrieve UIDs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. It only mentions a version requirement, but does not explain scenarios (e.g., after moving or renaming files) or when to prefer other project tools. The intended use is implied but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
29 tool updates
v0.3.0- First observed
add_node - First observed
attach_script - First observed
create_scene - First observed
create_script - First observed
export_mesh_library - First observed
get_debug_output - First observed
get_godot_version - First observed
get_project_info - First observed
get_scene_tree - First observed
get_uid - First observed
launch_editor - First observed
list_projects - First observed
list_scripts - First observed
load_sprite - First observed
remove_node - First observed
run_project - First observed
save_scene - First observed
set_node_property - First observed
stop_project - First observed
take_screenshot - First observed
test_check_entity - First observed
test_check_mlx - First observed
test_get_game_state - First observed
test_get_info - First observed
test_run_scenario - First observed
test_take_screenshot - First observed
test_validate_paths - First observed
test_validate_scenario - First observed
update_project_uids
TDQS
Scored across 29 tools
Most tools have clearly distinct purposes, though test_check_entity and test_validate_paths overlap somewhat in validating scene paths. The two screenshot tools are adequately differentiated by their descriptions, but the large number of test_* tools could cause brief confusion.
All tool names follow a consistent verb_noun pattern, using lowercase with underscores. Prefixes like 'get_', 'list_', 'create_', 'test_' are applied uniformly, making the naming predictable and readable.
At 29 tools, the count exceeds the 25 threshold for 'too many' per the calibration. While the server covers multiple sub-domains (project management, scene editing, testing, screenshots), the sheer number makes the toolset feel heavy and harder to navigate.
The toolset covers the core lifecycle of Godot project management, scene editing, scripting, testing, and screenshots. Missing operations like scene deletion or project settings editing are minor gaps that agents can work around.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
MCP server for building and testing AI agents with multi-model experimentation and insights.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Screenshot and HTML render MCP server for AI agents
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to directly run, inspect, modify, and debug Godot game development projects through 110+ tools covering scenes, scripts, resources, runtime debugging, and asset management.3321 npm2MIT
- AlicenseBqualityCmaintenanceMCP server for Godot Engine enabling AI to autonomously develop, test, and debug games with deterministic playtesting, multiplayer testing, DAP debugging, LSP integration, and token efficiency.3113MIT
- AlicenseNot gradedqualityAmaintenanceA security-first MCP server and Godot editor addon enabling AI agents to observe and control Godot games through bounded, permission-gated tools for debugging, input automation, and project editing.MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to control and interact with Godot 4 editor, allowing scene manipulation, file editing, and project inspection through natural language.MIT