# Unity — Capabilities Catalog (MCP tools + RQL)

Everything the AI can do in Unity: 72 capabilities in 19 areas — 21 MCP tools plus 51 RQL capabilities from the core plugin and its extensions. 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.

_Last updated: 2026-06-17_

21 entries are MCP tools the agent calls directly; the other 51 (type RQL) are done with one RQL query through rql-query / rql-mutate (https://ai-game.dev/docs/rql). Extensions add no MCP tools: each contributes an RQL module that teaches RQL a new area (https://ai-game.dev/docs/rql/custom-adapters).

## Query & edit (RQL) — The three tools behind everything marked RQL

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| RQL / Query | MCP tool | read | 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-query | Which enemies in the scene are inactive, and where are they? |
| RQL / Mutate | MCP tool | write | 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-mutate | Turn off every object tagged Enemy and double the intensity of all lights. |
| RQL / Schema | MCP tool | read | 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-schema | What can you change on the Light component? |

## Scenes & objects — GameObjects, components, hierarchy, scenes

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Find & inspect GameObjects | RQL | read | 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.position | List every active enemy in the scene with its position. |
| Change objects in bulk | RQL | write | 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. | objects \| where tag == "Enemy" \| set active = false | Hide every enemy and move the Player to (0, 1, 0). |
| Create, duplicate, reparent & delete objects | RQL | create | 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. | editor \| call CreateGameObject("Crate", unity.find("Props"), "Cube") | Create five crates under the Props group, 2 units apart. |
| Components | RQL | write | 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") | Add a Rigidbody with mass 5 to every crate. |
| Scenes | RQL | action | 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") | Open the Level scene and make it the active one. |

## Assets & prefabs — Find, organise, materials, shaders, prefabs

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Find & read assets | RQL | read | 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"] | Which materials use the Standard shader? |
| Organise assets | RQL | write | 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") | Move every material into Assets/Materials. |
| Materials & shaders | RQL | create | 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") | Create a red glowing material and put it on the Lamp. |
| Prefabs | RQL | create | 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") | Turn the Crate into a prefab and place three copies along the road. |

## Scripts & C# — Write, read and run C# code

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Script / Update or Create | MCP tool | create | Create a C# script or overwrite an existing one; Unity recompiles it. | script-update-or-create | Write a PlayerController script with WASD movement. |
| Script / Read | MCP tool | read | Read a .cs file, or just a range of its lines. | script-read | Show me the Update method of PlayerController.cs. |
| Script / Delete | MCP tool | destroy | Delete one or more script files and refresh the project. | script-delete | Delete the old OldEnemyAI.cs script. |
| Script / Execute | MCP tool | action | 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-execute | Run some C# that counts the triangles of every mesh in the scene. |

## Editor, console & profiler — Play mode, selection, logs, performance

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Play mode, selection & menu items | RQL | action | 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 = true | Enter play mode and tell me what is selected. |
| Console logs | RQL | read | 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. | console \| where logType == "Error" \| sort sequence desc \| first 5 \| select message | Show me the last five errors in the console. |
| Profiler | RQL | action | 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. | profiler \| select memory frame | How much memory is the game using right now? |

## Tests — Find, run and read Unity tests

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Tests / Run | MCP tool | action | 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-run | Run the EditMode tests and tell me what failed. |
| Find tests & read results | RQL | read | 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. | 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

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Screenshot / Isolated GameObject | MCP tool | action | 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-isolated | Show me the Player model from the front and from above. |
| Screenshot / Camera | MCP tool | action | Capture an image from a camera (the Main Camera by default). | screenshot-camera | Take a screenshot from the main camera. |
| Screenshot / Game View | MCP tool | action | Capture what the Editor’s Game view shows right now. | screenshot-game-view | What does the Game view look like? |
| Screenshot / Scene View | MCP tool | action | Capture the Editor’s Scene view at a given size. | screenshot-scene-view | Grab the Scene view so you can check the layout. |

## Packages — Search, add and remove UPM packages

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Package Manager / List Installed | MCP tool | read | List installed UPM packages, filtered by source or name. | package-list | Which packages are installed from Git? |
| Package Manager / Search | MCP tool | read | Search the Unity registry and installed packages by id, name or description. | package-search | Is there a package for splines? |
| Package Manager / Add | MCP tool | create | Install a package from the registry, a Git URL or a local path. | package-add | Install Cinemachine. |
| Package Manager / Remove | MCP tool | destroy | Uninstall a package from the project. | package-remove | Remove the TextMeshPro examples package. |

## Tools & skills — Switch tools on or off, write new skills

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Tool / List | MCP tool | read | List every tool registered in the connected Editor, optionally filtered by a regex, with descriptions and inputs. | unity-tool-list | Which tools can you use right now? |
| Tool / Set Enabled State | MCP tool | write | Switch tools on or off by name, several at once. | tool-set-enabled-state | Turn on the package tools. |
| Ping | MCP tool | read | Check the connection: echoes a message back (or “pong”). | ping | Ping the Unity editor. |
| Skill (Tool) / Create | MCP tool | create | Write a new skill in C# — a class of [AiTool] methods — that becomes a new tool once Unity compiles it. | unity-skill-create | Create a skill that renames every selected object with a prefix. |
| Skill (Tool) / Generate All | MCP tool | action | Generate skill files for every tool in the project. | unity-skill-generate | Regenerate the skills folder. |

## Animation — Clips, curves, animator state machines

Needs the AI Animation extension (openupm add com.ivanmurzak.unity.mcp.animation) — https://ai-game.dev/docs/extensions/unity/animation.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Animation clips | RQL | create | 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. | animation \| call CreateClip("Assets/Animations/Walk.anim", 30, true) | Create a looping clip that bobs the object up 1 unit over 1 second. |
| Animator controllers | RQL | create | 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. | 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. |
| Animators in the scene | RQL | write | 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. | 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

Needs the AI Particle System extension (openupm add com.ivanmurzak.unity.mcp.particlesystem) — https://ai-game.dev/docs/extensions/unity/particles.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Particle system settings | RQL | write | 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. | 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. |
| Particle playback | RQL | action | Play, pause, stop or clear a particle system, or simulate it for a number of seconds. Covers: Play particles, Pause, Stop, Clear, Simulate. | 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

Needs the AI ProBuilder extension (openupm add com.ivanmurzak.unity.mcp.probuilder) — https://ai-game.dev/docs/extensions/unity/probuilder.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Create ProBuilder shapes | RQL | create | Create editable shapes (cube, cylinder …) and extruded polygon shapes, or merge several meshes into one. Covers: Create ProBuilder shape, Create poly shape, Merge meshes. | probuilder \| call CreateShape("Cube", "Crate", "(2, 1, 2)", "(0, 0.5, 0)") | Create a 4×3×4 ProBuilder room at the origin. |
| Inspect meshes | RQL | read | 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. | 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? |
| Edit meshes | RQL | write | 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. | 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. |
| Face materials | RQL | write | Assign a material to chosen faces of a ProBuilder mesh. Covers: Set face material. | 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

Needs the AI Cinemachine extension (openupm add com.ivanmurzak.unity.mcp.cinemachine) — https://ai-game.dev/docs/extensions/unity/cinemachine.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Create cameras | RQL | create | 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. | 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. |
| Targets, priority & lens | RQL | write | 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. | 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. |
| Camera behaviour & shake | RQL | write | 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 …). | cinemachine \| get cameras \| where name == "FollowCam" \| call SetNoise("Handheld_normal_mild", 1.5, 1) | Add a subtle handheld shake to the follow camera. |
| Blends | RQL | write | Set the default blend style and time between cameras on the CinemachineBrain. Covers: Set default blend, Blend style & time. | 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

