profy-creative, which is user_selectable: false and available in every conversation.
Prerequisite: a music model must be selected
The music tool does not pick a model for you. With no music model selected in the model selector, the expert receives this error verbatim and relays it:Tool parameters
The expert calls themusic tool, which has exactly one action, generate:
Note that default: supplying lyrics without saying you want vocals usually returns an instrumental. Say “sing it” or “with vocals” explicitly so the expert flips the parameter to
false.
How to describe what you want
Say it in the conversation. One sentence covering style, purpose, and length gets you furthest:1
Style and genre
Pop, rock, classical, electronic, jazz, folk, hip hop, R&B — blends are fine (“classical with electronic elements”). Naming a specific reference track beats any adjective.
2
Mood
Upbeat, melancholic, tense, relaxed, romantic, mysterious, triumphant.
3
Tempo
Slow / mid / fast, or give a BPM (“around 120 BPM”).
4
Instruments and vocals
Lead instruments — and whether you want vocals. Leave this out and you get an instrumental.
What happens while it runs
Generation is asynchronous. The expert submits the job and waits; a progress card appears in the conversation.
That last rule is worth explaining: a slow failure is usually a provider-side timeout, and retrying costs another wait of the same magnitude — easily burning the whole 600-second budget for nothing. Slow failures return immediately so you can decide whether to switch models or rewrite the prompt.
A progress bar parked at 95% is normal. That is the cap on the estimate curve, not a signal that the job is nearly done.
Running in the background
You can send the job to the background while it waits. The expert immediately moves on, and the music is delivered when ready. This path rides the Redis channelagent:detach:{session_id} and is not available on desktop (no local Redis) — on desktop you wait.
Failures and what to do
Relationship to Movie
When the Movie plugin scores a video, it calls this samemusic tool with the same parameters and the same billing. The only difference is that the prompt is composed by the expert from the footage. You can still interject during scoring (“make the chorus punchier”, “fade out at the end”) and the expert regenerates with the new constraint.
Billing
The billing unit is decided by the model’s pricing configuration in the admin backend, not by the tool. What the tool reports is only a hint:DB pricing config is the single source of truth for pricingUnit.In practice it lands on either
per_call (flat per generation) or duration_second (by output length). The difference that matters: under per_call, 30 seconds and 2 minutes cost the same; under duration_second they do not. When in doubt, generate something short first and check the charge.
Both algorithms themselves are fixed — see Billing formulas. Failed generations are not billed (usage is only reported for non-failed results).
At most 100 creative usage events are settled per conversation stream. Normal use is nowhere near this ceiling; bulk generation scripts should keep it in mind.
Keep reading
Video generation
Same async pipeline, stricter parameter validation
Image generation
Batch and reference-image support
Billing formulas
Complete algorithms for all five billing units
Tool catalog
Full parameters for every tool

