Docs · Tools · Unity

72 capabilities
for Unity, ready for your AI agent.

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.

72
Type
Action
Area

Query & edit (RQL)

The three tools behind everything marked RQL

3

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.

rql-queryQuery & edit (RQL)
  • query*string
“Which enemies in the scene are inactive, and where are they?”

Change 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.

rql-mutateQuery & edit (RQL)
  • query*string
  • dry_runbool
“Turn off every object tagged Enemy and double the intensity of all lights.”

Show what can be queried — sources, asset functions and the component types in the loaded scenes — or the members and methods of one type.

rql-schemaQuery & edit (RQL)
  • typestring
“What can you change on the Light component?”

Scenes & objects

GameObjects, components, hierarchy, scenes

5

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

Via rql-query / rql-mutate · What is RQL?Scenes & objects
objects | where name contains "Enemy" and active | select $ref name transform.position
“List every active enemy in the scene with its position.”

Set 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

Via rql-query / rql-mutate · What is RQL?Scenes & objects
objects | where tag == "Enemy" | set active = false
“Hide every enemy and move the Player to (0, 1, 0).”

Create 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

Via rql-query / rql-mutate · What is RQL?Scenes & objects
editor | call CreateGameObject("Crate", unity.find("Props"), "Cube")
“Create five crates under the Props group, 2 units apart.”

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

Via rql-query / rql-mutate · What is RQL?Scenes & objects
objects | where name == "Crate" | call AddComponent("Rigidbody")
“Add a Rigidbody with mass 5 to every crate.”

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

Via rql-query / rql-mutate · What is RQL?Scenes & objects
editor | call OpenScene("Assets/Scenes/Level.unity")
“Open the Level scene and make it the active one.”

Assets & prefabs

Find, organise, materials, shaders, prefabs

4

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

Via rql-query / rql-mutate · What is RQL?Assets & prefabs
unity.assets("t:Material") | select name shader.name properties["_Color"]
“Which materials use the Standard shader?”

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

Via rql-query / rql-mutate · What is RQL?Assets & prefabs
editor | call MoveAsset("Assets/A.mat", "Assets/Mats/A.mat")
“Move every material into Assets/Materials.”

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

Via rql-query / rql-mutate · What is RQL?Assets & prefabs
editor | call CreateMaterial("Assets/Mats/Glow.mat")
“Create a red glowing material and put it on the Lamp.”

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

Via rql-query / rql-mutate · What is RQL?Assets & prefabs
objects | where name == "Crate" | call SaveAsPrefab("Assets/Prefabs/Crate.prefab")
“Turn the Crate into a prefab and place three copies along the road.”

Scripts & C#

Write, read and run C# code

4

Create a C# script or overwrite an existing one; Unity recompiles it.

script-update-or-createScripts & C#

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • filePath*string
  • content*string
“Write a PlayerController script with WASD movement.”

Read a .cs file, or just a range of its lines.

script-readScripts & C#

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • filePath*string
  • lineFromint
  • lineToint
“Show me the Update method of PlayerController.cs.”

Delete one or more script files and refresh the project.

script-deleteScripts & C#

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • files*string[]
“Delete the old OldEnemyAI.cs script.”

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.

script-executeScripts & C#
  • csharpCode*string
  • classNamestring
  • methodNamestring
  • parametersSerializedMemberList
  • isMethodBodybool
“Run some C# that counts the triangles of every mesh in the scene.”

Editor, console & profiler

Play mode, selection, logs, performance

3

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

Via rql-query / rql-mutate · What is RQL?Editor, console & profiler
editor | set isPlaying = true
“Enter play mode and tell me what is selected.”

Read captured Editor log entries — errors, warnings, stack traces — and clear the console.

Covers Read console logs · Get errors & warnings · Read stack traces · Clear console

Via rql-query / rql-mutate · What is RQL?Editor, console & profiler
console | where logType == "Error" | sort sequence desc | first 5 | select message
“Show me the last five errors in the console.”

Read 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

Via rql-query / rql-mutate · What is RQL?Editor, console & profiler
profiler | select memory frame
“How much memory is the game using right now?”

