Kursach_StealthAction/.gemini/skills/timeline-get/SKILL.md

5.2 KiB

name description metadata
timeline-get Generic read: serialize a Timeline object via ReflectorNet — the `TimelineAsset` itself, a `TrackAsset` (by name/index), or a clip's `PlayableAsset` (track + clipIndex). Pair with 'timeline-modify' to write changes back. Read-only.
generated-by
mcp-plugin-dotnet

Timeline / Get Object

Serialize a Timeline object via ReflectorNet. This is the generic escape hatch for fields not covered by the dedicated tools (e.g. an AnimationPlayableAsset's settings or a track's mixer properties).

Inputs

  • assetPath — required .playable TimelineAsset path.
  • trackName / trackIndex — when set, target a track instead of the whole asset.
  • clipIndex — when >= 0 (and a track is selected), target that clip's PlayableAsset.
  • deepSerialization — when true, recurse through nested objects.

Behavior

Resolves the target object (asset / track / clip asset), serializes it via ReflectorNet, and returns the serialized member plus the resolved type name. Read-only. Runs on the Unity main thread.

How to Call

unity-mcp-cli run-tool timeline-get --input '{
  "assetPath": "string_value",
  "trackName": "string_value",
  "trackIndex": 0,
  "clipIndex": 0,
  "deepSerialization": false
}'

For complex input (multi-line strings, code), save the JSON to a file and use:

unity-mcp-cli run-tool timeline-get --input-file args.json

Or pipe via stdin (recommended):

unity-mcp-cli run-tool timeline-get --input-file - <<'EOF'
{"param": "value"}
EOF

Troubleshooting

If unity-mcp-cli is not found, either install it globally (npm install -g unity-mcp-cli) or use npx unity-mcp-cli instead. Read the /unity-initial-setup skill for detailed installation instructions.

Input

Name Type Required Description
assetPath string Yes Assets-rooted path to the TimelineAsset (.playable).
trackName string No Optional track name to target a track instead of the asset.
trackIndex integer No Root-track index used when trackName is null and a track target is wanted (-1 = asset only).
clipIndex integer No Clip index to target that clip's PlayableAsset (-1 = the track/asset itself).
deepSerialization boolean No Performs deep serialization including nested objects. Otherwise only top-level members.

Input JSON Schema

{
  "type": "object",
  "properties": {
    "assetPath": {
      "type": "string"
    },
    "trackName": {
      "type": "string"
    },
    "trackIndex": {
      "type": "integer"
    },
    "clipIndex": {
      "type": "integer"
    },
    "deepSerialization": {
      "type": "boolean"
    }
  },
  "required": [
    "assetPath"
  ]
}

Output

Output JSON Schema

{
  "type": "object",
  "properties": {
    "result": {
      "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Timeline-TimelineGetResponse"
    }
  },
  "$defs": {
    "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
      "type": "object",
      "properties": {
        "typeName": {
          "type": "string",
          "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
        },
        "name": {
          "type": "string",
          "description": "Object name."
        },
        "value": {
          "description": "Value of the object, serialized as a non stringified JSON element. Can be null if the value is not set. Can be default value if the value is an empty object or array json."
        },
        "fields": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
            "description": "Nested field value."
          },
          "description": "Fields of the object, serialized as a list of 'SerializedMember'."
        },
        "props": {
          "type": "array",
          "items": {
            "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
            "description": "Nested property value."
          },
          "description": "Properties of the object, serialized as a list of 'SerializedMember'."
        }
      },
      "required": [
        "typeName"
      ],
      "additionalProperties": false
    },
    "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
      }
    },
    "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Timeline-TimelineGetResponse": {
      "type": "object",
      "properties": {
        "assetPath": {
          "type": "string",
          "description": "Project path of the TimelineAsset."
        },
        "targetKind": {
          "type": "string",
          "description": "Kind of the serialized target: TimelineAsset, TrackAsset, or ClipAsset."
        },
        "targetType": {
          "type": "string",
          "description": "Full type name of the serialized target."
        },
        "data": {
          "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
          "description": "Serialized target data."
        }
      }
    }
  },
  "required": [
    "result"
  ]
}