utiLITI includes an embedded Model Context Protocol (MCP) server running on port 8088 (default). The server provides Dual API Surfaces for scene composition, level design, and editor automation:
Level B: Raw Scene-Building & Editor Primitives (~60+ Tools): Granular, atomic editor operations for direct scene node/entity manipulation, property editing, raw tile writing, and editor control (inspired by Godot MCP workflows like godot-mcp-go).
Level A: High-Level Semantic Map Mutation API (32 Tools): Intent-oriented, batch-capable, revision-tracked, and 100% stateless map operations optimized for autonomous LLM agents.
Design Choice: Use Level B Raw Primitives for direct, step-by-step entity placement, fine-grained property tweaks (set-entity-property), and Godot-style node tree composition. Use Level A Semantic Tools for bulk map generation, spatial region queries, multimodal visual rendering, and atomic transaction dry-runs.
Protocol Specification: MCP JSON-RPC 2.0 with JSON Schema 2020-12 (SEP-1613)
Live Editor Integration: All mutations run directly inside the active utiLITI editor instance with full Undo/Redo integration and live AWT viewport refresh.
Creates a new map with dimensions, tile size, tilesets, initial layers, and overwrite option. Tilesets must be attached here in GID order before the map can be painted.
Lists Wang terrain sets, terrain names, local tile assignments, and painting guidance for a project tileset.
tileset(string, required).
paint-terrain
Paints a named Wang terrain, resolving neighboring transitions automatically. The referenced tileset must already be attached to the active map.
tileset, set, terrain, layer(strings, required), plus cells, regions, or x, y, width, height.
Tileset attachment rule:create-map is currently the API operation that attaches project tilesets to a map. Include existing project tileset names in its tilesets array (for example, ["tiles-hospital"]) and create at least one tile layer before calling paint-terrain. An existing map with tilesets: [] cannot be terrain-painted until tileset attachment is added through the editor or a future map-attachment API.
Lists all registered scripts in the active project with host types, targets, property metadata, and diagnostic summaries.
host(GAME/ENVIRONMENT/ENTITY), query(string).
get-script
Fetches script metadata and complete source code text.
id(string, required).
create-script
Generates a new script file with 3-tier template code (GameScript, EnvironmentScript, CreatureScript), registers it with the project, and opens it in Monaco.
// 1. Create a Creature Combat Script{"tool":"create-script","arguments":{"name":"SkeletonWarriorAI","host":"ENTITY","targetType":"Creature"}}// 2. Attach Script to an Enemy on the Active Map{"tool":"bind-script","arguments":{"script":"SkeletonWarriorAI","targetType":"entity","targetId":"101","parameters":{"aggroRadius":"120","attackPower":"15"}}}
create_litiengine_script: Architectural guide for authoring scripts conforming to the 3-tier model (GameScript, EnvironmentScript, CreatureScript), fluent combat builders, and @ScriptProperty annotations.
debug_litiengine_script: Diagnostic troubleshooting guide for analyzing and correcting script compiler and runtime errors.
analyze_litiengine_project: Autonomous map analysis and level-design profiling.
plan_litiengine_map: Staged Big -> Medium -> Small level authoring workflow.
utiLITI provides a live, interactive [MCP • 1] status badge rendered directly inside both the main Status Bar and the Script Workspace:
Live Status Dot: Green when the MCP server is listening and ready.
Pulsing Animation: Automatically pulses during active tool executions.
Client Count: Displays the number of connected external LLM agents/tools in real-time.
Interactive Server Popup: Clicking the badge opens the connection details popup with port, endpoint URL, one-click clipboard copy, and the list of active connected clients.