Tests

Find, run and read Unity tests

2

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.

tests-runTests
  • testModeenum<EditMode|PlayMode>
  • testClassstring
  • testMethodstring
  • querystring
  • resultstring
“Run the EditMode tests and tell me what failed.”

List 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

Via rql-query / rql-mutate · What is RQL?Tests
tests | where fixture == "PlayerTests" | select name mode categories
“Which tests failed in the last run, and why?”

Screenshots

Let the AI see the game, a view or one object

4

Render one GameObject on its own from a chosen angle (or a 2×2 composite of four angles), with your own background and lights.

screenshot-isolatedScreenshots
  • gameObjectRef*GameObjectRef
  • cameraViewenum<Front|Back|Left|Right|Top|Bottom|Composite>
  • backgroundModeenum<SolidColor|Skybox|Transparent>
  • includeChildrenbool
  • resolutionint
“Show me the Player model from the front and from above.”

Capture an image from a camera (the Main Camera by default).

screenshot-cameraScreenshots

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • cameraRefGameObjectRef
  • widthint
  • heightint
“Take a screenshot from the main camera.”

Capture what the Editor’s Game view shows right now.

screenshot-game-viewScreenshots

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

“What does the Game view look like?”

Capture the Editor’s Scene view at a given size.

screenshot-scene-viewScreenshots

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • widthint
  • heightint
“Grab the Scene view so you can check the layout.”

Packages

Search, add and remove UPM packages

4

List installed UPM packages, filtered by source or name.

package-listPackages

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>
  • nameFilterstring
  • directDependenciesOnlybool
“Which packages are installed from Git?”

Search the Unity registry and installed packages by id, name or description.

package-searchPackages

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • query*string
  • maxResultsint
  • offlineModebool
“Is there a package for splines?”

Install a package from the registry, a Git URL or a local path.

package-addPackages

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • packageId*string
“Install Cinemachine.”

Uninstall a package from the project.

package-removePackages

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • packageId*string
“Remove the TextMeshPro examples package.”

Tools & skills

Switch tools on or off, write new skills

5

List every tool registered in the connected Editor, optionally filtered by a regex, with descriptions and inputs.

unity-tool-listTools & skills
  • regexSearchstring
  • includeDescriptionbool
  • includeInputsenum<None|Inputs|InputsWithDescription>
“Which tools can you use right now?”

Switch tools on or off by name, several at once.

tool-set-enabled-stateTools & skills

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • tools*ToolToggleInput[]
  • includeLogsbool
“Turn on the package tools.”

Check the connection: echoes a message back (or “pong”).

pingTools & skills
  • messagestring
“Ping the Unity editor.”

Write a new skill in C# — a class of [AiTool] methods — that becomes a new tool once Unity compiles it.

unity-skill-createTools & skills

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • path*string
  • code*string
“Create a skill that renames every selected object with a prefix.”

Generate skill files for every tool in the project.

unity-skill-generateTools & skills

Off by default: switch it on in the AI Game Developer window or ask the agent to use tool-set-enabled-state.

  • pathstring
“Regenerate the skills folder.”

Animation

Clips, curves, animator state machines

Extension · AI Animation · openupm add com.ivanmurzak.unity.mcp.animation

3

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

Via rql-query / rql-mutate · What is RQL?Animation

Needs the AI Animation extension installed.

animation | call CreateClip("Assets/Animations/Walk.anim", 30, true)
“Create a looping clip that bobs the object up 1 unit over 1 second.”

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

Via rql-query / rql-mutate · What is RQL?Animation

Needs the AI Animation extension installed.

unity.asset("Assets/Animations/Player.controller") | call AddTransition("Idle", "Walk", "Speed", "Greater", 0.1)
“Add Idle and Run states with a Speed parameter and transitions between them.”

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

Via rql-query / rql-mutate · What is RQL?Animation

Needs the AI Animation extension installed.

animation | get animators | set runtimeAnimatorController = unity.asset("Assets/Animations/Player.controller")
“Give every Animator in the scene the Player controller.”

Particles

All 24 ParticleSystem modules · playback

