Skip to main content
Glama

anim_keys_set

Sets keyframes for a Daz Studio node by defining poses at specific frames, letting Daz interpolate between them and extending the scene range to the last key.

Instructions

Sets keyframes. Each key pose says what a node looks like at one frame; Daz fills in the frames between. Rotations are the same dials as pose_bones (degrees). The scene range grows to the last key.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "node": "<node>"
    },
    "name": "anim_keys_set"
  }
}

Input Schema

NameRequiredDescriptionDefault
keysNoKey poses, one per frame: bone rotations, hip translation, the node's own transform, dials.
nodeYesLabel of a figure, prop, camera or light.
tracksNoAdvanced: the tracks format anim_keys_get returns ({bones: {bone: {rotation: [[frame, x, y, z], ...]}}, node: {...}, morphs: {...}}).
replaceNo[first, last] frame: first delete the old keys there on every channel that gets keys.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.4.0

TDQS

A3.6/5.0
Behavior3/5

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

Annotations declare a non-read-only, non-destructive, closed-world mutation, so the safety profile is largely covered. The description adds one genuinely useful side effect beyond the annotations, 'The scene range grows to the last key,' which an agent would not otherwise know. However, it does not disclose what happens to keys already at a frame (overwrite versus additive) or that the replace parameter deletes keys, leaving the most consequential behavior to the schema.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action, then the conceptual model, then the side effect. No filler, no restatement of the tool name, and the units clarification sits next to the concept it modifies.

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

Completeness3/5

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

For a nested keyframe-writing tool with five optional channels per key and no output schema, the description covers the mental model and the scene-range side effect but omits return behavior, overwrite semantics, and any prerequisite about the node being animatable. Adequate, not complete.

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 coverage is 100%, so the baseline is 3, and the description earns more by explaining the concept the schema cannot: a key pose is a snapshot of a node at one frame with Daz interpolating between. It also clarifies that rotations are expressed in degrees and match the pose_bones dials, which resolves ambiguity between the radian-free rotation array and bone rotations. The tracks and replace parameters are left to the schema.

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

Purpose4/5

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

The description opens with a concrete verb and resource, 'Sets keyframes', and immediately explains the model: 'Each key pose says what a node looks like at one frame; Daz fills in the frames between.' It also anchors the rotation convention to a named sibling ('the same dials as pose_bones (degrees)'), so an agent can distinguish this from pose-time tools. It stops short of naming the closest competing tools such as anim_key_pose or anim_keys_get.

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?

Usage is only implied: the agent can infer this is the tool for writing animation keys, and the tracks parameter points back at anim_keys_get's return format. But there is no explicit when-to-use statement, no guidance on when to prefer anim_key_pose or anim_preset_apply, and no mention of when not to call it (e.g. when the node is not animatable).

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