Skip to content

Bridge & Addon

Free All tools on this page are free, no license required.

The GodotIQ addon (~500 lines of pure GDScript) registers an EngineDebugger peer inside Godot. When the editor starts, the addon opens a WebSocket server on port 6007 (configurable in .godotiq.json). GodotIQ’s Python MCP server connects to this port, enabling real-time two-way communication.

This architecture means your AI can:

  • Read live game state (scene tree, node properties, UI elements)
  • Control the game (run, stop, simulate input)
  • Edit scenes (create, move, delete nodes with full undo support)
  • Capture screenshots of the editor and game viewports

Batch scene editing with full Ctrl+Z undo. Move, rotate, scale, set properties, add children, delete, duplicate, reparent, rename, and get_property, all in a single undoable action. All ops in one call = one undo action.

ParameterTypeDefaultDescription
operationsarrayrequiredList of operations: {op: "move"|"rotate"|"scale"|"set_property"|"add_child"|"delete"|"duplicate"|"reparent", ...}
scene_dataobjectnullOptional scene context for validation
Tool call
{
"tool": "godotiq_node_ops",
"args": {
"operations": [
{"op": "move", "node": "Shelf", "position": [2, 0, 3]},
{"op": "set_property", "node": "Shelf", "property": "visible", "value": true}
]
}
}

Create multiple nodes in a scene using high-level patterns. One call = many nodes with Ctrl+Z undo. Modes: grid, line, scatter, explicit list.

ParameterTypeDefaultDescription
gridobjectnullGrid pattern: {rows, cols, spacing, scene}
lineobjectnullLine pattern: {points, spacing, scene}
scatterobjectnullScatter: {items: [{scene, position}, ...]}
nodesarraynullExplicit node list: [{type, name, position}, ...]
parentstring""Parent node path
target_scenestring""Target .tscn for context
Tool call
{
"tool": "godotiq_build_scene",
"args": {
"grid": {"rows": 3, "cols": 4, "spacing": 2.0, "scene": "res://objects/shelf.tscn"},
"parent": "/root/Main/Shelves"
}
}

Persist editor changes to disk. Call after godotiq_node_ops or any scene modifications.

None. Saves the currently open scene.


Read, write, or patch GDScript files with convention validation. Patch mode (find-and-replace) is safest.