Extension · AI Particle System · openupm add com.ivanmurzak.unity.mcp.particlesystem

2

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

Via rql-query / rql-mutate · What is RQL?Particles

Needs the AI Particle System extension installed.

objects | get components | where $ is ParticleSystem | set main.startLifetime = 3, emission.rateOverTime = [5, 25], main.startColor = "#ff8800"
“Make the Fire effect emit 50 particles per second in a warm orange.”

Play, pause, stop or clear a particle system, or simulate it for a number of seconds.

Covers Play particles · Pause · Stop · Clear · Simulate

Via rql-query / rql-mutate · What is RQL?Particles

Needs the AI Particle System extension installed.

objects | get components | where $ is ParticleSystem | call Simulate(2)
“Simulate the explosion for two seconds so I can see it.”

ProBuilder

Model and edit meshes in the editor

Extension · AI ProBuilder · openupm add com.ivanmurzak.unity.mcp.probuilder

4

Create editable shapes (cube, cylinder …) and extruded polygon shapes, or merge several meshes into one.

Covers Create ProBuilder shape · Create poly shape · Merge meshes

Via rql-query / rql-mutate · What is RQL?ProBuilder

Needs the AI ProBuilder extension installed.

probuilder | call CreateShape("Cube", "Crate", "(2, 1, 2)", "(0, 0.5, 0)")
“Create a 4×3×4 ProBuilder room at the origin.”

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

Via rql-query / rql-mutate · What is RQL?ProBuilder

Needs the AI ProBuilder extension installed.

probuilder | get meshes | where gameObject.name == "Crate" | select faceCount vertexCount edgeCount bounds materials
“How many faces does the Crate have, and which ones face up?”

Extrude 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

Via rql-query / rql-mutate · What is RQL?ProBuilder

Needs the AI ProBuilder extension installed.

probuilder | get meshes | where gameObject.name == "Crate" | call Extrude(probuilder.facing($, "Up"), 0.5)
“Extrude the top of the Room up by 2 units and bevel its edges.”

Assign a material to chosen faces of a ProBuilder mesh.

Covers Set face material

Via rql-query / rql-mutate · What is RQL?ProBuilder

Needs the AI ProBuilder extension installed.

probuilder | get meshes | where gameObject.name == "Crate" | call SetFaceMaterial(probuilder.facing($, "Up"), "Assets/Materials/Grass.mat")
“Put the Grass material on the top faces of the Floor.”

Cinemachine

Virtual cameras · targets · lens · blends

Extension · AI Cinemachine · openupm add com.ivanmurzak.unity.mcp.cinemachine

4

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

Via rql-query / rql-mutate · What is RQL?Cinemachine

Needs the AI Cinemachine extension installed.

cinemachine | call CreateCamera("FollowCam", "Player", null, "(0, 3, -6)", "(20, 0, 0)", 10)
“Create a camera that follows the Player and looks at the Boss.”

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

Via rql-query / rql-mutate · What is RQL?Cinemachine

Needs the AI Cinemachine extension installed.

cinemachine | get cameras | where name == "FollowCam" | set Priority.Value = 20, Lens.FieldOfView = 50
“Raise the FollowCam priority and widen its field of view to 50.”

Choose 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 …)

Via rql-query / rql-mutate · What is RQL?Cinemachine

Needs the AI Cinemachine extension installed.

cinemachine | get cameras | where name == "FollowCam" | call SetNoise("Handheld_normal_mild", 1.5, 1)
“Add a subtle handheld shake to the follow camera.”

Set the default blend style and time between cameras on the CinemachineBrain.

Covers Set default blend · Blend style & time

Via rql-query / rql-mutate · What is RQL?Cinemachine

Needs the AI Cinemachine extension installed.

cinemachine | get brains | set DefaultBlend.Style = "EaseInOut", DefaultBlend.Time = 1.5
“Make camera cuts blend smoothly over 1.5 seconds.”

Splines

Containers · knots · tangents · evaluate

Extension · AI Splines · openupm add com.ivanmurzak.unity.mcp.splines

3

Create SplineContainers (open or closed) and add or remove splines inside them.

