update_groups

shallow

io.clueso/video · Verify this server

Transform, keyframe, rename, nest or lock GROUPS. A group moves, scales, rotates and fades as ONE unit, without touching any child's stored position — which is how you get a camera push instead of building the target layout twice and crossfading it. Address by `group_id`, never by name. Ids come from get_clip, or from the `group_id` that add_elements/update_elements hands back when you pass `group`. An unknown id is an error, never a silent create. There is no add_groups: a group is CREATED by putting elements in one — `add_elements(group: "hero-card")` — which also returns its id. That is not a shortcut; a group's pivot comes from its children's bounding box, so an empty group has no geometry to transform. The shortest path, in one script: const clip = get_clip({ project_id, clip_index: 2, select: ["groups"] }); const byName = new Map(clip.groups.map(g => [g.name, g.id])); update_groups({ project_id, items: [{ clip_index: 2, group_id: byName.get("hero-card"), anchor_px: [960, 540], keyframes: [ { timestamp: 0, scaleX: 1, scaleY: 1 }, { timestamp: 1.2, scaleX: 2.4, scaleY: 2.4, offsetX: -400, offsetY: -120, interpolation: "easeOut" }, ], }]}); Units are canvas pixels, as everywhere else: `offset_px`, `blur_px` and `anchor_px` are pixels; `scale` is a multiplier; `rotation`/`rotate` are degrees; `opacity` is 0-100. `anchor_px` is the pivot everything rotates and scales about. Give it as a point on the canvas — the server converts it to a fraction of the group's child bounding box and reports back both that fraction and the box, so you can check it. Default is the box's centre. Set it when you want a push that favours one corner. Only fields you pass are changed. `keyframes: []` CLEARS every track; omitting `keyframes` leaves them alone; a non-empty list replaces only the properties it names. `parent_group_id: ""` moves a group to the clip root; omitting it leaves the parent alone. Keyframable: offsetX, offsetY, scaleX, scaleY, rotation, rotateX, rotateY, opacity, blur. Position, size and colour belong to elements, not groups. Concurrency: clip-scoped (a group edit can add or re-parent nodes in its clip). Serialize against other mutations on the SAME clip; different clips and different projects run in parallel freely.

100.0/100

1 trials · measured 33 days ago

update_groups scores 100.0/100 on Vouch's measured behaviour index, from 1 real invocation trials against io.clueso/video, measured 16 Sept 2026 under methodology v0.2.0. Every measured component scored 100.

Component breakdown

ComponentWeightValue
Reliability35%not applicable
Schema integrity25%100.0
Failure behaviour15%not applicable
Latency15%not applicable
Concurrency10%not applicable

Tool details

Transport
remote
Credential class
gated
Category
Content & media
Input schema
not declared
Output schema
not declared
Side-effect classification
unclassified

Score history

DayScoreTierMethodology
2026-09-16100.0shallowv0.2.0

Probe evidence

ProbeOutcomes
schema_integritypass: 1

Raw request/response logs are not archived yet — the outcome counts above are drawn directly from every recorded trial.

Embed this score

Available for every tool, scored or not — not a verification perk. Always links back to this page.

Vouch score: update_groups
[![Vouch score](https://vouch.tools/api/tools/4e7d201b-cdbc-4e33-9605-1f78cda5a00a/badge.svg)](https://vouch.tools/tools/4e7d201b-cdbc-4e33-9605-1f78cda5a00a)
update_groups — Vouch