Plan a music video
music_video_directorFree for the first songs each day; then 3¢ a song. Pass confirm_cents: 3 to allow the charge; with 0 it answers price_changed and charges nothing. Plans the video for a read song in plain words ("neon city at night"); nothing is rendered. It waits up to 20 s for the plan; if it is not ready the answer says poll_again: call music_video_turn(turn_id). Captions on a song are always whole lines (never word sync). Idempotency is keyed on (this token, this tool, idempotency_key).
Args:
song_id: a song already read with song_analyze.
message: what the user wants, 1-4000 chars, any language.
history: the history from the last answer (optional, max 40 turns).
music_plan: the last music_plan, to revise it.
confirm_cents: the most the user agreed to pay, in cents (3 allows the paid-song charge).
idempotency_key: unique per turn (recommended).
Returns: {ok, turn_id, status: done|running, reply, music_plan, chips:[label], dropped, history, cents} or {poll_again, next_tool}. Next: music_video_estimate, then music_video_create.
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": {
"song_id": "<song_id>",
"message": "<message>",
"confirm_cents": "<confirm_cents>"
},
"name": "music_video_director"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| history | No | The conversation so far: pass back the `history` the last answer gave you. | |
| message | Yes | ||
| song_id | Yes | A song id from song_from_library. | |
| music_plan | No | The `music_plan` from music_video_director. | |
| confirm_cents | Yes | The most the user agreed to pay, in whole cents: pass 3 to allow the 3-cent song charge; with 0 a paid song answers price_changed and charges nothing. | |
| idempotency_key | No | Any unique string (1-200 printable chars) so a retry never buys twice. |