Covers Create SplineContainer · Add spline · Remove spline · Closed loop

Via rql-query / rql-mutate · What is RQL?Splines

Needs the AI Splines extension installed.

splines | call CreateContainer("Road", "(0, 0, 5)", "(0, 90, 0)", true)
“Create a closed spline called Track.”

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

Via rql-query / rql-mutate · What is RQL?Splines

Needs the AI Splines extension installed.

splines | get containers | where gameObject.name == "Road" | call AddKnot("(1, 0, 2)")
“Add a knot halfway along the Road and make its tangents linear.”

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

Via rql-query / rql-mutate · What is RQL?Splines

Needs the AI Splines extension installed.

splines | get containers | where gameObject.name == "Road" | call Evaluate(0.5)
“Where is the halfway point of the Road spline?”

Terrain

Sculpt · paint · scatter trees

Extension · AI Terrain · openupm add com.ivanmurzak.unity.mcp.terrain

4

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

Via rql-query / rql-mutate · What is RQL?Terrain

Needs the AI Terrain extension installed.

terrain | call Create("Island", "Assets/Terrain/Island.asset", 257, "(500, 120, 500)")
“Create a 500×500 terrain called Island.”

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

Via rql-query / rql-mutate · What is RQL?Terrain

Needs the AI Terrain extension installed.

objects | get components | where $ is Terrain | call SetHeights(0.6, 100, 100, 32, 32)
“Raise a gentle hill in the middle of the terrain.”

Create TerrainLayer assets, add or remove layers, and paint them onto areas of the terrain.

Covers Create TerrainLayer · Add / remove layer · Paint texture

Via rql-query / rql-mutate · What is RQL?Terrain

Needs the AI Terrain extension installed.

objects | get components | where $ is Terrain | call PaintLayer(1, 1.0, 0, 0, 64, 64)
“Add grass and rock layers and paint rock in one corner.”

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

Via rql-query / rql-mutate · What is RQL?Terrain

Needs the AI Terrain extension installed.

objects | get components | where $ is Terrain | call PlaceTrees(0, 200, 0.1, 0.1, 0.5, 0.5)
“Scatter 200 trees across the terrain.”

Input System

Action maps · bindings · schemes

Extension · AI InputSystem · openupm add com.ivanmurzak.unity.mcp.inputsystem

4

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

Via rql-query / rql-mutate · What is RQL?Input System

Needs the AI InputSystem extension installed.

input | call CreateAsset("Assets/Input/Player.inputactions", "Player")
“Create a Player input asset.”

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

Via rql-query / rql-mutate · What is RQL?Input System

Needs the AI InputSystem extension installed.

unity.asset("Assets/Input/Player.inputactions") | get maps | where name == "Player" | call AddAction("Move", "Value", "Vector2")
“Add a Move action of type Vector2 to the Player map.”

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

Via rql-query / rql-mutate · What is RQL?Input System

Needs the AI InputSystem extension installed.

unity.asset("Assets/Input/Player.inputactions") | get actions | where name == "Jump" | call AddBinding("<Keyboard>/space", "Keyboard&Mouse")
“Bind Jump to Space and to the gamepad south button.”

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

Via rql-query / rql-mutate · What is RQL?Input System

Needs the AI InputSystem extension installed.

unity.asset("Assets/Input/Player.inputactions") | call AddControlScheme("Gamepad", ["<Gamepad>"])
“Add a Gamepad control scheme.”

Tilemap

2D grids · paint · tile assets

Extension · AI Tilemap · openupm add com.ivanmurzak.unity.mcp.tilemap

5

Create a Grid with a Tilemap and set its orientation, anchor and other settings.

Covers Create Grid + Tilemap · Set orientation · Set anchor

Via rql-query / rql-mutate · What is RQL?Tilemap

Needs the AI Tilemap extension installed.

tilemap | call CreateTilemap("Ground")
“Create a Ground tilemap.”

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

Via rql-query / rql-mutate · What is RQL?Tilemap

Needs the AI Tilemap extension installed.