ParameterTypeDefaultDescription
opstring"read"Operation: "read", "write", "patch", "create"
pathstringrequiredFile path (res:// or relative)
contentstring""File content (for write/create)
patchesarraynullList of {search, replace} dicts (for patch)
validate_before_writebooltrueRun GDScript validation before writing
dry_runboolfalseValidate without writing

Visual verification of the game or editor viewport. Use scale=0.25, quality=0.3 for token-efficient checks.

ParameterTypeDefaultDescription
viewportstring"game"Which viewport: "editor", "game", "both"
scalefloat0.25Image scale factor
formatstring"webp"Image format
qualityfloat0.5Compression quality
camera_positionarraynullCamera position (editor only)
camera_targetarraynullCamera target (editor only)
Tool call
{
"tool": "godotiq_screenshot",
"args": { "viewport": "game", "scale": 0.25 }
}

The tool returns a base64-encoded image that your AI client renders inline.


Editor 3D camera control: get current position, reposition, or focus on a node. Editor-side, no game needed.

ParameterTypeDefaultDescription
actionstringrequired"get_position", "look_at", or "focus_node"
positionarraynullCamera position (for look_at)
targetarraynullTarget point (for look_at)
nodestringnullNode name to focus on (for focus_node)
Tool call
{
"tool": "godotiq_camera",
"args": { "action": "focus_node", "node": "Player" }
}

Start or stop the Godot game. Must call play before using any game-side tools.

ParameterTypeDefaultDescription
actionstring"play""play" or "stop"
scenestring"main"Scene to run: "main", "current", or res:// path
timeoutfloatautoTimeout in seconds (auto-detected)
Start
{
"tool": "godotiq_run",
"args": { "action": "play", "scene": "res://scenes/levels/test.tscn" }
}
Stop
{
"tool": "godotiq_run",
"args": { "action": "stop" }
}

Query runtime property values. Cheaper than screenshots for checking state. Supports autoload lookup, node paths, nested properties, method calls.

ParameterTypeDefaultDescription
queriesarrayrequiredList of {node: "path", properties: ["prop1", "prop2"]} or {autoload: "Name", properties: [...]}
detailstring"normal""brief" (values only), "normal", "full"
Tool call
{
"tool": "godotiq_state_inspect",
"args": {
"queries": [
{"autoload": "EconomyManager", "properties": ["balance", "daily_revenue"]},
{"node": "/root/Main/Player", "properties": ["position", "health"]}
]
}
}

Persistent property monitoring. Start watching, then read accumulated changes over time.

ParameterTypeDefaultDescription
actionstring"read""start", "stop", "read", or "clear"
watchesarraynullFor start: [{node: "path", properties: ["prop"]}]
sample_interval_msint500Sampling interval (min 50)
detailstring"normal"Output verbosity
Start watching
{
"tool": "godotiq_watch",
"args": {
"action": "start",
"watches": [{"node": "/root/Main/Player", "properties": ["position"]}],
"sample_interval_ms": 500
}
}

Verify a node property changes over time (proves movement/animation). Takes two snapshots separated by a sleep and compares values.

ParameterTypeDefaultDescription
nodestringrequiredNode path or name
property_namestring"position"Property to monitor
durationfloat2.0Seconds between snapshots
Tool call
{
"tool": "godotiq_verify_motion",
"args": { "node": "Player", "property_name": "position", "duration": 2.0 }
}

FPS, draw calls, memory, node count from the running game.

ParameterTypeDefaultDescription
detailstring"normal""brief" (fps + draw_calls only), "normal", "full"
Tool call
{
"tool": "godotiq_perf_snapshot",
"args": { "detail": "normal" }
}

Call FIRST alongside godotiq_project_summary. Returns editor state: open scenes, selected nodes, is game running, project path.

None. Returns editor state. Falls back to filesystem info if addon is disconnected.


Live editor scene tree showing actual state with transforms, scripts, groups, and visibility. Unlike scene_map (reads .tscn from disk), this reads the editor’s live state.

ParameterTypeDefaultDescription
rootstring""Root node path
depthint3Maximum depth (1-10)
filter_typestring""Filter to specific node type
includearraynullNode types or groups to include
detailstring"normal"Output verbosity
Tool call
{
"tool": "godotiq_scene_tree",
"args": { "root": "/root/Main", "depth": 3 }
}

Review what was changed. Shows undo/redo state and recent GodotIQ action history.

None. Returns can_undo, can_redo, current_action, and GodotIQ action list.


Check GDScript files for compilation/parse errors.

ParameterTypeDefaultDescription
scopestring"scene""scene" (current scene + autoloads), "project" (all .gd), or "res://path/to/script.gd"
Tool call
{
"tool": "godotiq_check_errors",
"args": { "scope": "scene" }
}

Execute GDScript code. Last resort; prefer dedicated tools. Code MUST contain ‘func run():’.

ParameterTypeDefaultDescription
codestringrequiredGDScript code containing func run():. Return value is stringified.
contextstring"game""game" (sandbox) or "editor" (full editor access)
timeout_msint5000Max execution time in milliseconds

Filesystem operations: list, read, write, move, delete, search, tree, uid_to_path, path_to_uid, rename with reference updates. Respects protected files from .godotiq.json.

ParameterTypeDefaultDescription
opstring"list"Operation: "list", "read", "write", "move", "delete", "search", "tree", "rename"
pathstring""File or directory path
querystring""Search query (for search op)
filterstring"all"Type filter: "all", "scenes", "scripts", "images", "audio", "fonts", "models", "shaders", "resources"
recursiveboolfalseRecursive listing
contentstring""Content for write op
destinationstring""Destination for move/rename ops

Simulate player input in the running game: actions, keys, UI taps, waits. Supports signal verification and side-effect tracking.

ParameterTypeDefaultDescription
commandsarrayrequiredSequential commands: action {actions, hold_ms}, wait {wait_ms}, key {key, hold_ms}, UI tap {tap: "NodeName"}
track_side_effectsboolfalseMonitor autoload state changes
continue_on_errorboolfalseContinue on errors
Tool call
{
"tool": "godotiq_input",
"args": {
"commands": [
{"actions": ["move_left"], "hold_ms": 500},
{"wait_ms": 200},
{"actions": ["jump"]}
]
}
}

Map all UI elements on screen: positions, text, interactivity, visibility. Call BEFORE godotiq_input to know what’s on screen. See also the dedicated UI Mapping page.

ParameterTypeDefaultDescription
rootstring""Root node (empty = entire UI tree)
include_invisibleboolfalseInclude hidden elements
max_depthint10Maximum tree traversal depth
detailstring"normal"Output verbosity

Live pathfinding via NavigationServer3D. “Can A reach B?” Returns path, distance, reachability, navmesh status.

ParameterTypeDefaultDescription
from_nodestringnullSource node name
to_nodestringnullTarget node name
from_positionarraynullSource coordinates [x, y, z]
to_positionarraynullTarget coordinates [x, y, z]
optimizebooltrueOptimize the path
detailstring"normal""brief" (reachable + distance only), "normal", "full"
Tool call
{
"tool": "godotiq_nav_query",
"args": { "from_node": "Player", "to_node": "Exit" }
}

  • Spatial tools: godotiq_placement pairs with godotiq_screenshot for visual verification
  • UI mapping: Dedicated page for godotiq_ui_map with detailed workflows
  • Installation: Full setup guide including addon installation
  • Guides: Workflows: Common bridge tool workflow patterns