Ask anything about the open scenes, assets, console, tests or profiler in one read-only query — filter, select, sort, count and walk hierarchies. Far fewer calls than reading objects one by one.
query*string
A few MCP tools plus RQL, one query language for scenes, GameObjects, assets, prefabs and the console — and every extension (Animation, Cinemachine, Terrain, Timeline …) teaches it a new area.
21 are MCP tools the agent calls directly. The other 51, marked RQL, are done with one RQL query through rql-query / rql-mutate. Extensions add no tools of their own: each one teaches RQL a new area. Add your own.
The three tools behind everything marked RQL
Ask anything about the open scenes, assets, console, tests or profiler in one read-only query — filter, select, sort, count and walk hierarchies. Far fewer calls than reading objects one by one.
query*stringChange many things in one all-or-nothing, undoable call: set members or call methods (create objects, add components, open scenes …). Changes are saved; dry_run previews them first.
query*stringdry_runboolShow what can be queried — sources, asset functions and the component types in the loaded scenes — or the members and methods of one type.
typestringGameObjects, components, hierarchy, scenes
Search every GameObject in the open scenes by name, tag, layer, component or any field, and read positions, components and the hierarchy in one query.
Covers Find GameObjects · Get scene hierarchy · Read transforms · List components · Filter by tag or layer
objects | where name contains "Enemy" and active | select $ref name transform.positionSet transforms, names, tags, layers, active state or any component field on many objects at once. Everything is checked first, applied together and undoable.
Covers Modify GameObjects · Set position, rotation & scale · Rename objects · Set tag & layer · Activate / deactivate · Bulk edit
objects | where tag == "Enemy" | set active = falseCreate empty or primitive GameObjects, duplicate them, move them under a new parent, or destroy them.
Covers Create GameObject · Create primitive (cube, sphere …) · Duplicate GameObject · Set parent · Destroy GameObject
editor | call CreateGameObject("Crate", unity.find("Props"), "Cube")Add a component by type name, read and edit its fields, or remove it. componentTypes lists every type that can be added.
Covers Add component · Get component · Modify component fields · Remove component · List component types
objects | where name == "Crate" | call AddComponent("Rigidbody")Open (single or additive), create, save, save as, close and switch the active scene.
Covers Open scene · Open scene additively · Create scene · Save scene · Save scene as · Close scene · Set active scene
editor | call OpenScene("Assets/Scenes/Level.unity")Find, organise, materials, shaders, prefabs
Search the project ("t:Material", "t:Prefab Enemy") or load an asset by path, then read or change its fields.
Covers Find assets · Search by type (t:Material, t:Prefab) · Load asset by path · Read asset data · Modify asset fields
unity.assets("t:Material") | select name shader.name properties["_Color"]Copy, move, rename and delete assets, create folders, and save or refresh the AssetDatabase.
Covers Copy asset · Move asset · Rename asset · Delete asset · Create folder · Refresh AssetDatabase
editor | call MoveAsset("Assets/A.mat", "Assets/Mats/A.mat")Create materials, set shader properties such as colours and textures, and list every shader with its error state.
Covers Create material · Set shader properties · Set colour & texture · List shaders · Find shader errors
editor | call CreateMaterial("Assets/Mats/Glow.mat")Place prefabs in the scene, save a GameObject as a prefab, and open, edit, save and close prefabs in prefab mode.
Covers Instantiate prefab · Create prefab from GameObject · Open prefab mode · Edit prefab · Save prefab · Close prefab
objects | where name == "Crate" | call SaveAsPrefab("Assets/Prefabs/Crate.prefab")Write, read and run C# code
Create a C# script or overwrite an existing one; Unity recompiles it.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
filePath*stringcontent*stringRead a .cs file, or just a range of its lines.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
filePath*stringlineFromintlineTointDelete one or more script files and refresh the project.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
files*string[]Compile and run a C# snippet on the spot with Roslyn — a whole class or just a method body — and get the result back. Scene objects can be passed in as parameters.
csharpCode*stringclassNamestringmethodNamestringparametersSerializedMemberListisMethodBodyboolPlay mode, selection, logs, performance
Read and set play and pause state and the Editor selection, and run any menu item.
Covers Enter / exit play mode · Pause · Get selection · Set selection · Run menu item
editor | set isPlaying = trueRead captured Editor log entries — errors, warnings, stack traces — and clear the console.
Covers Read console logs · Get errors & warnings · Read stack traces · Clear console
console | where logType == "Error" | sort sequence desc | first 5 | select messageRead live memory, rendering, script and frame stats; start and stop the profiler, switch modules on or off, and save or load captures.
Covers Memory stats · Rendering stats · Script stats · Frame stats · Start / stop profiler · Enable profiler module · Save / load capture
profiler | select memory frameFind, run and read Unity tests
Run EditMode or PlayMode tests — by assembly, namespace, class or method, or by an RQL query over the tests source — and get the results back, filtered to what matters.
testModeenum<EditMode|PlayMode>testClassstringtestMethodstringquerystringresultstringList test methods by fixture, category or assembly and read the results of the last run. Pass the same query to tests-run to run exactly that selection.
Covers List tests · Filter by fixture, category or assembly · Read test results · Find failed tests
tests | where fixture == "PlayerTests" | select name mode categoriesLet the AI see the game, a view or one object
Render one GameObject on its own from a chosen angle (or a 2×2 composite of four angles), with your own background and lights.
gameObjectRef*GameObjectRefcameraViewenum<Front|Back|Left|Right|Top|Bottom|Composite>backgroundModeenum<SolidColor|Skybox|Transparent>includeChildrenboolresolutionintCapture an image from a camera (the Main Camera by default).
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
cameraRefGameObjectRefwidthintheightintCapture what the Editor’s Game view shows right now.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
Capture the Editor’s Scene view at a given size.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
widthintheightintSearch, add and remove UPM packages
List installed UPM packages, filtered by source or name.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
sourceFilterenum<All|Registry|Embedded|Local|Git|BuiltIn|LocalTarball>nameFilterstringdirectDependenciesOnlyboolSearch the Unity registry and installed packages by id, name or description.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
query*stringmaxResultsintofflineModeboolInstall a package from the registry, a Git URL or a local path.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
packageId*stringUninstall a package from the project.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
packageId*stringSwitch tools on or off, write new skills
List every tool registered in the connected Editor, optionally filtered by a regex, with descriptions and inputs.
regexSearchstringincludeDescriptionboolincludeInputsenum<None|Inputs|InputsWithDescription>Switch tools on or off by name, several at once.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
tools*ToolToggleInput[]includeLogsboolCheck the connection: echoes a message back (or “pong”).
messagestringWrite a new skill in C# — a class of [AiTool] methods — that becomes a new tool once Unity compiles it.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
path*stringcode*stringGenerate skill files for every tool in the project.
Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.
pathstringClips, curves, animator state machines
Extension · AI Animation · openupm add com.ivanmurzak.unity.mcp.animation
Create AnimationClips and edit them: curves and keyframes, animation events, frame rate, wrap mode and loop settings.
Covers Create AnimationClip · Edit curves & keyframes · Add animation events · Set frame rate · Set loop & wrap mode
Needs the AI Animation extension installed.
animation | call CreateClip("Assets/Animations/Walk.anim", 30, true)Create AnimatorControllers and build their state machines: layers, parameters, states, the default state, transitions and their conditions.
Covers Create Animator Controller · Add layers · Add parameters · Add states · Set default state · Add transitions & conditions
Needs the AI Animation extension installed.
unity.asset("Assets/Animations/Player.controller") | call AddTransition("Idle", "Walk", "Speed", "Greater", 0.1)Find every Animator in the open scenes, assign controllers and avatars, and in Play Mode set parameters or jump to a state.
Covers Find Animators · Assign controller · Assign avatar · Set Animator parameters · Jump to state
Needs the AI Animation extension installed.
animation | get animators | set runtimeAnimatorController = unity.asset("Assets/Animations/Player.controller")All 24 ParticleSystem modules · playback
Extension · AI Particle System · openupm add com.ivanmurzak.unity.mcp.particlesystem
Read and change any of the 24 ParticleSystem modules — main, emission, shape, colour and size over lifetime, noise, collision, trails, renderer and more.
Covers Get ParticleSystem · Modify ParticleSystem · Main module · Emission · Shape · Colour & size over lifetime · Noise, collision, trails · Renderer
Needs the AI Particle System extension installed.
objects | get components | where $ is ParticleSystem | set main.startLifetime = 3, emission.rateOverTime = [5, 25], main.startColor = "#ff8800"Play, pause, stop or clear a particle system, or simulate it for a number of seconds.
Covers Play particles · Pause · Stop · Clear · Simulate
Needs the AI Particle System extension installed.
objects | get components | where $ is ParticleSystem | call Simulate(2)Model and edit meshes in the editor
Extension · AI ProBuilder · openupm add com.ivanmurzak.unity.mcp.probuilder
Create editable shapes (cube, cylinder …) and extruded polygon shapes, or merge several meshes into one.
Covers Create ProBuilder shape · Create poly shape · Merge meshes
Needs the AI ProBuilder extension installed.
probuilder | call CreateShape("Cube", "Crate", "(2, 1, 2)", "(0, 0.5, 0)")Read face, vertex and edge counts, bounds and materials, list faces with their direction, and pick faces by direction (up, down, left …).
Covers Get mesh info · Face, vertex & edge count · Mesh bounds · Select faces by direction
Needs the AI ProBuilder extension installed.
probuilder | get meshes | where gameObject.name == "Crate" | select faceCount vertexCount edgeCount bounds materialsExtrude faces; bevel, bridge, connect and subdivide edges; delete faces, flip normals and move the pivot. Every edit is validated and undoable.
Covers Extrude faces · Bevel edges · Bridge edges · Connect edges · Subdivide edges · Delete faces · Flip normals · Set pivot
Needs the AI ProBuilder extension installed.
probuilder | get meshes | where gameObject.name == "Crate" | call Extrude(probuilder.facing($, "Up"), 0.5)Assign a material to chosen faces of a ProBuilder mesh.
Covers Set face material
Needs the AI ProBuilder extension installed.
probuilder | get meshes | where gameObject.name == "Crate" | call SetFaceMaterial(probuilder.facing($, "Up"), "Assets/Materials/Grass.mat")Virtual cameras · targets · lens · blends
Extension · AI Cinemachine · openupm add com.ivanmurzak.unity.mcp.cinemachine
Create CinemachineCameras with Follow and Look At targets, position, rotation and priority, and make sure the main camera has a CinemachineBrain.
Covers Create Cinemachine camera · Set Follow & Look At · Set priority · Ensure CinemachineBrain
Needs the AI Cinemachine extension installed.
cinemachine | call CreateCamera("FollowCam", "Player", null, "(0, 3, -6)", "(20, 0, 0)", 10)List cameras and see which one is live; change Follow and Look At targets, priority, field of view, clip planes and dutch angle.
Covers List cameras · Find live camera · Set targets · Set priority · Set lens / field of view · Clip planes & dutch
Needs the AI Cinemachine extension installed.
cinemachine | get cameras | where name == "FollowCam" | set Priority.Value = 20, Lens.FieldOfView = 50Choose body and aim behaviours (Follow, RotationComposer …), add noise for camera shake, and add extensions such as the Deoccluder.
Covers Set body · Set aim · Camera shake (noise) · Add extension (Deoccluder …)
Needs the AI Cinemachine extension installed.
cinemachine | get cameras | where name == "FollowCam" | call SetNoise("Handheld_normal_mild", 1.5, 1)Set the default blend style and time between cameras on the CinemachineBrain.
Covers Set default blend · Blend style & time
Needs the AI Cinemachine extension installed.
cinemachine | get brains | set DefaultBlend.Style = "EaseInOut", DefaultBlend.Time = 1.5Containers · knots · tangents · evaluate
Extension · AI Splines · openupm add com.ivanmurzak.unity.mcp.splines
Create SplineContainers (open or closed) and add or remove splines inside them.
Covers Create SplineContainer · Add spline · Remove spline · Closed loop
Needs the AI Splines extension installed.
splines | call CreateContainer("Road", "(0, 0, 5)", "(0, 90, 0)", true)Add, insert, move and remove knots, change tangent modes, and open or close a spline.
Covers Add knot · Insert knot · Move knot · Remove knot · Set tangent mode · Open / close spline
Needs the AI Splines extension installed.
splines | get containers | where gameObject.name == "Road" | call AddKnot("(1, 0, 2)")Get the position at any point along a spline (0 to 1) — handy for placing objects along a path.
Covers Evaluate spline · Point along path · Place objects along a path
Needs the AI Splines extension installed.
splines | get containers | where gameObject.name == "Road" | call Evaluate(0.5)Sculpt · paint · scatter trees
Extension · AI Terrain · openupm add com.ivanmurzak.unity.mcp.terrain
Create a Terrain with its TerrainData asset, set its size and heightmap resolution, and stitch neighbouring tiles together.
Covers Create terrain · Set terrain size · Set heightmap resolution · Stitch neighbours
Needs the AI Terrain extension installed.
terrain | call Create("Island", "Assets/Terrain/Island.asset", 257, "(500, 120, 500)")Raise or flatten regions, write a whole height grid, and sample heights or height statistics anywhere.
Covers Sculpt terrain · Set heights · Flatten · Sample heights · Height statistics
Needs the AI Terrain extension installed.
objects | get components | where $ is Terrain | call SetHeights(0.6, 100, 100, 32, 32)Create TerrainLayer assets, add or remove layers, and paint them onto areas of the terrain.
Covers Create TerrainLayer · Add / remove layer · Paint texture
Needs the AI Terrain extension installed.
objects | get components | where $ is Terrain | call PaintLayer(1, 1.0, 0, 0, 64, 64)Add tree and detail prototypes, scatter trees randomly or at exact points, and clear them.
Covers Tree prototypes · Detail prototypes (grass) · Place trees · Scatter trees · Clear trees
Needs the AI Terrain extension installed.
objects | get components | where $ is Terrain | call PlaceTrees(0, 200, 0.1, 0.1, 0.5, 0.5)Action maps · bindings · schemes
Extension · AI InputSystem · openupm add com.ivanmurzak.unity.mcp.inputsystem
Create .inputactions assets and read their maps, actions, bindings and control schemes. Every change is validated, written to the file and undoable.
Covers Create Input Actions asset · Read action maps · Read bindings · Read control schemes
Needs the AI InputSystem extension installed.
input | call CreateAsset("Assets/Input/Player.inputactions", "Player")Add, rename and remove action maps and actions, and set action type, expected control, interactions and processors.
Covers Add action map · Rename / remove action map · Add action · Set action type · Interactions & processors
Needs the AI InputSystem extension installed.
unity.asset("Assets/Input/Player.inputactions") | get maps | where name == "Player" | call AddAction("Move", "Value", "Vector2")Bind actions to keys, buttons and sticks, build composites such as WASD, and change or remove bindings.
Covers Add binding · WASD composite · Gamepad stick binding · Change binding · Remove binding
Needs the AI InputSystem extension installed.
unity.asset("Assets/Input/Player.inputactions") | get actions | where name == "Jump" | call AddBinding("<Keyboard>/space", "Keyboard&Mouse")Add control schemes such as Gamepad or Keyboard&Mouse and set the devices they require.
Covers Add control scheme · Gamepad scheme · Keyboard & mouse scheme · Required devices
Needs the AI InputSystem extension installed.
unity.asset("Assets/Input/Player.inputactions") | call AddControlScheme("Gamepad", ["<Gamepad>"])2D grids · paint · tile assets
Extension · AI Tilemap · openupm add com.ivanmurzak.unity.mcp.tilemap
Create a Grid with a Tilemap and set its orientation, anchor and other settings.
Covers Create Grid + Tilemap · Set orientation · Set anchor
Needs the AI Tilemap extension installed.
tilemap | call CreateTilemap("Ground")Set single tiles or lists of cells, box-fill or flood-fill areas, and clear a box or the whole map.
Covers Set tile · Paint cells · Box fill · Flood fill · Clear tiles
Needs the AI Tilemap extension installed.
objects | get components | where $ is Tilemap | call BoxFill("Assets/Tiles/Grass.asset", -5, -3, 5, 3)Look up the tile in a cell, list used tiles and painted cells, count tiles, and convert between world and cell positions.
Covers Get tile · List used tiles · Count tiles · World ↔ cell position
Needs the AI Tilemap extension installed.
objects | get components | where $ is Tilemap | select $ref gameObject.name tileCount usedTiles cellBounds orientationTint, rotate or flip individual cells and set each cell’s collider type.
Covers Tile colour · Rotate / flip tile · Tile collider type
Needs the AI Tilemap extension installed.
objects | get components | where $ is Tilemap | call SetColor("(0, 0, 0)", "#FF8080")Create Tile assets from sprites and RuleTiles, then add rules to them.
Covers Create Tile asset · Create RuleTile · Add tile rules
Needs the AI Tilemap extension installed.
tilemap | call CreateTile("Assets/Tiles/Grass.asset", "Assets/Art/grass.png")NavMesh · bake · agents · links
Extension · AI Navigation · openupm add com.ivanmurzak.unity.mcp.navigation
Add NavMeshSurfaces, agents, links, modifiers and modifier volumes, and edit them using agent-type and area names instead of ids.
Covers Add NavMeshSurface · Add NavMeshAgent · Add NavMeshLink · Add NavMeshModifier · Add NavMeshModifierVolume
Needs the AI Navigation extension installed.
objects | where name == "Ground" | call AddComponent("NavMeshSurface")Bake or clear one surface, or every surface at once.
Covers Bake NavMesh · Bake all surfaces · Clear NavMesh
Needs the AI Navigation extension installed.
navigation | call BakeAll()Change agent radius, height and slope per agent type and voxel size per surface, and read the areas with their costs.
Covers Agent radius & height · Max slope · Voxel size · Navigation areas & costs
Needs the AI Navigation extension installed.
navigation | get agentTypes | where name == "Humanoid" | set agentRadius = 0.4, agentSlope = 40In Play Mode, send NavMeshAgents to a destination, warp them, or reset their path.
Covers Set agent destination · Warp agent · Reset path
Needs the AI Navigation extension installed.
objects | get components | where $ is NavMeshAgent | call SetDestination("(10, 0, 5)")Cutscenes · tracks · clips · binding
Extension · AI Timeline · openupm add com.ivanmurzak.unity.mcp.timeline
Create TimelineAssets and signal assets, and list every timeline in the project with its tracks and duration.
Covers Create TimelineAsset · Create signal asset · List timelines
Needs the AI Timeline extension installed.
timeline | call Create("Assets/Cutscenes/Intro.playable", 30)Add Animation, Activation, Audio, Signal, Control or group tracks; list, mute, lock or delete them.
Covers Add animation track · Add activation / audio / signal / control track · Group tracks · Mute / lock track · Remove track
Needs the AI Timeline extension installed.
unity.asset("Assets/Cutscenes/Intro.playable") | call AddTrack("Animation", "Hero")Add clips to tracks and set start, duration, clip-in, speed, blends and eases — or move them in time.
Covers Add clip · Move clip · Set clip timing · Clip speed · Blends & eases
Needs the AI Timeline extension installed.
unity.asset("Assets/Cutscenes/Intro.playable") | get tracks | where name == "Hero" | call AddClip(unity.asset("Assets/Anim/Walk.anim"), 2, 3, "Walk")Place markers and signal emitters on a track or on the timeline’s marker track.
Covers Add marker · Add signal emitter
Needs the AI Timeline extension installed.
unity.asset("Assets/Cutscenes/Intro.playable") | call AddMarker(3.5)Point a PlayableDirector at a timeline and bind each track to the scene object it animates.
Covers Bind PlayableDirector · Bind track to object
Needs the AI Timeline extension installed.
objects | get components | where $ is PlayableDirector | set playableAsset = unity.asset("Assets/Cutscenes/Intro.playable")