objects | get components | where $ is Tilemap | call BoxFill("Assets/Tiles/Grass.asset", -5, -3, 5, 3)
“Fill a 10×3 floor with the Grass tile.”

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

Via rql-query / rql-mutate · What is RQL?Tilemap

Needs the AI Tilemap extension installed.

objects | get components | where $ is Tilemap | select $ref gameObject.name tileCount usedTiles cellBounds orientation
“Which tiles are used on the Ground tilemap?”

Tint, rotate or flip individual cells and set each cell’s collider type.

Covers Tile colour · Rotate / flip tile · Tile collider type

Via rql-query / rql-mutate · What is RQL?Tilemap

Needs the AI Tilemap extension installed.

objects | get components | where $ is Tilemap | call SetColor("(0, 0, 0)", "#FF8080")
“Tint the tile at (0, 0) red.”

Create Tile assets from sprites and RuleTiles, then add rules to them.

Covers Create Tile asset · Create RuleTile · Add tile rules

Via rql-query / rql-mutate · What is RQL?Tilemap

Needs the AI Tilemap extension installed.

tilemap | call CreateTile("Assets/Tiles/Grass.asset", "Assets/Art/grass.png")
“Create a Grass tile from grass.png.”

Navigation

NavMesh · bake · agents · links

Extension · AI Navigation · openupm add com.ivanmurzak.unity.mcp.navigation

4

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

Via rql-query / rql-mutate · What is RQL?Navigation

Needs the AI Navigation extension installed.

objects | where name == "Ground" | call AddComponent("NavMeshSurface")
“Add a NavMeshSurface to the level ground.”

Bake or clear one surface, or every surface at once.

Covers Bake NavMesh · Bake all surfaces · Clear NavMesh

Via rql-query / rql-mutate · What is RQL?Navigation

Needs the AI Navigation extension installed.

navigation | call BakeAll()
“Bake the NavMesh for the whole level.”

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

Via rql-query / rql-mutate · What is RQL?Navigation

Needs the AI Navigation extension installed.

navigation | get agentTypes | where name == "Humanoid" | set agentRadius = 0.4, agentSlope = 40
“Make the Humanoid agent thinner and let it climb steeper slopes.”

In Play Mode, send NavMeshAgents to a destination, warp them, or reset their path.

Covers Set agent destination · Warp agent · Reset path

Via rql-query / rql-mutate · What is RQL?Navigation

Needs the AI Navigation extension installed.

objects | get components | where $ is NavMeshAgent | call SetDestination("(10, 0, 5)")
“Send every agent to (10, 0, 5).”

Timeline

Cutscenes · tracks · clips · binding

Extension · AI Timeline · openupm add com.ivanmurzak.unity.mcp.timeline

5

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

Via rql-query / rql-mutate · What is RQL?Timeline

Needs the AI Timeline extension installed.

timeline | call Create("Assets/Cutscenes/Intro.playable", 30)
“Create a 30 fps timeline called Intro.”

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

Via rql-query / rql-mutate · What is RQL?Timeline

Needs the AI Timeline extension installed.

unity.asset("Assets/Cutscenes/Intro.playable") | call AddTrack("Animation", "Hero")
“Add an animation track called Hero to the Intro timeline.”

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

Via rql-query / rql-mutate · What is RQL?Timeline

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")
“Add a 3-second walk clip at 2 seconds on the Hero track.”

Place markers and signal emitters on a track or on the timeline’s marker track.

Covers Add marker · Add signal emitter

Via rql-query / rql-mutate · What is RQL?Timeline

Needs the AI Timeline extension installed.

unity.asset("Assets/Cutscenes/Intro.playable") | call AddMarker(3.5)
“Add a marker at 3.5 seconds to trigger the explosion.”

Point a PlayableDirector at a timeline and bind each track to the scene object it animates.

Covers Bind PlayableDirector · Bind track to object

Via rql-query / rql-mutate · What is RQL?Timeline

Needs the AI Timeline extension installed.

objects | get components | where $ is PlayableDirector | set playableAsset = unity.asset("Assets/Cutscenes/Intro.playable")
“Bind the Intro timeline to the Cutscene director.”