Asset Tools¶
Manage prefabs, materials, ScriptableObjects, and project settings. Control the asset pipeline without leaving chat.
asset¶
Core asset database operations: search, copy, move, delete, import/export.
Parameters: - action (string) — "find" | "get_info" | "create" | "move" | "validate_move" | "duplicate" | "delete" | "get_dependencies" | "find_dependents" | "import_settings" | "export_package" | "import_package" | "read_text" | "write_text" | "reimport" - path (string) — Asset path (Assets-relative) - type (string, optional) — Asset type filter - name (string, optional) — Name for search - folder (string, optional) — Folder scope for search - source, dest (string, optional) — For move operations - recursive (bool, default=false) — Include subfolders - output (string, optional) — Export destination - include_deps (bool, default=true) — Include dependencies - labels (string, optional) — Comma-separated labels filter for find action - content (string, optional) — Text content for write_text action - class_name (string, optional) — Class name for ScriptableObject creation
Actions:
| Action | Purpose | Required Params | Example |
|---|---|---|---|
| find | Search assets by name/type/labels | name OR type, folder (opt) | asset("find", name="PlayerMesh", folder="Assets/Meshes") |
| get_info | Read asset metadata | path | asset("get_info", path="Assets/Models/Player.fbx") |
| create | Create new asset | type, path | asset("create", type="Folder", path="Assets/NewFolder") |
| move | Relocate asset + .meta | source, dest | asset("move", source="Assets/Old/X.mat", dest="Assets/Materials/X.mat") |
| validate_move | Test move without executing | source, dest | asset("validate_move", source="Assets/A.cs", dest="Assets/B.cs") |
| duplicate | Copy asset | path | asset("duplicate", path="Assets/Material.mat") |
| delete | Remove asset + .meta | path | asset("delete", path="Assets/Temp.prefab") |
| get_dependencies | List forward dependencies | path | asset("get_dependencies", path="Assets/Scene.unity", include_deps=True) |
| find_dependents | Reverse dependencies — who references this asset | path | asset("find_dependents", path="Assets/Materials/Shared.mat") |
| import_settings | Configure import params | path, prop, value | asset("import_settings", path="Assets/Mesh.fbx", prop="importer_type", value="humanoid") |
| export_package | Create .unitypackage | path, output | asset("export_package", path="Assets/MyFeature", output="/tmp/export.unitypackage") |
| import_package | Load .unitypackage | path (file system) | asset("import_package", path="/tmp/export.unitypackage") |
| read_text | Read text file asset | path | asset("read_text", path="Assets/Config.txt") |
| write_text | Write or update text file | path, content | asset("write_text", path="Assets/Config.txt", content="key=value") |
| reimport | Force re-import asset | path | asset("reimport", path="Assets/Models/Player.fbx") |
Example:
# Find materials in folder
mats = await asset("find", type="Material", folder="Assets/UI", labels="hud,animated")
# Get asset info
info = await asset("get_info", path="Assets/Models/Player.fbx")
# Create new folder
await asset("create", type="Folder", path="Assets/Materials")
# Move asset
await asset("move", source="Assets/Old/Player.mat", dest="Assets/Materials/Player.mat")
# Delete temp file
await asset("delete", path="Assets/Temp.prefab")
# Get forward dependencies
deps = await asset("get_dependencies", path="Assets/Scenes/Level1.unity", include_deps=True)
# Find reverse dependencies (who references this asset)
dependents = await asset("find_dependents", path="Assets/Materials/Shared.mat")
# Export package
await asset("export_package", path="Assets/MyFeature", output="/tmp/feature.unitypackage", include_deps=True)
# Import package
await asset("import_package", path="/tmp/feature.unitypackage")
# Read text file
config = await asset("read_text", path="Assets/Config.txt")
# Write text file
await asset("write_text", path="Assets/Config.txt", content="gameVersion=1.0\nmaxPlayers=16")
# Re-import asset (forces AssetDatabase refresh)
await asset("reimport", path="Assets/Models/Player.fbx")
material¶
Manage materials and shaders. Create, modify, and assign materials to objects.
Parameters: - action (string) — "create" | "get" | "set" | "copy" | "list_properties" | "list_slots" | "get_errors" | "list_shaders" | "set_fields" - path (string, optional) — Material asset path - object_path (string, optional) — Scene object path - shader (string, optional) — Shader name (e.g., "Standard", "Unlit/Color") - prop (string, optional) — Property name (e.g., "_Color", "_MainTexture") - value (string, optional) — Property value (for set_fields: newline-separated prop=val pairs) - source (string, optional) — Source material for copy - targets (string, optional) — Comma-separated scene paths for apply - slot (int, optional) — Material slot index (default 0) - filter (string, optional) — Name filter for list_shaders - target (string, optional) — "shared" | "instance" | "asset" (default "shared") — controls which material is modified by set
Actions:
| Action | Purpose | Required Params | Example |
|---|---|---|---|
| create | Create material with shader | path, shader | material("create", path="Assets/NewMat.mat", shader="Standard") |
| get | Read material properties | path OR object_path | material("get", path="Assets/PlayerMat.mat") |
| set | Modify material property | path OR object_path, prop, value | material("set", path="Assets/Mat.mat", prop="_Color", value="1,0,0,1") |
| set_fields | Set multiple properties at once | path, value (newline-separated) | material("set_fields", path="Assets/Mat.mat", value="_Color=1,0,0,1\n_Metallic=0.8") |
| copy | Clone + assign to objects | source, targets | material("copy", source="Assets/Base.mat", targets="Player,Enemy") |
| list_properties | Enumerate all properties | path OR object_path | material("list_properties", path="Assets/Mat.mat") |
| list_slots | List material slots on object | object_path | material("list_slots", object_path="Player") |
| list_shaders | List available shaders | filter (optional) | material("list_shaders", filter="URP") |
| get_errors | Get shader compilation errors | path | material("get_errors", path="Assets/Shaders/Custom.shader") |
Color Format: RGB or hex - Vector: "0.5,0.2,1,1" (RGBA) - Hex: "#FF0000" (red) - Shorthand: "red" (standard colors)
Example:
# Create material
await material("create", path="Assets/RedMat.mat", shader="Standard")
# Read properties
props = await material("get", path="Assets/RedMat.mat")
# Set color
await material("set", path="Assets/RedMat.mat", prop="_Color", value="#FF0000")
# Set texture
await material("set", path="Assets/Mat.mat", prop="_MainTexture", value="Assets/Textures/Wood.png")
# Copy material to scene objects
await material("copy", source="Assets/BaseMat.mat", targets="Player,Enemy,Boss")
# List all properties
props = await material("list_properties", path="Assets/Mat.mat")
# Modify material on scene object
await material("set", object_path="Player", prop="_Metallic", value="0.8")
# List material slots on scene object
slots = await material("list_slots", object_path="Player")
# Set multiple properties at once
await material("set_fields", path="Assets/Mat.mat", value="_Color=1,0,0,1\n_Metallic=0.8\n_Smoothness=0.5")
# List available shaders (with optional filter)
shaders = await material("list_shaders", filter="URP")
# Check shader errors
errors = await material("get_errors", path="Assets/Shaders/Custom.shader")
# Use specific material slot
await material("set", object_path="Player", prop="_Color", value="#FF0000", slot=1)
# Modify instance material (not shared)
await material("set", object_path="Player", prop="_Color", value="#FF0000", target="instance")
prefab¶
Create, modify, and manage prefabs. Save instances as prefabs or edit prefabs directly (v0.56.0+).
Parameters: - action (string) — "save" | "create_variant" | "apply" | "revert" | "get_overrides" | "unpack" | "edit" - path (string, optional) — Scene instance path - asset_path (string, optional) — Prefab asset path (Assets-relative) - base_path (string, optional) — Base prefab for variant - variant_path (string, optional) — New variant path - component (string, optional) — Component for edit action - add_component, remove_component (string, optional) — For component management - prop, value (string, optional) — Property to modify - recursive (bool, default=false) — Apply/revert recursively - mode (string, optional) — For save: "new" | "overwrite" (default "overwrite") - scope (string, optional) — For revert: "object" (default) | "children" - format (string, optional) — For get_overrides: "text" (default) | "structured"
Actions:
| Action | Purpose | Required Params | Example |
|---|---|---|---|
| save | Scene instance → prefab asset | path, asset_path | prefab("save", path="Player", asset_path="Assets/Prefabs/Player.prefab") |
| create_variant | Make variant from base | base_path, variant_path | prefab("create_variant", base_path="Assets/Enemy.prefab", variant_path="Assets/Variants/EnemyFast.prefab") |
| apply | Push instance changes → base | path | prefab("apply", path="Player") |
| revert | Discard instance changes | path | prefab("revert", path="Player") |
| get_overrides | List property modifications | path | prefab("get_overrides", path="Enemy") |
| unpack | Convert instance → GameObject | path | prefab("unpack", path="SpawnedPrefab") |
| edit | Modify prefab asset directly | asset_path, component, prop, value | prefab("edit", asset_path="Assets/Player.prefab", component="Health", prop="MaxHP", value="200") |
| edit (add) | Add component to prefab | asset_path, add_component | prefab("edit", asset_path="Assets/Player.prefab", add_component="Rigidbody") |
| edit (remove) | Remove component | asset_path, remove_component | prefab("edit", asset_path="Assets/Player.prefab", remove_component="AudioSource") |
Workflow: Two-step prefab creation
# 1. Design in scene
await create_object("Player")
await manage_component(path="Player", type="Health", action="add")
await set_property("Player", "Health", "maxHp", "100")
# 2. Save as prefab
await prefab("save", path="Player", asset_path="Assets/Prefabs/Player.prefab")
Workflow: Direct prefab editing (v0.56.0+)
# Modify prefab asset without unpacking
await prefab("edit",
asset_path="Assets/Prefabs/Player.prefab",
component="Health",
prop="MaxHP",
value="200"
)
# Add component to prefab
await prefab("edit",
asset_path="Assets/Prefabs/Player.prefab",
add_component="Rigidbody"
)
# Remove component
await prefab("edit",
asset_path="Assets/Prefabs/Player.prefab",
remove_component="AudioSource"
)
Workflow: Variant management
# Create variant (inherits from base)
await prefab("create_variant",
base_path="Assets/Prefabs/Enemy.prefab",
variant_path="Assets/Prefabs/Variants/EnemyFast.prefab"
)
# Modify variant (doesn't affect base)
await prefab("edit",
asset_path="Assets/Prefabs/Variants/EnemyFast.prefab",
component="Health",
prop="maxHp",
value="50"
)
scriptable_object¶
Manage ScriptableObject assets. Create, modify, and save ScriptableObject configurations.
Parameters: - action (string) — "create" | "get" | "set" | "list_types" | "find" - path (string, optional) — Asset path or scene instance - type (string, optional) — ScriptableObject class name - prop (string, optional) — Property name - value (string, optional) — Property value - fields (string, optional) — Newline-separated prop=value pairs (for create/set bulk) - filter (string, optional) — Name filter for list_types / comma-separated field filter for get
Actions:
| Action | Purpose | Required Params | Example |
|---|---|---|---|
| create | Create new ScriptableObject | path, type [, fields] | scriptable_object("create", path="Assets/GameConfig.asset", type="GameSettings") |
| get | Read ScriptableObject | path [, filter] | scriptable_object("get", path="Assets/GameConfig.asset") |
| set | Modify property | path, prop, value OR fields | scriptable_object("set", path="Assets/GameConfig.asset", prop="maxLevel", value="50") |
| list_types | List available SO types | filter (optional) | scriptable_object("list_types", filter="Game") |
| find | Find SO assets by type | type | scriptable_object("find", type="GameSettings") |
Example:
# Create new ScriptableObject
await scriptable_object("create",
path="Assets/GameConfig.asset",
type="GameSettings"
)
# Create with initial fields
await scriptable_object("create",
path="Assets/GameConfig.asset",
type="GameSettings",
fields="maxLevel=50\nstartGold=100"
)
# Read configuration
config = await scriptable_object("get", path="Assets/GameConfig.asset")
# Read specific fields only
config = await scriptable_object("get", path="Assets/GameConfig.asset", filter="maxLevel,startGold")
# Modify property
await scriptable_object("set",
path="Assets/GameConfig.asset",
prop="maxLevel",
value="100"
)
# Set multiple fields at once
await scriptable_object("set",
path="Assets/GameConfig.asset",
fields="maxLevel=100\nstartGold=500"
)
# List available ScriptableObject types
types = await scriptable_object("list_types", filter="Config")
# Find all instances of a type
configs = await scriptable_object("find", type="GameSettings")
project_settings¶
Access and modify project-wide settings.
Parameters: - action (string) — "get" | "set" - target (string) — Setting category: "tags" | "layers" | "sorting_layers" | "quality" | "physics" | "time" | "player" | "graphics" | "audio" | "input" - prop (string, optional) — Property name within the target category - value (string, optional) — New value - index (int, optional) — Index for array-based settings (e.g., layers) - build_target (string, optional) — Build target for ScriptingBackend: "Standalone" | "iOS" | "Android" | etc. (required when setting ScriptingBackend)
Actions:
| Target | Action | Purpose | Example |
|---|---|---|---|
| tags | get | List all tags | project_settings("get", target="tags") |
| tags | set | Add tag (prop or value) | project_settings("set", target="tags", prop="Enemy") |
| tags | set (remove) | Remove tag | project_settings("set", target="tags", prop="remove", value="Obsolete") |
| layers | get | List layers 0–31 | project_settings("get", target="layers") |
| layers | set | Set layer name at index | project_settings("set", target="layers", index=8, value="Enemy") |
| sorting_layers | get | List sorting layers | project_settings("get", target="sorting_layers") |
| quality | get | Quality settings (shadow, LOD, etc.) | project_settings("get", target="quality") |
| quality | set (currentLevel) | Switch quality level | project_settings("set", target="quality", prop="currentLevel", value="2") |
| quality | set (property) | Adjust via reflection | project_settings("set", target="quality", prop="shadowDistance", value="50") |
| physics | get | Physics settings (gravity, solver, collision matrix) | project_settings("get", target="physics") |
| physics | set | Modify physics | project_settings("set", target="physics", prop="gravity", value="0,-15,0") |
| time | get | Time settings (fixedDeltaTime, timeScale, etc.) | project_settings("get", target="time") |
| time | set | Modify time property | project_settings("set", target="time", prop="fixedDeltaTime", value="0.02") |
| player | get | Player settings (company, product name, version) | project_settings("get", target="player") |
| player | set (ScriptingBackend) | Set IL2CPP/Mono backend | project_settings("set", target="player", prop="ScriptingBackend", value="IL2CPP", build_target="Standalone") |
| player | set (property) | Modify player property | project_settings("set", target="player", prop="companyName", value="MyStudio") |
| graphics | get | Graphics settings (render pipeline, color space, etc.) | project_settings("get", target="graphics") |
| graphics | set | Modify graphics | project_settings("set", target="graphics", prop="colorSpace", value="Linear") |
| audio | get | Audio settings (master volume, rolloff, speaker mode) — read-only | project_settings("get", target="audio") |
| input | get | Input axes (Horizontal, Vertical, etc.) — read-only | project_settings("get", target="input") |
Example:
# Read physics settings
physics = await project_settings("get", target="physics")
# Set gravity
await project_settings("set", target="physics", prop="gravity", value="0,-15,0")
# Read time settings
time = await project_settings("get", target="time")
# Read tags
tags = await project_settings("get", target="tags")
# Add a tag
await project_settings("set", target="tags", prop="Enemy")
# Remove a tag
await project_settings("set", target="tags", prop="remove", value="Obsolete")
# Set a layer by index (0-5 reserved, use 6+)
await project_settings("set", target="layers", index=8, value="EnemyLayer")
# Switch quality level
await project_settings("set", target="quality", prop="currentLevel", value="2")
# Set scripting backend (requires build_target)
await project_settings("set", target="player", prop="ScriptingBackend", value="IL2CPP", build_target="Standalone")
# Read graphics settings
graphics = await project_settings("get", target="graphics")
# Set color space to linear
await project_settings("set", target="graphics", prop="colorSpace", value="Linear")
# Read audio settings (read-only)
audio = await project_settings("get", target="audio")
# Read input axes (read-only)
input_axes = await project_settings("get", target="input")
build¶
Build player executables for target platforms.
Parameters: - action (string, required) — Build action (e.g., "build") - target (string, optional) — Build target: "StandaloneWindows64" | "StandaloneOSX" | "Android" | "iOS" | "WebGL" (default: active build target) - scenes (string, optional) — Comma-separated scene asset paths (default: Build Settings scene list) - path (string, optional) — Output path (default: Builds/dev (bool, default=false) — Development build flag (enables logging, profiler, slower startup)
Actions:
| Action | Purpose | Required Params | Example |
|---|---|---|---|
| build | Build player | action | build("build") or build("build", target="iOS", path="Builds/iOS") |
Example:
# Build for active target (Standalone)
result = await build("build")
# Build for iOS with custom path
result = await build("build", target="iOS", path="Builds/iOS", scenes="Assets/Scenes/Menu.unity,Assets/Scenes/Main.unity")
# Development build (logging + profiler enabled)
result = await build("build", target="Android", dev=True, path="Builds/Android/dev")
package¶
Package Manager operations: list, search, add, or remove packages.
Parameters: - action (string) — "list" | "search" | "add" | "remove" - name (string, optional) — Package name (required for add/remove) - version (string, optional) — Package version (optional for add, e.g., "1.2.3") - query (string, optional) — Search query (required for search)
Actions:
| Action | Purpose | Required Params | Example |
|---|---|---|---|
| list | List all installed packages | action | package("list") |
| search | Search registry by name | query | package("search", query="UI") |
| add | Install package | name [, version] | package("add", name="com.unity.textmeshpro") |
| remove | Uninstall package | name | package("remove", name="com.unity.textmeshpro") |
Example:
# List installed packages
packages = await package("list")
# Search for UI packages
results = await package("search", query="UI")
# Add a package (latest version)
await package("add", name="com.unity.textmeshpro")
# Add specific version
await package("add", name="com.unity.textmeshpro", version="3.0.6")
# Remove package
await package("remove", name="com.unity.textmeshpro")
bake¶
Lighting and occlusion bake operations.
Parameters: - target (string) — "lighting" | "occlusion" - action (string, optional, default="start") — Specific action: - Lighting: "start" | "status" | "cancel" | "clear" | "settings" - Occlusion: "start" | "status" | "clear"
Actions:
| Target | Action | Purpose | Example |
|---|---|---|---|
| lighting | start | Begin async lighting bake | bake("lighting") or bake("lighting", action="start") |
| lighting | status | Poll bake progress | bake("lighting", action="status") |
| lighting | cancel | Cancel running bake | bake("lighting", action="cancel") |
| lighting | clear | Clear all lightmaps | bake("lighting", action="clear") |
| lighting | settings | Get bake settings (mode, resolution, bounces, etc.) | bake("lighting", action="settings") |
| occlusion | start | Synchronous occlusion bake (blocks until done) | bake("occlusion") or bake("occlusion", action="start") |
| occlusion | status | Check bake status and data size | bake("occlusion", action="status") |
| occlusion | clear | Clear occlusion data | bake("occlusion", action="clear") |
Example:
# Start async lighting bake (fire-and-forget)
await bake("lighting")
# Poll lighting status
status = await bake("lighting", action="status")
# Returns: "status:baking\nprogress:0.45" or "status:idle"
# Get lighting bake settings
settings = await bake("lighting", action="settings")
# Cancel if needed
await bake("lighting", action="cancel")
# Synchronous occlusion bake (waits until complete)
result = await bake("occlusion")
# Check occlusion status
status = await bake("occlusion", action="status")
# Returns: status (running|idle), baked (true|false), bytes (data size)
# Clear occlusion data
await bake("occlusion", action="clear")
render_analyze¶
Rendering analysis and optimization audit: draw calls, batching, materials, shaders, lights, and frame debug data.
Parameters: - action (string) — Analysis type: "stats" | "materials" | "shaders" | "lights" | "batching" | "overdraw" | "audit" | "compare" | "frame_debug" | "shadow_audit" | "probe_audit" | "light_optimize" - path (string, optional) — Subtree root for analysis (default: whole scene) - detail (string, default="brief") — "brief" | "full" - baseline_id (string, optional) — Baseline snapshot ID for compare action - max_events (int, optional) — Max frame debug events to fetch (for frame_debug action)
Actions:
| Action | Purpose | Example |
|---|---|---|
| stats | Draw calls, batches, triangles, vertices, set-pass (from UnityStats) | render_analyze("stats") |
| materials | List all materials in scene | render_analyze("materials", detail="full") |
| shaders | List all shaders and variants in use | render_analyze("shaders") |
| lights | Analyze light count, types, shadows, culling | render_analyze("lights") |
| batching | SRP Batcher, static/dynamic/GPU instancing analysis | render_analyze("batching") |
| overdraw | Overdraw heat map and problem areas | render_analyze("overdraw", path="Canvas") |
| audit | Full rendering health check (all sections, brief) | render_analyze("audit") |
| compare | Diff against last baseline snapshot | render_analyze("compare", baseline_id="snap_2024_01_15") |
| frame_debug | Per-draw-call data (pauses rendering briefly) | render_analyze("frame_debug", max_events=100) |
| shadow_audit | Shadow map usage and cascade analysis | render_analyze("shadow_audit") |
| probe_audit | Light probe density and coverage | render_analyze("probe_audit", path="GameArea") |
| light_optimize | Optimization suggestions (lights, baking, LOD) | render_analyze("light_optimize") |
Example:
# Quick rendering stats (draw calls, batches, triangles)
stats = await render_analyze("stats")
# Audit materials in scene
materials = await render_analyze("materials", detail="brief")
# Full shader analysis
shaders = await render_analyze("shaders", detail="full")
# Check light count and shadow settings
lights = await render_analyze("lights")
# Analyze batching efficiency (SRP Batcher, instancing)
batching = await render_analyze("batching")
# Detect overdraw problem areas
overdraw = await render_analyze("overdraw")
# Full rendering health check
audit = await render_analyze("audit", detail="full")
# Per-draw-call frame debug (pauses rendering)
frame_data = await render_analyze("frame_debug", max_events=50)
# Shadow map usage
shadow_info = await render_analyze("shadow_audit")
# Light probe coverage (in a specific area)
probes = await render_analyze("probe_audit", path="Player/CameraArea")
# Get optimization recommendations
recommendations = await render_analyze("light_optimize")
# Analyze subtree rendering
subtree_stats = await render_analyze("stats", path="UI/HUD")
material_audit¶
Scene-wide material and texture audit. Finds duplicates, compression issues, and optimization opportunities.
Parameters: - action (string, default="summary") — "summary" | "materials" | "textures" | "duplicates" | "compression" | "recommendations" - platform (string, optional) — "Android" | "iOS" | "Standalone" | "Default" (for compression check)
Actions:
| Action | Purpose | Example |
|---|---|---|
| summary | Overview of all materials/textures | material_audit("summary") |
| materials | List all materials in scene | material_audit("materials") |
| textures | List all textures in scene | material_audit("textures") |
| duplicates | Find duplicate materials | material_audit("duplicates") |
| compression | Check texture compression settings | material_audit("compression", platform="Android") |
| recommendations | Optimization suggestions | material_audit("recommendations") |
Example:
# Quick overview
summary = await material_audit()
# Check for duplicate materials
dupes = await material_audit("duplicates")
# Platform-specific compression audit
issues = await material_audit("compression", platform="Android")
# Get optimization recommendations
recs = await material_audit("recommendations")
shader¶
Manage shaders and their properties. See Shader Tools for the complete reference.
references¶
Find, search, and remap asset references (standalone MCP tool, also batchable).
Parameters: - action (string) — "get" | "find_to" | "remap" - path (string) — Asset path to analyze - children (bool, default=false) — Include child objects - depth (int, default=1) — Recursion depth - source (string, optional) — Source asset for remap - target (string, optional) — Target asset for remap / reverse search target - mappings (string, optional) — Bulk remap mappings (for remap action)
Actions:
| Action | Purpose | Required Params | Example |
|---|---|---|---|
| get | Outgoing references from asset | path | references("get", path="Assets/Prefabs/Player.prefab") |
| find_to | Reverse search — who references this asset | path | references("find_to", path="Assets/Materials/Shared.mat") |
| remap | Remap references from source to target | path, source, target OR mappings | references("remap", path="Assets/Scene.unity", source="Assets/Old.mat", target="Assets/New.mat") |
Example:
# Outgoing references from a prefab
refs = await references("get", path="Assets/Prefabs/Player.prefab")
# Who references this material?
users = await references("find_to", path="Assets/Materials/Shared.mat")
# Remap a reference
await references("remap", path="Assets/Scene.unity", source="Assets/Old.mat", target="Assets/New.mat")
# Deep scan with children
refs = await references("get", path="Assets/Prefabs/Player.prefab", children=True, depth=3)
Common Patterns¶
| Task | Tools | Example |
|---|---|---|
| Create material + assign | material("create") + material("copy") | await material("create", path="Assets/New.mat", shader="Standard"); await material("copy", source="Assets/New.mat", targets="Player") |
| Save scene instance as prefab | prefab("save") | await prefab("save", path="Player", asset_path="Assets/Prefabs/Player.prefab") |
| Edit prefab without unpacking | prefab("edit") | await prefab("edit", asset_path="Assets/Prefabs/Player.prefab", component="Health", prop="maxHp", value="200") |
| Create variant | prefab("create_variant") | await prefab("create_variant", base_path="Assets/Enemy.prefab", variant_path="Assets/Variants/EnemyFast.prefab") |
| Organize assets | asset("move") + asset("create") | await asset("create", type="Folder", path="Assets/Materials"); await asset("move", source="Assets/Old.mat", dest="Assets/Materials/Old.mat") |
| Export for sharing | asset("export_package") | await asset("export_package", path="Assets/MyFeature", output="/tmp/export.unitypackage") |
| Bake and verify | bake("lighting") + bake("lighting", action="status") | Start bake, poll status until idle |
| Rendering audit | render_analyze("audit") | result = await render_analyze("audit", detail="full") → full health check |
| Build player | build("build") | await build("build", target="iOS", path="Builds/iOS") |
| Manage packages | package("add") + package("remove") | await package("add", name="com.unity.textmeshpro", version="3.0.6") |
See also: Batch for combining asset operations, Objects for scene-instance material assignment.