Needs the AI Splines extension (openupm add com.ivanmurzak.unity.mcp.splines) — https://ai-game.dev/docs/extensions/unity/splines.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Create splines | RQL | create | Create SplineContainers (open or closed) and add or remove splines inside them. Covers: Create SplineContainer, Add spline, Remove spline, Closed loop. | splines \| call CreateContainer("Road", "(0, 0, 5)", "(0, 90, 0)", true) | Create a closed spline called Track. |
| Knots & tangents | RQL | write | 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. | splines \| get containers \| where gameObject.name == "Road" \| call AddKnot("(1, 0, 2)") | Add a knot halfway along the Road and make its tangents linear. |
| Points along a curve | RQL | read | 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. | 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

Needs the AI Terrain extension (openupm add com.ivanmurzak.unity.mcp.terrain) — https://ai-game.dev/docs/extensions/unity/terrain.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Create terrains | RQL | create | 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. | terrain \| call Create("Island", "Assets/Terrain/Island.asset", 257, "(500, 120, 500)") | Create a 500×500 terrain called Island. |
| Sculpt & sample heights | RQL | write | 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. | objects \| get components \| where $ is Terrain \| call SetHeights(0.6, 100, 100, 32, 32) | Raise a gentle hill in the middle of the terrain. |
| Paint texture layers | RQL | write | Create TerrainLayer assets, add or remove layers, and paint them onto areas of the terrain. Covers: Create TerrainLayer, Add / remove layer, Paint texture. | 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. |
| Trees & details | RQL | create | 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. | 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

Needs the AI InputSystem extension (openupm add com.ivanmurzak.unity.mcp.inputsystem) — https://ai-game.dev/docs/extensions/unity/inputsystem.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Input action assets | RQL | create | 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. | input \| call CreateAsset("Assets/Input/Player.inputactions", "Player") | Create a Player input asset. |
| Action maps & actions | RQL | create | 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. | 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. |
| Bindings & composites | RQL | write | 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. | 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. |
| Control schemes | RQL | create | 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. | unity.asset("Assets/Input/Player.inputactions") \| call AddControlScheme("Gamepad", ["<Gamepad>"]) | Add a Gamepad control scheme. |

## Tilemap — 2D grids · paint · tile assets

Needs the AI Tilemap extension (openupm add com.ivanmurzak.unity.mcp.tilemap) — https://ai-game.dev/docs/extensions/unity/tilemap.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Create tilemaps | RQL | create | Create a Grid with a Tilemap and set its orientation, anchor and other settings. Covers: Create Grid + Tilemap, Set orientation, Set anchor. | tilemap \| call CreateTilemap("Ground") | Create a Ground tilemap. |
| Paint & fill tiles | RQL | write | 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. | 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. |
| Read cells | RQL | read | 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. | objects \| get components \| where $ is Tilemap \| select $ref gameObject.name tileCount usedTiles cellBounds orientation | Which tiles are used on the Ground tilemap? |
| Per-cell colour, rotation & colliders | RQL | write | Tint, rotate or flip individual cells and set each cell’s collider type. Covers: Tile colour, Rotate / flip tile, Tile collider type. | objects \| get components \| where $ is Tilemap \| call SetColor("(0, 0, 0)", "#FF8080") | Tint the tile at (0, 0) red. |
| Tile & rule-tile assets | RQL | create | Create Tile assets from sprites and RuleTiles, then add rules to them. Covers: Create Tile asset, Create RuleTile, Add tile rules. | tilemap \| call CreateTile("Assets/Tiles/Grass.asset", "Assets/Art/grass.png") | Create a Grass tile from grass.png. |

## Navigation — NavMesh · bake · agents · links

Needs the AI Navigation extension (openupm add com.ivanmurzak.unity.mcp.navigation) — https://ai-game.dev/docs/extensions/unity/navigation.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| NavMesh components | RQL | create | 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. | objects \| where name == "Ground" \| call AddComponent("NavMeshSurface") | Add a NavMeshSurface to the level ground. |
| Bake the NavMesh | RQL | action | Bake or clear one surface, or every surface at once. Covers: Bake NavMesh, Bake all surfaces, Clear NavMesh. | navigation \| call BakeAll() | Bake the NavMesh for the whole level. |
| Bake settings & areas | RQL | write | 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. | navigation \| get agentTypes \| where name == "Humanoid" \| set agentRadius = 0.4, agentSlope = 40 | Make the Humanoid agent thinner and let it climb steeper slopes. |
| Move agents | RQL | action | In Play Mode, send NavMeshAgents to a destination, warp them, or reset their path. Covers: Set agent destination, Warp agent, Reset path. | objects \| get components \| where $ is NavMeshAgent \| call SetDestination("(10, 0, 5)") | Send every agent to (10, 0, 5). |

## Timeline — Cutscenes · tracks · clips · binding

Needs the AI Timeline extension (openupm add com.ivanmurzak.unity.mcp.timeline) — https://ai-game.dev/docs/extensions/unity/timeline.

| Capability | Type | Kind | Description | Tool id / RQL example | Example prompt |
| --- | --- | --- | --- | --- | --- |
| Create timelines | RQL | create | 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. | timeline \| call Create("Assets/Cutscenes/Intro.playable", 30) | Create a 30 fps timeline called Intro. |
| Tracks | RQL | create | 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. | unity.asset("Assets/Cutscenes/Intro.playable") \| call AddTrack("Animation", "Hero") | Add an animation track called Hero to the Intro timeline. |
| Clips & timing | RQL | write | 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. | 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. |
| Markers & signals | RQL | create | Place markers and signal emitters on a track or on the timeline’s marker track. Covers: Add marker, Add signal emitter. | unity.asset("Assets/Cutscenes/Intro.playable") \| call AddMarker(3.5) | Add a marker at 3.5 seconds to trigger the explosion. |
| Play timelines in the scene | RQL | write | Point a PlayableDirector at a timeline and bind each track to the scene object it animates. Covers: Bind PlayableDirector, Bind track to object. | objects \| get components \| where $ is PlayableDirector \| set playableAsset = unity.asset("Assets/Cutscenes/Intro.playable") | Bind the Intro timeline to the Cutscene director. |

---

Source (HTML): https://ai-game.dev/docs/tools/unity
