Skip to main content
Glama
newsbubbles

ismail: agent DAW (MCP server)

Stage Face

stage_face

Synchronizes a voice recording's lip movements to a person's mouth at a chosen song time, generating mouth-shape tracks for lip sync in a text-driven DAW scene.

Instructions

Put a stretch of a voice recording on a person's mouth at a song time (lip sync): the mouth moves with the words while the song plays, on the take, Follow or rest pose the person shows, and in captures. The voice: audio= a recording (a sung vocal stem is best; wav, or webm/ogg with ffmpeg), or take= a take id (its own mic audio and the words said in it). start/end: the stretch, seconds on the recording's clock; at: the song second where start plays. words: [{word, start, end}] on the recording's clock (or a JSON file of them) shape the mouth per sound (closed lips on M B P, a pucker on OO); transcribe=True asks the speech server for them; with none, the jaw follows loudness only. engine: 'auto' uses Rhubarb Lip Sync when it is on this machine (it hears the mouth shapes in the voice itself, any language, singing too), else the words; 'rhubarb_english' its slower English recognizer guided by the words; 'words' the words only. The track is saved in /faces/ and listed in world.json faces (person -> [{file, at}]); a new track replaces the person's tracks it overlaps. The person's body needs mouth shapes (mhx export with morphs="mouth"); the page says face_unsupported when it has none. clear=True removes the person's tracks (file= only that one; the files stay). Replies with the track as text: a mouth shape letter and a jaw digit per 0.1 s (A closed, B teeth, C open, D wide, E round, F pucker, G lip under teeth, H L-tongue, X rest).

Input Schema

NameRequiredDescriptionDefault
atNo
endNo
fileNo
takeNo
audioNo
clearNo
sceneYes
startNo
wordsNo
engineNoauto
personYes
scenesNo
transcribeNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.4.0

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does: it discloses where output is written (<scene>/faces/ and world.json faces), that a new track replaces overlapping tracks of the same person, that clear=True deletes tracks but leaves files, and the prerequisite that the body needs mouth morphs (mhx export with morphs="mouth") with a face_unsupported signal otherwise. Mutation side effects, prerequisites and the reply format are all covered.

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?

The purpose is front-loaded and every clause carries information — no filler sentences. It is, however, two dense telegraphic blocks ('The voice: audio=...', 'engine: ...') that an agent must parse linearly; a light list structure would have made it scannable at the same length.

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

Completeness4/5

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

For a 13-parameter mutation tool with engine selection, the description supplies storage location, overwrite semantics, prerequisite morphs, failure signal and even the returned mouth-shape legend, so the essentials are all present. Only the unmentioned 'scenes' parameter keeps it from being fully 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 documentation coverage is 0% across 13 params, yet the description defines the meaning and clock of start/end/at ('seconds on the recording's clock' vs 'the song second where start plays'), the shape of words, and the file/clear/transcribe behaviors. The 'scenes' parameter is never mentioned, which is the one real gap in an otherwise compensating description.

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?

Opens with a specific verb and resource plus a plain-language gloss: 'Put a stretch of a voice recording on a person's mouth at a song time (lip sync)'. It states the visible effect (mouth moves with the words, on the take/Follow/rest pose and in captures), which no sibling tool in the list does, so an agent can distinguish it immediately.

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

Usage Guidelines4/5

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

Guidance is explicit at the mode level: 'audio=' for a recording (a sung vocal stem is best) vs 'take=' for a take's own mic audio; engine='auto' prefers Rhubarb when installed, 'rhubarb_english' for the slower English recognizer, 'words' for words only. What's missing is routing against siblings — nothing says when to use stage_take_transcribe, stage_actor_play or stage_music instead — so a 4 rather than a 5.

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