Avatar gesture/expression tools the embodied ("形象") companion calls to emote
— drive a VRM/3D body's gestures and facial expression. These are offered on
EVERY embed (like the host verbs) so the companion can express itself without
each third party re-declaring them, and — crucially — so the SDK can register
a no-op handler for them on the ElevenLabs Convai path, where the shared agent
is pre-configured to call play_gesture / play_expression regardless of what the
embed declares. An integrator that actually renders an avatar opts in by
declaring (or handling) the same tool name and the SDK routes the call to them;
otherwise it answers with a silent no-op success (see invokeVoiceTool / emit),
so a pure audio or 2D embed can ignore avatars entirely and the companion's
emote calls never error. Enum values mirror the canonical GESTURE_CATEGORIES /
EXPRESSION_INTENTS the avatar runtime understands (kept inline so the SDK stays
self-contained).
Avatar gesture/expression tools the embodied ("形象") companion calls to emote — drive a VRM/3D body's gestures and facial expression. These are offered on EVERY embed (like the host verbs) so the companion can express itself without each third party re-declaring them, and — crucially — so the SDK can register a no-op handler for them on the ElevenLabs Convai path, where the shared agent is pre-configured to call play_gesture / play_expression regardless of what the embed declares. An integrator that actually renders an avatar opts in by declaring (or handling) the same tool name and the SDK routes the call to them; otherwise it answers with a silent no-op success (see invokeVoiceTool / emit), so a pure audio or 2D embed can ignore avatars entirely and the companion's emote calls never error. Enum values mirror the canonical GESTURE_CATEGORIES / EXPRESSION_INTENTS the avatar runtime understands (kept inline so the SDK stays self-contained).