Godot MCP
Provides AI assistants with full control over the Godot game engine, enabling natural language commands to build scenes, write scripts, run games, send input, capture screenshots, and query game state.
Click on "Install 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 MCPcreate a simple platformer level with a player and ground"
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
Give your AI assistant full control over the Godot game engine.
Build scenes, write scripts, run games, send input, capture screenshots, and query live game state — all through natural language.
((((((( (((((((
((((((((((( (((((((((((
((((((((((((( (((((((((((((
(((((((((((((((((((((((((((((((((
((((( ((((((((((((((((((((((((((((((((((((((((( (((((
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
(((((((((@@@@@@@(((((((((((((((((((((((((@@@@@@@@((((((((((
((((((@@@@,,,,,@@@((((((((((((((((((((@@@,,,,,@@@@(((((((((
(((((@@,,,,,,,,,@@(((((((@@@@@(((((((@@,,,,,,,,,@@@((((((((
((((((@@,,,,,,,@@(((((((@@@@@((((((((@@,,,,,,,@@@(((((((((
(((((((((@@@@@@(((((((((@@@@@(((((((((((@@@@@@((((((((((((
(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
@@@@@@@@@@@@@(((((((((((@@@@@@@@@@@@@@(((((((((((@@@@@@@@@@@@@@
(((((((( @@@(((((((((((@@(((((((((((@@(((((((((((@@@ ((((((((
((((((((( @@(((((((((@@@(((((((((((@@@((((((((((@@ (((((((((
((((((((((@@@@@@@@@@@@@@(((((((((((@@@@@@@@@@@@@@((((((((((
((((((((((((((((((((((((((((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((((((((((((((((((((
(((((((((((((((((((((((((((((((((
G O D O T x M O D E L C O N T E X T P R O T O C O LFork of Coding-Solo/godot-mcp, extended with interactive game control, persistent TCP communication, script authoring, automated tests, and more.
Highlights
75 tools covering the full game-dev loop: projects, scenes, nodes, scripts, resources, tilemaps, animation, settings, exports
Interactive play-testing — run the game, send keyboard/mouse/gamepad input, query live state, wait for signals, capture the viewport
Batched test sequences — keys, waits, screenshots, state snapshots, and signal collection in a single round-trip
Stateless MCP
2026-07-28on SDK v2 — no handshake for modern clients, cached tool lists, automatic fallback for 2025-era clientsSafety controls — toolset filtering, read-only mode, and per-tool exclusion via environment variables
Fully tested — 184 automated tests against a real headless Godot engine, no mocks
Related MCP server: Gear
How It Works
MCP (Model Context Protocol) is a standard that lets AI assistants use external tools. Think of it like a USB port — your AI plugs into this server and gains the ability to control Godot.
You (natural language) --> AI Assistant --> MCP Server --> Godot Engine
"Add a player to | | |
the scene" interprets calls tool creates node
your request add_node() in .tscn fileYou talk to your AI assistant normally. When it needs to do something in Godot, it calls one of the 75 tools this server provides. You don't write any code yourself — the AI handles that.
Quickstart
1. Install prerequisites
Requirement | Notes |
Note the full path to the executable (e.g. | |
Runs the MCP server | |
pnpm |
|
An MCP-compatible AI assistant |
2. Clone and build
git clone https://github.com/Vollkorn-Games/godot-mcp.git
cd godot-mcp
pnpm install
pnpm run buildNote the full path to build/index.js — you'll need it below.
3. Configure your AI assistant
Every config needs the same two things: the command to start the server (node + path to build/index.js) and the GODOT_PATH environment variable pointing at your Godot executable.
Run this command in your terminal:
claude mcp add godot -- node /absolute/path/to/godot-mcp/build/index.jsOr add to your MCP settings JSON (~/.claude/settings.json or project-level .mcp.json):
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/absolute/path/to/godot-mcp/build/index.js"],
"env": {
"GODOT_PATH": "/absolute/path/to/godot/executable"
}
}
}
}Open the Cline MCP settings (Cline sidebar > MCP Servers > Configure) and add:
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/absolute/path/to/godot-mcp/build/index.js"],
"env": {
"GODOT_PATH": "/absolute/path/to/godot/executable"
},
"disabled": false
}
}
}Go to Settings > Features > MCP > + Add New MCP Server:
Name:
godotType:
commandCommand:
node /absolute/path/to/godot-mcp/build/index.js
Then set the environment variable GODOT_PATH in your system or shell profile.
Any application that supports MCP can use this server. The connection always works the same way:
Transport: stdio (the AI launches the server as a subprocess)
Command:
node /absolute/path/to/godot-mcp/build/index.jsEnvironment variables:
GODOT_PATH=/absolute/path/to/godot/executable
Check your client's documentation for where to add MCP server configs. Look for terms like "MCP", "tools", or "tool servers".
On Windows, use forward slashes in JSON paths:"C:/Users/you/godot-mcp/build/index.js".
4. Test it
Open your AI assistant and try:
"Use the get_godot_version tool to check if the MCP server is connected."
If it returns a version number, everything is working. Now try:
"Create a new Godot project at C:/Users/you/my-game with a Node2D main scene."
Tools
This isn't just "launch editor and read logs". The server can build an entire game from scratch — create scenes, add and configure nodes, write GDScript files, wire up signals, set up tilemaps — then run the game, play it via input commands, and observe the results through screenshots and state queries.
75 tools across 10 categories:
Tool | Description |
| Open the Godot editor for a project |
| Run a project in debug mode |
| Get console output/errors (supports filtering) |
| Stop a running project |
| Get installed Godot version |
| Find Godot projects in a directory |
| Analyze project structure |
Tool | Description |
| Create a new scene with a root node type |
| Add nodes with properties |
| Remove nodes from scenes |
| Rename a node in a scene |
| Move a node to a different parent |
| Duplicate a node (optionally to new parent) |
| Add a scene as a child instance |
| Set properties on nodes |
| Read node properties as JSON |
| Get full scene tree structure as JSON |
| Wire signals between nodes |
| Manage node groups |
| Save scene (or create variant) |
| Check for missing scripts, broken refs, etc. |
| Execute multiple scene operations in one Godot process (much faster) |
Tool | Description |
| Write or update a GDScript file (auto-creates directories) |
| Read GDScript file contents |
| Check a GDScript file for syntax errors (headless, no runtime needed) |
| Attach a script to a node in a scene |
Tool | Description |
| Load a texture into a Sprite2D node |
| Create .tres resource files with typed properties |
| Create TileSet with atlas sources and custom data layers |
| Place tiles on a TileMapLayer |
| Read tile data from a TileMapLayer |
| Set custom data on tile cells |
| Export 3D scenes as MeshLibrary for GridMap |
Tool | Description |
| Create AnimationPlayer with pre-configured animations |
| Add animations with tracks, keyframes, interpolation |
| Set collision layers/masks (layer numbers or bitmask) |
Tool | Description |
| Edit project.godot (display, input, etc.) |
| Add, remove, or list autoload singletons |
| Discover all input actions defined in a project |
| UID management (Godot 4.4+) |
| Export for target platform using presets |
Tool | Description |
| Start game with injected TCP input receiver |
| Send named input actions to the running game (move, jump, attack...) |
| Send keyboard key events with modifier support (shift, ctrl, alt) |
| Send mouse clicks at specific viewport coordinates |
| Simulate mouse drag operations from point A to B |
| Query live game state (HP, score, position, level, etc.) |
| Invoke a method on a live node (e.g., |
| Search the runtime scene tree by name pattern and/or type |
| Execute arbitrary GDScript expression at runtime and return result |
| Block until a signal is emitted (e.g., |
| Block until a node appears in the scene tree |
| Retrieve FPS, draw calls, memory, node count, physics stats |
| Reload the current scene (handy for test loops) |
| Retrieve runtime errors/warnings with backtraces (Godot 4.5+ Logger API) |
| Send key presses and InputMap actions with inline waits, screenshots, state snapshots, and signal events |
| Send gamepad button events (A, B, X, Y, shoulders, dpad, start, etc.) |
| Send gamepad analog stick/trigger axis events with float precision |
| Pause/unpause game time (MCP receiver stays active for queries) |
| Set a property on a live node (auto-converts arrays to Vector2/Vector3/Color) |
| Run multi-line GDScript code blocks at runtime with autoload access |
| Subscribe to node signals for async event monitoring |
| Retrieve buffered signal events captured since last read |
| Capture the live game viewport as PNG |
| Run game for N seconds, capture screenshot, stop |
| Render a scene to PNG (static, no runtime) |
Tool | Description |
| Analyze scene architecture: node types, signals, sub-scenes, groups, depth |
| Profile a script: methods, signals, dependencies, exports |
Tool | Description |
| Run GUT unit tests headlessly and return pass/fail results |
Tool | Description |
| Search the Godot Asset Library for addons/templates (read-only network call) |
| Download an asset (by |
Interactive Mode
The standout feature. run_interactive injects a TCP server into the running game as a temporary autoload, giving the AI a live, two-way channel to the game:
You want to... | Use |
Drive the game |
|
Batch a test run |
|
Inspect live state |
|
Mutate live state |
|
Synchronize on events |
|
See / control time |
|
The TCP connection is persistent (single socket reused across commands). Everything is cleaned up automatically when the game stops — the injected autoload is removed and project.godot is restored.
Efficient Testing Patterns
send_key_sequence is the primary tool for gameplay testing. It bundles keys, InputMap actions, waits, state snapshots, screenshots, and signal collection into a single round-trip — much faster than calling individual tools in a loop.
Fast gameplay test (1 round-trip):
send_key_sequence({
keys: ["1", {"action": "move_right", "hold_ms": 300}, {"state": true}, "o", {"wait": 2000}, {"screenshot": "mid.png"}, "s"],
collectSignals: [{nodePath: "/root/EventBus", signals: ["task_completed", "score_changed"]}]
})
// Response includes:
// keys_sent: 4
// states: [{state: {scene: "Desktop", score: 100}, index: 2}]
// screenshots: [{path: "mid.png", size: "1024x768", index: 3}]
// events: [{signal: "score_changed", node: "/root/EventBus", args: [200]}]Avoid these slower patterns:
// BAD: 3 round-trips for the same result
subscribe_signals({nodePath: "/root/EventBus", signals: ["task_completed"]})
send_key_sequence({keys: ["1", "a", "o", "s"]})
get_signal_events()
// BAD: N round-trips instead of 1
send_key({key: "a"})
game_state()
send_key({key: "b"})
game_screenshot()
// BAD: shell sleeps between inputs — use {"wait": ms} checkpoints instead
send_input({action: "move_right"})
Bash("sleep 2")
send_input({action: "jump"})
game_screenshot()Prefer structured checks over screenshots. game_state, evaluate_expression, and get_runtime_errors return text in milliseconds; a screenshot costs a viewport capture, a PNG write, and an image read. Reach for game_screenshot only when the visual result itself is what needs verifying (rendering, layout, animation).
When to use subscribe_signals instead: Only when you need to monitor signals across multiple separate commands (e.g., subscribe once, then issue several unrelated tool calls and check accumulated events later).
Configuration
All configuration happens through environment variables in your MCP client config:
Variable | Description |
| Path to Godot executable (overrides auto-detection) |
| Set to |
| Comma-separated tool categories to enable (e.g., |
| Comma-separated tool names to exclude (e.g., |
| Set to |
The server tries to auto-detect Godot in common install locations. If it can't find it, set GODOT_PATH explicitly.
Tool filtering
Reduce token overhead and add safety by controlling which tools are exposed. All three filters can be combined:
Toolsets — only expose specific categories:
"MCP_TOOLSETS": "scene,node,script,analysis". Available:process,project,scene,node,animation,tilemap,resource,script,signal_group,uid,settings,interactive,screenshot,analysis,testing.Read-only mode —
"MCP_READ_ONLY": "true"blocks every tool that creates, modifies, or deletes files or game state, leaving only readers likeget_scene_tree,read_script,validate_scene,game_state,find_nodes.Exclusion — remove individual tools by name:
"MCP_EXCLUDE_TOOLS": "export_project,manage_autoloads".
{
"godot": {
"command": "node",
"args": ["/path/to/godot-mcp/build/index.js"],
"env": {
"GODOT_PATH": "/path/to/godot",
"MCP_TOOLSETS": "scene,node,script,analysis",
"MCP_READ_ONLY": "true"
}
}
}Supported Clients
MCP is an open standard. Any AI assistant that supports MCP can use this server:
Client | MCP Support | Notes |
Built-in | First-class MCP support via | |
Built-in | VS Code extension, configure in sidebar | |
Built-in | Settings > Features > MCP | |
Built-in | Settings > MCP | |
Built-in | config.json MCP section | |
Plugin | Check MCP plugin availability |
The server speaks the stateless MCP 2026-07-28 protocol revision (built on MCP SDK v2): modern clients call tools directly with no initialize handshake, and the tool list ships cache hints so clients don't re-fetch it. Older 2025-era clients work too — the server auto-detects the client's protocol era per connection and serves the legacy handshake when needed.
You don't connect the LLM to the MCP server directly. Instead, you need an MCP client (an app that speaks the MCP protocol) sitting between your LLM and the MCP server:
Your local LLM (LlamaCPP) --> MCP Client (e.g., Cline) --> Godot MCP Server
runs on localhost:8080 handles tool calls controls GodotHere's how to set it up with LlamaCPP + Cline (the easiest path):
1. Start LlamaCPP with a tool-capable model
llama-server -m your-model.gguf --port 8080Use a model that supports function/tool calling (e.g., Qwen 2.5, Mistral, Llama 3.1+). Smaller models may struggle with complex tool use.
2. Install Cline in VS Code
Install the Cline extension from the VS Code marketplace.
3. Point Cline to your local LLM
In Cline settings, configure the API provider:
API Provider: OpenAI Compatible
Base URL:
http://localhost:8080/v1API Key:
not-needed(any non-empty string)Model ID: the model name your server reports
4. Add the Godot MCP server to Cline (see Quickstart)
5. Test it
Ask Cline: "Use the get_godot_version tool" — if it returns a version, the full chain is working.
Other local LLM setups:
Ollama: Same as above, but base URL is
http://localhost:11434/v1LM Studio: Has built-in MCP support via plugins — check their docs
Custom client: Implement the MCP client spec yourself — the server uses stdio transport and doesn't care what LLM is behind the client
Architecture
The server uses three execution strategies:
Direct CLI — Simple operations (launch editor, get version, read files) call Godot CLI commands or manipulate files directly from TypeScript.
Bundled GDScript — Complex scene operations use
godot_operations.gd, a comprehensive script that runs viagodot --headless --scriptto manipulate scene trees, nodes, and resources through the Godot API.TCP Input Receiver — Interactive mode injects
input_receiver.gdas a temporary autoload that listens on port 9876 for JSON commands (input injection, state queries, viewport capture).
Troubleshooting
Problem | Solution |
"Godot not found" | Set |
Tools not showing up | Restart your AI assistant after adding the MCP config |
"Not a valid Godot project" | Ensure the path you give contains a |
Interactive mode not responding | Check that port 9876 is not in use by another process |
Build errors after cloning | Run |
Permission errors (macOS/Linux) | Make sure |
Contributing
pnpm install
pnpm run build
pnpm test # run all tests (requires Godot installed)
pnpm lint # eslint
pnpm format:check # prettier
pnpm typecheck # tsc --noEmitCI runs all five checks on every push — please run them locally before opening a PR.
License
MIT — see LICENSE.
Available Tools
75 toolsadd_animationA
Add an animation with tracks and keyframes to an existing AnimationPlayer node. To create the AnimationPlayer itself, use create_animation_player first.
| Name | Required | Description | Default |
|---|---|---|---|
| loop | No | Whether the animation should loop (default: false) | |
| length | No | Animation length in seconds (default: 1.0) | |
| tracks | No | Animation tracks with keyframes | |
| nodePath | Yes | Path to the AnimationPlayer node | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| animationName | Yes | Name of the animation to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety cues (all false), so the description carries the burden. It discloses the prerequisite that an existing AnimationPlayer is required and points to create_animation_player otherwise. However, it does not mention side effects like overwriting animations with the same name, scene saving behavior, or error conditions, which would matter 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?
Two concise sentences, front-loaded with the core action and target. The alternative pointer to create_animation_player is valuable and does not add fluff. No wordy or redundant content.
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?
Tool has 7 parameters with nested track/keyframe structures, and no output schema. The schema is thorough, and the description gives essential prerequisite context, but it lacks return/error behavior and detailed side-effect information. Minimally adequate for invocation, but not deeply 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 schema already documents all parameters. The description adds only high-level context (tracks, keyframes, existing node) already reflected in schema properties. Baseline 3 is appropriate since no extra parameter syntax or meaning is provided.
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 uses a specific verb+resource: 'Add an animation with tracks and keyframes to an existing AnimationPlayer node.' It clearly differentiates from sibling 'create_animation_player' by focusing on adding to an existing node and mentioning the alternative.
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 states when to use this tool (on existing AnimationPlayer) and when not (to create the player itself) with direct alternative: 'To create the AnimationPlayer itself, use create_animation_player first.' This gives clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_nodeA
Add a child node to a scene file on disk. Defaults to root if parentNodePath is omitted. For sub-scene instances, use instantiate_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?
Annotations already indicate readOnlyHint=false and destructiveHint=false, so the mutation nature is clear. The description adds a behavioral detail about defaulting to root when parentNodePath is omitted, but does not disclose other potential side effects (e.g., whether the file is auto-saved, existing node behavior, or prerequisites). This is adequate but not rich.
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 two sentences with no redundancy. It immediately states purpose, gives a useful default, and points to an alternative. Every word earns its place, perfectly 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 mutation tool with no output schema, the description covers the essential context: what it does, the default parameter behavior, and a relevant alternative. It could mention return behavior or side effects, but given the moderate complexity and schema richness, it is sufficiently complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, giving a baseline of 3. The description adds meaningful param semantics by explaining the default behavior for parentNodePath when omitted, which is not in the schema. This extra context justifies a score above baseline.
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 a child node) and the resource (a scene file on disk), and distinguishes from a sibling tool by explicitly pointing to instantiate_scene for sub-scene instances. This meets the 'specific verb+resource' criterion and adds distinguishing context.
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 a clear alternative usage ('For sub-scene instances, use instantiate_scene') and implies the primary use case (adding nodes to scene files). However, it does not explicitly mention when not to use the tool beyond that one sibling, so it lacks exhaustive exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_to_groupB
Add a node to one or more groups in a scene
| Name | Required | Description | Default |
|---|---|---|---|
| groups | Yes | Array of group names to add the node to | |
| nodePath | Yes | Path to the node (e.g., 'root/Player') | |
| 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?
The description adds little beyond what annotations already state (readOnlyHint=false, destructiveHint=false). It does not disclose whether adding to an existing group is idempotent, whether new groups can be created, or any side effects on the scene.
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, straightforward sentence with no fluff or repetition. Every word contributes to the meaning.
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 good schema coverage, the description is minimally adequate. However, it omits any mention of return values, error behavior, or whether node/group must already exist, which could leave an agent uncertain about expected 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?
Schema coverage is 100% and all parameters have descriptions, so the schema carries the semantic burden. The tool description adds no parameter-specific detail, which is acceptable given the 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 a specific action ('Add a node to one or more groups in a scene') with a distinct verb and resource. It easily differentiates from sibling tools like remove_from_group, 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?
No guidance is provided on when to use this tool versus alternatives such as remove_from_group or add_node. There is no mention of prerequisites or scenarios favoring this operation over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
attach_scriptA
Attach a GDScript file to an existing node in a scene
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the node (e.g., "root" or "root/Player") | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| scriptPath | Yes | Path to the GDScript file (relative to project, e.g., "scripts/player.gd") | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (a mutation operation), but the description adds no behavioral context beyond the simple action. It does not disclose what happens to an existing script on the node, whether the scene file is saved, or any validation requirements. The description is neither misleading nor contradictory, but it is minimally informative.
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, front-loaded with the action and core objects. It contains no redundant information and is appropriately brief 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 is adequate for a simple tool with fully documented parameters and annotations, but it lacks usage trade-offs, side-effect details, and any error conditions. Given the tool's complexity, this is a minimal but acceptable level of completeness.
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%, with all four parameters (projectPath, scenePath, nodePath, scriptPath) having clear descriptions. The tool description reinforces the role of scriptPath and nodePath ('GDScript file' and 'existing node') but adds no additional meaning beyond what the schema already provides.
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 ('attach') with a clear resource ('GDScript file') and target ('existing node in a scene'), which distinguishes it from sibling tools like write_script (which writes script content) and add_node (which adds nodes). The meaning is immediately clear.
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 when to use this tool (when you have an existing node and a GDScript file to attach), but it does not explicitly mention alternatives or conditions when not to use it. There is no comparison with related script tools like write_script or validate_script.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batch_operationsA
Execute multiple scene operations in a single Godot process invocation. Much faster than individual tool calls since each spawns a separate process. Use for 3+ operations.
| Name | Required | Description | Default |
|---|---|---|---|
| operations | Yes | Array of operations to execute sequentially in one process | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover read-only/destructive/idempotent flags, and the description adds valuable context about process behavior and performance: it runs in a single Godot process versus separate processes per operation. This goes beyond the annotations, though it does not cover failure semantics or side effects, hence a 4 rather than 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core purpose, and every sentence earns its place by providing either functional intent or usage context. No filler or repetition.
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 moderate complexity of a batch operation and the rich schema with nested operation definitions, the description plus schema is sufficient for an agent to understand invocation. It lacks details about error handling or atomicity, but the performance guideline and clear purpose make it nearly 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% for both projectPath and operations, so the structured fields already provide full parameter documentation. The description itself adds no parameter-specific guidance, 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 executes multiple scene operations in a single Godot process invocation, distinguishing it from individual scene-operation tools. The verb 'execute' plus the resource 'scene operations' makes the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage guideline: 'Use for 3+ operations,' and justifies it by noting performance gains over separate process spawns. This gives the agent clear criteria for when to choose this tool over individual operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_methodA
Invoke a method on a live node in a running interactive Godot project. Resolves the node by path relative to the current scene (e.g., "Player", "World/Enemies/Boss") and calls the named method with optional arguments. Returns the serialized result. The project must be running via run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| args | No | Arguments to pass to the method. Default: [] (no arguments). | |
| method | Yes | The method name to call on the node (e.g., "take_damage", "get_health", "set_position"). | |
| nodePath | Yes | Path to the target node relative to the current scene root (e.g., "Player", "UI/HealthBar"). Also accepts absolute paths like "/root/GameState". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=false, destructiveHint=false, idempotentHint=false. The description adds that it returns a serialized result and requires interactive mode. However, it does not disclose that calling arbitrary methods may have unpredictable side effects, relying on the caller's knowledge of the target method.
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 three sentences long, front-loaded with the core purpose, and every sentence adds value: action, path resolution, result, and prerequisite. No redundant or filler content.
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 3 parameters and no output schema, the description is sufficiently complete. It covers the action, path resolution, argument handling, return value, and runtime requirement. Minor gaps like error handling are not critical for this tool's complexity.
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 described. The description reinforces the meaning of nodePath and args but does not add new details beyond 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 tool invokes a method on a live node in a running interactive Godot project, with concrete path examples. It distinguishes itself from sibling tools like set_node_properties or get_node_properties by focusing on method calls rather than property access.
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 explicitly states a prerequisite: the project must be running via run_interactive. It also clarifies that node paths are relative to the current scene. It does not name alternative tools explicitly, but the context is clear enough for an agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capture_screenshotARead-onlyIdempotent
Render a scene file statically and save the viewport as a PNG. No running game needed. For live game captures, use game_screenshot or run_and_capture. Requires a display server.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Override viewport width in pixels. Both width and height must be specified together. | |
| height | No | Override viewport height in pixels. Both width and height must be specified together. | |
| scenePath | No | Path to the scene file to capture (relative to project, e.g., "scenes/main.tscn"). If omitted, captures the project's main scene. | |
| outputPath | No | Path where the screenshot PNG will be saved. Defaults to "<projectPath>/screenshots/capture.png". | |
| waitFrames | No | Number of frames to wait before capturing (default: 3). Increase for scenes with loading animations or particle effects. | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent. The description adds context about static rendering and the display server requirement, which goes beyond annotations. It does not contradict annotations and adds useful behavioral nuance.
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?
Three concise sentences, each serving a purpose: describing the action, distinguishing from alternatives, and stating a key requirement. No wasted 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?
Given the rich schema and annotations, the description covers purpose, usage, and an important environmental requirement. No output schema exists, so return values need not be explained. The tool is simple enough that this description is sufficient.
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 does not add additional parameter-level semantics beyond what the schema already provides. It mentions 'scene file' and 'viewport' but these are generic and not parameter-specific.
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 renders a scene file statically and saves the viewport as a PNG. It explicitly differentiates from live capture alternatives by saying 'No running game needed' and naming game_screenshot and run_and_capture.
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 when-to-use vs alternatives: 'For live game captures, use game_screenshot or run_and_capture.' Also notes a prerequisite ('Requires a display server') and that no running game is needed, giving clear context for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_signalA
Connect a signal from one node to a method on another node in a scene file (.tscn) on disk. For runtime signal monitoring, use subscribe_signals or send_key_sequence.
| Name | Required | Description | Default |
|---|---|---|---|
| scenePath | Yes | Path to the scene file (relative to project) | |
| methodName | Yes | Name of the method to call (e.g., "_on_button_pressed") | |
| signalName | Yes | Name of the signal (e.g., "pressed") | |
| projectPath | Yes | Path to the Godot project directory | |
| sourceNodePath | Yes | Path to the node emitting the signal (e.g., "root/Button") | |
| targetNodePath | Yes | Path to the node receiving the signal (e.g., "root") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, so the agent knows this is a write operation, and the description adds that it modifies a file 'on disk'. However, it does not disclose potential side effects like overwriting existing connections or whether the scene must be saved. It provides basic context but not deep behavioral detail.
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 main action, and the alternative guidance is appended without redundancy. Every word contributes value, making it highly 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?
Despite having six required parameters and no output schema, the description fully covers the tool's purpose, its static-file context, and the alternative for runtime use. The schema handles parameter details, and the description is sufficient for an agent to understand when and how to invoke the 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 description coverage is 100%, so all six parameters are individually documented with clear descriptions. The tool description itself does not add extra meaning beyond what the schema already provides. Baseline 3 is appropriate because the schema carries the semantic load.
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 ('Connect') and specifies the resource ('a signal from one node to a method on another node in a scene file (.tscn) on disk'). It clearly distinguishes the tool from runtime monitoring tools by explicitly naming alternatives, which helps an agent select it correctly.
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 explicitly contrasts this tool with runtime signal monitoring by stating 'For runtime signal monitoring, use subscribe_signals or send_key_sequence.' This gives clear when-to-use and when-not-to-use guidance, going beyond implicit usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_animation_playerA
Create an AnimationPlayer node in a scene with optional pre-configured animations. To add animations to an existing player, use add_animation.
| Name | Required | Description | Default |
|---|---|---|---|
| nodeName | No | Name for the AnimationPlayer (default: 'AnimationPlayer') | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| animations | No | Animations to create with the player | |
| projectPath | Yes | Path to the Godot project directory | |
| parentNodePath | No | Path to the parent node (default: root) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate this is a mutating operation (readOnlyHint=false), and the description adds the optional animations behavior. However, it does not disclose deeper behavioral details such as what happens if the node already exists, whether the scene file is saved, or prerequisites like project/scene validity.
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 with the primary action front-loaded and no redundant filler. Every clause contributes meaning, including the alternative tool pointer.
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 schema coverage and the explicit sibling differentiation, the description is sufficiently complete for a creation tool. It could optionally mention side effects like saving the scene or handling existing nodes, but those are not critical given the schema and 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, so the baseline is 3. The description adds only minimal extra context by calling animations 'optional pre-configured animations', which aligns with the schema but does not elaborate on structure or defaults beyond what the schema already provides.
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 it creates an AnimationPlayer node in a scene with optional pre-configured animations. It explicitly distinguishes itself from add_animation, which is for adding animations to an existing player.
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 guidance on when not to use this tool by directing users to add_animation for existing players. This gives clear contextual differentiation among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_resourceB
Create a .tres resource file with typed properties
| Name | Required | Description | Default |
|---|---|---|---|
| properties | No | Properties to set on the resource | |
| scriptPath | No | Optional: Path to a GDScript that defines the resource class | |
| projectPath | Yes | Path to the Godot project directory | |
| resourcePath | Yes | Path where the .tres file will be saved (relative to project) | |
| resourceType | Yes | Type of resource (e.g., "Resource") or path to a script with class_name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=false, which are not informative. The description adds 'typed properties' but does not disclose key behaviors such as whether an existing file is overwritten, whether the file is created atomically, or what happens on invalid input. There is no mention of return values or error handling.
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 sentence with no filler. It front-loads the core purpose and avoids redundancy with the annotations or schema.
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 five parameters, a nested object, and no output schema, a one-line description is insufficient. It does not mention side effects (e.g., file overwrite behavior), prerequisites (e.g., valid project path), or return values. The description leaves too much unsaid for a tool of this complexity.
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%: every parameter has a description in the input schema. The description does not add additional meaning beyond the schema, so it stays at the baseline 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 a specific verb ('Create') with a specific resource ('.tres resource file') and adds 'typed properties', which clearly differentiates it from sibling creation tools like create_scene or create_tileset. It is unambiguous about what the tool does.
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 when-to-use or alternative guidance is provided, but the description implies usage: use when needing to create a .tres resource file with typed properties. It does not mention exclusions or when not to use it, so it stops at implied usage.
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 (.tscn) file with a root node. Specify rootNodeType (e.g., 'Node2D', 'Node3D', 'Control'; defaults to 'Node2D').
| 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?
The description does not disclose behavioral details such as whether an existing file at scenePath will be overwritten, what permissions are needed, or what happens if the project path is invalid. Annotations are all false, which only signals that this is not a read-only operation, leaving the agent without clarity on 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 exactly two sentences: the first states the core purpose, and the second clarifies the key parameter and default. It is front-loaded, free of filler, and every sentence earns its place.
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 relatively simple tool with three parameters and a 100% schema description coverage, the description covers the essentials. Its main gap is not explaining return values or what happens if the scene file already exists, but the schema and simplicity keep it mostly 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 already covers all parameters, but the description adds a valuable default value for rootNodeType ('Node2D') and examples ('Node2D', 'Node3D', 'Control'), providing semantic detail not present in 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 states a specific verb ('Create'), a specific resource ('Godot scene (.tscn) file'), and the scope ('with a root node'). The word 'new' distinguishes it from tools like save_scene or add_node, making its purpose unambiguous relative to siblings.
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 the primary use case (creating a new scene file) but provides no explicit guidance about when to use this tool versus alternatives like add_node or save_scene. It does not mention exclusions or alternatives, so usage context is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_tilesetA
Create a TileSet resource with atlas sources from texture files
| Name | Required | Description | Default |
|---|---|---|---|
| tileSize | No | Tile size in pixels (default: 16x16) | |
| projectPath | Yes | Path to the Godot project directory | |
| atlasSources | Yes | Array of atlas sources to add to the TileSet | |
| resourcePath | Yes | Path where the .tres file will be saved (relative to project) | |
| customDataLayers | No | Optional custom data layers to add to the TileSet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide no safety profile (all flags false), and the description does not disclose side effects, such as whether an existing .tres file will be overwritten, required permissions, or if the project needs to be open. The description only restates the basic creation action without adding behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no redundant words. Front-loaded with the verb 'Create' and efficient in 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 moderate complexity (5 params, nested objects) but the schema provides comprehensive parameter details. The description lacks information about return values or post-creation behavior, but given the rich schema, it is minimally viable.
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 fully documented. The description adds marginal meaning by mentioning 'atlas sources from texture files', but this is also evident from the schema. Baseline 3 applies since the schema does the heavy lifting.
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 the action (Create), the resource type (TileSet resource), and the source (atlas sources from texture files). It distinguishes itself from sibling tools like create_scene or create_resource by specifying the exact resource and 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 purpose implies when to use the tool (when a TileSet with atlas sources is needed), but there is no explicit guidance on when not to use it or comparison to alternatives. The context is clear but not fully articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_toolsARead-onlyIdempotent
List available tools by category. Categories: process, project, scene, node, animation, tilemap, resource, script, signal_group, uid, settings, interactive, screenshot, analysis, testing, assets, meta.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by category name (e.g. 'scene', 'node', 'interactive'). Omit to list all categories with tool counts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, which the description does not contradict. The description adds valuable context by enumerating the exact categories available, which helps the agent understand the tool's scope. It does not detail edge cases, but for a simple read-only listing tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action and resource, followed by a colon-separated list of categories. Every word earns its place; there is no waste or 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?
For a simple discovery tool with high schema coverage, strong annotations, and no output schema, the description covers the essentials: the action, the resource, and the valid categories. It does not describe return format, but that is easily inferred for a listing tool and is not critical.
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 the single optional parameter, and the schema description already explains the 'category' parameter. The tool description adds meaning by listing the valid category names explicitly, effectively providing an inline enum set, which exceeds the baseline 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 a specific verb 'List' with a clear resource 'available tools' and specifies the dimension 'by category'. It clearly distinguishes this introspection tool from the many action-oriented sibling tools (e.g., stop_project, export_project) by serving as a discovery/meta tool.
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 when to use the tool: to see what tools exist in a given category. It provides a full list of valid categories, giving context for filtering. However, it does not explicitly state when not to use it or mention alternatives, though no direct alternatives exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
duplicate_nodeA
Duplicate a node within a scene, optionally with a new name or different parent
| Name | Required | Description | Default |
|---|---|---|---|
| newName | No | Name for the duplicated node | |
| nodePath | Yes | Path to the node to duplicate | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| parentNodePath | No | Path to parent for the duplicate (default: same parent as original) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false and destructiveHint=false, so the agent knows this is a mutation that is not destructive. The description adds no additional behavioral context (e.g., whether children are duplicated, whether scene must be loaded). It does not contradict annotations.
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 that is front-loaded with the primary action. No wasted 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?
For a tool with 5 parameters and no output schema, the description covers the core behavior but leaves gaps: no mention of whether child nodes are duplicated, what happens to connections, or any return value. The schema handles param details, but behavioral expectations are 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 coverage is 100%, with every parameter having a description. The tool description adds slight context by noting optionality of newName and parentNodePath, but this is already inferable from the schema (those fields are not in required). 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 with a specific verb ('Duplicate') and resource ('node within a scene'), and distinguishes it from related sibling tools like reparent_node and rename_node by mentioning optional new name or parent.
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 when to use this tool (when duplicating a node), but it does not explicitly state when it should not be used or mention alternatives such as reparent_node or rename_node for related operations. Context is clear but not fully developed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_project_settingsA
Modify project.godot settings (input actions, display, rendering, physics, etc.). For autoload singletons, prefer manage_autoloads.
| Name | Required | Description | Default |
|---|---|---|---|
| settings | Yes | Settings to set, keyed by section/key path (e.g., {"autoload/GameState": "*res://scripts/autoload/game_state.gd", "display/window/size/viewport_width": 480}) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=false, destructiveHint=false, idempotentHint=false, so no safety context. The description merely says 'modify' without disclosing whether settings are overwritten, whether values are validated, whether the file is flushed, or any side effects. For a mutation tool, this is a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, zero waste. The alternative is stated in a second concise sentence.
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 two-parameter tool with no output schema, the description covers purpose and one alternative. However, it omits behavioral details like whether existing settings are merged or replaced, and whether changes persist immediately. This leaves the description somewhat incomplete for a 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 description coverage is 100%: both parameters (settings and projectPath) have clear descriptions, with an example for settings. The description adds category context ('input actions, display, rendering, physics') but no additional syntax or format details beyond the schema, so 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 states a clear action: 'Modify project.godot settings' with a specific resource and enumerates categories (input actions, display, rendering, physics). It also explicitly distinguishes from the sibling tool manage_autoloads by directing autoload singletons there, satisfying the differentiation criterion.
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 an explicit when-not/alternative: 'For autoload singletons, prefer manage_autoloads.' This tells the agent when not to use this tool and which sibling to use instead, meeting the highest bar for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
evaluate_expressionARead-onlyIdempotent
Execute an arbitrary GDScript expression at runtime and return the result. The expression runs in the context of the current scene (e.g., "get_tree().current_scene.name", "Vector2(1,2).length()"). Useful for debugging, querying state, and one-off calculations. The project must be running via run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| expression | Yes | The GDScript expression to evaluate (e.g., "get_tree().current_scene.name", "$Player.position", "2 + 2"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable context beyond annotations: the expression runs in the context of the current scene and requires the project to be running via run_interactive. It does not discuss error handling or potential side effects of arbitrary expressions, but the annotation bar is low and the added context earns a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, front-loaded with the core purpose, and every sentence earns its place: function, context/examples, use cases, and prerequisite. No fluff or repetition.
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 one-parameter tool with annotations covering safety and no output schema, the description is reasonably complete. It covers the purpose, usage context, execution context, and the critical prerequisite of run_interactive. It could mention error behavior or result formatting, but these are not essential for this tool type.
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 has 100% coverage with clear examples for the expression parameter. The description adds meaning beyond the schema by explaining the execution context (current scene) and the runtime prerequisite, which helps the agent understand how to construct valid expressions. This exceeds the baseline 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 clearly states the tool executes an arbitrary GDScript expression at runtime and returns the result, with concrete examples. It distinguishes itself from siblings like call_method (method call) and execute_script (script execution) by focusing on arbitrary expressions evaluated in the current scene context.
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 clear usage context: useful for debugging, querying state, and one-off calculations. It also states the prerequisite that the project must be running via run_interactive, giving a specific when-to-use condition. However, it does not explicitly name alternatives or exclusion cases, so it isn't a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_scriptA
Execute a multi-line GDScript block at runtime in the current scene context. Unlike evaluate_expression, supports variables, loops, and control flow. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The GDScript code to execute. Runs as a function body in the context of the current scene. Use "return x" to return a value. Example: "var p = $Player\nreturn p.position" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, so the description must convey behavioral traits. It notes the tool executes code in the current scene context and requires run_interactive, but it does not disclose potential side effects, state changes, or failure modes beyond the absence of read-only guarantees. This is adequate but not rich.
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 two sentences with no filler. It front-loads the primary action, adds a clear differentiator, and states a necessary prerequisite, making every word useful.
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 purpose, differentiation, and a prerequisite, which is sufficient for basic invocation. However, because arbitrary code execution can have significant side effects and there is no output schema, more detail on expected behavior or caveats would improve completeness.
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 tool description itself does not add parameter-level semantics beyond what the schema already provides, such as the example and use of 'return x'.
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 executes a multi-line GDScript block at runtime in the current scene context. It also explicitly distinguishes itself from evaluate_expression by mentioning support for variables, loops, and control flow, which separates it from a key sibling tool.
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 a direct comparison to evaluate_expression, indicating this tool is suited for complex scripts requiring variables and control flow. It also states a prerequisite (requires run_interactive), which gives practical usage context, though it doesn't explicitly enumerate all when-not-to-use scenarios.
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?
The description adds no behavioral details beyond the annotations. It does not disclose whether the output file is overwritten, whether the scene must be part of an opened project, or any side effects during export. With annotations present (readOnlyHint=false), the agent knows it is a write operation, but the description offers no additional transparency.
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-formed sentence that immediately states the tool's purpose. It is concise and free of unnecessary details, earning its place 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?
For a tool with full parameter documentation and annotation coverage, the description is minimally sufficient. However, it lacks context about the operation's behavior, such as what nodes become mesh items or overwrite rules, making it incomplete for optimizing agent selection and safe 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?
The schema has 100% description coverage for all parameters, so the schema already explains each parameter fully. The description does not add parameter-level insights beyond what the schema provides, matching the baseline 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 clearly states the tool's function with a specific verb and resource: 'Export a scene as a MeshLibrary resource.' This uniquely identifies the operation and distinguishes it from sibling tools like export_project or create_resource, which have different targets or formats.
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, nor are any prerequisites or typical use cases mentioned. The description only states the action without contextual cues for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_projectA
Export a Godot project for a target platform using a configured export preset
| Name | Required | Description | Default |
|---|---|---|---|
| debug | No | Export in debug mode (default: false) | |
| preset | Yes | Name of the export preset (as defined in export_presets.cfg) | |
| outputPath | Yes | Path for the exported file (e.g., "build/game.exe") | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are present but all false, providing minimal safety context. The description does not add behavioral details such as whether existing output files are overwritten, whether export presets are validated, or what happens on failure. It therefore adds little beyond the basic purpose.
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 clearly conveys the action and key conditions. No wasted words or redundant repetition of schema 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?
The tool has moderate complexity with four parameters and no output schema. The description covers the basic action but does not mention important context like output path requirements, preset prerequisites beyond 'configured', or behavior regarding existing files. While adequate for a simple export, it leaves some 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 coverage is 100%, so the schema fully documents all four parameters. The description mentions 'target platform' and 'configured export preset', which loosely align with the preset parameter, but it does not add detailed semantics or usage patterns beyond what the schema already provides.
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 ('Export') and resource ('a Godot project') with clear scope ('for a target platform using a configured export preset'). This distinguishes it from sibling tools like run_project or launch_editor, which serve different purposes.
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 use when needing to build an export artifact, but it does not explicitly contrast with alternatives (e.g., run_project for testing) or state when not to use. The context is clear enough for a straightforward export operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_nodesARead-onlyIdempotent
Search the live runtime scene tree by name pattern and/or type, including dynamically spawned nodes. For static .tscn analysis, use get_scene_tree. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | No | Glob-style name pattern to match (e.g., "Enemy*", "*Spawn*"). Default: "*" (all nodes). | |
| typeFilter | No | Filter by Godot class name (e.g., "CharacterBody2D", "Area2D", "Sprite2D"). Uses is_class() so subclasses match too. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it operates on the live runtime scene tree and includes dynamically spawned nodes, and notes the run_interactive prerequisite. It doesn't describe return format or pagination, but that's not critical beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose. The second sentence provides an alternative and a prerequisite. Every sentence earns its place with zero 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?
For a simple search tool with two optional parameters, the description covers purpose, runtime context, alternative, and prerequisite. There is no output schema, but the return value (matching nodes) is implied. A minor gap is not specifying what information is returned for each match, but overall it's sufficiently 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%: both 'pattern' and 'typeFilter' have clear descriptions, including defaults and subclass behavior via is_class(). The tool description doesn't need to add more, and it only reinforces the parameter usage at a high level. 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 a specific verb ('Search') and resource ('live runtime scene tree'), clearly stating it matches by name pattern and/or type. It also distinguishes from the sibling tool get_scene_tree by explicitly mentioning static .tscn analysis.
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?
It gives a direct alternative: 'For static .tscn analysis, use get_scene_tree.' It also states a prerequisite: 'Requires run_interactive.' This clearly guides when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
game_screenshotARead-onlyIdempotent
Capture a screenshot from a running interactive project. Slowest verification path — use only when visual appearance itself matters (rendering, layout, animation). For gameplay/logic checks prefer game_state, evaluate_expression, or get_runtime_errors: structured, and much faster than writing and reading an image. For inline captures during input, use send_key_sequence with {"screenshot": "path"}. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| outputPath | No | Path where the screenshot PNG will be saved. Defaults to project screenshots/capture.png. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent, and non-destructive behavior. The description adds valuable behavioral context: 'Slowest verification path' (performance) and 'Requires run_interactive' (prerequisite), which go beyond annotation data.
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?
Every sentence serves a distinct purpose: purpose, usage condition, alternatives, inline capture guidance, and prerequisite. It is concise despite covering multiple aspects, with no filler 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?
For a single-parameter tool with no output schema, the description is complete: it explains what the tool does, when to use it, alternatives, and a prerequisite. The agent has enough information to select and invoke it 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% for the single optional parameter outputPath, so the baseline is 3. The description does not add parameter-level detail beyond what the schema provides, but it doesn't need to.
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 and resource: 'Capture a screenshot from a running interactive project.' It distinguishes itself from sibling tools by explicitly contrasting with game_state, evaluate_expression, get_runtime_errors, and send_key_sequence for inline captures.
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 when-to-use guidance: 'use only when visual appearance itself matters', and names specific alternatives for other cases. It also states a clear prerequisite: 'Requires run_interactive.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
game_stateARead-onlyIdempotent
Fast structured verification (preferred over game_screenshot for gameplay logic): returns current scene name, script variables of all autoload singletons, and Player position if a Player node exists. For state not exposed via autoloads, use evaluate_expression or get_node_properties. For inline state captures during input, use send_key_sequence with {"state": true}. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds operational context beyond annotations: describes 'fast' performance, requires run_interactive, and discloses conditional return of Player position. Annotations (readOnly, idempotent, non-destructive) are complemented, not contradicted.
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?
Three tightly packed sentences with front-loaded purpose, followed by alternatives and a prerequisite. No filler; every clause adds useful 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?
Given no output schema, the description adequately covers return values (scene name, autoload vars, Player position), usage context, prerequisites, and fallback alternatives. It fully equips an agent to decide when and how to invoke the 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?
Tool has zero parameters, so baseline is 4 per rubric. The description adds value by outlining what the tool returns, though it naturally cannot add parameter-level detail since 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?
Clearly states the tool returns scene name, autoload variables, and Player position, with a specific verb ('returns') and resource. Explicitly differentiates from game_screenshot by noting it is preferred for gameplay logic.
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 when-to-use guidance: preferred over game_screenshot for gameplay logic, and directs users to evaluate_expression or get_node_properties for state not exposed via autoloads. Also mentions inline state capturing via send_key_sequence and the prerequisite run_interactive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_debug_outputARead-onlyIdempotent
Get console output (stdout/stderr) from a running Godot project. Supports errors_only and tail filters. For structured errors with stack traces, use get_runtime_errors.
| Name | Required | Description | Default |
|---|---|---|---|
| tail | No | Only return the last N lines of output/errors (default: all) | |
| errorsOnly | No | If true, only return error/warning lines (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the safety profile is known. The description adds that the source is a running Godot project and that errors_only and tail filters are supported. However, it does not disclose failure behaviors (e.g., if no project is running) or the exact structure of returned output. Given annotation coverage, this is adequate but not rich.
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 three short sentences, front-loaded with the core action, and every sentence carries useful information (purpose, filters, alternative). No wasted 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?
The tool is simple with no required parameters and no output schema. The description covers purpose, source, filters, and points to an alternative for structured errors. It does not discuss behavior when no project is running, but for this complexity level, it is nearly 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 has 100% description coverage for both tail and errorsOnly, clearly explaining their meaning. The tool description mentions these filters but does not add information beyond the schema. Thus the description adds no extra parameter value; 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 clearly states the tool retrieves console output (stdout/stderr) from a running Godot project. It specifies the resource and scope, and distinguishes itself from the sibling get_runtime_errors by pointing to that tool for structured errors.
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?
It explicitly directs users to get_runtime_errors for structured errors with stack traces, establishing a clear when-not and alternative. The mention of 'running Godot project' implies the prerequisite context. This is explicit enough for a simple read tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_godot_versionARead-onlyIdempotent
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?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully covering the safety profile. The description adds minimal behavioral context with the word 'installed', implying it reads the local environment rather than a remote source, but it does not specify return format or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no wasted words. Every word contributes to the tool's purpose, and it is immediately understandable.
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 simplicity (no parameters, no output schema, safe annotations), the description fully covers what an agent needs to know. The lack of return format details is acceptable for a trivial version query.
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 takes zero parameters, so the description cannot add parameter-level meaning. The baseline for 0 parameters is 4, and the description is sufficient for a parameterless operation.
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 'Get the installed Godot version' uses a specific verb ('Get') and a clear resource ('installed Godot version'). It fully distinguishes this tool from all sibling tools, none of which retrieve version information.
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 tool's purpose is self-evident: to retrieve the installed Godot version. Since no sibling tool offers this capability, explicit usage guidance is unnecessary. The context is clear, though no exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_insightsARead-onlyIdempotent
Analyze a GDScript file: classify methods, identify signals, map dependencies, and list exports. Takes a scriptPath, not a nodePath. Runs headless (no game needed).
| Name | Required | Description | Default |
|---|---|---|---|
| scriptPath | Yes | Path to the GDScript file (relative to project, e.g., "scripts/player.gd"). | |
| projectPath | Yes | Path to the Godot project directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds value by disclosing that the tool runs headless without requiring a running game, which is a non-obvious behavioral trait. It does not mention edge cases or failure modes, but it goes beyond the annotations.
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 main purpose, and every word earns its place. It efficiently communicates scope, parameter type, and execution mode without any 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?
Given the tool's moderate complexity and absence of an output schema, the description adequately covers the analysis capabilities (methods, signals, dependencies, exports) and the headless execution context. It does not detail the return format, but the listed items provide a clear expectation of what insights are returned.
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 is fully described (100% coverage), providing clear definitions for scriptPath and projectPath. The description adds extra semantic clarity by explicitly warning 'Takes a scriptPath, not a nodePath,' which prevents a common mistake and enriches understanding 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 uses specific verbs and resources: 'Analyze a GDScript file' with concrete actions (classify methods, identify signals, map dependencies, list exports). It also explicitly distinguishes from node-based tools by stating 'Takes a scriptPath, not a nodePath,' which clearly separates it from sibling tools like get_node_properties or get_scene_insights.
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 clear usage context by noting that it operates on a script path, not a node path, and runs headless (no game needed). This helps the agent understand when to use it (static analysis) versus launching a game. However, it does not explicitly name alternative tools or provide when-not-to-use guidance, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_propertiesARead-onlyIdempotent
Read properties from a node in a saved scene file (.tscn) on disk. Returns all non-default properties, or specific ones if listed. For runtime properties, use evaluate_expression.
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the node | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| properties | No | Optional: specific property names to read (default: all) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, and non-destructive behavior, so the description adds value by detailing what it returns (all non-default properties or specific ones if listed) and by specifying it operates on saved scene files. This goes beyond the annotations without contradicting them.
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, consisting of two sentences that lead with the core action. Every sentence contributes useful information without any fluff or repetition.
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 read tool with no output schema, the description adequately explains the return behavior (all or specific properties) and distinguishes from runtime access. It could optionally mention the return format, but given the simplicity and annotations, it is sufficiently 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 covers 100% of parameters, so the baseline is 3. The description adds meaningful context for the 'properties' parameter by explaining the behavior when omitted (all non-default) versus when provided (specific ones), which enhances understanding beyond the schema's brief field descriptions.
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 reads properties from a node in a saved scene file on disk, using the specific verb 'Read' and mentioning the resource type. It also differentiates from sibling tools by explicitly noting that runtime properties should be handled by evaluate_expression.
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 clear context: it reads static properties from .tscn files, not runtime state. It explicitly names an alternative tool (evaluate_expression) for runtime properties, but does not enumerate all other alternatives like set_node_properties for writing, which is implicitly clear from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_performance_metricsARead-onlyIdempotent
Retrieve performance metrics (FPS, draw calls, memory, node count, etc.) from a running project. Optionally filter to specific metrics. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| metrics | No | Optional list of specific metrics to return (e.g., ["fps", "draw_calls", "node_count"]). Default: all metrics. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is known. The description adds the prerequisite of run_interactive and clarifies optional filtering, which adds useful behavioral context beyond the annotations. It does not describe return format, but that is not a major gap for this simple read 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 three short sentences that are all essential: purpose, optional filtering, and prerequisite. It is front-loaded with the main action and contains no filler or 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?
For a single-optional-parameter read tool with good annotations, the description covers the core aspects: what it does, the optional filter, and the prerequisite. It doesn't define return values or error behavior, but given the simplicity of the tool and the annotations, it is sufficiently 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 fully documents the 'metrics' parameter (optional array of strings, default all). The description repeats this with 'Optionally filter to specific metrics,' adding no additional meaning. Since schema description coverage is 100%, 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 retrieves performance metrics (FPS, draw calls, memory, node count) from a running project, with an optional filter. This is a specific verb+resource+scope that distinguishes it from sibling tools like get_debug_output or get_scene_insights.
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 explicitly mentions 'Requires run_interactive,' which is a clear prerequisite and context for when to use this tool. It implies use when the project is running and the user needs performance metrics, but it does not explicitly name alternatives or provide exclusions, hence not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_infoCRead-onlyIdempotent
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?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description does not disclose any additional behavioral traits, such as error handling or what exactly constitutes 'metadata', thus adding no value beyond the annotations.
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 sentence with no superfluous words, extremely concise and 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 lack of an output schema, the description should inform the agent what metadata is included (e.g., project name, version, settings), but it does not. Also, no usage scenarios are provided, making the description incomplete for a tool that may need to be selected among many siblings.
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's single parameter projectPath is fully described ('Path to the Godot project directory'), achieving 100% schema coverage. The description does not add parameter-level detail, but the schema is sufficient, 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 verb 'retrieve' and resource 'metadata about a Godot project' clearly state the tool's function, distinguishing it from siblings like list_projects and get_godot_version. However, it does not enumerate what metadata is returned, leaving some ambiguity about the exact scope.
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 context for when to use this tool, no alternatives, and no exclusions. It is a single declarative statement without any guidance on selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_runtime_errorsARead-onlyIdempotent
Retrieve runtime errors, warnings, and backtraces since the last call. Returns structured entries with error type, source, and stack traces. Requires Godot 4.5+ and run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Whether to clear the error buffer after reading (default: true). Set to false to peek without consuming. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses stateful 'since the last call' behavior and return content (structured entries with error type, source, stack traces). Adds prerequisite of run_interactive. Annotations already cover read-only/destructive hints, and description does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, concise and free of filler. Every sentence adds value.
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 one optional parameter and no output schema, the description covers the return structure and prerequisites well. It doesn't explicitly describe the consuming behavior of the default clear=true, but the schema's parameter description fills that gap.
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 only parameter, 'clear', has full schema description coverage (100%). The description adds no additional parameter detail, but the schema already clearly explains the default behavior and peek option, so 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?
Description uses a specific verb ('Retrieve') and clearly identifies the resource: runtime errors, warnings, and backtraces since the last call. This distinguishes it from sibling get_debug_output by focusing on structured runtime errors with stack traces.
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?
States explicit prerequisites ('Requires Godot 4.5+ and run_interactive'), giving clear context for when the tool can be used. However, it does not explicitly mention alternatives or when not to use it, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_insightsARead-onlyIdempotent
Analyze a scene's architecture: type distribution, signals, sub-scenes, scripts, groups, and tree depth. Runs headless (no game needed).
| Name | Required | Description | Default |
|---|---|---|---|
| scenePath | Yes | Path to the scene file (relative to project, e.g., "scenes/main.tscn"). | |
| projectPath | Yes | Path to the Godot project directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds valuable behavioral context by revealing that the tool runs headless, which is not indicated in annotations, and by describing the scope of the analysis, giving a clear picture of what the tool inspects.
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—two short sentences that front-load the primary action and list the analyzed components, followed by the headless note. Every word earns its place, with no redundancy 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?
Given the absence of an output schema, the description compensates by listing the analysis dimensions (type distribution, signals, sub-scenes, scripts, groups, tree depth), giving a strong hint of the return content. It also notes the headless execution. However, it does not explicitly describe the return format (e.g., a JSON object), which prevents a perfect 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?
Schema description coverage is 100%, with both parameters (projectPath and scenePath) clearly documented in the schema. The description adds no additional parameter-level details 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 ('Analyze') with a clear resource ('a scene's architecture') and enumerates the exact aspects covered (type distribution, signals, sub-scenes, scripts, groups, tree depth). This distinguishes it from sibling tools like get_scene_tree, which likely only returns the raw tree.
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 clear context by noting it 'Runs headless (no game needed)', implying it is for static analysis without launching the game. However, it does not explicitly state when to use this tool over alternatives or mention any exclusions, so the usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scene_treeARead-onlyIdempotent
Read a scene's node tree from a .tscn file on disk as JSON (names, types, properties, hierarchy). No running game required. For architecture analysis, use get_scene_insights.
| Name | Required | Description | Default |
|---|---|---|---|
| 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds meaningful behavior beyond these: it reads from disk (not a running scene), returns data as JSON, and emphasizes no running game is required. This gives the agent a clearer picture of the tool's operational behavior without contradicting the annotations.
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 two sentences, front-loaded with the core function ('Read a scene's node tree...') and then a concise alternative. No filler words or repetition; every sentence earns its place.
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 (read a file and return JSON), and the description covers the essential aspects: what is read, where it comes from (disk), the output format (JSON), and the contents of the JSON (names, types, properties, hierarchy). The alternative use case is addressed, and the schema/annotations handle parameter and safety details, so nothing essential is missing.
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 fully describes both parameters (projectPath and scenePath), achieving 100% schema coverage. The description does not add extra parameter-level detail, but that is unnecessary because the schema already provides clear meaning. The baseline of 3 applies since the description contributes nothing 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 uses the specific verb 'Read' and identifies the resource as 'a scene's node tree from a .tscn file on disk', with a clear list of what is returned (names, types, properties, hierarchy). It also explicitly distinguishes from the sibling tool get_scene_insights by stating the alternative for architecture analysis, 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?
The description explicitly states 'No running game required', establishing a clear context for when to use this tool (file-based inspection without a live project). It also provides a direct when-not instruction by saying 'For architecture analysis, use get_scene_insights', which guides the agent to another sibling tool for a specific alternative use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signal_eventsARead-onlyIdempotent
Retrieve buffered signal events from subscribe_signals. Returns signal name, arguments, and timestamp; clears buffer by default. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| clear | No | Whether to clear the event buffer after reading (default: true). Set to false to peek without consuming. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behavior beyond the annotations: it clears the buffer by default and mentions the return fields. It also notes a dependency on run_interactive. No contradiction with annotations; it adds useful context.
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 concise, with two clear sentences. It is front-loaded with the core action and includes essential return and side-effect information without unnecessary detail.
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 one optional parameter, the description covers purpose, return values, side effect, and a prerequisite. It could mention empty-buffer behavior, but annotations and schema cover safety, making it sufficiently 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 fully documents the 'clear' parameter with its default and effect. The description restates the default behavior but does not add semantic meaning beyond what the schema already provides, 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 identifies the tool's purpose: retrieving buffered signal events. It specifies the source (subscribe_signals) and the return content (signal name, arguments, timestamp), which distinguishes it from siblings like subscribe_signals or wait_for_signal.
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?
It states a prerequisite (requires run_interactive) and implies typical usage after subscribing to signals. However, it does not explicitly mention alternatives or exclusions, such as using wait_for_signal for a single signal instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tile_dataARead-onlyIdempotent
Read existing tile cells from a TileMapLayer node in a scene
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the TileMapLayer node (e.g., "root/TileMapLayer") | |
| 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?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is safe and non-mutating. The description adds scoping context by specifying it reads from a TileMapLayer node in a scene, but it does not go beyond that to describe return format, side effects, or error behavior. It is consistent with annotations, with no contradiction.
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 gets straight to the point with the verb 'Read'. Every word earns its place, and there is no redundant filler or repetition of the tool name.
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, so the description should clarify what the agent can expect in return. It says 'Read existing tile cells' but does not specify the format (e.g., list of cell coordinates, tile IDs). The parameters are well-covered, but the missing return details and lack of any note about prerequisites or failures leave a moderate gap.
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%, with each parameter getting a clear description (projectPath, scenePath, nodePath). The tool description adds no additional parameter-level meaning beyond what the schema already provides, meeting the baseline for well-documented parameters.
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 'Read existing tile cells from a TileMapLayer node in a scene' uses a specific verb ('Read') and clearly identifies the resource (tile cells in a TileMapLayer node). It distinguishes from sibling write tools such as set_cells by emphasizing 'existing' cells and the read 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 implies usage: if an agent needs to read tile data from a TileMapLayer node, this is the tool. However, it provides no explicit when-to-use guidance or mention of alternatives, so it falls under 'implied usage' rather than clear contextual direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_uidARead-onlyIdempotent
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?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds a version constraint (Godot 4.4+) but does not disclose return format or error behavior, which would further aid transparency.
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: 'Get the UID for a specific file in a Godot project (for Godot 4.4+)'. Every word contributes, with no redundant or filler content.
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 read-only getter with full schema coverage and safety annotations, the description is largely sufficient. It clearly indicates what the tool returns (a UID) and the required parameters, though it omits explicit return format details since no output schema is provided.
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 (relative file path and project directory). The description adds no additional parameter-level meaning beyond what the schema already provides, so a baseline score 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 specific action (Get) and resource (UID for a specific file in a Godot project), with a version qualifier (Godot 4.4+). This clearly distinguishes it from siblings like update_project_uids or get_project_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?
The description provides clear context: use when you need the UID for a specific file in a Godot 4.4+ project. It does not explicitly name alternatives or when-not-to-use, but the purpose is well-scoped and not misleading.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_assetA
Download an asset from the Godot Asset Library and extract it into a project. Provide assetId (download URL and sha256 are resolved and verified via the Asset Library) or a direct downloadUrl. The archive's single wrapping folder is stripped by default so addons land under res://addons/. Files are written into the project (existing files at the same path are overwritten) and imported the next time the project is opened or run. Archive entries that would escape the project directory are rejected.
| Name | Required | Description | Default |
|---|---|---|---|
| assetId | No | Asset Library asset id (from search_assets). The download URL and hash are looked up automatically. | |
| libraryUrl | No | Override the Asset Library API base URL used to resolve assetId. | |
| verifyHash | No | Verify the download against the Asset Library's sha256 hash (only when using assetId). Default: true. | |
| downloadUrl | No | Direct URL to a .zip archive, used instead of assetId. No hash verification is performed for arbitrary URLs. | |
| projectPath | Yes | Path to the Godot project directory. | |
| subdirectory | No | Project-relative directory to extract into (e.g. 'addons'). Default: project root. | |
| stripTopLevel | No | Strip the archive's single wrapping folder. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description reveals important behaviors: automatic resolution/verification of assetId, default stripping of a wrapping folder, overwriting of existing files, deferred import, and rejection of path-traversal entries. These are non-obvious and critical for safe usage, adding significant value beyond the structured metadata.
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?
Four well-structured sentences, each carrying distinct value: purpose, source methods, extraction and overwriting, and security check. No filler or redundancy; front-loaded with the core action.
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 7 parameters, no output schema, and moderate annotations, the description covers security, file system effects, import behavior, and both usage paths. It is sufficient for an agent to invoke the tool correctly and anticipate side effects.
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?
Although schema coverage is 100%, the description enriches key parameters: it explains that assetId resolves download URL and sha256, that downloadUrl is a direct .zip link with no hash verification, and that subdirectory/stripTopLevel control extraction. This goes beyond the schema's basic type/description and clarifies trade-offs.
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 begins with a clear verb+resource pair: 'Download an asset from the Godot Asset Library and extract it into a project.' It precisely identifies the action and destination, and distinctly separates this from sibling tools like search_assets (which only searches) or export_project (which exports).
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 explains how to use the tool via assetId or downloadUrl, and implies it is for installing assets/addons. It does not explicitly name alternatives or exclusion criteria, but the context is clear enough that an agent can decide when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
instantiate_sceneA
Add a scene as a child instance of another scene (e.g., spawn a player scene inside a level)
| Name | Required | Description | Default |
|---|---|---|---|
| nodeName | No | Custom name for the instanced node | |
| position | No | Position for the instanced node | |
| scenePath | Yes | Path to the parent scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| childScenePath | Yes | Path to the scene to instantiate (relative to project) | |
| parentNodePath | No | Path to the parent node within the scene (default: root) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, so the description does not need to state this is a write operation. It adds the context that the operation creates a child instance, but does not disclose side effects, reversibility, or prerequisites beyond that. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the core action, and includes a helpful example without extraneous detail. It earns its place efficiently.
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 mutation tool with six parameters and no output schema, the description is minimal. It does not mention prerequisites (e.g., whether the project must be open), return values, or error conditions. While the schema and example cover much, the added context is thin for the complexity involved.
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%, with all parameters documented. The tool description adds little beyond what the schema already provides, such as clarifying the relationship between parent and child scene paths. This matches the baseline for fully covered schemas.
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 a scene as a child instance of another scene,' with a concrete example. It uses a specific verb and resource, and distinguishes itself from sibling tools like create_scene or add_node by focusing on instantiating an existing scene as a child.
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 example ('spawn a player scene inside a level') implies a common use case, but there is no explicit guidance on when to prefer this tool over alternatives or any exclusions. It lacks the 'use X instead' clarity seen in high-scoring tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_editorA
Launch the Godot editor GUI for a project. Does not run the game — use run_project or run_interactive for that.
| 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?
Annotations are all false, offering minimal safety context. The description compensates by clarifying the tool launches the editor GUI rather than the game, adding a meaningful behavioral distinction. It does not disclose whether the call blocks or returns immediately, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences that front-load the primary action and immediately follow with a clarifying exclusion. Every word contributes to understanding 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?
For a simple one-parameter tool with no output schema, the description covers the core purpose, exclusions, and alternatives. It is complete in context and requires no additional explanation to use 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%, with projectPath already described as 'Path to the Godot project directory.' The description adds only the general reference to 'a project' and does not provide additional parameter-specific detail, which is acceptable given full 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?
Uses a specific verb 'launch' with a clear resource: 'the Godot editor GUI for a project.' It explicitly distinguishes itself from run_project and run_interactive by stating it does not run the game, making the purpose unambiguous relative to siblings.
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 when-not-to-use guidance: 'Does not run the game' and names exact alternative tools: 'use run_project or run_interactive for that.' This is a clear directive for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_input_actionsARead-onlyIdempotent
List all input actions defined in a project's project.godot (the InputMap). Useful before using send_input. No running game required.
| 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?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is known. The description adds useful behavioral context that it reads project.godot and works without a running game, which goes beyond the annotation metadata.
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 two sentences with no redundant information. It front-loads the purpose and immediately adds a practical usage tip, making it highly scannable.
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 read-only tool with one parameter, the description covers the action, purpose, and a key operational constraint. It doesn't detail the return format, but the phrase 'list all input actions' adequately implies a list of action names, which is sufficient given the tool's low complexity.
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 a complete description of projectPath (100% coverage), so the baseline is 3. The description's mention of project.godot adds minimal semantic value beyond the schema, which already indicates a Godot project directory.
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 primary function with a specific verb and resource: 'List all input actions defined in a project's project.godot (the InputMap).' It also situates the tool relative to a sibling by mentioning it's useful before using send_input, which differentiates it from other project-management tools.
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 a clear usage context ('Useful before using send_input') and a key constraint ('No running game required'). It doesn't explicitly state when not to use it or name alternative tools, but the guidance is sufficient for the agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsARead-onlyIdempotent
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?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds almost no behavioral context beyond what the name and annotations imply; it does not explain how projects are detected (e.g., presence of project.godot) or any constraints.
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 fully conveys the core functionality without unnecessary words. It is well-structured and 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 low complexity (2 params, one optional), good annotations, and full schema coverage, the description is adequate. It does not explain return values, but for a list tool this is often implicit; the absence of an output schema is mitigated by the straightforward nature of the operation.
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 (directory and recursive) with descriptions, achieving 100% coverage. The description adds no significant semantic value beyond the schema, so a 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 ('List') and the target ('Godot projects') with a specific location ('in a directory'), making it distinct from sibling tools like get_project_info or export_project. It is specific and not a tautology.
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 guidance is implied: to enumerate projects, use this tool. However, it does not explicitly state when to use it versus alternatives (e.g., get_project_info for details) or provide any exclusions. There is no explicit 'when to use' context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_spriteB
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?
Annotations already indicate this is not read-only, not idempotent, and not destructive, but the description adds no further behavioral context. It does not clarify whether the scene file is modified, whether the node must exist, or any side effects of loading a sprite.
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. There is no wasted wording or 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?
Given the tool's simplicity and complete parameter descriptions, the one-sentence description is minimally viable. However, it lacks information about behavioral outcomes (e.g., persistence, prerequisites) and offers no output schema or annotation support, leaving some ambiguity for an agent.
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 has 100% coverage, with each parameter (nodePath, scenePath, projectPath, texturePath) already described meaningfully. The description adds no additional parameter semantics beyond what the schema 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 'Load a sprite into a Sprite2D node' uses a specific verb and clearly identifies the resource (sprite) and target (Sprite2D node). It is distinct from sibling tools like add_node or set_node_properties, as it focuses specifically on loading a texture into an existing Sprite2D node.
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, nor any mention of prerequisites or context. It simply states what it does, leaving the agent to infer when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_autoloadsA
Add, remove, or list autoload singletons in project.godot
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Autoload name (required for add/remove) | |
| action | Yes | Action to perform | |
| scriptPath | No | Path to the script (required for add, 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?
Annotations already indicate the tool is not read-only and not destructive, so the safety profile is partly covered. The description adds that it edits project.godot, but it does not disclose output formats for 'list' or potential side effects of 'add'/'remove' (e.g., whether existing entries are overwritten). This is sufficient but not rich.
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, tightly worded sentence that leads with the action verbs and resource. No wasted words, and it is immediately scannable.
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 is adequate for a simple tool with documented parameters, but it lacks an explanation of the 'list' action's return value or any prerequisites/error conditions. Since there is no output schema, a brief note on what list returns would improve completeness, but overall the description covers the core functionality.
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 parameters are fully described in the schema. The description does not add extra meaning beyond what the schema already provides. The baseline of 3 applies here since the schema does the heavy lifting.
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 specific verbs 'Add, remove, or list' and clearly identifies the resource ('autoload singletons in project.godot'). This distinguishes it from sibling project-management tools by naming the exact configuration element it targets.
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 clearly implies usage: use this tool whenever you need to manage autoload singletons in a Godot project. It does not explicitly state exclusions or name alternative tools, but the context is unambiguous and the action set (add/remove/list) covers the primary use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_gameA
Pause or unpause a running project. MCP receiver stays active for screenshots, state queries, and property changes while paused. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| paused | No | Whether to pause (true) or unpause (false) the game. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations providing only false hints (readOnly, destructive, etc.), the description must disclose behaviors itself. It does reveal a non-obvious trait: the MCP receiver remains active during pause. But it does not mention side effects, reversibility, or what happens to the game state. This is adequate but not comprehensive.
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 primary action and followed by a key behavioral detail and prerequisite. Every sentence earns its place without 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 one optional parameter and no output schema, the description adequately covers purpose, a key behavioral nuance, and a requirement. It could mention what happens after unpausing, but overall it is sufficiently complete for an agent to use it effectively.
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 the single parameter 'paused' with a clear description. The tool description adds no additional parameter details, so baseline 3 is appropriate given 100% 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 uses a specific verb ('Pause or unpause') with a clear resource ('a running project'), making the primary action unmistakable. It also distinguishes from sibling tools like stop_project by implying a non-terminal halt. The added detail about the MCP receiver staying active further clarifies the tool's unique role.
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 contextual guidance by stating 'MCP receiver stays active for screenshots, state queries, and property changes while paused,' which suggests use cases where the project should remain responsive. It also notes 'Requires run_interactive,' setting a prerequisite. However, it does not explicitly name alternative tools or exclusions, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_scriptARead-onlyIdempotent
Read the contents of a GDScript file from a Godot project. Returns the full source code as text.
| Name | Required | Description | Default |
|---|---|---|---|
| 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?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by stating it returns the full source code as text, clarifying the output format beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action (read), the target (GDScript file), the context (Godot project), and the return type (full source code as text). No superfluous words or repetition.
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 read operation, the description is complete: it names the resource, the scope, and the output format. The tool has no output schema, but the description explicitly states what is returned, and the read-only annotations cover side-effect concerns. No additional context is needed.
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%, with both parameters adequately described in the schema. The description adds no further detail about parameter meaning or formatting, so it does not go beyond the baseline for full 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 uses a specific verb ('Read') and resource ('GDScript file from a Godot project'), clearly distinguishing it from sibling tools like write_script, validate_script, and execute_script. It specifies the scope (Godot project) and the output (full source code as text).
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 its usage: read a script file when you need its contents. However, it does not explicitly mention when to use it over alternatives or provide exclusions, so it stops at implied usage rather than clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_groupADestructive
Remove a node from one or more groups in a scene
| Name | Required | Description | Default |
|---|---|---|---|
| groups | Yes | Array of group names to remove the node from | |
| nodePath | Yes | Path to the node (e.g., 'root/Player') | |
| 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?
The description simply restates the destructive action already declared by destructiveHint=true. It does not add context about error behavior (e.g., what happens if the node is not in the group), idempotency, or any side effects. No additional behavioral disclosure beyond the annotations.
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 filler. It immediately states the action and target, making it efficient 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?
The tool is simple and fully covered by the schema (100% parameter documentation). No output schema is needed since the operation returns nothing significant. The description sufficiently communicates the core operation, though it could mention edge cases like non-existent groups, but this is minor given the tool's 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?
Schema coverage is 100%, with all four parameters well-documented in the input schema. The description adds no parameter-specific meaning beyond the schema, which is acceptable given the high schema coverage, meeting the baseline 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 'Remove a node from one or more groups in a scene' uses a specific verb ('Remove') and clearly identifies the resource (a node) and the target (groups). This clearly distinguishes it from sibling tools like add_to_group and remove_node.
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 the use case (removing a node from groups) but does not explicitly state when to use this tool over alternatives like add_to_group or provide any exclusions or prerequisites. It relies on the agent inferring the context from the operation itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_nodeADestructive
Remove a node (and its children) from a scene
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the node to remove (e.g., "root/OldNode") | |
| 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?
The annotations already indicate destructiveHint=true and readOnlyHint=false, so the agent knows this is a destructive write operation. The description adds important context that the operation removes not only the node but also its children, which is behavior beyond the basic annotation.
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 that immediately conveys the core action. It is front-loaded with the verb and resource, with no redundant or filler content. Every word contributes to understanding 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?
For a straightforward deletion tool with three fully documented parameters and clear annotations, the description is sufficient. It conveys the essential behavior (including child deletion) without requiring extensive explanation. It could mention error cases or whether changes persist to disk, but given the schema and annotation support, the description meets the needs for effective selection and 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?
The input schema provides 100% coverage with descriptions for all three parameters (projectPath, scenePath, nodePath). The description does not add any additional parameter-level semantics beyond what the schema already specifies, 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 uses a specific verb 'remove' with a clear resource 'node (and its children)' from a 'scene', making the tool's function unambiguous. It is distinct from sibling tools like add_node, reparent_node, or rename_node, which have different operations.
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 delete a node from a scene) but does not provide explicit guidance on conditions, exclusions, or alternatives. There is no mention of when not to use this tool or how it compares to similar operations like remove_from_group.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_nodeA
Rename a node in a scene file. Updates the node's name while keeping all properties, children, and connections intact.
| Name | Required | Description | Default |
|---|---|---|---|
| newName | Yes | The new name for the node | |
| nodePath | Yes | Path to the node to rename (e.g., "root/OldName") | |
| 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?
The description adds meaningful behavioral context beyond the annotations (which only indicate readOnlyHint=false and destructiveHint=false): it guarantees that properties, children, and connections are preserved. This addresses what is not destroyed and clarifies the non-destructive nature of the rename. It does not contradict any annotation.
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 two short sentences, front-loaded with the action ('Rename') and followed by a concise behavioral guarantee. Every word earns its place, with no redundant or extraneous 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?
For a simple rename operation with four well-documented parameters and no output schema, the description provides sufficient context for an agent to select and invoke the tool correctly. It covers the core purpose and a key behavioral guarantee, though it does not mention edge cases like name collisions or what happens if the node does not exist.
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 each parameter (projectPath, scenePath, nodePath, newName) with clear descriptions. The tool description does not add additional detail about parameter formats, constraints, or relationships beyond what is in 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 uses the specific verb 'Rename' with a clear resource ('a node in a scene file') and explicitly states the scope: 'keeping all properties, children, and connections intact.' This clearly distinguishes it from sibling operations like remove_node or reparent_node, which would alter 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 operation is inherently specific, and the phrase 'keeping all properties, children, and connections intact' implies when it is appropriate (when the goal is purely renaming without structural changes). However, it does not explicitly mention alternatives or exclusions, such as 'use set_node_properties to change other attributes' or 'do not use for reparenting.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reparent_nodeA
Move a node to a different parent within the same scene
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the node to move (e.g., "root/Child") | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| newParentPath | Yes | Path to the new parent node (e.g., "root/NewParent") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add much beyond the basic operation. Annotations already indicate it is not read-only (readOnlyHint=false) and not idempotent, so the mutation nature is known. The phrase 'within the same scene' is a useful constraint, but there is no disclosure of side effects like children moving with the node or impact on references.
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 perfectly conveys the tool's function without unnecessary words. It is front-loaded and earns its place.
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 fully described parameters and no output schema, the description is adequate. It mentions the key constraint of being within the same scene, which is important context. It doesn't explain return values, but that's not required given the simple nature of the operation.
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 has 100% description coverage, with all four parameters well-documented (e.g., nodePath and newParentPath examples). The description adds no additional meaning about parameters, 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 ('Move a node to a different parent') and the scope ('within the same scene'), which distinguishes it from sibling tools like rename_node or remove_node. The verb and resource are specific, making the tool's 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?
The description provides clear context for when to use the tool: when you need to change a node's parent within a scene. It does not explicitly mention alternatives or exclusions, but the purpose is self-evident enough to guide selection among the many node-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_sceneADestructive
Reload the current scene in a running interactive Godot project. Useful for resetting game state during test loops. The project must be running via run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true; the description adds context by explaining the tool 'resets game state' and requires the project to be running via run_interactive. This goes beyond the raw annotation without contradicting it.
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 three concise sentences: the action, the use case, and the prerequisite. Every sentence adds value with no 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?
For a simple tool with no parameters and no output schema, the description fully covers what it does, when to use it, and the necessary precondition. No critical information is missing.
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 baseline is 4. The description correctly does not attempt to describe nonexistent parameters.
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 'reload' with a clear resource ('current scene') and context ('running interactive Godot project'). It clearly distinguishes from scene-editing siblings by focusing on runtime reload.
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 a clear use case ('resetting game state during test loops') and a prerequisite ('must be running via run_interactive'). It does not explicitly name alternatives or when-not conditions beyond the prerequisite, so not a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_and_captureARead-onlyIdempotent
Run the project for a duration, capture a screenshot, then stop. Runs the full game (unlike capture_screenshot) without needing run_interactive (unlike game_screenshot). Requires a display server.
| Name | Required | Description | Default |
|---|---|---|---|
| scene | No | Optional: Specific scene to run | |
| duration | No | How long to run the game in seconds before capturing (default: 3) | |
| outputPath | No | Path where the screenshot PNG will be saved. Defaults to "<projectPath>/screenshots/capture.png". | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint false, so the description need not repeat those. It adds useful context: the tool runs for a specified duration, captures a screenshot, then stops, and requires a display server. This goes beyond the annotations without contradicting them.
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 with no fluff. The first sentence states the core action and stopping behavior; the second differentiates from siblings and adds the display server prerequisite. Every phrase contributes.
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, combined with the rich annotations and 100% schema coverage, is fully complete for this tool's complexity. It covers purpose, runtime behavior, prerequisites, and sibling differentiation. No return schema is needed as the tool is screenshot-focused and the output path is in the parameters.
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%; all parameters already have descriptive comments. The description does not add additional parameter-level meaning beyond what the schema provides (e.g., duration, outputPath, scene). It satisfies the baseline for full schema coverage but offers no extra semantic value.
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 action clearly: 'Run the project for a duration, capture a screenshot, then stop.' It also differentiates from siblings by explicitly contrasting with capture_screenshot ('Runs the full game') and game_screenshot ('without needing run_interactive'). This provides a specific verb, resource, and scope.
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 context for when to use this tool vs alternatives: it explicitly states it runs the full game unlike capture_screenshot, and does not require run_interactive unlike game_screenshot. It also notes the prerequisite of a display server. However, it does not explicitly say 'use this instead of X when Y' or provide exclusions beyond these comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_interactiveA
Run a Godot project with MCP input receiver injected. Enables send_key_sequence (batched inputs + checkpoints), game_state, get_runtime_errors, and screenshots via TCP. Use instead of run_project for interactive testing.
| 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?
The description discloses meaningful behavioral context beyond annotations: it injects an MCP input receiver, enables capabilities like send_key_sequence and game_state, and communicates via TCP. It doesn't detail side effects or cleanup, but it adds valuable transparency for a run 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?
Three sentences, front-loaded with the core action, followed by capabilities and usage guidance. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple two-parameter schema and no output schema, the description provides enough context to select and invoke the tool: it states the purpose, lists enabled features, and gives an alternative. It could mention lifecycle details or prerequisites, but it is largely complete for an AI agent.
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 has 100% description coverage for its parameters (projectPath and scene), so the description isn't required to repeat them. The description adds no parameter-specific meaning, but the schema handles semantics adequately.
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 opens with a specific verb and resource: 'Run a Godot project with MCP input receiver injected.' It clearly states the tool's function and differentiates it from siblings by saying 'Use instead of run_project for interactive testing.'
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?
It explicitly provides usage guidance with 'Use instead of run_project for interactive testing,' naming the alternative and the context in which to choose this tool. This tells the agent when to prefer run_interactive over run_project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_projectA
Run the Godot project non-interactively and capture console output. No input, screenshots, or state queries — use run_interactive for those.
| 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?
Annotations are all false, providing no positive hints. The description adds context by specifying non-interactive behavior and console output capture, and clarifies what it does not do. While it doesn't disclose potential side effects, it's adequate for a run 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?
Two sentences, directly to the point. Every word adds value; no fluff. Front-loaded with the action and resource.
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 the core behavior and output (console output). It distinguishes from run_interactive and mentions non-interactive mode. No output schema, but the description indicates 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?
Schema covers 100% of parameters with descriptions, and the description text doesn't add additional parameter meaning beyond that. Baseline of 3 is appropriate since the schema does the heavy lifting.
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 runs a Godot project non-interactively and captures console output, using a specific verb and resource. It distinguishes from sibling tools like run_interactive by explicitly noting what this tool does not do.
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 'No input, screenshots, or state queries — use run_interactive for those,' providing clear guidance on when to use this tool versus the alternative. This meets the highest standard for usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_testsARead-onlyIdempotent
Run GUT (Godot Unit Testing) tests via headless Godot. Requires GUT installed (addons/gut/). Returns pass/fail summary and console output.
| Name | Required | Description | Default |
|---|---|---|---|
| testDir | No | Test directory (relative to project or res:// path). Default: from .gutconfig.json or res://test. | |
| timeout | No | Maximum time in seconds to wait for tests to complete (default: 120). | |
| logLevel | No | GUT log verbosity: 0 (errors only) to 3 (everything). Default: GUT's default. | |
| configPath | No | Path to .gutconfig.json (relative to project or res:// path). Uses GUT defaults if omitted. | |
| testMethod | No | Specific test method to run (e.g., 'test_health_decreases'). Most useful with testScript. | |
| testScript | No | Specific test script to run (e.g., 'test_player.gd'). Omit to run all tests. | |
| projectPath | Yes | Path to the Godot project directory. | |
| includeSubdirs | No | Search subdirectories for test scripts (default: true). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral context by noting the GUT installation requirement and the return format (pass/fail summary and console output), which is useful beyond the annotations.
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 two sentences, front-loaded with the core purpose and then adding necessary prerequisites and expected output. Every sentence earns its place 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 moderate complexity, the strong schema descriptions, and the annotations, the description provides enough context. It clearly states the output and prerequisite, and the absence of an output schema is compensated by the summary mention. Minor gaps like timeout behavior are covered by parameters.
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 are well-documented. The description does not add parameter-specific details beyond what the schema provides, but it does not need to; baseline 3 is appropriate given the 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 uses a specific verb ('Run') and resource ('GUT tests') with the method ('via headless Godot'), clearly distinguishing it from sibling tools like run_project or run_interactive. It also explains what GUT is, eliminating 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 states the prerequisite (GUT installed) and the headless nature, implying it is meant for unit testing rather than general project running. It does not explicitly name alternatives or exclusions, but the context is clear enough for an agent to choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_sceneA
Save a scene file, optionally to a new path via newPath (creating a copy). Most editing tools save automatically; use this primarily for saving copies.
| 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?
The annotations provide no safety profile (readOnlyHint, destructiveHint false). The description discloses the copy behavior via newPath, but does not explicitly state whether saving without newPath overwrites the existing scene or what happens to the current scene state. This leaves some ambiguity 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?
Two sentences, front-loaded with the main purpose and followed by usage guidance. No redundant filler, every sentence earns its place.
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 straightforward save tool with full schema coverage and no output schema, the description provides purpose, usage, and copy behavior. It is slightly incomplete in not detailing overwrite behavior, but overall adequate for the tool's 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?
Schema covers 100% of parameters with descriptions. The description reiterates newPath's purpose (creating a copy), but does not add new meaning beyond the schema. The copy context is already in the schema, so 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 saves a scene file, with an optional new path to create a copy. It distinguishes itself from sibling editing tools by noting that most editing tools save automatically, so this tool is primarily for saving copies.
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 to use this primarily for saving copies, and that most editing tools save automatically, implying you don't need to save after typical edits. However, it does not name specific alternative tools, so the guidance is clear but not fully enumerating alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_assetsARead-onlyIdempotent
Search the Godot Asset Library for addons and project templates. Returns matching assets with the asset_id you pass to install_asset. Read-only network call to the public Asset Library REST API.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Zero-based result page for pagination. Default: 0. | |
| sort | No | Sort order. Default: updated. | |
| type | No | Asset kind: 'addon' (plugin for an existing project) or 'project' (standalone template). Default: any. | |
| query | No | Free-text search filter (matches the asset title). | |
| support | No | Filter by support/trust level. | |
| category | No | Asset Library category id to filter by. | |
| libraryUrl | No | Override the Asset Library API base URL (default https://godotengine.org/asset-library/api, or the GODOT_ASSET_LIBRARY_URL env var). | |
| maxResults | No | Maximum results to return (1-100). Default: 20. | |
| godotVersion | No | Only return assets compatible with this Godot version, e.g. '4.7'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, openWorld, idempotent, non-destructive), the description discloses that this is a network call to a public REST API, implying latency and external dependency. It also explains the return behavior (matching assets with asset_id for install_asset), adding useful context.
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 two sentences, front-loaded with the primary purpose and followed by a relevant integration note. Every sentence adds value with no redundancy 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?
Given the lack of an output schema, the description partially compensates by hinting at the return value (asset_id for install_asset) and the network call nature. However, it doesn't describe the full return format or pagination behavior, which are important for a search tool with 9 parameters.
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 all 9 parameters already described in detail. The description's mention of the returned asset_id does not add parameter-level semantics beyond what the schema provides, so 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 uses a specific verb ('Search') and resource ('Godot Asset Library'), clearly stating it returns addons and project templates. It also distinguishes its purpose by linking the returned asset_id to install_asset, providing context beyond the tool name.
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 clearly establishes the context for use: searching the public Asset Library and returning IDs for installation via install_asset. It doesn't explicitly exclude any alternative tools, but the reference to install_asset and the read-only network call provide clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_inputA
Send a single Godot InputMap action (e.g., 'move_up', 'jump') to a running interactive project. Returns delivery confirmation only, not the effect — for multi-step testing prefer send_key_sequence with {"action": ...} items, which batches inputs, waits, and state/screenshot checkpoints into one round-trip (no shell sleeps needed). Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | The input action name (e.g., "move_up", "move_left", "restart") | |
| pressed | No | Whether the action is pressed (true) or released (false). Default: true. For simple actions, just send pressed=true — the game handles it as a single press. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: 'Returns delivery confirmation only, not the effect' and 'Requires run_interactive'. It does not contradict annotations (all false), and the return-value caveat is important since there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, then return semantics and the alternative. Every clause earns its place, including the parenthetical 'no shell sleeps needed', which reinforces why send_key_sequence is preferred for multi-step.
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 single-input tool, the description covers purpose, prerequisite, return behavior, and the main alternative. With no output schema and well-covered parameters, nothing critical is missing for an agent to select and 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 description coverage is 100%, so baseline is 3. The description adds 'InputMap action' context and examples for the action parameter, but the pressed parameter behavior is already fully described in the schema. Minimal extra value beyond the structured 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 'Send a single Godot InputMap action... to a running interactive project', giving a specific verb, resource, and target. It distinguishes itself from send_key_sequence by noting the alternative for multi-step testing, and from other input tools by specifying 'InputMap 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 explicitly says 'for multi-step testing prefer send_key_sequence' and describes what that tool offers (batching, waits, checkpoints). It also states the prerequisite 'Requires run_interactive', giving clear context for 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.
send_joypad_buttonA
Send a gamepad button event (A, B, X, Y, shoulders, dpad, start, etc.) to a running project. For input actions, prefer send_input. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| button | Yes | The gamepad button name. Standard buttons: "a", "b", "x", "y", "lb"/"left_shoulder", "rb"/"right_shoulder", "lt"/"left_stick", "rt"/"right_stick", "dpad_up", "dpad_down", "dpad_left", "dpad_right", "start", "back"/"select", "guide". Additional: "misc1", "paddle1"-"paddle4", "touchpad". | |
| device | No | Controller device index (default: 0). Use for multi-controller testing. | |
| pressed | No | Whether the button is pressed (true) or released (false). Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive. The description adds the run_interactive requirement, giving useful behavioral context. It does not detail side effects, timing, or error states, but for a simple event-send tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no fluff. It front-loads the purpose and immediately gives an alternative preference and prerequisite. Every sentence earns its place.
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 send tool with no output schema, the description covers purpose, usage guideline, and prerequisite. It lacks only an explicit mention of return value or status, but this is a minor gap given the tool's 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 input schema covers 100% of parameters with detailed descriptions, including button name categories and defaults for device and pressed. The description adds no additional parameter semantics beyond what the schema provides.
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 it sends a gamepad button event to a running project, listing examples (A, B, X, Y, shoulders, dpad, start). This distinguishes it from siblings like send_joypad_motion (axis), send_key (keyboard), and send_input (input actions).
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?
It provides explicit guidance 'For input actions, prefer send_input' and notes 'Requires run_interactive' as a prerequisite. However, it does not explicitly contrast with send_joypad_motion, though the button vs. axis distinction is implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_joypad_motionA
Send a gamepad analog stick or trigger axis event. Simulates analog input with float precision. For input actions, prefer send_input. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| axis | Yes | The axis name: "left_x", "left_y" (left stick), "right_x", "right_y" (right stick), "trigger_left", "trigger_right" (analog triggers). | |
| value | Yes | Axis value. Sticks: -1.0 to 1.0 (left/up = negative, right/down = positive). Triggers: 0.0 to 1.0. | |
| device | No | Controller device index (default: 0). Use for multi-controller testing. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context by stating it 'simulates analog input with float precision,' implying the event is synthetic. It also mentions the run_interactive dependency. While it doesn't detail side effects on the running game, this goes beyond the minimal annotations (readOnlyHint false, destructiveHint false).
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 concise—two sentences that front-load the main purpose and include the key alternative and prerequisite. Every sentence earns its place with no 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 low-complexity tool with complete schema coverage and minimal annotations, the description provides the essential context: what it does, when to use it (or not), and a critical prerequisite. It could mention return behavior, but the lack of an output schema makes that less critical.
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 detailed descriptions for all parameters. The description adds only the 'float precision' nuance, which is marginal since the schema already specifies value ranges. It doesn't significantly enhance understanding 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: sending a gamepad analog stick or trigger axis event with float precision. It distinguishes itself from sibling tools like send_joypad_button (button events) and send_input (input actions), making its 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?
The description explicitly states 'For input actions, prefer send_input,' providing a clear alternative for a different use case. It also notes the prerequisite 'Requires run_interactive,' giving concrete guidance on when this tool is applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_keyA
Send a single keyboard key event to a running interactive Godot project. Supports any key name recognized by Godot (e.g., "space", "a", "escape", "f1") and modifier keys. For sending multiple keys, prefer send_key_sequence — it processes all keys server-side in one round-trip with optional state/screenshot checkpoints. The project must be running via run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| alt | No | Hold Alt modifier. Default: false. | |
| key | Yes | The key name (e.g., "space", "a", "escape", "enter", "f1", "up", "down"). | |
| ctrl | No | Hold Ctrl modifier. Default: false. | |
| meta | No | Hold Meta/Windows/Command modifier. Default: false. | |
| shift | No | Hold Shift modifier. Default: false. | |
| pressed | No | Whether the key is pressed (true) or released (false). Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond the annotations by explaining that it supports any Godot-recognized key name, including modifiers, and that it sends a single key event. It also communicates the behavioral difference from send_key_sequence (server-side processing in one round-trip). However, it does not mention error handling or side effects, which would elevate transparency further.
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 concise and well-structured: it starts with the core action, then provides an alternative recommendation, and ends with a prerequisite. Each sentence earns its place 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?
For a simple input-sending tool with 100% schema coverage and no output schema, the description is complete. It covers the tool's purpose, usage context, prerequisite, and alternative for multiple keys, sufficiently enabling an agent to decide when and how 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 schema already covers all 6 parameters with 100% description coverage. The description adds value by clarifying the key naming convention ('Supports any key name recognized by Godot') and confirming modifier key support, which goes beyond the generic schema descriptions.
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: 'Send a single keyboard key event to a running interactive Godot project.' It uses a specific verb and resource, and it distinguishes itself from the sibling tool send_key_sequence by noting that for multiple keys, send_key_sequence should be preferred.
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 explicit guidance on when to use this tool versus send_key_sequence, stating 'For sending multiple keys, prefer send_key_sequence.' It also specifies a prerequisite: 'The project must be running via run_interactive.' This clearly defines the applicable context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_key_sequenceA
Primary gameplay testing tool. Sends multiple raw keys and/or InputMap actions in one round-trip with inline checkpoints: {"wait": ms} delays, {"state": true} state snapshots, {"screenshot": "path"} captures, collectSignals for signal events. Replaces send_input/send_key loops with shell sleeps and separate verification calls. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | Array of key names or control objects. Strings are key names (e.g., "a", "enter", "space"). Objects: {"action": "move_up"} sends an InputMap action (press+release; add "hold_ms": 300 to hold it, "strength" for analog), {"hold": "shift"}/{"release": "shift"} hold/release a raw key, {"wait": 500} inserts a delay in ms, {"screenshot": "/path/to/file.png"} captures a screenshot at that point, {"state": true} captures a game state snapshot. Example: [{"action": "jump"}, {"action": "move_right", "hold_ms": 500}, {"state": true}, {"wait": 1000}, {"screenshot": "/tmp/mid.png"}] | |
| delayMs | No | Default delay in milliseconds between each key press (default: 50). Individual waits in the keys array override this. | |
| collectSignals | No | Subscribe to signals during the sequence and return captured events in the response. Each entry specifies a node and its signals to monitor. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, providing no safety or behavioral hints, so the description must carry the disclosure burden. The description adds meaningful context: it's the primary testing tool, it uses inline checkpoints for waits/state/screenshots, and it collects signals. However, it does not explicitly discuss possible side effects (e.g., game state mutation) or error handling, leaving a minor 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 compact, front-loaded with the tool's role, and every sentence adds value. It packs a lot of information (inline checkpoints, replacement of loops, requirement) into two sentences 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?
The schema is rich and the description is comprehensive. The collectSignals parameter in the schema already explains that signal events are returned in the response, so the description doesn't need to repeat that. Combined with the clear purpose and usage guidance, the tool is well-defined for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description enhances the schema by summarizing the purpose of inline checkpoints and how they integrate into a single sequence, which is not apparent from the schema alone. It also gives a concrete example in the keys parameter description, adding practical clarity beyond the raw 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 'Primary gameplay testing tool' and explicitly says it sends multiple raw keys and/or InputMap actions in one round-trip with inline checkpoints. It also distinguishes itself from sibling tools send_input/send_key loops, making the tool's purpose and scope 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?
The description explicitly mentions that this tool replaces send_input/send_key loops with shell sleeps and separate verification calls, clearly indicating when to use it over alternatives. It also specifies a prerequisite ('Requires run_interactive'), giving the agent actionable guidance on when this tool is applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_mouse_clickA
Send a mouse click (press+release) at specific coordinates. For cursor movement, use send_mouse_motion. For dragging, use send_mouse_drag. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate in viewport pixels. | |
| y | Yes | Y coordinate in viewport pixels. | |
| button | No | Mouse button to click. Default: "left". | |
| doubleClick | No | Whether this is a double click. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral detail not present in annotations, namely that the click is a 'press+release', and discloses the run_interactive requirement. However, it does not clarify whether the pointer is moved to the coordinates first or mention potential side effects, which is a minor gap given the annotations provide no safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: the core action, alternatives, and a prerequisite. No filler or redundancy, and key information is front-loaded in the first sentence.
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 complexity (4 params, 2 required, no output schema), the description covers the essential context: what it does, when to use it, and what is required. Parameter details are handled by the schema, so the description is nearly complete. A minor omission is the lack of clarification about pointer movement behavior.
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 only paraphrases 'coordinates' and does not add extra meaning about the button or doubleClick parameters, which are already well-documented in 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 'Send a mouse click (press+release) at specific coordinates', specifying the action, target, and scope. It also distinguishes itself from sibling tools by explicitly naming send_mouse_motion and send_mouse_drag, making its 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?
The description provides explicit guidance: 'For cursor movement, use send_mouse_motion. For dragging, use send_mouse_drag.' It also notes the prerequisite 'Requires run_interactive', giving clear when-to-use and when-not-to-use context with specific alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_mouse_dragA
Send a mouse drag (press, move, release) from one position to another. For simple clicks, use send_mouse_click. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| toX | Yes | Ending X coordinate. | |
| toY | Yes | Ending Y coordinate. | |
| fromX | Yes | Starting X coordinate. | |
| fromY | Yes | Starting Y coordinate. | |
| steps | No | Number of intermediate motion events (default: 10). Higher = smoother drag. | |
| button | No | Mouse button for the drag. Default: "left". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations provide no positive safety hints (readOnlyHint, openWorldHint, idempotentHint, and destructiveHint are all false), so the description carries the burden. It adds behavioral context by breaking down the gesture into 'press, move, release' and noting the 'Requires run_interactive' dependency. However, it does not disclose potential side effects, coordinate system, or whether the operation blocks, leaving behavioral ambiguity.
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 two sentences with no redundancy. It packs the action, a recommended alternative, and a prerequisite into a minimal, front-loaded format. Every element earns its place.
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 full schema coverage and simple operation, the description is sufficient for correct invocation. It names the operation, alternative, and requirement. Lacking coordination or side-effect details, but these are not critical for a mouse drag tool with a complete schema, and no output schema exists to explain.
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?
Input schema coverage is 100%, so parameters are already well-documented. The description's phrase 'from one position to another' reinforces the from/to coordinates but does not add meaning beyond the schema for steps or button. 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's function: 'Send a mouse drag (press, move, release) from one position to another.' It uses a specific verb and resource, and explicitly distinguishes from send_mouse_click, a sibling tool, 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?
The description provides explicit usage guidance by naming an alternative: 'For simple clicks, use send_mouse_click.' It also states a prerequisite, 'Requires run_interactive,' which helps the agent determine 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.
send_mouse_motionA
Move the mouse cursor to specific coordinates without clicking. Use for hover effects, aiming, and cursor tracking. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | X coordinate in viewport pixels. | |
| y | Yes | Y coordinate in viewport pixels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds 'Requires run_interactive' and clarifies no clicking occurs, which is useful context beyond the sparse annotations. However, it doesn't describe return values, failure modes, or whether the movement is instant, leaving a moderate 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 three short sentences, all informative and directly relevant. It is front-loaded with the core action and includes use cases and a prerequisite with no 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?
For a simple two-parameter tool with a clear purpose and use cases, this is nearly complete. It covers prerequisites and intended scenarios. The only minor omission is what occurs if run_interactive is not active, but this is a shared tool 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 x and y both described as 'viewport pixels.' The description adds no additional parameter meaning beyond what the schema already provides, so 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 action: 'Move the mouse cursor to specific coordinates without clicking.' This is a specific verb+resource and distinguishes from clicking tools, which is important given siblings like send_mouse_click and send_mouse_drag.
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 use cases ('hover effects, aiming, and cursor tracking') and a prerequisite ('Requires run_interactive'). It implies exclusions by saying 'without clicking,' but does not explicitly name alternatives like send_mouse_click.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_cellsC
Set tile cells on a TileMapLayer node in a scene
| Name | Required | Description | Default |
|---|---|---|---|
| cells | Yes | Array of cells to set on the TileMapLayer | |
| nodePath | Yes | Path to the TileMapLayer node (e.g., "root/TileMapLayer") | |
| 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?
The description is purely functional and does not disclose behavioral traits such as overwriting behavior, whether it affects the saved scene, or if any conditions must be met. With all annotation hints set to false, the description carries the full burden but provides no additional transparency.
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 irrelevant content. It is concise and front-loaded, making it easy to understand at a glance.
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 moderate complexity (multiple parameters, nested cell definitions, and no output schema), the description is too sparse. It omits critical context such as whether existing cells are replaced, whether the change is saved to disk, or any side effects, 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?
Schema description coverage is 100%, so all parameters are already well documented. The description adds no extra meaning to the parameters, maintaining 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 clearly states the tool sets tile cells on a TileMapLayer node, which is a specific verb and resource. It is distinct from sibling tools like get_tile_data or set_custom_tile_data, though it doesn't explicitly differentiate itself.
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. It doesn't mention prerequisites, typical scenarios, or conditions under which this tool is preferred over related tools like set_custom_tile_data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_collision_layer_maskA
Set collision layer and/or mask on a physics node. Accepts layer numbers (1-32) as array or raw bitmask.
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the physics node | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| projectPath | Yes | Path to the Godot project directory | |
| collisionMask | No | Array of mask numbers [1,2,3] or raw bitmask integer | |
| collisionLayer | No | Array of layer numbers [1,2,3] or raw bitmask integer |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate readOnlyHint=false and destructiveHint=false. The description adds input format details but does not disclose whether existing values are replaced, whether the scene file is saved, or validation behavior (e.g., out-of-range layer numbers). It does not contradict annotations.
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 sentence effectively communicates the tool's purpose, target, and accepted input formats without unnecessary words. It is front-loaded with the core action and resource.
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 is adequate for a focused setter but lacks important behavioral context: what happens when both layer and mask are set, replacement semantics, scene persistence, and prerequisites. With no output schema and minimal annotations, these details would improve completeness.
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?
While the schema covers all parameters, the description adds the valid range 1-32 and clarifies that both array and raw bitmask forms are accepted for collisionLayer and collisionMask. This is not explicitly stated in the schema descriptions, adding practical value.
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 resource 'collision layer and/or mask' on 'physics node', clearly distinguishing from generic node property setters like set_node_properties. It also specifies accepted input formats (layer numbers array or raw bitmask), adding clarity.
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 vs alternatives, nor any prerequisites or conditions. The description simply states the action without context such as 'use this when you need to configure collision layers' or comparing to set_node_properties.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_custom_tile_dataB
Set custom data layer values on specific tile cells in a TileMapLayer
| Name | Required | Description | Default |
|---|---|---|---|
| cells | Yes | Array of cells with custom data to set | |
| nodePath | Yes | Path to the TileMapLayer node | |
| 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?
Annotations already communicate that the operation is a safe mutation (readOnlyHint=false, destructiveHint=false). The description adds minimal behavioral context by specifying 'specific tile cells', implying a scoped change, but does not discuss effects like overwriting existing data, return values, or required preconditions.
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 that immediately communicates the core function. There is no unnecessary wording or ambiguity; every word contributes to understanding 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?
While the description and schema together cover the 'what' of the operation, the tool is a mutation with no output schema and no mention of return behavior or preconditions (e.g., whether the TileMapLayer or custom data layers must exist). This leaves some context gaps for an agent evaluating side effects or follow-up actions.
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 provides 100% coverage with descriptions for every parameter, including the nested structure of 'cells'. The description adds little beyond restating 'specific tile cells', so the schema carries the heavy lifting. 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?
Describes a specific action: setting custom data layer values on tile cells in a TileMapLayer. The verb 'set' and resource 'custom data layer values' clearly indicate the operation, and it is semantically distinguished from sibling 'set_cells', though it does not 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?
Provides no guidance on when to use this tool versus alternatives. The description only states what it does, not the context or conditions under which it should be preferred over similar tools like set_cells or get_tile_data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_node_propertiesA
Set properties on a node in a saved scene file (.tscn) on disk permanently. For live runtime changes, use set_property instead.
| Name | Required | Description | Default |
|---|---|---|---|
| nodePath | Yes | Path to the node (e.g., "root" or "root/Player/Sprite2D") | |
| scenePath | Yes | Path to the scene file (relative to project) | |
| properties | Yes | Properties to set on the node (e.g., {"position": [100, 200], "scale": [2, 2]}) | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behavioral traits: it modifies the scene file on disk and changes are permanent. This goes beyond the sparse annotations (all false hints) and adds context about persistence and file mutation. It does not discuss potential side effects like overwriting existing properties, but the explicit 'permanently' and 'on disk' provide meaningful transparency.
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: two sentences, with the first stating the core purpose and the second giving the alternative. Every word earns its place, and the main information 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?
For a straightforward mutation tool with no output schema, the description covers the essential context: what it does, where it acts (disk), and when not to use it. It lacks details on return values or error handling, but these are not critical for a set operation and the tool is simple enough (4 required params, full schema descriptions) to be considered adequately 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 full descriptions for all four parameters, so baseline is 3. The tool description does not add any additional parameter-level detail beyond what the schema already documents, such as value formats or examples.
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: 'Set properties on a node in a saved scene file (.tscn) on disk permanently.' This specifies the verb (Set), resource (properties on a node in a scene file), and scope (on disk permanently). It also distinguishes from the sibling tool set_property by pointing to the alternative for live runtime changes.
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?
Usage guidance is explicit: 'For live runtime changes, use set_property instead.' This tells the agent exactly when to use this tool vs. the alternative, making the decision process straightforward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_propertyA
Set a property on a live node at runtime. Changes are immediate but NOT saved to disk — use set_node_properties for permanent changes. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | The value to set. Supports numbers, strings, booleans, arrays (for Vector2/Vector3), and dictionaries. | |
| nodePath | Yes | Path to the target node relative to current scene root (e.g., "Player", "UI/HealthBar"). Also accepts absolute paths like "/root/GameManager". | |
| property | Yes | The property name to set (e.g., "score", "position", "health"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds meaningful behavioral context beyond annotations: 'Changes are immediate but NOT saved to disk' discloses the ephemeral nature, and 'Requires run_interactive' identifies a precondition. While annotations indicate non-read-only, the description clarifies the exact scope of the side effect.
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 two sentences long, front-loaded with the primary action, and every word adds value. It avoids redundancy and clearly communicates the core purpose in a compact form.
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 setter tool, the description is complete: it explains the action, the ephemeral behavior, the prerequisite, and the alternative for permanent changes. The schema fully documents parameters, and no output schema is needed for a void operation. The distinction from set_node_properties covers the main contextual gap.
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 provides full descriptions for all three parameters with 100% coverage. The description adds no additional parameter-specific semantics, 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 tool's function: 'Set a property on a live node at runtime.' It uses a specific verb and resource, and distinguishes itself from the sibling tool set_node_properties by emphasizing the runtime-only nature of the change.
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 explicit guidance: mention of 'use set_node_properties for permanent changes' names the alternative tool and clarifies when this tool is appropriate (temporary runtime changes). It also states the prerequisite 'Requires run_interactive,' giving context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_projectADestructive
Stop the currently running Godot project. Does not affect the editor launched via launch_editor.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The destructiveHint annotation already signals this is a mutating operation; the description adds context that it only affects the running project and not the editor, which is a behavioral nuance beyond the annotation's basic safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with the primary action in the first and a clarifying boundary in the second. No wasted words, fully 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?
For a simple zero-parameter tool with no output schema, the description is complete. It specifies what is stopped and what is not affected, providing enough context for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the description needs no parameter details. The baseline for no-parameter tools is 4, and the description stays silent on parameters as expected.
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 'stop' and identifies the resource as the 'currently running Godot project', clearly distinguishing from launch_editor. The clarification about not affecting the editor further differentiates it from sibling tools.
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?
It implicitly states when to use by clarifying that the editor is unaffected, which hints at the alternative of using launch_editor. However, it does not explicitly name alternatives like run_project or pause_game, so it falls short of a full when/when-not list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
subscribe_signalsA
Subscribe to signals on a node for persistent monitoring. Retrieve with get_signal_events. For single-sequence monitoring, prefer send_key_sequence with collectSignals. Requires run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| signals | Yes | Array of signal names to subscribe to (e.g., ["died", "health_changed"]). | |
| nodePath | Yes | Path to the node to subscribe to (e.g., "Player", "/root/EventBus"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, offering minimal safety profile, but the description adds meaningful context: persistent monitoring, retrieval via get_signal_events, and the run_interactive prerequisite. It does not disclose unsubscribe behavior or lifecycle, but the persistent nature is clearly stated.
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?
Three concise sentences, front-loaded with the core purpose. Each sentence adds functional value (purpose, retrieval, alternative/prerequisite), with no 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?
The description covers the main workflow: how to subscribe, how to retrieve events, when to use an alternative, and a prerequisite. However, it doesn't describe any return value or unsubscription process, which could be useful but is not critical given the tool's relative simplicity and schema coverage.
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?
Input schema has descriptions for both params (100% coverage), so the baseline is met. The description adds no additional parameter semantics beyond what the schema provides.
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?
Clearly states 'Subscribe to signals on a node for persistent monitoring,' identifying the specific action and resource. It distinguishes from siblings by contrasting with send_key_sequence and referencing get_signal_events for 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?
Explicitly says 'For single-sequence monitoring, prefer send_key_sequence with collectSignals,' providing an alternative for a different use case. Also states 'Requires run_interactive,' giving a prerequisite. This is strong guidance for when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_project_uidsA
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?
Annotations already indicate the tool is not read-only and not destructive. The description adds that it works by resaving resources, which implies file modification, and restricts usage to Godot 4.4+, but it does not disclose potential side effects like overwritten files or whether the project must be closed.
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 efficiently conveys the action, method, and version constraint. Every word earns its place, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema, the description adequately covers the purpose and method. It could mention error conditions or return behavior, but given the simplicity and existing annotations, it is sufficiently complete for an agent to select and invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, projectPath, has full schema documentation in the input schema. The description does not add any additional meaning beyond what the schema 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 clearly states the action ('update'), the target ('UID references in a Godot project'), and the method ('by resaving resources'). It is specific and distinct from sibling tools like get_uid, and the Godot 4.4+ version constraint adds useful context.
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 when to use this tool—when UID references need to be updated in a Godot 4.4+ project—but it does not explicitly mention alternatives or when not to use it. There is no comparison with related sibling tools such as get_uid.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_sceneARead-onlyIdempotent
Validate a scene for common issues (missing scripts, broken references, orphan nodes)
| Name | Required | Description | Default |
|---|---|---|---|
| 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?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds value beyond annotations by specifying the types of issues checked (missing scripts, broken references, orphan nodes), giving a clearer picture of the tool's 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 that is front-loaded with the action and resource. It includes useful examples without unnecessary verbosity.
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, so the description should explain what the validation result looks like (e.g., a list of issues, pass/fail). It does not mention the return format, leaving a gap for an AI agent to know what to expect from the 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% with both projectPath and scenePath already described. The description does not add any additional meaning or syntax details for the parameters, so it meets the baseline without adding extra value.
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 'scene' and lists concrete example issues (missing scripts, broken references, orphan nodes). This clearly distinguishes it from sibling tools like validate_script or get_scene_insights.
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 checking scene integrity, but it does not explicitly state when to use this tool versus alternatives like validate_script or get_scene_insights. No exclusions or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_scriptARead-onlyIdempotent
Validate a GDScript file for syntax errors using Godot's parser in headless mode. No running game needed.
| Name | Required | Description | Default |
|---|---|---|---|
| scriptPath | Yes | Path to the GDScript file to validate (relative to project, e.g., "scripts/player.gd"). | |
| projectPath | Yes | Path to the Godot project directory. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint, idempotentHint, destructiveHint), and the description adds useful behavioral context: it explicitly states headless mode and that no running game is required. This goes beyond the annotations by explaining operational prerequisites.
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 two short, impactful sentences. The main verb and resource are front-loaded, and the second sentence adds necessary clarification without waste.
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 captures the tool's core purpose and operational mode, which is sufficient for a simple validation tool. However, without an output schema, it does not indicate what the result looks like (e.g., error list vs. success message), a minor gap.
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 fully describes both parameters (scriptPath and projectPath) with clear examples and relative path hints. The description does not add additional parameter semantics, so the baseline of 3 for high schema coverage 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 identifies the tool's action ('Validate a GDScript file'), the specific purpose ('for syntax errors'), and mode ('using Godot's parser in headless mode'). It also distinguishes from siblings like read_script or write_script by specifying validation and the lack of a running game.
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 'No running game needed' provides clear context for when this tool is appropriate (static validation without launching a project). However, it does not explicitly name alternative tools or exclusion cases, so it falls short of full guideline criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_nodeARead-onlyIdempotent
Block until a node appears in the scene tree. Useful for waiting on dynamically spawned nodes (e.g., wait for "Player/Sword" to appear after equip). Returns whether the node was found or the wait timed out. The project must be running via run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Maximum seconds to wait before timing out (default: 5). | |
| nodePath | Yes | Path to the node to wait for (e.g., "Player/Sword", "Enemies/Boss"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses blocking behavior (waits until found or timeout), return semantics (boolean whether found or timed out), and a runtime prerequisite (must be running via run_interactive). This goes well beyond the annotations, which only indicate read-only, idempotent, and non-destructive. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the primary action, and every sentence adds value. It includes a purpose, a motivating use case, a return-value note, and a prerequisite without any fluff or repetition.
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 two-parameter tool with no output schema, the description covers the essential behavior (blocking wait, return value), the prerequisite for use (run_interactive), and a practical use case. The schema and annotations fill in parameter details and safety traits, leaving no significant 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?
The input schema fully describes both parameters (nodePath and timeout) with examples and default values, so the description adds little beyond the schema. The description repeats the example node path format but does not introduce new semantics. With 100% schema coverage, a 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 ('Block until a node appears in the scene tree') with a specific resource (scene tree node). It distinguishes itself from siblings like wait_for_signal by focusing on node appearance, and includes a concrete example ('Player/Sword' after equip). The verb 'block' and target 'node' make the purpose unmistakable.
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 explicitly notes it is 'useful for waiting on dynamically spawned nodes' and gives a typical use case. It also states a prerequisite: 'The project must be running via run_interactive.' However, it does not explicitly mention when not to use it or name alternative tools (e.g., wait_for_signal for signals), though the context strongly implies the intended scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_signalARead-onlyIdempotent
Block until a signal is emitted on a node in the running game. Useful for sequencing test steps (e.g., wait for "animation_finished" or "died"). Returns whether the signal was received or the wait timed out. The project must be running via run_interactive.
| Name | Required | Description | Default |
|---|---|---|---|
| signal | Yes | Name of the signal to wait for (e.g., "died", "animation_finished"). | |
| timeout | No | Maximum seconds to wait before timing out (default: 5). | |
| nodePath | Yes | Path to the node emitting the signal (e.g., "Player", "AnimationPlayer"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent), the description discloses blocking behavior, timeout semantics, return value, and the run_interactive prerequisite. It doesn't cover edge cases like missing node paths or signals already emitted, but the added context is valuable and non-contradictory.
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?
Three sentences, no fluff. The first sentence front-loads the action, the second states a use case, and the third provides return behavior and a prerequisite. Every sentence earns its place.
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 3-parameter tool with no output schema and safe annotations, the description covers purpose, use case, return value, and prerequisite. It lacks edge-case behavior (e.g., missed signals) and doesn't distinguish from wait_for_node, but overall it is sufficiently complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 minimal parameter meaning beyond the schema, though it does provide example signal names ('animation_finished', 'died') that align with schema examples. No additional syntax or format details are provided.
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 ('Block') and resource ('signal emitted on a node'), with a clear scope and examples. It distinguishes itself from siblings like wait_for_node and subscribe_signals by focusing on blocking until a signal fires.
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 clear context ('Useful for sequencing test steps') and a necessary prerequisite ('The project must be running via run_interactive'). However, it does not explicitly contrast with sibling tools like wait_for_node or get_signal_events, so it lacks explicit exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_scriptA
Write or overwrite a GDScript file in a Godot project. Creates parent directories if needed. Use validate_script afterward to check for syntax errors.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | The GDScript source code to write | |
| scriptPath | Yes | Path to the script file (relative to project, e.g., "scripts/player.gd") | |
| projectPath | Yes | Path to the Godot project directory |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description transparently states 'overwrite' and 'Creates parent directories if needed,' but the annotation destructiveHint=false contradicts the overwrite behavior. Overwriting a file is destructive, so this is a serious inconsistency. Per the rule, a description that contradicts annotations scores 1.
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 highly concise: two sentences with no wasted words. It front-loads the core action and adds a practical follow-up hint. Every sentence earns its place.
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 essential behavior (write/overwrite), side effects (directory creation), and a recommended next step (validate). It omits edge cases like error handling or project existence, but for a simple file-writing tool this is reasonably complete. The annotation contradiction slightly reduces completeness but is already penalized in transparency.
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 does not add parameter-specific details beyond noting that parent directories are created (relevant to scriptPath). It does not conflict with the schema but adds minimal semantic value.
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: 'Write or overwrite a GDScript file in a Godot project.' This is a specific verb+resource construction that distinguishes it from siblings like read_script and validate_script. It unambiguously conveys the core action and scope.
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 a clear follow-up instruction: 'Use validate_script afterward to check for syntax errors.' This gives context on recommended usage. However, it does not explicitly mention when not to use this tool or alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct resource+action mappings, and overlapping tools (send_input/send_key/send_key_sequence, set_property/set_node_properties) are clearly differentiated by descriptions that cross-reference the preferred choice. However, the sheer number of similar runtime/input/screenshot tools creates some initial ambiguity.
All tool names follow a consistent snake_case verb_noun pattern (e.g., list_projects, create_scene, remove_node, validate_script). No camelCase or mixed styles, making the API predictable.
75 tools is far beyond the typical well-scoped MCP server. Even for a broad engine like Godot, this feels bloated; many tools are micro-utilities that could be consolidated (e.g., several separate mouse/key/joypad senders).
The surface covers scene editing, project settings, scripts, tilemaps, animation, input simulation, testing, and asset management. Minor gaps include no file-level delete for scenes/resources/scripts and no create-project tool, but for the primary game-dev workflow it's largely complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
An MCP server that integrates with Discord to provide AI-powered features.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
An MCP server that gives your AI access to the source code and docs of all public github repos
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that gives AI assistants direct control over Godot 4 game development projects. It enables launching the editor, running projects, creating and editing scenes, writing GDScript, and inspecting assets through natural language commands.44244MIT
- AlicenseAqualityBmaintenanceAn 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.33212MIT
- AlicenseAqualityDmaintenanceAn enhanced MCP server for interacting with the Godot game engine, enabling AI assistants to launch the editor, run projects, manage scenes and nodes, and handle scripts.16MIT
- AlicenseCqualityAmaintenanceAn MCP server providing AI assistants with 149 tools to fully control the Godot game engine, including runtime code execution, scene manipulation, physics, audio, networking, animation, and more.10089442MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vollkorn-Games/godot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server