Skip to main content
Glama

play_animation

Destructive

Play an AnimMontage on a skeletal mesh component's anim instance at a specified rate, with optional start section. Returns success, playing status, and montage length.

Instructions

Play an AnimMontage on a skeletal mesh component with UAnimInstance::Montage_Play at play_rate, then jump to start_section if playback started. Editor world unless the world param says otherwise; the component needs an anim instance. playing/success mean Montage_Play returned a length above 0.

Returns: { component_name: string, montage_path: string, montage_name: string, playing: bool, play_rate: number, montage_length: number, return_value: number, success: bool, start_section: string?, world: string, world_name: string|null, world_package: string|null, world_type: string|null, net_mode: string|null, pie_instance: number }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
worldNoOptional world selector: absent/'editor' (default) | 'pie' (ambiguous: PlayWorld, else the first PIE context) | 'server' (the PIE world with authority) | 'client' | 'pie:N' | 'game' (alias of 'pie').
play_rateNoPlayback rate multiplier (optional, default 1.0)
montage_pathYesFull asset path to the AnimMontage (e.g. '/Game/Animations/MyMontage.MyMontage')
start_sectionNoName of the section to jump to after play starts (optional)
component_nameYesObject name of the USkeletalMeshComponent, e.g. "CharacterMesh0", case-insensitive; the first actor in the world that has one with that name wins

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.2.0
    • changedInput schema / properties / component_name / description
      Previous value: -"Name of the skeletal mesh component to play animation on"New value: +"Object name of the USkeletalMeshComponent, e.g. \"CharacterMesh0\", case-insensitive; the first actor in the world that has one with that name wins"
  2. First observedv1.1.0

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag it as non-read-only, non-idempotent and destructive; the description adds genuine behavioral detail beyond that: the exact engine function invoked, the fact that start_section only applies if playback started, the precondition of an anim instance, and the precise meaning of playing/success (Montage_Play returned a length above 0). It stops short of describing failure modes (component not found, invalid montage path).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and its conditional follow-up, then the world/prerequisite caveat, then a returns block. Dense but every clause carries information; the returns enumeration is long but justified given there is no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description takes on the full burden and delivers: it documents the return shape, the precondition, the conditional section jump, the world-selection default, and the semantics of the success flags. An agent has everything needed to call and interpret it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description adds semantics the schema doesn't: play_rate is passed to Montage_Play and start_section is applied conditionally after play succeeds. World-default behavior is also stated inline, giving real value over the field descriptions alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (Play an AnimMontage on a skeletal mesh component) and even names the underlying engine call UAnimInstance::Montage_Play. The play_rate and conditional start_section jump make the scope unambiguous and clearly distinct from sibling runtime tools like stop_animation or get_active_montages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides useful context ('Editor world unless the world param says otherwise; the component needs an anim instance') but never states when to choose this over alternatives such as stop_animation, get_active_montages, or the editor-side montage tools. Usage is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools