Kinetune
Server Details
Lyric videos, music videos and Spotify Canvas loops from your songs, quoted in credits first.
- Status
- Healthy
- Uptime
- 96.8% over 31 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- Kinetune
- Claude
- –
TDQS
Scored across 87 tools
Most tools map to a distinct resource+action, but there are parrallel overlapping pairs: list_songs vs show_songs, list_videos vs show_video, list_looks vs show_looks, get_video vs wait_for_video, and get_music_video_plan vs list_music_video_drafts require reading long descriptions to tell apart. The word "Look" means two different things (a lyric-video design vs a music video Look), so get_music_video_look, list_music_video_looks, save_music_video_look and list_looks sit in a genuinely murky cluster. render_music_video_lookbook / redesign_music_video_lookbook / redraw_music_video_lookbook_piece are near-identical verb triplets.
Names are overwhelmingly snake_case with a verb-first pattern (create_/get_/list_/quote_/delete_/archive_/set_/rename_). Minor deviations exist: design_music_video_shoot and swap_music_video_place read as verb+object+object, and update_music_video_lookbook actually toggles a save flag rather than updating the resource. The parallel *_music_video_* family is long but predictable.
87 tools is far past the 25+ threshold and hard for an agent to hold in working context, even though the domain (artists, songs, kit, characters, Looks, videos, community ideas, billing) is genuinely broad. Many near-duplicate flows (three quote_*, three create_*, three show_*, four lookbook/look mutations) inflate the surface beyond what is needed. Splitting into sub-servers by area would help considerably.
Coverage is unusually deep: full lifecycle for artists, songs, lyrics, kit pieces, characters/face checks, Looks, plans, lookbooks, videos and community ideas, plus quotes, sharing, retries and billing/account introspection. Gaps are minor: archive has no unarchive/restore counterpart, and some flows (purchasing credits/plan, downloading in bulk) are only reachable through URLs returned by other tools.
Available Tools
87 toolsadd_kit_pieceAdd a kit pieceAInspect
An outfit, place or prop from an image, a link or a stock photo, cropped The kit is what a music video is made from besides the artist’s character: outfits, places and props. Each is in one artist’s kit (owner_artist_id, a project in a Creator workspace; an outfit’s is its artist_id) and serves their songs; shared true offers it to every other artist’s songs too (owner_name says whose it is). Each has a name and an @handle unique in the workspace; a music video brief (direction) that mentions @handle uses that piece exactly as it is, and the director designs the rest. An outfit needs artist_id (its artist's kit); a place or prop goes in owner_artist_id's kit (left out: the workspace's only artist, else its first, shared). shared true offers it to every other artist's songs too (default false). The image is an upload or file_url (JPEG, PNG or WebP, at least 512 px on its short side, up to 15 MB, with rights_confirmed) or a stock_id from search_stock (credited, no rights needed). crop keeps a rectangle of it (fractions; at least 256 px on its short side), for a prop cut out of a bigger photo. handle follows the name (Blue set → blue-set; -2 when taken) unless given. Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | The rectangle to keep, in fractions of the image: {"x","y","w","h"}; the whole image when omitted | |
| kind | Yes | outfit (an artist’s), place or prop | |
| name | Yes | What it is called, e.g. Blue set | |
| handle | No | Its @handle (default: from the name) | |
| shared | No | Offer it to every other artist’s songs too (default false) | |
| file_url | No | A public https URL of the image (or upload a file with the CLI) | |
| stock_id | No | A stock photo id from search_stock instead of an image | |
| artist_id | No | The artist an outfit belongs to (outfits only) | |
| description | No | What it is, for the director (a stock photo’s caption by default) | |
| owner_artist_id | No | A place or prop: the artist whose kit it goes in (a project in a Creator workspace) | |
| rights_confirmed | No | You have the rights to use the image (needed for an upload or file_url) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only say non-read-only, non-destructive, open-world, non-idempotent. It discloses real operational behavior: handle auto-derivation from the name with a '-2' suffix when taken, workspace-wide handle uniqueness, shared defaulting to false, handle-level implications for music video briefs, and image validation bounds (JPEG/PNG/WebP, 512 px short side, 15 MB, rights_confirmed). It also surfaces two failure modes with their codes and remediation – 402 plan_required and 402 storage_full, both checkable via get_account.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and mostly earns its place given 11 parameters and nested crop semantics, but the structure is poor: it opens mid-sentence with an object fragment instead of the action, and reads as one undifferentiated block. The shared/owner_name rule is stated twice in near-identical wording ('shared true offers it to every other artist's songs too (default false)' appears in both the second and fifth sentences), which is pure waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, nested-object create with no output schema, the description covers the pieces an agent would otherwise get wrong: which id goes where, the source fork, the crop rationale, and both precondition failures with error codes and where to check them. The notable gap is the return value – with no output schema, the agent is not told what a successful call yields (presumably the piece and its generated handle), which matters here because the handle is auto-derived.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, and the description does add genuine meaning on top: the default resolution rule for owner_artist_id, the artist_id-is-outfits-only rule, where stock_id comes from, and the crop fraction semantics for cut-outs. However, it says nothing about the description parameter, the shared-vs-owner_name interaction is only partly explained, and several parameters (name length, handle pattern, crop minimums) are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely (an outfit, place or prop in an artist's kit) and explains the kit/artist/song relationship, which an agent cannot get from the schema alone. It is weakened only by the opening fragment 'An outfit, place or prop from an image, a link or a stock photo, cropped' – no verb is stated, so the agent must infer 'add' from the name/title rather than the prose. It does implicitly separate itself from search_stock (source of stock_id) and get_account (plan/storage preconditions).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong conditional guidance: outfit → artist_id, place/prop → owner_artist_id with a stated fallback chain (workspace's only artist, else first, shared), and an explicit source decision between an upload/file_url and a stock_id from search_stock (credited, no rights needed). It also states the crop use case ('for a prop cut out of a bigger photo'), which tells the agent when that parameter matters. It never contrasts with the obvious siblings update_kit_piece, delete_kit_piece or get_kit_piece, and gives no when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_artistArchive an artistADestructiveIdempotentInspect
Remove an artist that has no songs Refused (409) while the artist still has songs.
| Name | Required | Description | Default |
|---|---|---|---|
| artist_id | Yes | The artist id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered; the description adds the useful behavior that the server returns 409 Refused when songs still exist. It does not say whether archived artists/associated photos and kit pieces are retained or restorable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the action, but the sentence is grammatically tangled ("has no songs Refused (409) while the artist still has songs"), forcing the reader to reconstruct the precondition and the error condition from fragments.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations covering idempotency and destructiveness, the description supplies the missing pieces: the song-count precondition and the 409 outcome. Only the post-archive state of the artist and related assets is left unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage, so the schema carries the burden and baseline 3 applies. The description adds nothing about artist_id format or where to obtain it (e.g., from list_artists).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Remove an artist") and scopes it to artists that have no songs, which separates it from create_artist/rename_artist/get_artist. It doesn't distinguish itself from any delete-style sibling, and "Remove" reads slightly at odds with the archive_artist name, but the operation is recognizable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly gives the precondition for calling it — the artist must have no songs — which is the key usage gate for an agent. No alternatives are named and reversibility/restore paths are not mentioned, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
archive_songArchive a songBDestructiveIdempotentInspect
Remove a song (its videos stay)
| Name | Required | Description | Default |
|---|---|---|---|
| song_id | Yes | The song id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered structurally. The description adds genuine value by disclosing the side effect that videos are retained, but says nothing about reversibility or effect on other linked resources (analyses, canvases).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with zero filler, and the most decision-relevant detail (videos stay) is included up front. It is terse rather than padded, though the parenthetical is slightly informal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool whose annotations already flag destructiveness and idempotency, the description covers the key side effect. However, it never clarifies what 'archive' means relative to deletion or whether the action can be undone, which an agent handling a destructive tool would benefit from.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single song_id parameter, so the schema already carries the documentation burden. The description adds no format or lookup hints for the id, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (remove/archive) and resource (song), and the parenthetical clarifies the scope of removal. It does not reference the sibling archive_artist or distinguish itself from delete_video, so the differentiation gap keeps it from a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to archive versus when to delete or otherwise act, and no alternatives or preconditions are named. The agent must infer usage entirely from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_videoCancel a videoADestructiveIdempotentInspect
Stop a queued or processing video (credits released)
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | The video id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive=true, idempotent=true, and readOnly=false, so the safety profile is covered. The description adds a genuine behavioral consequence beyond that: '(credits released)', telling the agent the cost side-effect of cancelling. It does not cover error behavior for already-finished videos.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single tight sentence that front-loads the action and appends the side effect in parentheses. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter cancel operation, annotations cover the safety profile and the description adds the credit-release consequence. With no output schema, an agent still lacks guidance on what happens if the video is already complete or how success is reported, but the coverage is solid for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single video_id parameter, so the schema already carries the parameter meaning. The description adds nothing about the id format or constraints, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Stop a ... video') and scopes it to 'queued or processing' work, which distinguishes it from other video tools. It does not name sibling alternatives like delete_video or retry_video, so an agent must infer the boundary itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'queued or processing' implicitly tells when the tool applies (only in-flight jobs), which is useful state guidance. However, there is no explicit when-not guidance and no mention of related siblings such as delete_video or retry_video, so the routing decision is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_song_lyricsRemove a song’s lyricsBDestructiveIdempotentInspect
Go back to the transcribed words Videos made from then on show the words as transcribed.
| Name | Required | Description | Default |
|---|---|---|---|
| song_id | Yes | The song id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The description adds genuinely useful behavioral context that annotations cannot express: future videos will render with the auto-transcribed words. It stops short of stating whether the removed lyrics are recoverable or what precondition (an existing custom lyric set) is required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Only two short sentences, so there is no padding, but the second sentence is grammatically broken and reads as a run-on, which hurts front-loading and scanning. Brevity is not the issue; legibility is.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with no output schema and annotations covering the destructive profile, the description is close to sufficient. However, for a destructive revert it omits whether the change is reversible and what state the song must be in, which are the two things an agent most needs before invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter (song_id) at 100% schema coverage, so the schema fully documents it. The description never references song_id or clarify that it targets one song's lyric set, so it adds nothing beyond the schema, capping this at the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'Remove a song's lyrics' supplies a specific verb and resource, and the description explains the resulting state ('go back to the transcribed words'). The garbled phrasing ('Videos made from then on show the words as transcribed') weakens it, but an agent can still tell this clears custom lyrics rather than editing them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of the obvious counterpart sibling, set_song_lyrics, which is the tool to call for the opposite operation. The agent must infer that this is the revert/undo path from the title alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_artistCreate an artistAInspect
Add an artist by name Names are unique per organization (409 when taken). An artist workspace holds one artist: a second one is refused (409) until the workspace becomes a label (update_organization). Works without a plan, so onboarding can add the artist first.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The artist name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false); the description adds three concrete behavioral facts beyond them: name uniqueness per organization returning 409, a second artist in a workspace being refused with 409, and operation without a plan. That is exactly the kind of failure-mode disclosure an agent needs before calling a create tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each carrying distinct information, with the identity of the tool front-loaded. Minor flaw: the first two sentences run together without punctuation ('by name Names are unique'), which slightly hurts scanability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation with no output schema, the description covers the identity, the error conditions, and the plan-independence. It does not indicate what comes back on success (the created artist/id), which an agent may need for follow-up calls like set_artist_picture — the only real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter carries min/max length, so the baseline is 3. The description earns above baseline by attaching the real semantic constraint to the name — uniqueness per organization — which the schema does not express.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Add an artist by name') and immediately characterizes the domain constraints (unique per organization, one artist per workspace). An agent can distinguish this from create_organization or add_artist_photos without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when this is the right call: it works without a plan so onboarding can add the artist first, and it names update_organization as the path once a workspace must become a label. It stops short of explicitly naming a sibling alternative for the create case (e.g. list_artists to pre-check for a duplicate).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_canvasCreate a CanvasAIdempotentInspect
Make the Canvas a quote priced (spends credits) Send the same request as the quote plus its quote_id. Returns the video ids at once; poll get_video until status is completed. Upload the file in Spotify for Artists. Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Optional visual style | |
| source | No | ai-video (default), ai-image, stock-photo or stock-video | ai-video |
| quality | No | AI video model tier: standard or high | standard |
| seconds | No | Canvas length in whole seconds, 5–8 (default 8). Spotify loops it, so no part of the song is chosen | |
| song_id | Yes | The song id | |
| metadata | No | Your own JSON (an order id, for example): kept with the video and returned in its request. Quote and create with the same value | |
| quote_id | Yes | The quote_id from the matching quote: the request must be identical | |
| stock_id | No | With a stock source: the stock photo or video (search_stock with seconds) to use instead of the director's pick | |
| direction | No | Optional mood, motifs or references | |
| performer | No | A Creator workspace only: the character (list_characters with for_artist_id: one in the song's project's kit or one another project shared) who may appear, with feature_artist auto or always on an AI source. Omitted: the song's artist's character | |
| resolution | No | 1080p (1080×1920) or 720p | 1080p |
| variations | No | 1–4 different Canvases | |
| inspiration | No | Where the idea comes from: cover (default; the cover art's world, colors and motifs, brought to life) or song (its words, story and sound lead, the colors kept close to the cover so the two sit together in the player) | cover |
| callback_url | No | An https URL to POST the finished video to (signed; see Callbacks). Quote and create with the same value | |
| feature_artist | No | Whether the Canvas shows the artist: auto (the director decides), always or never (AI sources; "always" needs the artist's character: list_characters, start_character makes one) | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses credit spend, async job behavior with the exact polling target, the external upload step in Spotify for Artists, and the two concrete failure modes (402 plan_required, 402 storage_full) with the fields to check first. It does not reconcile idempotentHint=true with a credit-spending create, so the duplicate-call cost behavior remains unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense with useful facts and short, but written as disconnected fragments with a garbled lead sentence, so the most important idea (this operation spends credits) is obscured rather than front-loaded. No padding, but poor readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter, 100%-documented create tool with no output schema, it covers the essentials an agent needs: prerequisites, billing, the async return-and-poll pattern, and post-creation upload. Gaps remain around idempotency/duplicate submission and how variations affect cost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 mainly reinforces quote_id ('same request as the quote'). The one genuine addition is the cross-parameter identity constraint between quote and create, but it doesn't mention any of the 15 parameters by name beyond quote_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (create the Canvas, priced via a quote, spending credits) and describes the async outcome (video ids returned, poll get_video). The opening fragment 'Make the Canvas a quote priced' is grammatically broken, and it never explicitly distinguishes itself from create_music_video or create_lyric_video, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Makes the quote-first flow explicit ('Send the same request as the quote plus its quote_id') and names the follow-up tools to use: get_video for polling and get_account for plan/storage prechecks. It does not name quote_canvas directly or say when to choose a Canvas over a music video, so the alternative routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_lyric_videoCreate a lyric videoAIdempotentInspect
Make the lyric video a quote priced (spends credits) Send the same request as the quote plus its quote_id. Returns the video ids at once; poll get_video until status is completed (or failed). Each video has one file per format. Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| look | Yes | {"mode":"existing","id":"look_…"} to reuse a saved Look (add "lyric_style" to render it in another lyric style, at no extra cost), or {"mode":"new","category":"…","lyric_style":"…","background":{"source":"ai-image","quality":"high"},"visibility":"private","direction":"…"} to have one designed (any category takes any background.source, "designed" being a free moving gradient the director draws; background.source "upload-photo"/"upload-video" with background.upload_id from upload_background designs it around your own media; such a Look stays private. "stock-photo"/"stock-video" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references "stock" (AI image or AI video, default "none") with feature_artist "always" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist "always" (default "never") makes them the subject of the background, recognizable from their character (list_characters; start_character makes one); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false | |
| trim | No | Render only this section of the song (at least 8 seconds). Best: a part from get_song_analysis (parts[]: its start and end never cut a word) | |
| display | No | Which elements show (title, artist, cover, lyrics, badges, headline) and their sizes. cover must be false to show the artist in the background | |
| song_id | Yes | The song id | |
| metadata | No | Your own JSON (an order id, for example): kept with the video and returned in its request. Quote and create with the same value | |
| quote_id | Yes | The quote_id from the matching quote: the request must be identical | |
| variations | No | 1–4 different New Looks, one video each (an Existing Look renders one) | |
| callback_url | No | An https URL to POST the finished video to (signed; see Callbacks). Quote and create with the same value | |
| aspect_ratios | No | Formats to render, each its own file: "9:16" (vertical), "16:9" (wide), "1:1" (square) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, it discloses that credits are spent, that video ids are returned immediately, that polling get_video is required, and that each format produces its own file. It also documents active-plan and storage requirements with specific error codes and where to check them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence carries useful information, and it is front-loaded with purpose, billing, and the quote requirement. The opening clause is grammatically awkward and slightly slows comprehension, but there is no obvious filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 9-parameter creation tool with no output schema, it covers the essential behavior: cost, quote matching, immediate return of video ids, async polling, per-format files, plan requirements, and storage failures. Combined with the detailed input schema and annotations, an agent has enough context to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the nested schema already documents the parameters thoroughly. The description adds the important cross-parameter constraint that the request must match the quote exactly and include its quote_id, but it does not add much semantics for the other parameters beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states that this creates the lyric video from a quote and spends credits, which is a specific verb and resource. It implicitly distinguishes itself from quote_lyric_video by requiring the same request plus quote_id, though the phrasing "Make the lyric video a quote priced" is awkward.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly indicates the workflow: use the same request as the quote plus its quote_id, then poll get_video until completion. It also states plan and storage prerequisites and the corresponding 402 errors, but it does not explicitly name quote_lyric_video as the required prior step or explain when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_music_videoCreate a music videoAIdempotentInspect
Make the music video a quote priced (spends credits) Send the same request as the quote plus its quote_id. Returns the video ids at once; poll get_video until status is completed. It takes about 5 minutes for a minute of song, longer for the whole song. Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| cast | No | The performer in it, kept from their character: what they wear, outfit_kit (a kit outfit's @handle, without the @, worn in every shot they are in); left out, the director picks. Only when the performer is on screen | |
| trim | No | Perform only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). The price follows its length. Best: a part from get_song_analysis (parts[]: its start and end never cut a word) | |
| model | No | The music video model: one-take (default; MiniMax H3 Max), seedance-2-0, seedance-2-0-fast, seedance-2-0-mini or seedance-2-5. get_options lists the models offered to you with the categories, styles, formats, takes and length each makes, and guide: what each is best for, its strengths, weaknesses and public benchmark scores. When the person hasn't named a model, suggest the kind's recommended_model (get_options music_video.categories) with its best_for line and the price difference between models from quotes, and let them choose any | one-take |
| outro | No | Optional: end on a release card after the last shot, the song playing on under it (the delivered video is up to 5 seconds longer; the director designs it for the video, or look_id: a lyric video Look from list_looks whose card is used as it is). display: title, artist, cover, badges (true/false) and optional cover_scale, text_scale, artist_scale, spacing_scale. Free with the video | |
| style | No | Optional look: natural, film, golden-hour, neon-night, noir, vintage or dreamy. Omit it and the director picks one from the cover | |
| takes | No | How the shots meet: "cuts" (default: shots meet with a cut between the song's lines, like an edit) or "continuous" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws) | cuts |
| people | No | ||
| scenes | No | Where it is set besides the places the direction mentions from the kit: {"mode":"invent"} (default: the director imagines the others) or {"mode":"stock"} (it finds a real stock photo of each place it writes, empty of people, and the artist is put into it), up to the model's kit.places in all | |
| lipsync | No | "auto" (default: the director has the artist sing the important lines on camera) or "never" (nobody sings on camera; the song plays over every shot). A kind sung on camera (lyric-led) refuses "never"; an instrumental song never lip-syncs | auto |
| look_id | No | A music video Look (list_music_video_looks: one made public, or the workspace's own) the video follows: its treatment leads the director and its places and props join the kit. Send its category, style, takes and lipsync too (or your own) | |
| plan_id | No | Make the video from this plan (plan_music_video): its brief (model, kind, look, format, section…) replaces the one sent, so send song_id and plan_id; quality left out is the plan's model's default. Omitted, the director plans it while it is made | |
| quality | No | The resolution it is made at: one of the qualities get_options lists for the model (left out, the model's default_quality: 768p for MiniMax H3 Max, 720p for Seedance; a sharper one is the same video for more credits); not part of the plan, so a plan is made in any quality. get_options lists each model's qualities with about how long each takes; credits.music_video.models has a minute by model and quality | |
| song_id | Yes | The song; its artist performs the video and needs their character (list_characters; start_character makes one), unless performer names another character | |
| category | No | performance (default: sings to camera in one place), intercut (performance cut against the artist living the song's story), cinematic (a moving camera through a location), story (acts out the song's story) or surreal (the world transforms with the song). get_options lists the ones each model makes | performance |
| metadata | No | Your own JSON (an order id, for example): kept with the video and returned in its request. Quote and create with the same value | |
| quote_id | Yes | The quote_id from the matching quote: the request must be identical | |
| refinish | No | Finish a delivered music video again with another outro, or none (send song_id, refinish.video_id and outro or not; one variation): no shot is made again (its kept shots are joined again under the song), only setup and delivery are charged. Needs the video's revisable_until ahead | |
| direction | No | Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): "@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (those in the song's artist's kit and those other artists shared, list_characters with for_artist_id; the song's artist's own too when another character performs; in a story with a cast, they are the cast): "@mia-torres dances behind her in the last chorus". An unknown handle, or another artist's piece they haven't shared, answers 400 | |
| on_screen | No | Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed and there are no outfits; continuous takes join on the cast and the place | |
| performer | No | Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character in the song's project's kit or one another project shared (list_characters with for_artist_id: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places). | |
| variations | No | 1–4 different music videos | |
| lookbook_id | No | A lookbook (design_music_video_shoot) whose kept, drawn pieces the video uses like the kit pieces the direction mentions; its idea leads the director | |
| aspect_ratio | No | The one format of the file: "9:16" (default, vertical), "16:9" (wide) or "1:1" (square) | 9:16 |
| callback_url | No | An https URL to POST the finished video to (signed; see Callbacks). Quote and create with the same value | |
| design_shoot | No | Without a plan: the director first designs the shoot (the outfits, places and props the brief leaves open) and draws each as a picture every shot is given. The quote counts the most pictures it may draw; only those drawn are charged |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose non-readonly, open-world, idempotent, and non-destructive behavior. The description adds useful operational context beyond annotations: credits are spent, video ids return immediately, completion is asynchronous, and rendering takes roughly five minutes per minute of song.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and mostly front-loads the key workflow, return behavior, timing, and preconditions. The opening phrase 'Make the music video a quote priced' is awkwardly worded, but the rest is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 25-parameter asynchronous generation tool, the description covers the essential lifecycle: quote matching, credit spend, immediate video-id return, polling, timing expectations, and plan/storage prerequisites. The detailed schema carries the per-parameter semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 96%, so the input schema already documents nearly all 25 parameters in detail. The description clarifies the central quote_id rule that the request must match the quote, but otherwise does not add much parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: make a quote-priced music video. It distinguishes the operation from quote_music_video by requiring the matching quote_id, and from get_video by explaining the immediate video-id return followed by polling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear procedural guidance: send the same request as the quote plus its quote_id, then poll get_video until status is completed. It also names preconditions and failure cases, including active plan requirements, storage requirements, and which get_account fields to check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_organizationCreate an organizationAInspect
A new organization owned by you, with its own music, videos, Looks and credits Creates an empty organization (a workspace, in the app) with the signed-in person as its owner; with an API key, the member who created the key (the key needs organizations:write). type artist is for one artist (add that artist next with create_artist; its songs then need no artist_id), label for a roster. It starts with no plan and no credits: the owner chooses a plan in the app before anything can be created in it. These credentials keep acting for their current organization: to work in the new one, sign in again and pick it, or create an API key in it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The workspace name, as people see it in the app (an artist workspace usually carries the artist name) | |
| type | Yes | artist: one artist and its songs; label: a roster of artists (or a team working for them); creator: projects (artists in the API) whose performer is optional |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only say this is a non-read-only, non-destructive, non-idempotent write), the description discloses real behavioral facts: the new org starts with no plan and no credits and is unusable until the owner subscribes, and API-key calls require the organizations:write scope and act as the member who created the key. Those are non-obvious auth and post-condition details the agent could not infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Almost every sentence carries useful content, but the structure is poor: the opening is a duplicated/garbled fragment, the type guidance is packed mid-paragraph, and the credential paragraph is long and appended rather than front-loaded. It is dense rather than concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter creation tool with no output schema, the description covers the prerequisites (plan and credits), the auth requirement (organizations:write), the meaning of each type, and how to continue working in the new org. Nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents name and the type enum, meaning the baseline is 3. The description adds workflow semantics on top: choosing 'artist' implies a follow-up create_artist call and removes the need for artist_id on later songs, while 'label' means a roster — information not present in the enum description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: it creates an empty organization (workspace) owned by the signed-in person, and it spells out the three type values with their practical meaning. It is distinguishable from siblings such as create_artist, though the first sentence is a garbled fragment ('A new organization owned by you... Creates an empty organization') that briefly muddies the read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes the agent between type choices ('type artist is for one artist (add that artist next with create_artist; its songs then need no artist_id), label for a roster') and states the prerequisite that the owner must pick a plan before anything can be created. It also tells the caller what to do afterward with existing credentials (sign in again and pick it, or create an API key in it), which is exactly the when/after guidance an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_songUpload a songAInspect
Add a song: master audio and square cover art Audio: MP3, WAV or M4A up to 250 MB. Cover: a square JPEG or PNG, 1000–6000 px (3000×3000 recommended), up to 20 MB; it is kept at 1536, 640 and 160 px, not as uploaded. The song is analyzed next (lyrics, beats, sections): poll get_song until analysis.status is "ready", usually about a minute. Pass lyrics (or set them later with set_song_lyrics) to have the videos spell every word right. Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | The song title | |
| lyrics | No | Optional. The song’s lyrics as text: plain (Suno-style [Verse]/[Chorus] tags and (x2) marks are fine), or the contents of an SRT, WebVTT or LRC file. Every word is still timed from the audio: your text fixes misheard words and sets where lines break in videos, and its section tags set the song’s sections (a chorus sung once is still a chorus). A part sung again (a chorus) can be written once; lyrics that don’t match what’s sung, or cover only part of it, are refused once the song is analyzed (get_song: analysis.lyrics.status "mismatch") | |
| language | No | Lyrics language (ISO 639-1, e.g. "en"); detected when omitted | |
| artist_id | No | The artist id. An artist workspace may leave it out: its songs are its artist's | |
| audio_url | No | A public https URL of the master audio | |
| instrumental | No | Deprecated: the analysis hears whether a song has vocals (get_song: instrumental). true still skips transcription: lyric videos have no words and music videos never lip-sync (no lyrics with it). Stops working on 2027-04-30. | |
| cover_art_url | No | A public https URL of the square cover art |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Going well beyond the annotations (which only say it is a non-read-only, non-idempotent, open-world write), the description discloses the async lifecycle (analysis runs after upload, ~1 minute, must be polled), the irreversible cover-art transformation (re-encoded to 1536/640/160 px, "not as uploaded"), and the post-hoc lyrics validation that can reject the upload as a mismatch. It also names the account-level gating conditions and their HTTP status codes, which is exactly the operational context an agent needs before calling a mutating, quota-consuming tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense paragraph with the core action front-loaded and the dependency/polling guidance after it; every sentence carries operative information (limits, async flow, error codes, alternatives). The run-on punctuation around the cover-art sizes slightly hurts scanability, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutating tool with no output schema, dependent on async analysis and account quota, the description covers the full call-to-result arc: what to send, what happens to the files, how to know when it is done, which sibling to call next, and which prerequisite tools to check. Nothing an agent needs to invoke or follow up correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds constraints the schema does not carry for audio_url: accepted formats (MP3, WAV, M4A) and the 250 MB ceiling, plus the cover-art pixel and 20 MB bounds. It also explains the payoff of supplying lyrics (word-accurate videos) and points at set_song_lyrics as the deferred path, adding intent beyond the field definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first clause names a specific verb and resource ("Add a song") and immediately names the two primary inputs, master audio and square cover art. It is clearly separable from siblings like rename_song, set_song_lyrics, or create_lyric_video, which operate on an existing song rather than creating one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete follow-up routing: poll get_song until analysis.status is "ready", and pass lyrics now or use set_song_lyrics later. Preconditions and their exact failure signals are spelled out (402 plan_required / plan check via get_account, 402 storage_full / storage via get_account). It stops short of an explicit "do not use this for X, use Y instead" exclusion, which keeps it just below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_kit_pieceDelete a kit pieceBDestructiveIdempotentInspect
Remove an outfit, place or prop A plan that used it can’t be made any more: plan again.
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | The kit piece id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description nonetheless adds real context beyond them: deleting a piece invalidates any plan that referenced it, and the user must re-plan. That cascade effect is the kind of downstream impact annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very short, but two unrelated thoughts are jammed into one unpunctuated string, and the second clause is garbled ('A plan that used it can't be made any more'). The consequence information is worth keeping; the phrasing costs comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive delete with no output schema, the definition covers the resource, the destructive nature (via annotations) and the downstream plan impact. It never states whether the deletion is recoverable, which is the one gap an agent might still need.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, and the schema documents it fully ('The kit piece id', with min/max length), giving the 100%-coverage baseline of 3. The description adds nothing about id format or where to obtain a valid kit_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'Remove' plus the concrete kit-piece kinds ('outfit, place or prop') make clear exactly which resource this deletes, distinguishing it from delete_look, delete_video and delete_artist_photo. It stops short of naming a sibling explicitly, and the missing punctuation turns the sentence into a run-on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to choose this over update_kit_piece or archive_* alternatives, and no prerequisites. The closing note about plans is a consequence, not routing guidance for the call itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_lookDelete a LookADestructiveIdempotentInspect
Remove one of your Looks (videos made with it stay)
| Name | Required | Description | Default |
|---|---|---|---|
| look_id | Yes | The Look id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the safety profile is covered. The parenthetical 'videos made with it stay' adds real context the annotations cannot convey: the delete is non-cascading and dependent assets survive. It stops short of saying whether the operation is reversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with the side-effect note in parentheses where it costs least. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive tool with full annotation coverage, the description answers the two things an agent most needs: what object disappears and what survives. It omits reversibility/permission details, which is a minor gap for its size.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter, look_id, and its schema description coverage is 100%, so the schema already carries the meaning. The description adds no format, source, or validation details beyond it, matching the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Remove') with a specific resource ('Looks') and scopes it to the caller's own looks. It is easily distinguished from delete_video and the archive_* siblings, though it never names an alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use framing, no prerequisites, and no mention of alternatives such as archive_artist/archive_song or set_look_visibility. The agent must infer that this is the destructive removal path from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_music_video_lookDelete a music video LookBDestructiveIdempotentInspect
Removes the workspace's own Look (its reward goes back if it was public)
| Name | Required | Description | Default |
|---|---|---|---|
| look_id | Yes | The Look id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds real value beyond them: the Look must belong to the workspace, and a public Look's reward is returned as a side effect. It still doesn't say whether deletion is permanent or how failures are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence, front-loaded with the action and resource. The parenthetical consequence is efficiently attached rather than buried in a second paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, single-parameter tool with no output schema, the definition covers ownership scope and the reward side effect, which is a reasonable minimum. It remains silent on irreversibility and post-deletion behavior, which an agent invoking a destructive call would want to know.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single documented look_id and an explicit id pattern, so the schema carries the parameter semantics. "The workspace's own Look" implies the id must resolve to owned content, a mild addition beyond the schema, but no format or error semantics are added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Removes the workspace's own Look" gives a specific verb plus resource and adds an ownership qualifier, so the agent knows this deletes a Look rather than a Lookbook or plan. It does not explicitly say "music video Look" or distinguish itself from the sibling delete_look, so differentiation rests partly on the name and title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never states when to call this versus delete_look, delete_music_video_lookbook, or delete_music_video_plan, nor does it mention prerequisites before deletion. The "workspace's own" phrasing hints at a restriction but gives no actionable when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_music_video_lookbookDelete a lookbookADestructiveIdempotentInspect
Deletes a lookbook nothing was made from, with its pictures Only a lookbook no shot list or video was made from (those keep theirs: 409), and not while its pictures are drawn (409). Pictures already drawn are not refunded.
| Name | Required | Description | Default |
|---|---|---|---|
| lookbook_id | Yes | The lookbook id (lookbook_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructive/idempotent/non-readonly, but the description goes further: it discloses the cascade (pictures are deleted too), the non-refund of already-drawn pictures, and the two concrete 409 conditions. That is exactly the extra context annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded, but the phrasing is garbled and missing punctuation ("with its pictures Only a lookbook no shot list or video was made from"), which forces re-parsing. The parenthetical error codes are efficient, but the second sentence duplicates the first sentence's precondition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive, single-parameter delete with no output schema, the description covers preconditions, cascade behavior, and refund semantics, which is nearly everything needed. It could briefly state what a successful call returns or whether the id remains queryable, but nothing essential to a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage including a format pattern, so the schema carries all the meaning. The description adds nothing about lookbook_id beyond what the schema states; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb (deletes), resource (lookbook), and scope (only a lookbook nothing was made from), and explicitly notes what it also removes (its pictures). This separates it from sibling delete_music_video_look / delete_music_video_plan / delete_look without the agent having to open another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The two 409 preconditions (a shot list or video exists; pictures are currently being drawn) effectively tell the agent when not to call it, and implicitly route a blocked case elsewhere. It does not name the alternative tool to use when a 409 would occur, so it falls short of a full routing instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_music_video_planDelete a shot listADestructiveIdempotentInspect
Deletes a shot list no video was made from, with every draft of it Deletes the shot list with the drafts it was rewritten from and into, and their drawn frames. One a video was made from (or a delivered video's revision) stays with it: 409.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The plan id (plan_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds genuinely new information: the delete cascades to every draft the plan was rewritten from and into, plus their drawn frames, and the operation fails with a 409 when a video exists. The garbled phrasing weakens it, and it does not state whether the deletion is recoverable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is malformed and self-repeating: "with every draft of it Deletes the shot list with the drafts it was rewritten from and into" restates the same cascade twice in broken syntax. The important cascade and 409 facts are present but buried in unparseable structure rather than front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter destructive delete with annotations and no output schema, the definition covers the two things the agent most needs: what is destroyed alongside the plan, and the failure condition. Missing only recoverability and confirmation expectations, and the garbled wording makes the cascade scope harder to trust than it should be.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single required plan_id already documented with its pattern, so the schema carries the parameter burden. The description adds no syntax, format, or ID-source detail beyond what the schema supplies, which is the baseline case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("Deletes a shot list") and ties it to the plan_id resource, which distinguishes it from delete_video, delete_music_video_look, and delete_music_video_lookbook in the sibling list. It does not explicitly name those siblings, and the run-on grammar blurs the statement of scope, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A precondition is implied: the shot list must not have had a video made from it, and a 409 is returned if it did. That is a constraint rather than routing guidance; the description never says what to do instead (delete_video, cancel_video, or leaving the plan in place), so the agent must infer the alternative path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_videoDelete a videoADestructiveIdempotentInspect
Delete a finished video and its files
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | The video id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, covering the safety profile. The description adds real context by noting that associated files are also deleted (collateral scope), but omits permanence, ownership/permission requirements, and recoverability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One short sentence that front-loads the verb and resource with zero filler. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple destructive tool with no output schema and annotations that already signal destructiveness and idempotency, the description covers the essential action and its file-deletion side effect. A note about irreversibility or required permissions would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is one parameter with 100% schema description coverage, so the schema documents video_id fully. The description adds no format, source, or lookup guidance beyond the schema, matching the baseline for a fully-covered single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (delete) and resource (video) plus a scoping detail ("finished video"), which implicitly separates it from cancel_video and archive-style siblings. It is clear but does not explicitly name any alternative, so the differentiation is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word "finished" implies this only applies to completed videos, which hints at when to use it rather than cancel_video. However, no explicit when/when-not guidance or alternative tool is named, leaving the routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
design_music_video_shootDesign a music video lookbookAInspect
The director designs the outfits, places and props the brief leaves to it as pictures, before the shot list Optional, before the shot list (plan_music_video). Free to design (a limited number an hour), about a minute: returns a lookbook whose pieces are the brief's own kit pieces (yours, used as they are) and the director's designs (an outfit drawn on the artist, a place drawn empty, a prop alone), not drawn yet. price.draw.credits is what drawing them costs: tell the user, then render_music_video_lookbook after their go. Same brief as plan_music_video. Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| cast | No | The performer in it, kept from their character: what they wear, outfit_kit (a kit outfit's @handle, without the @, worn in every shot they are in); left out, the director picks. Only when the performer is on screen | |
| trim | No | Only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). Best: a part from get_song_analysis (parts[]: its start and end never cut a word) | |
| model | No | The music video model: one-take (default; MiniMax H3 Max), seedance-2-0, seedance-2-0-fast, seedance-2-0-mini or seedance-2-5. get_options lists the models offered to you with the categories, styles, formats, takes and length each makes, and guide: what each is best for, its strengths, weaknesses and public benchmark scores. When the person hasn't named a model, suggest the kind's recommended_model (get_options music_video.categories) with its best_for line and the price difference between models from quotes, and let them choose any | one-take |
| style | No | Optional look: natural, film, golden-hour, neon-night, noir, vintage or dreamy; omitted, the director picks one from the cover | |
| takes | No | How the shots meet: "cuts" (default: shots meet with a cut between the song's lines, like an edit) or "continuous" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws) | cuts |
| people | No | ||
| scenes | No | Where it is set besides the places the direction mentions from the kit: {"mode":"invent"} (default: the director imagines the others) or {"mode":"stock"} (it finds a real stock photo of each place it writes, empty of people, and the artist is put into it), up to the model's kit.places in all | |
| lipsync | No | "auto" (default: the director has the artist sing the important lines on camera) or "never" (nobody sings on camera; the song plays over every shot). A kind sung on camera (lyric-led) refuses "never"; an instrumental song never lip-syncs | auto |
| look_id | No | A music video Look (list_music_video_looks: one made public, or the workspace's own) the video follows: its treatment leads the director and its places and props join the kit. Send its category, style, takes and lipsync too (or your own) | |
| song_id | Yes | The song; its artist performs the video and needs their character (list_characters; start_character makes one), unless performer names another character | |
| category | No | performance (default), intercut, cinematic, story or surreal | performance |
| direction | No | Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): "@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (those in the song's artist's kit and those other artists shared, list_characters with for_artist_id; the song's artist's own too when another character performs; in a story with a cast, they are the cast): "@mia-torres dances behind her in the last chorus". An unknown handle, or another artist's piece they haven't shared, answers 400 | |
| on_screen | No | Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed and there are no outfits; continuous takes join on the cast and the place | |
| performer | No | Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character in the song's project's kit or one another project shared (list_characters with for_artist_id: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places). | |
| aspect_ratio | No | "9:16" (default), "16:9" or "1:1" | 9:16 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only say non-read-only, open-world, non-idempotent), the description adds rate limiting ('a limited number an hour'), latency ('about a minute'), an explicit cost source (price.draw.credits), and required account state with error codes. It also discloses what the output contains and that the designs are 'not drawn yet', setting the expectation that rendering is a separate paid step.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and the sequencing are front-loaded, which is right. But the text is a dense run-on with a repeated clause, and cost, prerequisites and return shape are crammed into one block rather than separated, making it slower to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter creation tool with no output schema, the description covers the return value (a lookbook of brief kit pieces plus designs, not yet drawn), the cost, the gating conditions and the follow-up call. What remains thin is how the lookbook relates to update/redesign/delete lookbook siblings, which an agent must infer from names.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 93%, so the burden is largely on the schema, and the baseline of 3 applies. The description adds framing about kit pieces being used as-is versus director-designed pieces, which informs direction and cast semantics without adding anything not already documented per-parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a concrete verb and resource: the director designs outfits, places and props as pictures, producing a lookbook. It distinguishes itself from the shot list (plan_music_video) and from rendering (render_music_video_lookbook), so siblings are separable. The phrasing is muddled by a duplicated fragment ('before the shot list Optional, before the shot list (plan_music_video)'), which slightly dulls an otherwise precise statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit ordering: run this before plan_music_video, then tell the user price.draw.credits, then call render_music_video_lookbook after their go. Prerequisites are spelled out with the exact failure signals (402 plan_required, check get_account plan.active; 402 storage_full, check get_account storage).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discard_character_requestDiscard a character in the makingCDestructiveIdempotentInspect
Deletes its uploads and sheet
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | The request id (charreq_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered structurally. The description contributes the concrete scope of destruction — uploads and sheet — which is real added value. It stops short of stating whether the character request record itself is removed, whether the action is reversible, or whether anything else (e.g. face checks, looks) is affected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five words is not concision here, it is under-specification: the single sentence omits the object of the action and any consequence detail. There is nothing extraneous, but the description is too thin to earn its place as the primary semantic signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a destructive, irreversible-sounding operation on a workflow entity, and the description never says what remains after the call, whether the parent request survives, or what the caller should expect. Annotations cover the read/write and destructiveness flags, but the description should carry the domain consequences for a delete-style tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter request_id is fully documented in the schema (100% coverage) including the charreq_ prefix convention. The description adds no further meaning about the identifier or how to obtain one (e.g. via list_character_requests). With the schema doing the work, baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Deletes its uploads and sheet" names a verb and two affected artifacts, but the pronoun "its" has no antecedent in the description itself — the agent must read the tool name or title to know it operates on a character request. The purpose is inferable but not stated explicitly, so it lands at vague rather than clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to discard versus keep (the sibling keep_character), when a request is eligible for discarding, or what state the request must be in. The agent is given no conditions or alternatives, only a bare statement of effect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_character_sheetDraw a character sheetAInspect
Draws the sheet for the credits shown (again with a note to redraw) From photos, or an added sheet drawn again as a plain base sheet (nothing worn or held beyond one plain outfit). credits must be price.credits from get_character_request: tell the user first. outfit: the base outfit line as the user left it (always drawn plain: one top and fitted trousers or skirt, solid colours, barefoot, no jewellery). note: what to change when drawing again ("her hair is shorter"). Charged only once the sheet passes its check (one person, a clear face, no text); a failed check is redrawn once at no charge.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | What to change, when drawing again | |
| outfit | No | The base outfit line | |
| credits | Yes | price.credits, as shown to the user | |
| request_id | Yes | The request id (charreq_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a non-read-only, non-idempotent, non-destructive write; the description adds genuinely new behavior: billing occurs only after the sheet passes a check (one person, clear face, no text), and a failed check is redrawn once free. That charging and retry semantics are exactly what an agent needs before spending user credits. It omits timing/asynchrony and how the result is retrieved, which keeps it off a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short in word count but poorly structured: one run-on block with stacked parentheticals and an ungrammatical opening clause that obscures the main action. The valuable facts (billing rule, check criteria, outfit constraints) are buried mid-sentence rather than front-loaded, so density is achieved at the cost of comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a paid, non-idempotent generation tool with no output schema, the description covers the essentials an agent needs: cost source, user consent, what gets drawn, how redraws differ, and the billing/validation outcome. The remaining gap is lifecycle detail (how long it takes, whether get_face_check must be polled afterward) rather than anything blocking a correct call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so 3 is the floor, and the description earns more: credits is tied to price.credits from get_character_request (a value source, not just a type), outfit is pinned to "the base outfit line as the user left it" with explicit rendering constraints (one top, fitted trousers or skirt, solid colours, barefoot, no jewellery), and note is scoped to redraws with an example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description does convey that this generates a character sheet from a character request and can redraw it with a note, but the opening sentence is garbled ("Draws the sheet for the credits shown (again with a note to redraw) From photos, or an added sheet drawn again as a plain base sheet") and has to be re-read to parse. It never names siblings like start_character, keep_character, or get_face_check to delimit scope, so the agent must infer where this sits in the flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"credits must be price.credits from get_character_request: tell the user first" gives a concrete prerequisite (call the sibling get_character_request) plus a consent step before charging. The note parameter is framed as the redraw path ("what to change when drawing again"). It stops short of explicit when-not guidance or stating what to do after a failed check, so it is strong but not complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
draw_music_video_frameDraw an opening frameAInspect
Draws the picture a planned shot opens on (spends credits) Paid per picture: tell the user the price (list_music_video_frames: price.credits) and draw only after their go, then show them the picture (image_url). Drawing a shot again replaces its frame for the same price. Good for the shots that matter most (the opening, the hook); the others are made from their references as usual. credits is the price the user agreed to; another price answers 409 with the current one. Takes about a minute; nothing is charged if it fails. 400 with the reason for a shot that can't have one (list_music_video_frames: unavailable). Then quote_music_video and create_music_video with the plan_id as usual. Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| shot | Yes | The shot's number (shots[].index) | |
| credits | Yes | The price shown (list_music_video_frames: price.credits) | |
| plan_id | Yes | The plan id (plan_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Well beyond the annotations, it discloses billing behavior on retry ('replaces its frame for the same price'), the 409 price-mismatch protocol, roughly one minute of latency, no charge on failure, 400 for ineligible shots, plus 402 plan_required and storage_full prerequisites. This is exactly the operational context annotations cannot carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and cost, then consent, pricing, retry semantics, and error codes in a tight sequence. It is dense and parenthesis-heavy but nearly every clause earns its place; the run-on flow slightly hurts readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter paid mutation with no output schema, the description covers pricing, consent, retry semantics, latency, all relevant error codes, prerequisites, and follow-up tools. An agent has everything needed to call it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description adds real meaning: credits must equal the price the user agreed to and a mismatched value returns 409 with the current price, and shot maps to a planned shot's opening frame. That goes beyond the schema's restatement of the same fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Draws the picture a planned shot opens on') and immediately flags the cost dimension. It is clearly distinguishable from siblings like draw_character_sheet or revise_music_video_shot by naming the planned-shot opening frame as its target.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit when-to-use guidance ('Good for the shots that matter most (the opening, the hook); the others are made from their references as usual'), a consent prerequisite (tell the user the price, draw only after their go), and the downstream sequence (quote_music_video and create_music_video with the plan_id).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
follow_ideaFollow an ideaBIdempotentInspect
The person hears by email when it ships Sent under the Product news email topic (the person can switch it off in the app).
| Name | Required | Description | Default |
|---|---|---|---|
| idea_id | Yes | The idea id (idea_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safe, idempotent, non-destructive mutation profile, so the bar is lower. The description genuinely adds behavior beyond them: following triggers an email when the idea ships, delivered under the 'Product news' topic, and the recipient can unsubscribe in-app. It does not say what happens when the person is already following, but the added context is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the single sentence is malformed — a run-on with a missing separator and the notification condition front-loaded instead of the action. Word count is appropriate; clarity and front-loading are not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema and informative annotations, the description is roughly adequate. It omits the repeat-call behavior (though idempotentHint=true covers it) and any pointer to unfollow_idea, so an agent still has to infer the action's meaning from the tool name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage and a documented pattern, so the schema already carries the semantics. The description adds nothing about idea_id or how to obtain one, which matches the baseline 3 when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explains the consequence of following (email notification when the idea ships) but never states the action itself in verb+resource form, and its wording is garbled ('The person hears by email when it ships Sent under the Product news email topic'). An agent can infer it registers a follow/subscription, but the purpose is only implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as unfollow_idea (the inverse) or vote_for_idea (a different form of engagement) among the many siblings. The opt-out clause describes a setting in the app, not how or when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountGet the accountARead-onlyIdempotentInspect
Who you are signed in as, the organization (workspace) and its credit balance Returns the organization the credentials act for (the workspace, as the app calls it; type artist holds one artist, label a roster, creator projects), how they authenticate and their scopes, the credit balance (available, monthly, top-ups) and its plan, if any: active says whether it lets the workspace create (without an active plan, creating answers 402 plan_required: tell the person to choose a plan in the app), storage (used_bytes against limit_bytes, what the plan allows: an upload or new video that does not fit answers 402 storage_full, and deleting videos or archiving songs frees space at once), where it is billed, when the period ends, and a downgrade or interval switch waiting for the renewal as scheduled_change. Without a plan, free_song says where the person's one free song stands (signed in as them, never with an API key, where it is null, as it is with a plan): available (upload one song now, with create_song; it plays in the Looks, and nothing is made from it until there is a plan), unverified (they confirm their email first), used (its song_id and title) or taken (it went to another workspace or account). Monthly credits reset every month; top-ups never expire. On the organization, image_url is the picture uploaded for it (null without one); while it has none, image_fallback is the cover of its newest song still there (song_id, preview_url 640 px and thumbnail_url 160 px WebP), to show in its place, or null without a song. It is read-only, never saved as the picture, and follows the newest song (a new song or an archived one changes it). Check it before creating anything.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: it explains the 402 plan_required and storage_full responses, that deleting videos or archiving songs frees space immediately, how monthly credits reset versus never-expiring top-ups, and the four free_song states with their prerequisites. It also discloses that image_fallback is derived, never saved, and follows the newest song — exactly the kind of non-obvious behavior an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, but what follows is a single ~350-word run-on with deeply nested parentheses covering credits, storage, billing, free_song, and image_fallback in one block. Nearly all content is useful, yet the flat structure makes it hard to scan and the parenthetical layers force re-reading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and a zero-parameter surface, the description carries the full burden of describing the return shape, and it does so field by field: plan state, storage bytes, billing, renewal date, scheduled_change, free_song states, image_url versus image_fallback. An agent can act on the response correctly without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes no parameters, so the baseline is 4 and there is no parameter meaning to add. The description instead spends its budget on what the no-argument call returns, which is the appropriate substitute.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the exact resources returned: the signed-in identity, the organization (workspace), and its credit balance. It also disambiguates the organization concept ('type artist holds one artist, label a roster, creator projects'), which separates it from siblings like list_organizations or get_artist that enumerate rather than resolve the caller's own account.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('Check it before creating anything') and routes the agent to create_song for the free-song case, plus an instruction to tell the person to pick a plan on 402 plan_required. It stops short of naming which sibling covers listing multiple organizations or when this tool is unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artistGet an artistCRead-onlyIdempotentInspect
One artist, with their song count and picture image_url is the picture uploaded for it (null without one); while it has none, image_fallback is the cover of its newest song still there (song_id, preview_url 640 px and thumbnail_url 160 px WebP), to show in its place, or null without a song. It is read-only, never saved as the picture, and follows the newest song (a new song or an archived one changes it).
| Name | Required | Description | Default |
|---|---|---|---|
| artist_id | Yes | The artist id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavior: image_fallback is derived from the newest song's cover, is never persisted as the artist picture, and dynamically follows new or archived songs. That is real added context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single run-on sentence with garbled syntax ('picture image_url is the picture uploaded for it', 'while it has none'), making it hard to parse. The most important information — what the tool returns — is buried mid-sentence behind awkward clauses.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must explain return values, and it covers image_url and image_fallback in detail but says almost nothing about the rest of the artist object beyond 'song count'. It is adequate for the image semantics but incomplete as a specification of the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single required artist_id parameter, so the schema already carries the parameter meaning. The description adds nothing about artist_id (format, source, or how to obtain it), so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'One artist, with their song count and picture', which implies a single-record retrieval but never uses a clear verb like 'fetch' or 'retrieve'. It is distinguishable from list_artists only by inference from the word 'One', and nothing separates it from siblings such as get_song or get_idea beyond the resource name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no mention of alternatives such as list_artists for browsing or get_song for song details. The only guidance is implicit in describing the returned fields.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_character_requestGet a character in the makingBRead-onlyIdempotentInspect
What was read from the photos, the outfit line, the sheet as drawn status: analyzed (problem says what stops it, if anything), drawing (about a minute), drawn (a sheet to keep: sheet.url), failed. price.credits is what drawing costs now; charged is what the drawn sheet cost. extras, on an added sheet: what keeps it from being a plain base (jewellery, glasses, a hat, something held); draw_character_sheet draws it again as a base sheet.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | Yes | The request id (charreq_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a safe, idempotent read. The description adds meaningful behavioral detail beyond them: the status lifecycle, the approximate drawing time, the distinction between price.credits and charged, and what extras represent. It remains somewhat cryptic, but it provides substantial context not present in structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and avoids filler, but it is written as dense fragments and awkward run-ons. The status list and field explanations are informative yet not front-loaded with a clear purpose statement. It is concise but harder to parse than it needs to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining returned values, and it does so for statuses, sheet.url, price.credits, charged, and extras. It is fairly complete for a status-reading tool. It could still be clearer about where request_id comes from and how this tool fits alongside list_character_requests.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single required parameter request_id is documented in the schema. The description does not mention request_id or add any meaning beyond the schema. With one fully documented parameter, the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name and title imply retrieving a character request, and the description explains what its status and output fields mean. However, it opens with return-value fragments rather than an explicit verb+resource statement, so the core action is inferred instead of stated. It does distinguish one sibling, draw_character_sheet, by noting it redraws the character as a base sheet.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is used to check progress, since it documents analyzing, drawing, drawn, and failed states and notes drawing takes about a minute. It also points to draw_character_sheet for redrawing as a base sheet. It does not explicitly say when to use this versus list_character_requests, wait_for_video, or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_face_checkGet a face checkARead-onlyIdempotentInspect
Whether a model can show this real person yet: their face check for it Some models (get_options: music_video.models[].face_check) show a real person only once they have proved, live on camera, that the face on the character is theirs: a Kinetune face check, done once and covering every model that shares it. status: not_needed (the model needs none, or the character is AI-made: ai_made); not_checked; waiting (a check started in the last 30 minutes); passed; failed (the last one didn't pass: start another). Asked before quoting such a model for each real person in it (the performer and the people).
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | The music video model | |
| character_id | Yes | The character id (kit_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds substantial domain behavior: a check is 'done once and covering every model that shares it', a 'waiting' state means a check started in the last 30 minutes, and 'not_needed' also covers AI-made characters. That 30-minute staleness window and the cross-model sharing semantics are things the agent could not derive from the schema or annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is information-dense with little outright filler, but the structure is poor: the opening clause is convoluted and grammatically broken, and the status enumeration is packed into one long colon-chained sentence. A reader must re-parse the first line to figure out what is being returned, so it is not well front-loaded despite being short.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two fully-documented parameters, no output schema, and annotations covering safety, the description supplies the missing piece: the enumerated status values and what each means, including the failure remediation. What remains unstated is the exact response shape beyond the status value, which is minor for a simple lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters are documented with an enum for model, so the schema does the heavy lifting. The description adds only modest meaning, linking the model parameter to the get_options music_video.models[].face_check flag and clarifying that character_id represents a real person (performer or people in the video). That is useful but thin relative to the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys the domain meaning well ('whether a model can show this real person yet', face check status), but the leading clause is grammatically broken ('their face check for it') and never uses a clean verb like 'returns the face check status'. It does not explicitly distinguish itself from the sibling read/write pair start_face_check and withdraw_face_check, so the agent must infer that this is the read variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete timing guidance: 'Asked before quoting such a model for each real person in it (the performer and the people)', which tells the agent exactly when in the workflow to call it and that it must be called per real person. The failure state even points toward remediation ('start another'), though it does not name start_face_check explicitly as the alternative tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ideaGet an ideaBRead-onlyIdempotentInspect
One idea with its comments and Kinetune's word on it status_note is the team's word on its status. An idea merged into another answers with that one. People appear by name and picture only.
| Name | Required | Description | Default |
|---|---|---|---|
| idea_id | Yes | The idea id (idea_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description does add genuinely non-obvious behavior: merged ideas redirect to the surviving idea, comments are bundled in, and people are rendered by name and picture only. It does not say whether comment sets are truncated or paginated, which matters for a read returning comments.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loads the core payload statement, which is good. The second clause ('Kinetune's word on it status_note is the team's word on its status') is garbled and effectively wastes a sentence on a point the first clause already made, reducing clarity rather than adding information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does meaningful work by sketching the return shape: the idea, its comments, a status note, names and pictures for people, and merge redirection. For a single-parameter read tool this is close to sufficient, with only pagination/truncation of comments left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single idea_id parameter is documented with its pattern, so the schema carries the load and baseline 3 applies. The description adds one useful semantic nuance: passing an id that was merged into another idea returns the merge target rather than an error, but it gives no format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and scope: 'One idea with its comments and Kinetune's word on it,' which contrasts with the bulk siblings like list_ideas by making clear this returns a single record. It never names list_ideas as the alternative, and the 'status_note' clause is grammatically tangled enough that the agent must infer what field is being described.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance: no statement that this is the tool for fetching a single idea by id versus list_ideas for enumeration, and no prerequisites such as needing a valid idea id from a prior listing. Usage is only implied by the phrase 'One idea'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kit_pieceGet a kit pieceCRead-onlyIdempotentInspect
One outfit, place or prop
| Name | Required | Description | Default |
|---|---|---|---|
| kit_id | Yes | The kit piece id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds nothing behavioral — no note on error behavior for a missing kit_id, no indication of what is returned, no scope constraints. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words that read as a label rather than a description, with no front-loaded verb or purpose. This is under-specification rather than effective conciseness — the sentence is short because it omits necessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should at least signal what a 'kit piece' lookup returns (a piece object with outfit/place/prop attributes). For a simple read tool with full annotation coverage and full param coverage, this is the main remaining gap, and it is unfilled.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single parameter with 100% schema description coverage, so the schema already documents 'The kit piece id'. The description adds no further semantics about the id format or where it comes from; baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The name carries the verb+resource (get a kit piece), and the fragment 'One outfit, place or prop' clarifies what a kit piece conceptually is. But the description itself does not state that it retrieves a single kit piece by id, nor distinguish it from list_kit or get_look. Purpose is only implied, not stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No indication of when to use this versus list_kit (browse all pieces) or get_look (which presumably composes pieces). The agent must infer that kit_id is obtained elsewhere and that this is the single-item lookup path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_lookGet a LookBRead-onlyIdempotentInspect
One Look with its design and preview images backgrounds.portrait and backgrounds.landscape are the background plates the video uses; backgrounds.previews has 480 px wide copies of them for thumbnails (null for a Look without a photo or video background).
| Name | Required | Description | Default |
|---|---|---|---|
| look_id | Yes | The Look id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuine value beyond that by disclosing the return shape: backgrounds.portrait/landscape hold full background plates while backgrounds.previews holds 480 px thumbnail copies, and explicitly notes previews is null when a Look has no photo/video background.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short, but the prose is garbled: 'its design and preview images backgrounds.portrait and backgrounds.landscape' runs two ideas together with no punctuation, forcing the reader to re-parse which fields belong to which clause. The valuable null-behavior detail is buried in a trailing parenthesis rather than front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully explains the nested background fields, which is the most complex part of the response. However, it never mentions the top-level design/preview fields it advertises, nor error behavior for an invalid or unknown look_id, leaving the picture only partly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter (look_id) with 100% schema description coverage, so the schema already carries the semantics; the description adds nothing about format, source, or how to obtain a look_id. Baseline 3 applies when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says it returns 'One Look with its design and preview images', which identifies the resource and implies a single-item retrieval, but never states the verb ('retrieve/fetch a Look by id') and does nothing to distinguish it from siblings like list_looks, show_looks, or get_music_video_lookbook. An agent must infer that this is the by-id fetch.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance and no alternatives are named, despite the presence of several closely related siblings (list_looks, show_looks, get_music_video_lookbook, get_video). The reader is left to infer that a known look_id is the precondition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_music_video_lookGet a music video LookARead-onlyIdempotentInspect
One music video Look With the video it was saved from while that video is public in the Showcase: video (its song_title, aspect_ratio, the artist and creator as the Showcase credits them, poster_url, video_url, poster_seconds, duration_seconds) and story (the director's idea as concept, and its shots along the song: section, start_seconds, end_seconds, summary). Both are null while the video isn't public. Never its maker's written brief.
| Name | Required | Description | Default |
|---|---|---|---|
| look_id | Yes | The Look id (mvlook_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, so credit goes to the added behavior: both video and story are null while the video is private, and 'Never its maker's written brief' discloses an important privacy exclusion. These are meaningful traits beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being a single dense run-on sentence, every clause carries relevant information about the returned fields. Readability suffers from the lack of structure, but no fluff is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned video and story fields, compensating well for the missing output schema. However, it leaves the relationship to closely named siblings ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single look_id parameter is fully documented with its pattern. The description adds no meaning beyond the schema about the parameter, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states it retrieves 'One music video Look' along with the video it was saved from and the story's shots, distinguishing it from list_music_video_looks by scope. The phrasing is grammatically awkward ('One music video Look With the video...'), which slightly blunts an otherwise specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance or named alternatives (e.g., get_look vs get_music_video_lookbook). Usage is only implied by the return-shape description and the note that both video and story are null while the video isn't public.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_music_video_lookbookGet a lookbookARead-onlyIdempotentInspect
A lookbook with its pictures as they are drawn status is proposed (not drawn), rendering (being drawn: check back in about a minute), ready or failed. Each piece has its picture (image_url) once drawn, kept (true unless left out) and whether it is yours. price: per picture, to draw the rest (draw) and to redesign the director's pieces (redesign).
| Name | Required | Description | Default |
|---|---|---|---|
| lookbook_id | Yes | The lookbook id (lookbook_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish this as a safe, idempotent read operation, but the description adds meaningful context: the four status values, that 'rendering' means wait about a minute, that image_url appears only once drawn, and what 'kept' and ownership mean. It does not cover error cases such as an unknown lookbook_id, but the added behavioral value is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is compact with no filler, but it is a single run-on sentence with awkward phrasing ('as they are drawn status is proposed', 'price: per picture, to draw the rest') that forces re-reading. The return-shape details are front-loaded, but the purpose statement itself is not clearly leading.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining returns. It covers the piece-level fields and status transitions reasonably well, but the overall response shape and the pricing semantics remain vague, and error behavior is unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single lookbook_id parameter is fully documented with a pattern, so the baseline of 3 applies. The description adds no further meaning about the identifier or format beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource as a lookbook and describes its contents and status lifecycle, which is specific enough to distinguish it from generic look tools. However, it doesn't explicitly contrast with siblings like get_look or list_looks, so an agent must infer that this is the music-video lookbook variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: retrieving a lookbook and polling when status is 'rendering' ('check back in about a minute') gives a clear operational hint. There is no explicit guidance on when to use this versus get_look, list_looks, or update_music_video_lookbook, leaving alternatives to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_music_video_planGet a music video planCRead-onlyIdempotentInspect
A plan made earlier
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The plan id (plan_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — not what a plan contains, not what happens if the plan_id is unknown or still being generated, not whether plans expire.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words are technically concise and front-loaded, but this is under-specification rather than conciseness. No sentence conveys actionable information about the operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description is the only place an agent could learn what a "plan" returns — structure, stages, or linkage to videos — and it says nothing. For a lookup tool in a large sibling set, this leaves the agent unable to predict the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a documented pattern for plan_id, so the schema carries parameter semantics fully. The description contributes nothing about the identifier, which is acceptable at the baseline given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"A plan made earlier" is a noun fragment that restates the tool title rather than stating a verb+resource. It vaguely implies retrieving a previously created plan, but an agent gets no confirmation that this is a read/lookup of a stored plan object, nor any differentiation from siblings like get_music_video_lookbook, get_video, or plan_music_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance whatsoever on when to call this versus plan_music_video, design_music_video_shoot, get_music_video_lookbook, or get_video. The description contains no conditions, prerequisites, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_optionsList the optionsARead-onlyIdempotentInspect
Video types, Look categories, background sources, formats and the current credit prices Everything a request can choose from, with the credit table, and what's on sale (plans: each plan's monthly and yearly price in cents, monthly credits, limits and features, the recommended one marked highlighted, and shelf: everyday for lyric videos, Canvas and some AI music videos, studio for AI music videos every month; credit_packs: each pack's credits and price in cents; music_video.categories and music_video.styles: each kind and look, with demos, the real music videos of it Kinetune chose: one per model (model: its id) and a fallback (model null) for a model without its own; each with sound in video_url, a few silent seconds from its poster moment hover_seconds in hover_url, its poster in still_url, made_with: the model and quality it was made with, and story: its brief, the director's idea and its shots; signed for about a week. Show the one for the model in hand, else the fallback; demo is the fallback alone, as before). music_video.models[].guide: what each model is best for (best_for), its strengths and weaknesses, the kinds it suits, its sharpest resolution (max_quality), public benchmark scores (board, entry, score, source, url, date) and page_url, the page comparing them; music_video.categories[].recommended_model: the offered model to suggest for that kind when the person hasn't named one. The catalog is set by Kinetune's admins and can change; a subscription keeps what it was bought with. Use it to pick a category or source and to explain prices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only annotations, the description discloses important behavior: the catalog is admin-controlled and can change, subscriptions retain purchased terms, and some media URLs are signed for about a week. It also explains fallback and demo behavior, though the sheer density makes these traits harder to absorb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, run-on block with heavy parenthetical nesting and semicolon chains. It contains useful details, but the structure obscures the main purpose instead of front-loading it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and the return object is rich, the description does a thorough job enumerating the catalog sections, pricing data, plan details, model guidance, recommendations, demo metadata, and fallback behavior. An agent has enough context to understand what it will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero input parameters, so there is nothing for the description to clarify beyond confirming it is a parameterless catalog fetch. Baseline for zero parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly establishes that this tool returns the catalog of selectable options, including video types, looks, backgrounds, formats, plans, credit packs, and pricing. It does not explicitly differentiate itself from sibling list/get tools, but the breadth of catalog content makes its purpose distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use the tool 'to pick a category or source and to explain prices,' which gives clear usage context. It does not mention when not to use it or name alternatives such as quote or account tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_songGet a songBRead-onlyIdempotentInspect
One song and its analysis status cover_art.url is the cover at up to 1536 px (JPEG; width and height describe it), preview_url a 640 px and thumbnail_url a 160 px WebP. Image links are signed for 7 days and stay the same all day, so they can be cached. analysis.lyrics.status says whose words its videos show: "transcribed" (as heard), "checked" (your lyrics, timed from the audio; corrected, added and kept count what checking did), "waiting" (your lyrics, checked once the analysis finishes) or "mismatch" (your lyrics didn’t match what’s sung, so the transcription is used).
| Name | Required | Description | Default |
|---|---|---|---|
| song_id | Yes | The song id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, and the description goes meaningfully beyond them: signed image URLs valid 7 days and stable within a day so they are cacheable, plus the exact semantics of each analysis.lyrics.status value including the side effects of 'checked'. It does not describe error behavior for a bad or missing song_id, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Information density is high and nothing is obviously padded, but it is a single run-on block whose opening sentence is garbled by a missing period, and the most important fact (what the tool returns) is buried behind image-resolution trivia. Front-loading and sentence boundaries would substantially improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does real work explaining return fields (cover_art.url with dimensions, preview_url, thumbnail_url, analysis.lyrics.status) and the status enum meanings, which an agent could not otherwise know. The remaining gap is that it never clarifies the boundary against get_song_analysis, so an agent cannot tell which tool yields which analysis detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and the schema already documents it at 100% coverage ('The song id'), so the schema carries the burden. The description adds no format, sourcing, or example detail for song_id, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the fragment 'One song and its analysis status', which conveys the resource but not a verb, and the missing punctuation makes the purpose statement read as if it runs into the field documentation. It never distinguishes this from siblings such as get_song_analysis or list_songs, even though it discusses analysis data that plausibly overlaps with get_song_analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call get_song rather than get_song_analysis, list_songs, or show_songs, and no prerequisites or exclusions are given. The agent must infer usage entirely from the name and the field documentation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_song_analysisGet a song’s analysisARead-onlyIdempotentInspect
Word-timed lyrics, tempo, beats, sections, hook and the parts a video can be cut to parts lists where a video can start and end without cutting a word: each section (Verse 1, Chorus 1…), clips of about 15 seconds cut between the lines of long sections (kind "clip", parent: its section) and each verse with the chorus after it (kind "pair"); pass a part’s start and end as a video’s trim (start_seconds, end_seconds), picking one at least as long as the video type’s minimum (a lyric video 8 seconds, a music video 15). default_part is the one the app starts on: the sung part nearest 15 seconds. lyrics.text is the song’s lyrics to edit: yours as you gave them, or the transcription a line per phrase (lyrics.yours says which). The analysis also listens for who sings: map.voices lists where someone other than the lead artist sings (voice "other": another solo voice; "group": a choir, a crowd or backing singers), and those words carry backing: true (music videos keep them off camera, never lip-synced by the artist); map.instrumental is true when no vocals were heard. A song analyzed before voices were heard has no map.voices until its first music video plan listens to it.
| Name | Required | Description | Default |
|---|---|---|---|
| song_id | Yes | The song id | |
| min_seconds | No | The parts for a video at least this long: a music video 15 (its clips are cut no shorter). Default 8, a lyric video |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent/no-destruction, so the bar is lower, and the description still adds genuine behavioral context: lyrics.text may be the user's own lyrics or a transcription with lyrics.yours saying which, and a song analyzed before voices were heard has no map.voices until its first music video plan listens to it. That disclosure of conditionally-missing fields is valuable; it stops short of stating what happens for an unanalyzed or missing song.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every clause carries real information and the length is defensible for a complex analysis object with no output schema, but the text is one dense run-on block that opens mid-thought with a confusing phrase instead of front-loading what the tool returns. The content earns its place; the structure does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must carry the return shape, and it does: lyrics, tempo/beats/sections, part kinds (clip, pair) with parent relationships, default_part, and voice/instrumental maps. It omits error or not-yet-analyzed behavior and the untimed fields (tempo, beats) are only named, but overall it is sufficient to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters, including min_seconds' default of 8 and the 15-second music-video case. The description largely restates that same meaning in prose and adds nothing new for song_id, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the concrete contents of the resource (word-timed lyrics, tempo, beats, sections, hooks, video-cuttable parts), which makes clear it returns an analysis object rather than the song itself. However, the opening clause is garbled ("the parts a video can be cut to parts lists where a video can start and end...") and it never names or contrasts with the obvious siblings get_song and reanalyze_song, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is real downstream guidance: pass a part's start/end as a video's trim (start_seconds, end_seconds) and choose a part at least as long as the video type's minimum (8s lyric video, 15s music video), which also explains min_seconds. But there is no explicit when-to-use-this-vs-alternatives statement and no mention of preconditions such as needing the song analyzed first, so usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_videoGet a videoBRead-onlyIdempotentInspect
Status, progress, credits and, when completed, the download links status is queued, processing, completed, failed or cancelled. While it waits, queue says why: plan_limit (the organization already makes as many videos at once as its plan allows; position is its place in line) or render_capacity (every render machine is busy; estimated_wait_seconds is about how long). Completed videos have outputs with download_url (full quality), web_url (720p) and poster_url, signed for 7 days. A lyric video's poster is a frame with one whole lyric line on screen (the hook when it can be), ready to set as the thumbnail where you post it; a Canvas's is its first frame; a music video's a frame of its first seconds. poster_seconds says where in that file the poster was cut, for posts that take a cover frame offset instead of an image (TikTok); null on videos made before it was kept. Failed videos have error and error_code; AI_VIDEO_UNAVAILABLE means the AI video couldn’t be made for a reason on our side, so make it again later.
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | The video id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations covering read-only/idempotent, the description goes well beyond them: signed download/web/poster URLs valid 7 days, queue reason semantics for plan_limit vs render_capacity, poster frame semantics per video type, poster_seconds offset behavior and its null back-compat case, and the meaning of AI_VIDEO_UNAVAILABLE with a retry recommendation. That is exactly the behavioral context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but not padded – nearly every clause carries real semantics about returned fields. However it is one run-on blob with a broken opening sentence, and the most important information (what the tool does) is not front-loaded, so structure works against it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry return-value meaning, and it does thoroughly for statuses, URLs, posters, and errors. It still omits the general shape of the response (identity/other fields) and error behavior for an unknown id, so it is strong but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single video_id parameter is documented in the schema, but the description adds nothing about format, where the id comes from, or invalid-id behavior. Baseline 3 for a fully-covered single-param schema is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates what comes back (status, progress, credits, download links) which implies retrieval of a video record, but it never states the action plainly and never distinguishes itself from siblings like show_video, wait_for_video, or list_videos. The opening sentence is also garbled ('...the download links status is queued...'), so the purpose must be inferred from the title and name rather than read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes the queue/polling state but gives no explicit instruction on when to call get_video versus wait_for_video or show_video, and no exclusion or prerequisite. The only actionable hint is buried ('While it waits') and is about interpreting a queue reason, not about choosing the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_characterKeep a characterAInspect
Keeps the sheet in the kit, as an artist or as named cast artist_id: it is that artist (one each, in their own kit; replace true takes the place of theirs); or name: cast, with an @handle from the name (or handle), in owner_artist_id's kit (left out: the workspace's only artist, else its first, shared). shared true offers them to every other artist's videos too (default false). ai_made: ask the user whether this is an AI-made person who looks like no real person, or a real person (false: a model that needs a face check shows them once they pass it); never guess it. Left out, they count as real. The uploads are deleted.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | A cast member's name | |
| handle | No | The @handle, without @ | |
| shared | No | Offer them to every other artist's videos too (default false) | |
| ai_made | No | An AI-made person who looks like no real person (true), or a real person (false) | |
| replace | No | Replace the artist's character | |
| artist_id | No | It is this artist | |
| request_id | Yes | The request id (charreq_…) | |
| owner_artist_id | No | Cast only: the artist whose kit they go in (a project in a Creator workspace) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful behavior: owner_artist_id falls back to the workspace's only artist (else its first) and cast is shared only when shared=true, ai_made=false routes through a face check, and 'The uploads are deleted' is a real side-effect warning. The replacement of an existing character ('replace true takes the place of theirs') and the upload deletion sit in mild tension with destructiveHint=false, but the primary operation is additive and no user artist or video is destroyed, so this is not a direct contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short with no filler sentences, and the core action is front-loaded, but the branching is packed into a single run-on with nested parentheses and semicolons that is difficult to scan. The information earns its place; the layout does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter mutation with no output schema, the description covers mode selection, defaults, sharing scope, the face-check gate, and the upload-deletion side effect. It does not say what state request_id must be in (a pending charreq) or what the agent gets back, but return values are less critical here and the operational picture is essentially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline is 3, but the description adds semantics the schema does not: artist_id vs name/handle are mutually exclusive modes, owner_artist_id only applies to cast, shared and ai_made default behavior, and the fact that ai_made must be solicited from the user rather than inferred. That is genuine meaning added on top of the field-level descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb and resource are stated concretely ('Keeps the sheet in the kit') and the description distinguishes two creation modes, one tied to artist_id and one tied to name/handle as cast. It does not name any sibling (e.g. discard_character_request, start_character, draw_character_sheet) to tell an agent when this tool is the wrong choice, and the telegraphic phrasing makes the purpose harder to extract than it should be.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives real branch-level guidance: use artist_id to keep as that artist, or name/handle to add cast in owner_artist_id's kit, plus an explicit instruction to ask the user about ai_made and never guess. It gives no routing against alternatives such as discard_character_request or start_character, so the when-not-to-use side is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
keep_music_video_lookbook_pieceKeep or leave out a lookbook pieceCIdempotentInspect
Whether a piece goes into the video
| Name | Required | Description | Default |
|---|---|---|---|
| kept | Yes | ||
| piece | Yes | The piece's number (pieces[].index) | |
| lookbook_id | Yes | The lookbook id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnly=false, idempotent=true, and destructive=false, so the description is not required to carry the full safety burden. Still, it adds almost no behavioral context beyond bare inclusion semantics: it does not explain what state is changed, how true/false values affect the video, or what the caller should expect. It does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. However, it is under-specified for a three-parameter mutation tool, so its brevity reflects incompleteness rather than well-structured conciseness. It is efficient but not sufficiently informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with three required parameters and no output schema, the description should clarify the state change and expected behavior. Annotations cover idempotency and non-destructiveness, but the description itself does not explain how kept changes the lookbook or how this tool relates to sibling operations. It is too incomplete for reliable invocation without reading the schema and relying on inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with lookbook_id and piece already described in the schema. The description adds some meaning for the undocumented kept flag by framing the operation as whether a piece goes into the video, but it does not explicitly map true/false to include/exclude or add detail about the other parameters. This is adequate but thin.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys that this tool controls inclusion of a piece in the video, which roughly matches the name and title. However, it does not use a clear action verb such as set or toggle, and it omits the lookbook context present in the tool name. The purpose is inferable but vague rather than specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives such as redraw_music_video_lookbook_piece or update_music_video_lookbook. It also does not mention prerequisites, sequencing, or exclusions. The agent must infer its place from the name and siblings alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_artistsList artistsARead-onlyIdempotentInspect
Artists by name, with their song counts and a picture Songs belong to an artist; create the artist first. Sorted by name, 50 per page by default: pass q to search by name, and limit/offset to page. image_url is the picture uploaded for it (null without one); while it has none, image_fallback is the cover of its newest song still there (song_id, preview_url 640 px and thumbnail_url 160 px WebP), to show in its place, or null without a song. It is read-only, never saved as the picture, and follows the newest song (a new song or an archived one changes it).
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Part of the artist name | |
| limit | No | Results per page, 1-100 (default 50) | |
| offset | No | How many results to skip |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint/idempotentHint annotations, the description discloses non-obvious behavior: image_fallback is a derived, volatile value that tracks the newest surviving song, changes when a song is added or archived, and is never persisted as the artist's picture. It also documents null-producing cases for both image_url and image_fallback, which is exactly the kind of state semantics an agent cannot infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the resource and its return shape before moving to paging and then the image fallback rules, so an agent can stop reading early and still act. The final sentence is long and parenthetical-heavy ('song_id, preview_url 640 px and thumbnail_url 160 px WebP'), and 'to show in its place, or null without a song' is compressed to the point of ambiguity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values, and it covers the artist fields, the picture fields, sort order, and page size. The notable omission is that it never mentions the artist identifier, which an agent needs to chain into get_artist, rename_artist, or set_artist_image after listing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so q, limit, and offset are already fully documented with bounds and defaults. The description only restates the intent ('search by name', 'page') and repeats the 50-per-page default, adding no syntax, matching behavior, or ordering interaction beyond the schema — baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence names the resource (artists) and enumerates the payload (name, song counts, picture), which is enough for an agent to recognize this as the collection-level listing tool next to get_artist and list_songs. It never explicitly contrasts itself with get_artist, so the sibling differentiation is implied by the plural framing rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete invocation guidance: 'pass q to search by name, and limit/offset to page', plus the operative precondition 'Songs belong to an artist; create the artist first', which tells the agent this tool cannot be used to bootstrap an artist. What it lacks is explicit when-not guidance (e.g., use get_artist when you already have an id), so the routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_character_requestsList sheets waiting to be keptARead-onlyIdempotentInspect
Character sheets being drawn, or drawn and paid for but not kept yet Newest first. A sheet drawn and paid for waits 30 days to be kept (keep_character), then is deleted; one being drawn shows status drawing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive profile, so the description's job is domain behavior — and it delivers the important lifecycle facts: a paid sheet waits 30 days then is deleted, and in-progress sheets expose status 'drawing'. It stops short of describing the full set of possible statuses or the shape of each entry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences carry useful density, but the first is grammatically broken ('but not kept yet Newest first'), fusing the scope clause and the ordering clause. The lifecycle explanation lands well, yet the reader has to re-parse the opening to extract the filter conditions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and no output schema, the description must convey what comes back: it does so by naming the two inclusion states, the 'drawing' status field, and sort order. The deletion-after-30-days rule is exactly the kind of consequence an agent needs before recommending keep_character. Only the exact response fields remain unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter text is needed or missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (character sheets) and the specific subset returned: those being drawn or drawn-and-paid-for-but-not-kept, with newest-first ordering. It implicitly contrasts with sibling list_characters (kept sheets) without naming it explicitly, so the differentiation is inferable rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names keep_character as the action that resolves a waiting sheet and explains the 30-day expiry, which implies when to call this tool (to find sheets needing a keep/discard decision). It never states when NOT to use it or points to list_characters / get_character_request as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_charactersList charactersBRead-onlyIdempotentInspect
The people videos can show: your artists' characters and your cast Each character is one sheet in the kit (a front close-up, full body front, three-quarter, profile and back, in a plain base outfit), made with start_character. artist_id set: it is that artist (one each); otherwise cast, used by its handle. Each is in one artist's kit (owner_artist_id, owner_name; an artist's character is in their own) and appears in their videos; shared true offers it to every other artist's videos too (update_kit_piece shares it). outfit is the base outfit line it was drawn in; missing lists the views an added sheet doesn't show.
| Name | Required | Description | Default |
|---|---|---|---|
| artist_id | No | Only this artist's character | |
| for_artist_id | No | Those a video of this artist's songs can show: theirs first, then those other artists shared | |
| owner_artist_id | No | Only those in this artist's kit: their own character and the people kept for them |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the description is free to add domain behavior — and it does: each character is a single kit sheet with five specific views in a base outfit, created via start_character, scoped to one artist's kit, and optionally shared to every other artist's videos via update_kit_piece. That is real context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text is a run-on block with a missing sentence break ('your cast Each character') and no front-loading of what the tool returns; it reads as internal design notes rather than a scannable definition. It is information-dense, but the density is buried in parenthetical asides about sheets, outfits, and missing views.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully discloses the returned fields (owner_artist_id, owner_name, shared, outfit, missing) and what 'missing' means, which is exactly the gap a 3-param list tool with no output schema would otherwise have. Only the return ordering/grouping semantics ('theirs first, then shared') live in the schema rather than the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so a 3 is the floor, but the description genuinely adds relational meaning: setting artist_id yields that artist's single character, whereas the unfiltered case returns cast members addressed by handle, and it explains owner_artist_id/owner_name ownership semantics and the shared flag. The wording is terse enough that the mapping to for_artist_id is only implicit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening fragment 'The people videos can show: your artists' characters and your cast' identifies the resource domain (characters/cast) but never states the verb or that it returns a list — the agent has to infer 'list' from the name. It also does not distinguish this from siblings such as list_kit, get_kit_piece, or list_artists, which plausibly return overlapping data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not guidance and no routing to alternatives (list_kit, get_kit_piece, list_artists). The closest thing is an implicit context ('the people videos can show'), plus a parenthetical pointing at start_character and update_kit_piece, but those are creation/sharing tools, not alternatives for retrieving characters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ideasList ideasARead-onlyIdempotentInspect
The Community board's ideas, most voted first, with your vote and follow Everyone's ideas for Kinetune, a page at a time (limit, default 30): next_cursor is null on the last page, otherwise pass it as cursor with the same filters. Before suggesting an idea, search for it (q) and vote for the one that is already there. status: one status, or open for every open one (under_review, planned, in_progress); yours true: ones the person suggested or voted for. counts says how many match area and q, by status. Each idea has its votes, voted and following (the person's), and its author by name only.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Words in the title or details | |
| area | No | ||
| sort | No | top (default: most voted) or new | |
| limit | No | ||
| yours | No | Only the ones the person suggested or voted for | |
| cursor | No | next_cursor from the previous page | |
| status | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuinely new behavior: next_cursor is null on the last page and must be passed back as cursor with the same filters, plus what each returned idea carries (votes, voted, following, author by name only) and that counts aggregates area and q by status. It stops short of describing ordering stability or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Nearly every clause carries information, but the pagination contract is buried mid-sentence inside the opening line and the prose reads as one long run-on. Splitting the page/cursor rule into its own sentence would front-load the most operative detail without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a seven-parameter, zero-required listing tool with no output schema, the definition covers ordering, filtering, pagination, and the shape of the returned rows and counts. The main remaining hole is the area filter, which is undocumented in both the schema and the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 57% schema coverage, the description compensates well: it supplies the default limit of 30 that the schema omits, defines the cursor round-trip contract, and interprets the status enum values (open expands to under_review, planned, in_progress). It adds little for area, whose enum has no description in either place, and leaves sort entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (Community board ideas), the ordering (most voted first), the scope (Everyone's ideas for Kinetune) and the paging model, which is enough to separate it from get_idea and suggest_idea. The opening clause is awkwardly spliced ('with your vote and follow Everyone's ideas...'), which costs it a point on precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete workflow rule: before suggesting an idea, search with q and vote for an existing one instead of duplicating. It also explains the filtering intent of status and yours. It never explicitly contrasts itself with get_idea or suggest_idea by name, so routing is implied rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_kitList the kitARead-onlyIdempotentInspect
Outfits, places and props a music video brief can mention The kit is what a music video is made from besides the artist’s character: outfits, places and props. Each is in one artist’s kit (owner_artist_id, a project in a Creator workspace; an outfit’s is its artist_id) and serves their songs; shared true offers it to every other artist’s songs too (owner_name says whose it is). Each has a name and an @handle unique in the workspace; a music video brief (direction) that mentions @handle uses that piece exactly as it is, and the director designs the rest. With artist_id: what a brief for their song can mention, their own pieces first, then those other artists shared; with owner_artist_id: only their own (their kit page); without either, every piece. url is the piece cropped, up to 1536 px (what the AI receives; width and height describe it), thumbnail_url a 320 px copy, source_url the image the crop is a rectangle of. Every piece by default; pass q to search by name, @handle or description, and limit/offset to page. total is how many pieces match.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Part of the name, @handle or description | |
| kind | No | outfit, place or prop | |
| limit | No | Pieces per page, 1-100 (default: every piece) | |
| offset | No | How many pieces to skip | |
| artist_id | No | What a brief for this artist’s song can mention: theirs and those shared | |
| owner_artist_id | No | Only the pieces in this artist’s kit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, closed-world operation, so the bar is lower, but the description adds real payload context: the default returns every piece with no paging, url is a crop up to 1536 px, thumbnail_url is a 320 px copy, source_url is the uncropped original, and total is the match count. It also explains the shared-visibility model (shared true exposes a piece to every other artist's songs). What it omits is any indication of result ordering when no artist filter is supplied or of payload size risk when paging is skipped.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Most sentences carry useful domain information, but the opening is a fragment that runs straight into the next sentence without punctuation ('...can mention The kit is what...'), and the first half is domain exposition rather than an action statement. A reader must reach the second half before learning the filtering and paging behaviour, so it is not well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and six optional parameters, the description carries the return-value burden and does it well, naming name, @handle, shared, owner_name, url, thumbnail_url, source_url, width/height and total. It is missing only fields the agent might also receive (identifiers, kind) and the default sort order when listing everything.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all six parameters, establishing a baseline of 3. The description does add genuine meaning on top — q searches name, @handle or description; artist_id results are ordered 'their own pieces first, then those other artists shared'; limit defaults to everything — but these are refinements of already-documented fields rather than filling a documentation gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description defines the resource precisely — outfits, places and props making up an artist's kit — and the closing line 'Every piece by default' plus the filter behaviour makes clear this returns a collection rather than a single piece. It never states an explicit verb like 'list' (that lives only in the title) and never names the neighbouring get_kit_piece/list_looks, but the resource boundary is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit routing between the two artist parameters: artist_id for 'what a brief for their song can mention' (own plus shared), owner_artist_id for 'only their own (their kit page)', and neither for everything. That is strong when-to-use guidance for the filter combinations, though it never points to sibling tools such as get_kit_piece for a single piece or add_kit_piece for mutations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_looksList LooksARead-onlyIdempotentInspect
Browse Official, Community and your own Looks A Look is a complete, reusable lyric-video design. Pass its id as {"mode":"existing","id":…} to reuse it exactly. A Look that shows an artist (featured_artist) is private and only serves that artist's songs: choosing for a song, pass its artist_id to leave out Looks that show another artist.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search words | |
| sort | No | ||
| limit | No | ||
| scope | No | Which library; default all | |
| offset | No | ||
| category | No | A category id from get_options | |
| artist_id | No | The artist of the song you are choosing for: Looks that show another artist are left out | |
| lyric_style | No | A lyric style id from get_options (how the lyrics move) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), and the description adds real behavioral context beyond them: Looks featuring an artist are private and only serve that artist's songs, and artist_id filters those out. It also explains the downstream consumption pattern of the returned id ({mode:'existing', id:…}), which is useful non-obvious behavior. Pagination/return shape is not mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, which is good, but the text is a run-on: the first sentence is missing a period before 'A Look', and the final clause ('choosing for a song, pass its artist_id...') is grammatically tangled enough to require a reread. Content earns its place, but the structure works against fast parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what it gets back (Looks with ids) and how to reuse one, and it covers the non-obvious privacy rule that governs which Looks are even eligible. For an 8-param read-only browse tool with full annotation coverage, nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 63%, and the description reinforces the two most consequential semantics: the scope taxonomy (official/community/mine) and artist_id exclusion behavior. The other parameters (q, sort, limit, offset, category, lyric_style) get nothing beyond the schema, and several are undocumented in both places, so the description only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Browse Official, Community and your own Looks') and defines what a Look is ('a complete, reusable lyric-video design'), which an agent cannot infer from the name alone. It does not explicitly distinguish itself from the close siblings get_look and show_looks, so the differentiation is partial.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives one concrete conditional: when choosing a Look for a song, pass that song's artist_id to exclude Looks showing another artist. However, it never says when to use list_looks versus get_look or show_looks, nor when to prefer scope=official/community/mine, leaving the primary routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_music_video_draftsList music video draftsARead-onlyIdempotentInspect
A song's music videos in the making: shot lists not made yet and lookbooks not used yet The latest draft of each shot list of the song that no video was made from, and the lookbooks no shot list was written from, from the last 30 days, newest first. Pick one up with get_music_video_plan or get_music_video_lookbook.
| Name | Required | Description | Default |
|---|---|---|---|
| song_id | Yes | The song |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior the annotations cannot convey: the 30-day recency window, the newest-first ordering, and the exclusion logic that only unused drafts are returned, which tells the agent why some drafts will be absent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is front-loaded, but the first sentence is a run-on fragment and the second sentence restates the same two conditions at greater length ('shot lists not made yet' versus 'no video was made from'), so meaningful redundancy exists. Trimming to one precise sentence plus the routing hint would lose nothing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only single-parameter list tool with no output schema, the description covers what is returned (draft shot lists and lookbooks), the eligibility rules, the time window and the ordering. The remaining gap is the shape of each returned item, which is minor given the routing to get_music_video_plan and get_music_video_lookbook for details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists and schema coverage is 100%, so the schema already documents song_id ('The song'). The description reinforces that results are scoped to a single song ('A song's music videos'), but adds no format or validity details beyond that; baseline 3 is appropriate when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and an unusually precise filter: the latest draft of each shot list with no video made from it, plus lookbooks with no shot list written from them, limited to the last 30 days and sorted newest first. That is enough for an agent to distinguish it from list_music_video_looks or get_music_video_plan, though the opening fragment ('shot lists not made yet and lookbooks not used yet') is awkward and slightly muddies the verb+resource statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear downstream action ('Pick one up with get_music_video_plan or get_music_video_lookbook'), which implies this is a triage/selection tool for actionable drafts. However, it never says when NOT to use it versus near siblings such as list_music_video_looks, nor does it state prerequisites for the song_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_music_video_framesList a plan's opening framesARead-onlyIdempotentInspect
The opening frames drawn for a plan's shots, and the price of one more Optional, for users who want control over key shots: an opening frame is a picture of the moment a shot opens on (its people, outfit and place, in the video's format), and the video then starts that shot from it, on every model. Returns frames (shot, image_url, thumbnail_url; signed for 7 days), price.credits (what drawing one more costs) and unavailable (shots that can't have one, with the reason: a shot that carries straight on from the one before, or a real person shown with others to Seedance). A frame stays with its shot across drafts while the shot is unchanged, and is never part of the video's quote. 404 when frames aren't offered.
| Name | Required | Description | Default |
|---|---|---|---|
| plan_id | Yes | The plan id (plan_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive), and the description goes well beyond them: 7-day signed URLs, a 404 when frames aren't offered, persistence of a frame across drafts while the shot is unchanged, exclusion from the video quote, and the meaning of the unavailable reasons. What's missing is any note on ordering or how frames relate to drawing one.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the two things returned (frames and price) and the size is roughly proportionate to the domain. However it is a single run-on block dense with nested parentheticals, so return fields, edge cases and pricing are harder to scan than they need to be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read tool with no output schema, the description covers return fields, signing lifetime, failure mode (404), persistence semantics and the pricing caveat, which is close to everything an agent needs. The remaining gap is how this list interacts with the frame-drawing sibling and the plan resource.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter and the schema documents it at 100% coverage with a pattern and example, so the schema carries the load. The description supplies no additional information about plan_id beyond referring to "a plan's shots," which is the expected baseline for a fully-covered single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely — the opening frames drawn for a plan's shots, plus the credit price of drawing one more — and defines what an opening frame is (the picture of the moment a shot opens on). The listing verb is only implicit via the title, but the object of the tool is unambiguous enough to separate it from draw_music_video_frame.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"For users who want control over key shots" gives a loose motivation for calling it, and the note that frames are never part of the video's quote hints at why one would inspect before drawing. But there is no explicit when-to-use/when-not wording and no named alternative (e.g. draw_music_video_frame or get_music_video_plan) for the agent to route between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_music_video_looksList music video LooksBRead-onlyIdempotentInspect
Music video Looks made public, and the workspace's own scope: all (default), community (public ones) or mine. A Look carries category, style, takes, lipsync, a treatment and its places and props (pieces); pass its id as look_id with those choices.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search names and descriptions | |
| sort | No | ||
| limit | No | ||
| scope | No | ||
| offset | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, non-destructive and closed-world, so safety is covered. The description adds useful domain context (a Look carries category, style, takes, lipsync, treatment, places/props), but the closing clause 'pass its id as look_id with those choices' references a parameter this tool does not have, which muddies rather than clarifies behavior for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler, but the first is a dense fragment stuffing scope options together and the second mixes return-shape description with an off-topic look_id instruction. The core listing purpose and padding/pagination hints are not front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter paged list tool with no output schema, knowing what a Look contains is genuinely helpful. However, the description omits sorting/pagination semantics and the meaning of limit/offset, and its look_id remark points at a different tool, so an agent still lacks everything needed to page and order results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (just q is documented), so the description must carry more weight and it only partially does. It does explain the scope enum meanings and its default of 'all', which the bare enum does not, but sort, limit, and offset receive no explanation at all, leaving three of five parameters semantically bare.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description identifies the resource (music video Looks) and the scoping concept, but it never states the operation as a verb — the reader must infer "list" from the name/title, and the opening clause is a noun fragment. It also does not distinguish this from near-identical siblings such as list_looks, show_looks, or get_music_video_look, so an agent cannot confidently tell them apart from the text alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the enumeration of scope values ('all (default), community (public ones) or mine') gives the agent a hint about which visibility slice it wants. There is no explicit statement of when to choose this tool over list_looks or show_looks, and no note about paging through large result sets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_organizationsList your organizationsARead-onlyIdempotentInspect
The organizations you belong to, your role in each and the one these credentials act for Every organization (workspace, in the app) the signed-in person is a member of; with an API key, the member who created it (the key needs organizations:read). type is artist (one artist and its songs), creator (projects: the same records as artists, a performer optional) or label (a roster of artists). current marks the organization these credentials act for. image_url is the picture uploaded for it (null without one); while it has none, image_fallback is the cover of its newest song still there (song_id, preview_url 640 px and thumbnail_url 160 px WebP), to show in its place, or null without a song. It is read-only, never saved as the picture, and follows the newest song (a new song or an archived one changes it). Each organization has its own plan, music, videos, Looks and credits: to work in another one, sign in again and pick it on the consent screen, or use an API key created in it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent hints, it discloses authorization behavior (API-key calls are scoped to the creating member and need organizations:read), that 'current' identifies the acting organization, and that image_fallback is read-only, never persisted, and shifts as the newest song changes. It also warns that each organization has its own plan, music, videos, Looks and credits, which is the key behavioral constraint an agent must know before acting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with the core meaning, but the body is one long run-on paragraph with heavily nested clauses (the type enumeration and the image_fallback chain especially). The content largely earns its place given no output schema exists, yet it would read far better as separated statements about scope, auth, and returned fields.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no parameters, the description carries the full burden of explaining the response and does so thoroughly: the entity type taxonomy, the current-organization marker, image fields and their fallback lifecycle, and per-organization isolation. An agent could act on the result correctly without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is no input semantics to explain. The description instead spends its words on result-field meaning (type values, current, image_url, image_fallback), which is useful but belongs to output documentation rather than parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause states precisely what is returned: every organization the signed-in person belongs to, their role in each, and which one the credentials act for. Scope is narrowed explicitly (with an API key, only the member who created it), so an agent can distinguish this read listing from create_organization/update_organization without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives the practical context for calling it – determining which organization the current credentials act for – and closes with the alternative path when work must happen elsewhere: sign in again and pick the organization on the consent screen, or use an API key created in it. It also states the required scope (organizations:read) for key-based calls. What's missing is an explicit routing statement against siblings (e.g. versus get_account), but the framing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_songsList songsARead-onlyIdempotentInspect
Songs with their cover, duration and analysis status A song must be analyzed (analysis.status "ready") before videos can be made. 50 per page by default: pass q to search, and limit/offset to page. cover_art.url is the cover at up to 1536 px (JPEG; width and height describe it), preview_url a 640 px and thumbnail_url a 160 px WebP. Image links are signed for 7 days and stay the same all day, so they can be cached.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Part of the song title or artist name | |
| sort | No | title (default): by artist then title; newest: latest uploads first | |
| limit | No | Results per page, 1-100 (default 50) | |
| offset | No | How many results to skip | |
| status | No | Only songs whose analysis has this status (ready = usable for videos) | |
| artist_id | No | Only this artist’s songs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a safe, idempotent read, so the description rightly spends its budget elsewhere: default page size of 50, signed image URLs valid 7 days and stable within a day (so they can be cached), and the three cover resolutions with their formats. The prerequisite that analysis.status must be 'ready' before video creation adds real downstream context. Missing only return-shape and pagination-total behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content density is good and the most useful facts (what a song carries, the analysis prerequisite, paging, image lifetimes) come early. But the opening is a malformed fragment — 'Songs with their cover, duration and analysis status A song must be analyzed...' — with a missing sentence break, which hurts front-loading and readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully describes the returned item fields and the image URL semantics, and it covers all six parameters via the schema. The remaining gap is pagination behavior for limit/offset — no mention of how to detect more results — which matters for a paged list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and every parameter carries a clear description including defaults, enums, and ranges, so the schema already does the heavy lifting. The description restates the 50-per-page default and the q/limit/offset roles without adding format or edge-case detail beyond the schema, which is the expected baseline-3 outcome.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (songs) and enumerates what each item carries — cover, duration, analysis status — which is more informative than the bare title 'List songs'. However, it never contrasts itself with the close siblings show_songs and get_song, so an agent must infer when this list variant is the right pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the mention of 'pass q to search, and limit/offset to page' signals a browsable, pageable catalogue, and the note that a song must be 'ready' before videos hints at a pre-production workflow. No alternative tool is named and no when-not-to-use condition is given, so the agent gets context but no routing help.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_videosList videosARead-onlyIdempotentInspect
Videos, newest first, with status and thumbnails A page at a time (limit, default 50): next_cursor is null on the last page, otherwise pass it as cursor for the next one with the same filters. counts says how many videos match song_id, artist_id, quote_id and q: all, and by type (lyric_video, canvas, music_video). Each video's outputs carry aspect_ratio, poster_url, poster_seconds and web_url (for thumbnails and previews); get_video has the download links. A video that is waiting has queue: why (plan_limit or render_capacity), its place in line or about how long.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search the song title, artist name, Look name or video id | |
| type | No | ||
| limit | No | ||
| cursor | No | next_cursor from the previous page | |
| song_id | No | Only this song’s videos | |
| quote_id | No | Only the videos this quote made (none until it is used) | |
| artist_id | No | Only videos of this artist’s songs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, closed-world and non-destructive, so safety is covered. The description adds genuine value beyond that: next_cursor is null on the last page, the counts object is broken down by type, outputs carry aspect_ratio/poster_url/poster_seconds/web_url, and queued videos expose a queue reason (plan_limit or render_capacity) with position or ETA. It does not enumerate status values or say how empty results look.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is dense and front-loads paging, which is good, but the prose is fragmentary and run-on — the first sentence lacks punctuation between "thumbnails" and "A page at a time", and several clauses drop their verbs. Density is achieved at the cost of parseability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description has to describe return shape and it largely does: status, thumbnails, counts, per-video outputs, and the queue sub-object for pending videos. Only the set of possible status values and the empty-result behavior are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 71% schema coverage, the description fills real gaps: it supplies the limit default of 50 and its paging role, and explains that counts aggregate across song_id, artist_id, quote_id and q. However, it names the type values as "lyric_video, canvas, music_video" while the schema enum uses hyphens ("lyric-video", "music-video"), an inconsistency that could cause malformed calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Videos, newest first, with status and thumbnails, a page at a time" identifies the resource, the sort order and the pagination model. It also distinguishes itself from get_video for download links. The opening is a verbless fragment, so the reader must infer "list" from the tool name rather than the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It routes one concrete need to a sibling ("get_video has the download links") and explains exactly how to continue paging with the same filters. It does not state when to prefer this over wait_for_video, show_video or the list_music_video_* siblings, so the higher-level selection guidance is incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_music_videoWrite a music video shot listAInspect
The director's shot list for a music video, the idea and every shot, before anything is charged Free (a limited number an hour). Takes about a minute. Returns a plan: the concept, the character it keeps the artist from, and its shots (cut between the song's lines, up to about 14 seconds each) with their lyrics and how each comes in (a cut, or carrying on in a continuous take). Show it to the user, rewrite it with revise until they like it, then quote_music_video and create_music_video with its plan_id.
| Name | Required | Description | Default |
|---|---|---|---|
| cast | No | The performer in it, kept from their character: what they wear, outfit_kit (a kit outfit's @handle, without the @, worn in every shot they are in); left out, the director picks. Only when the performer is on screen | |
| trim | No | Only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). Best: a part from get_song_analysis (parts[]: its start and end never cut a word) | |
| model | No | The music video model: one-take (default; MiniMax H3 Max), seedance-2-0, seedance-2-0-fast, seedance-2-0-mini or seedance-2-5. get_options lists the models offered to you with the categories, styles, formats, takes and length each makes, and guide: what each is best for, its strengths, weaknesses and public benchmark scores. When the person hasn't named a model, suggest the kind's recommended_model (get_options music_video.categories) with its best_for line and the price difference between models from quotes, and let them choose any | one-take |
| style | No | Optional look: natural, film, golden-hour, neon-night, noir, vintage or dreamy; omitted, the director picks one from the cover | |
| takes | No | How the shots meet: "cuts" (default: shots meet with a cut between the song's lines, like an edit) or "continuous" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws) | cuts |
| people | No | ||
| revise | No | Rewrite an earlier plan of this song: {"plan_id":"plan_…","note":"what to change"} (the next draft) | |
| scenes | No | Where it is set besides the places the direction mentions from the kit: {"mode":"invent"} (default: the director imagines the others) or {"mode":"stock"} (it finds a real stock photo of each place it writes, empty of people, and the artist is put into it), up to the model's kit.places in all | |
| lipsync | No | "auto" (default: the director has the artist sing the important lines on camera) or "never" (nobody sings on camera; the song plays over every shot). A kind sung on camera (lyric-led) refuses "never"; an instrumental song never lip-syncs | auto |
| look_id | No | A music video Look (list_music_video_looks: one made public, or the workspace's own) the video follows: its treatment leads the director and its places and props join the kit. Send its category, style, takes and lipsync too (or your own) | |
| song_id | Yes | The song; its artist performs the video and needs their character (list_characters; start_character makes one), unless performer names another character | |
| category | No | performance (default), intercut, cinematic, story or surreal | performance |
| direction | No | Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): "@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (those in the song's artist's kit and those other artists shared, list_characters with for_artist_id; the song's artist's own too when another character performs; in a story with a cast, they are the cast): "@mia-torres dances behind her in the last chorus". An unknown handle, or another artist's piece they haven't shared, answers 400 | |
| on_screen | No | Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed and there are no outfits; continuous takes join on the cast and the place | |
| performer | No | Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character in the song's project's kit or one another project shared (list_characters with for_artist_id: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places). | |
| lookbook_id | No | A lookbook (design_music_video_shoot) whose kept, drawn pieces the video uses like the kit pieces the direction mentions; its idea leads the director | |
| aspect_ratio | No | "9:16" (default), "16:9" or "1:1" | 9:16 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only tell the agent it is non-read-only, open-world and non-idempotent; the description adds materially more: it is free with an hourly cap, takes about a minute, and yields a plan object rather than a rendered video. It does not spell out what happens on failure or whether plans expire, but the cost, latency and side-effect profile are all disclosed beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The workflow-critical sentence about revise/quote/create is front-loaded after the artifact definition, and nothing is padding. It is dense with stacked parentheticals and long clauses, which slows parsing slightly, but every sentence carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 17-parameter, nested, open-world planning tool with no output schema, the description covers what matters: what is produced, that it is free and slow, and how it connects to quote and create. Residual gaps around error handling and plan lifetime are minor given the rich schema and the named follow-up tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 94%, so nearly every one of the 17 parameters is already documented in the schema, and the enum values, patterns and defaults carry most of the meaning. The description contributes the revise payload's role in the loop and the plan_id hand-off, but adds little about cast, trim, scenes or direction beyond what the schema already says; baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific artifact ('the director's shot list for a music video, the idea and every shot') and explicitly positions it as the step before anything is charged, which separates it cleanly from quote_music_video, create_music_video and design_music_video_shoot. It even describes the shape of what comes back (concept, kept character, shots up to ~14 seconds with lyrics and joins), so an agent knows exactly which artifact this tool produces.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states a concrete workflow: show the plan to the user, rewrite it with revise until they like it, then call quote_music_video and create_music_video with its plan_id. When-not guidance is implicit but strong (it is the pre-charge step), and the alternative path (revise) is named with its trigger condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_canvasQuote a CanvasARead-onlyIdempotentInspect
The exact credits for a Spotify Canvas, before anything is charged Returns quote_id, credits and a breakdown. Always quote first and tell the user the credits before creating; credits are reserved at creation and charged only when the video is delivered.
| Name | Required | Description | Default |
|---|---|---|---|
| style | No | Optional visual style | |
| source | No | ai-video (default), ai-image, stock-photo or stock-video | ai-video |
| quality | No | AI video model tier: standard or high | standard |
| seconds | No | Canvas length in whole seconds, 5–8 (default 8). Spotify loops it, so no part of the song is chosen | |
| song_id | Yes | The song id | |
| metadata | No | Your own JSON (an order id, for example): kept with the video and returned in its request. Quote and create with the same value | |
| stock_id | No | With a stock source: the stock photo or video (search_stock with seconds) to use instead of the director's pick | |
| direction | No | Optional mood, motifs or references | |
| performer | No | A Creator workspace only: the character (list_characters with for_artist_id: one in the song's project's kit or one another project shared) who may appear, with feature_artist auto or always on an AI source. Omitted: the song's artist's character | |
| resolution | No | 1080p (1080×1920) or 720p | 1080p |
| variations | No | 1–4 different Canvases | |
| inspiration | No | Where the idea comes from: cover (default; the cover art's world, colors and motifs, brought to life) or song (its words, story and sound lead, the colors kept close to the cover so the two sit together in the player) | cover |
| callback_url | No | An https URL to POST the finished video to (signed; see Callbacks). Quote and create with the same value | |
| feature_artist | No | Whether the Canvas shows the artist: auto (the director decides), always or never (AI sources; "always" needs the artist's character: list_characters, start_character makes one) | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false; the description adds value beyond them by explaining the billing lifecycle (credits reserved at creation, charged only on delivery) and by naming the returned fields in the absence of an output schema. It does not mention quote expiry or how long a quote_id remains valid before creation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the pricing guarantee and return fields front-loaded before the workflow instruction. The longer second sentence carries the create/charge semantics and earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 14-parameter tool whose schema is fully documented and which has no output schema, the description supplies exactly what is missing: the returned fields and the cost/reservation model. Nothing an agent needs to call it correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 14 parameters including enums, defaults and ranges are already documented in the schema. The description adds no parameter-level guidance (e.g. how quality or variations affect the quoted credits), so this is the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb and resource ('The exact credits for a Spotify Canvas') plus the precise output ('quote_id, credits and a breakdown'), which immediately separates it from create_canvas and the other quote_* siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Always quote first and tell the user the credits before creating' gives an explicit sequencing rule that selects this tool over the create path. It does not name create_canvas or state any case where quoting should be skipped, so it stops short of full alternative coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_lyric_videoQuote a lyric videoARead-onlyIdempotentInspect
The exact credits for a lyric video, before anything is charged Returns quote_id, credits (total), credits_per_video and a breakdown. Always quote first and tell the user the credits before creating; credits are reserved at creation and charged only when the video is delivered. A quote is valid for 30 minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| look | Yes | {"mode":"existing","id":"look_…"} to reuse a saved Look (add "lyric_style" to render it in another lyric style, at no extra cost), or {"mode":"new","category":"…","lyric_style":"…","background":{"source":"ai-image","quality":"high"},"visibility":"private","direction":"…"} to have one designed (any category takes any background.source, "designed" being a free moving gradient the director draws; background.source "upload-photo"/"upload-video" with background.upload_id from upload_background designs it around your own media; such a Look stays private. "stock-photo"/"stock-video" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references "stock" (AI image or AI video, default "none") with feature_artist "always" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist "always" (default "never") makes them the subject of the background, recognizable from their character (list_characters; start_character makes one); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false | |
| trim | No | Render only this section of the song (at least 8 seconds). Best: a part from get_song_analysis (parts[]: its start and end never cut a word) | |
| display | No | Which elements show (title, artist, cover, lyrics, badges, headline) and their sizes. cover must be false to show the artist in the background | |
| song_id | Yes | The song id | |
| metadata | No | Your own JSON (an order id, for example): kept with the video and returned in its request. Quote and create with the same value | |
| variations | No | 1–4 different New Looks, one video each (an Existing Look renders one) | |
| callback_url | No | An https URL to POST the finished video to (signed; see Callbacks). Quote and create with the same value | |
| aspect_ratios | No | Formats to render, each its own file: "9:16" (vertical), "16:9" (wide), "1:1" (square) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower, yet the description still adds real context: the returned fields (quote_id, credits, credits_per_video, breakdown), the expiry window, and the crucial charging model (reserved at creation, charged on delivery) that explains why quoting matters. It omits any statement that the quote must be repeated with identical parameters at creation time, which is left 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose and followed by the workflow rule and the expiry — no filler. Minor deduction for the missing sentence break after 'before anything is charged Returns quote_id', which runs two thoughts together and slightly hurts scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with deep nested objects and no output schema, the description covers purpose, return shape, cost semantics and quote lifetime, which is most of what an agent needs. The remaining gap is that parameter parity between the quote and the eventual create call is only documented inside individual schema properties, not at the description level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description says nothing about any of the 8 parameters (song_id, look, trim, display, variations, aspect_ratios, metadata, callback_url) — all of that meaning lives in the schema, which has 100% coverage including a very detailed nested look/display description. Baseline 3 is correct when the schema carries the full parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('the exact credits for a lyric video') and its temporal scope ('before anything is charged'), which separates it from create_lyric_video and from the sibling quote_music_video/quote_canvas pricing tools. It never names a sibling explicitly, but the pricing-versus-creation distinction is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit directive: 'Always quote first and tell the user the credits before creating.' That not only says when to call it but states the prerequisite workflow and the required user-facing step, and the 30-minute validity tells the agent how long the result can be acted on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_music_videoQuote a music videoARead-onlyIdempotentInspect
The exact credits for an AI music video, before anything is charged Returns quote_id, credits and a breakdown; the price follows the section's length (clips of about 15 seconds). The song's artist performs it, so the artist needs their character (start_character). Always quote first and tell the user the credits before creating; credits are reserved at creation and charged only when the video is delivered.
| Name | Required | Description | Default |
|---|---|---|---|
| cast | No | The performer in it, kept from their character: what they wear, outfit_kit (a kit outfit's @handle, without the @, worn in every shot they are in); left out, the director picks. Only when the performer is on screen | |
| trim | No | Perform only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). The price follows its length. Best: a part from get_song_analysis (parts[]: its start and end never cut a word) | |
| model | No | The music video model: one-take (default; MiniMax H3 Max), seedance-2-0, seedance-2-0-fast, seedance-2-0-mini or seedance-2-5. get_options lists the models offered to you with the categories, styles, formats, takes and length each makes, and guide: what each is best for, its strengths, weaknesses and public benchmark scores. When the person hasn't named a model, suggest the kind's recommended_model (get_options music_video.categories) with its best_for line and the price difference between models from quotes, and let them choose any | one-take |
| outro | No | Optional: end on a release card after the last shot, the song playing on under it (the delivered video is up to 5 seconds longer; the director designs it for the video, or look_id: a lyric video Look from list_looks whose card is used as it is). display: title, artist, cover, badges (true/false) and optional cover_scale, text_scale, artist_scale, spacing_scale. Free with the video | |
| style | No | Optional look: natural, film, golden-hour, neon-night, noir, vintage or dreamy. Omit it and the director picks one from the cover | |
| takes | No | How the shots meet: "cuts" (default: shots meet with a cut between the song's lines, like an edit) or "continuous" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws) | cuts |
| people | No | ||
| scenes | No | Where it is set besides the places the direction mentions from the kit: {"mode":"invent"} (default: the director imagines the others) or {"mode":"stock"} (it finds a real stock photo of each place it writes, empty of people, and the artist is put into it), up to the model's kit.places in all | |
| lipsync | No | "auto" (default: the director has the artist sing the important lines on camera) or "never" (nobody sings on camera; the song plays over every shot). A kind sung on camera (lyric-led) refuses "never"; an instrumental song never lip-syncs | auto |
| look_id | No | A music video Look (list_music_video_looks: one made public, or the workspace's own) the video follows: its treatment leads the director and its places and props join the kit. Send its category, style, takes and lipsync too (or your own) | |
| plan_id | No | Make the video from this plan (plan_music_video): its brief (model, kind, look, format, section…) replaces the one sent, so send song_id and plan_id; quality left out is the plan's model's default. Omitted, the director plans it while it is made | |
| quality | No | The resolution it is made at: one of the qualities get_options lists for the model (left out, the model's default_quality: 768p for MiniMax H3 Max, 720p for Seedance; a sharper one is the same video for more credits); not part of the plan, so a plan is made in any quality. get_options lists each model's qualities with about how long each takes; credits.music_video.models has a minute by model and quality | |
| song_id | Yes | The song; its artist performs the video and needs their character (list_characters; start_character makes one), unless performer names another character | |
| category | No | performance (default: sings to camera in one place), intercut (performance cut against the artist living the song's story), cinematic (a moving camera through a location), story (acts out the song's story) or surreal (the world transforms with the song). get_options lists the ones each model makes | performance |
| metadata | No | Your own JSON (an order id, for example): kept with the video and returned in its request. Quote and create with the same value | |
| refinish | No | Finish a delivered music video again with another outro, or none (send song_id, refinish.video_id and outro or not; one variation): no shot is made again (its kept shots are joined again under the song), only setup and delivery are charged. Needs the video's revisable_until ahead | |
| direction | No | Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): "@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (those in the song's artist's kit and those other artists shared, list_characters with for_artist_id; the song's artist's own too when another character performs; in a story with a cast, they are the cast): "@mia-torres dances behind her in the last chorus". An unknown handle, or another artist's piece they haven't shared, answers 400 | |
| on_screen | No | Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed and there are no outfits; continuous takes join on the cast and the place | |
| performer | No | Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character in the song's project's kit or one another project shared (list_characters with for_artist_id: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places). | |
| variations | No | 1–4 different music videos | |
| lookbook_id | No | A lookbook (design_music_video_shoot) whose kept, drawn pieces the video uses like the kit pieces the direction mentions; its idea leads the director | |
| aspect_ratio | No | The one format of the file: "9:16" (default, vertical), "16:9" (wide) or "1:1" (square) | 9:16 |
| callback_url | No | An https URL to POST the finished video to (signed; see Callbacks). Quote and create with the same value | |
| design_shoot | No | Without a plan: the director first designs the shoot (the outfits, places and props the brief leaves open) and draws each as a picture every shot is given. The quote counts the most pictures it may draw; only those drawn are charged |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint=true, so the safety profile is covered; the description adds genuinely new behavior — the price tracks the trimmed section length (~15-second clips), credits are reserved at creation and charged only on delivery, and quoting itself charges nothing. That billing lifecycle is the key context an agent needs and is not derivable from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then return values, then the pricing constraint and the mandatory quote-before-create rule. There is a readability defect: a missing period between 'before anything is charged' and 'Returns quote_id', which briefly garbles the second clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 24-parameter tool with no output schema, the description still covers the essentials: what is returned, what the quote costs and how price scales, the character prerequisite, and the quote-then-create sequencing. Optional paths (plan_id vs design_shoot, refinish, callback_url) are left to very thorough schema descriptions, which is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 96%, so the schema already documents cast, trim, model, takes, on_screen and the rest in detail. The description adds only two pieces of meaning — trim length drives price and the artist's character is required — which is the expected baseline when the schema does the heavy lifting across 24 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a specific verb and resource — quoting (pricing) an AI music video before charging — and lists the return payload (quote_id, credits, breakdown). It implicitly separates itself from create_music_video via 'before anything is charged', though it never names that sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit workflow rule: 'Always quote first and tell the user the credits before creating.' It also states a prerequisite (the song's artist needs a character via start_character). It stops short of naming create_music_video or describing any case where quoting should be skipped.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reanalyze_songAnalyze a song againBIdempotentInspect
Retry a failed analysis
| Name | Required | Description | Default |
|---|---|---|---|
| song_id | Yes | The song id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose the safety profile (readOnlyHint=false, idempotentHint=true, destructiveHint=false), so the bar is lower. The description adds the useful precondition that this is a retry for a failed analysis, but says nothing about whether the re-run is asynchronous, how long it takes, or how to observe the result — relevant for a mutation that triggers a job.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words is efficient and front-loaded with the core action, so there is no wasted text. But the brevity tips into under-specification rather than tight conciseness — the sentence is arguably shorter than the task warrants.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool whose annotations cover safety, the description is barely adequate. It omits the surrounding workflow context that its siblings imply (checking analysis via get_song_analysis, waiting for a job like wait_for_video), so an agent cannot tell how a retry fits into the overall flow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single song_id parameter, so the schema already documents it fully. The description adds no meaning beyond the schema (e.g. whether the id must reference a song in a failed state). Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the action (retry an analysis) but never states the resource (song) or what 'analysis' means here; that information lives only in the tool name and title. It also does not distinguish this re-run tool from the sibling get_song_analysis, which likely retrieves the same analysis. Purpose is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Retry a failed analysis" implies the trigger condition (a prior failure), which is real usage guidance. However, it names no alternatives and gives no exclusions — e.g. how to check status, what to call after the retry, or whether it is valid on a song that never failed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redesign_music_video_lookbookRedesign a lookbookBInspect
Redesigns the director's pieces with a note and draws them again (spends credits) The user's own pieces stay. credits: price.redesign.credits.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | What to change | |
| credits | Yes | The price shown (price.redesign.credits) | |
| lookbook_id | Yes | The lookbook id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false and destructiveHint=false, but the description adds two facts the annotations cannot: the call spends credits, and existing user-owned pieces are preserved while director pieces are regenerated. That preservation/cost context is exactly the kind of behavioral detail that matters for a mutating, open-world tool; missing only permission or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core statement is front-loaded and short, which is good, but the trailing fragment 'credits: price.redesign.credits.' duplicates the schema's credits description and reads as a leftover snippet rather than an earned sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation that costs credits, the description covers cost and what is preserved versus regenerated, and no output schema exists so return values needn't be explained. It stops short of saying whether the redraw is asynchronous or whether the returned lookbook reflects the new pieces, but overall it is sufficient to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters (note, credits, lookbook_id) are already documented in the schema. The description echoes 'with a note' and 'spends credits' but adds no format, bounds, or example beyond that, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Redesigns') and a specific scope (the director's pieces in a lookbook) with the note-based behavior made explicit. It implicitly distinguishes itself from redraw_music_video_lookbook_piece (one piece) by operating on 'pieces' plural, though the term 'director's pieces' is jargon that isn't defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to choose this over redraw_music_video_lookbook_piece, update_music_video_lookbook, or keep_music_video_lookbook_piece, all of which sit adjacent in the sibling list. The line 'The user's own pieces stay' implies a scope distinction but never converts it into a use-when/use-instead rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
redraw_music_video_lookbook_pieceRedraw a lookbook pieceCInspect
Draws one of the director's pieces again, with an optional note (spends credits) credits: price.credits_per_picture.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | What to change: "warmer light, nobody else" | |
| piece | Yes | The piece's number | |
| credits | Yes | The price shown (price.credits_per_picture) | |
| lookbook_id | Yes | The lookbook id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare openWorldHint=true, idempotentHint=false, destructiveHint=false; the description adds the important behavioral fact that this consumes credits. It still omits whether the redraw replaces the existing piece or produces an additional variant, and how many credits a single redraw costs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single short sentence, which is appropriately front-loaded, but the trailing 'credits: price.credits_per_picture' fragment is malformed and repeats schema content rather than adding information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a credit-spending, non-idempotent generation tool with no output schema, the definition should say what the agent gets back (a new piece? a status?), whether the prior piece is kept, and how to read the price before calling. None of that is present, leaving gaps an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all four parameters are described in the schema, so baseline 3 applies. The description notes the note is optional and ties credits to price.credits_per_picture, but the latter is garbled phrasing that adds little beyond the schema's own description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
'Draws ... again' is a specific verb applied to a specific resource, and the optional-note/edit framing makes the operation recognizable. The phrasing 'one of the director's pieces' is looser than the tool name's 'lookbook piece', so the link to the lookbook resource is inferred rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to redraw versus redesign_music_video_lookbook, keep_music_video_lookbook_piece, or render_music_video_lookbook, all of which sit adjacent. The only selection signal is that it spends credits, which is a caveat, not a routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_artist_imageRemove the artist imageADestructiveIdempotentInspect
Remove the artist’s image: they show their initial until another is set
| Name | Required | Description | Default |
|---|---|---|---|
| artist_id | Yes | The artist id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuinely new post-condition context beyond the annotations: after removal the artist shows their initial until another image is set, which tells the agent the artist is not left in a broken state.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single short sentence with the action front-loaded and zero filler. The colon construction reads slightly awkwardly, but no words are wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with full annotation coverage and no output schema, the definition supplies everything essential, including the fallback display behavior. It is only missing a note on whether removal is reversible or requires specific ownership.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single well-documented required parameter (artist_id, 1-120 chars), so the schema carries parameter meaning. The description adds no extra semantics such as where to obtain the artist id, which matches the baseline 3 for high-coverage schemas.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Remove the artist's image") and is clearly distinguishable from the sibling set_artist_image. The parenthetical about the initial placeholder is slightly odd syntax but reinforces the outcome rather than obscuring the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the existence of set_artist_image as a sibling makes the add/replace counterpart obvious to an attentive agent, but the description never says when to remove versus replace, nor mentions any prerequisite (e.g., that an image must currently exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_idea_voteTake back a voteAIdempotentInspect
Remove the person's vote from an open idea
| Name | Required | Description | Default |
|---|---|---|---|
| idea_id | Yes | The idea id (idea_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare non-read-only, idempotent, non-destructive behavior, so the safety profile is covered. The description adds the "open idea" scope constraint, which is genuinely beyond the structured data, but says nothing about what is returned or how a missing vote is handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. Slight ambiguity in "the person's" (assumed to be the authenticated caller) keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter, non-destructive mutation with full schema coverage and rich annotations, this is close to sufficient. Only the edge case of removing a non-existent vote is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single idea_id parameter documented with a pattern, so the schema carries the parameter burden. The description adds no format or sourcing detail beyond it; the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Remove the person's vote from an open idea" names a specific verb (remove) and resource (vote on an idea), which cleanly contrasts with the sibling vote_for_idea. It never names the sibling directly, but the inverse action is unambiguous from the verb alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "open idea" implies a precondition (only open ideas accept vote removal) but is not spelled out as a rule, and the description does not point to vote_for_idea as the counterpart action or state what happens if no vote exists. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_artistRename an artistCIdempotentInspect
Change an artist’s name
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new name | |
| artist_id | Yes | The artist id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, covering the safety and repeat-call profile. The description adds nothing beyond that: it does not say whether renaming affects downstream references (URLs, credits, other objects), what happens for an unknown artist_id, or whether names must be unique.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single four-word sentence with no waste and the intent is front-loaded. Brevity here reflects under-specification rather than disciplined conciseness, so it lands at the minimum viable level.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description should at least cover failure modes or side effects of renaming. With fully documented parameters and annotations, the core is covered, but the behavioral gaps leave the agent under-informed about consequences of the call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with two parameters (artist_id, name) each documented in the schema. The description adds no extra meaning such as naming constraints, conflict handling, or formatting rules, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Change an artist's name" names a verb and a resource, so the basic purpose is inferable. However, it is essentially a paraphrase of the title "Rename an artist" and adds no distinguishing detail against close siblings like rename_song and rename_look. It is minimally clear but not differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite information, and no mention of alternatives such as rename_song or rename_look. An agent must infer everything about selection context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_lookRename a LookCIdempotentInspect
Rename one of your Looks
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The new name | |
| look_id | Yes | The Look id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing on top of that: no note about permission requirements, whether the rename is reflected immediately, or how the new name is validated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded and free of waste, but it is essentially a restatement of the title rather than a description that earns its four words. Brevity here reflects under-specification rather than disciplined conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter rename with full schema coverage and annotations covering idempotency and safety, the description is minimally sufficient. It leaves out what a Look is and any caveats about renaming, which an agent might want before invoking.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters ('name' as the new name, 'look_id' as the Look id) are documented in the schema. The description adds no format or constraint context beyond what the schema provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Rename) and resource (Look), and the resource noun clearly separates it from siblings like rename_artist and rename_song. It does not explain what a 'Look' is, but the operation itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No when-to-use guidance, no prerequisites, and no mention of nearby siblings such as set_look_visibility or get_look. The agent must infer that this is the mutation path for changing a Look's name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_songRename a songCIdempotentInspect
Change a song’s title instrumental is deprecated: the analysis hears whether a song has vocals. Switching it still analyzes the song again (an instrumental isn't transcribed, and its lyrics go): poll get_song until analysis.status is "ready".
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | The new title | |
| song_id | Yes | The song id | |
| instrumental | No | Deprecated: the analysis hears whether a song has vocals. true: a song without vocals (never transcribed, never lip-synced). Stops working on 2027-04-30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds real behavior beyond the annotations: switching `instrumental` triggers a full re-analysis, an instrumental is never transcribed, and existing lyrics are discarded. That last point is effectively a destructive side effect, which sits awkwardly against destructiveHint=false, so the disclosure is valuable but inconsistent with the declared safety profile. The idempotentHint=true claim is consistent with a rename.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The text reads as two fragments spliced together with no delimiter, and the key fact (lyrics are discarded) is buried mid-sentence in a parenthetical. It is short in length but not front-loaded or cleanly structured, forcing the reader to reconstruct the intended sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
It covers the mutation's side effects and the required follow-up polling, which matters for a tool with no output schema. However, the broken syntax leaves the relationship between renaming and the deprecated flag ambiguous, and nothing states what the call returns or whether title and song_id need any particular format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented, including the deprecated flag and its 2027-04-30 sunset. The description's only addition is the consequence of toggling `instrumental` (re-analysis, lost lyrics), which is a genuine supplement but is limited to one optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening clause "Change a song's title" gives a clear verb and resource, but it is immediately fused without punctuation into the deprecated-parameter note ("...title instrumental is deprecated"), so the sentence must be re-parsed to extract the actual purpose. The tool's core action is identifiable, but only after untangling a garbled run-on.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is useful post-call workflow guidance (poll get_song until analysis.status is "ready"), but nothing tells the agent when to use rename_song versus related siblings such as set_song_lyrics, reanalyze_song, or clear_song_lyrics, nor what prerequisites exist. Workflow sequencing is covered; tool selection is not.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_music_video_lookbookDraw a lookbookAInspect
Draws the pieces not drawn yet (spends credits) credits is the price the user agreed to (price.draw.credits); a different price answers 409 with the current one. The credits are held, then charged as pictures are drawn; one that fails isn't charged. Poll get_music_video_lookbook until status is ready.
| Name | Required | Description | Default |
|---|---|---|---|
| credits | Yes | The price shown (price.draw.credits) | |
| lookbook_id | Yes | The lookbook id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already say non-readonly, non-idempotent, open-world; the description adds the economics that annotations cannot express: credits are held, charged only as pictures are drawn, failed draws are free, and a mismatched price returns 409 with the current one. This is exactly the disclosure a credit-spending mutation needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded paragraph with no filler, leading with the action and cost. Slightly run-on phrasing around 'spends credits) credits is the price' costs it a point, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent the tool is asynchronous, how to observe completion, and how billing behaves on partial failure. What the ready lookbook payload looks like is left to get_music_video_lookbook, which is reasonable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by explaining that credits must equal the agreed price (price.draw.credits) and that a stale value yields 409 with the current price. It adds real semantics about the credit parameter beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource plus a scope qualifier: 'Draws the pieces not drawn yet', which implicitly contrasts with redraw_music_video_lookbook_piece and redesign_music_video_lookbook. An agent can tell what this does and which sibling handles the other case.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete follow-up flow ('Poll get_music_video_lookbook until status is ready') and price-matching precondition. It doesn't explicitly name redraw_music_video_lookbook_piece as the alternative for already-drawn pieces, but the 'not drawn yet' scoping effectively routes the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
retry_videoMake a video againAInspect
Run a finished, failed or cancelled video again (new charge) Reuses the Look it made, with its background media and loops, so nothing already made is paid for again. A video that failed before its Look was saved is designed afresh.
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | The video id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the non-read-only, non-idempotent, non-destructive profile, and the description adds crucial behavior: retrying incurs a new charge, reuses the existing Look, background media, and loops, and re-designs only when failure happened before the Look was saved. That cost and asset-reuse context is exactly what the agent needs beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the primary action and charge warning, followed by one useful edge-case clarifier. No sentence is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter retry tool, the description covers eligibility, cost, and asset reuse well. It does not state what the call returns (for example, a new video ID or job reference), which is a minor gap given there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the single parameter is already documented. The description does not add syntax or format guidance for video_id, which is acceptable at this coverage level but not enriching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (run again) and resource (video), plus the exact eligible states (finished, failed, cancelled). This cleanly separates it from sibling tools like create_music_video, cancel_video, and wait_for_video.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use it: only for finished, failed, or cancelled videos. It does not explicitly name alternatives for other cases, but the triggering conditions are unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revise_music_video_shotRevise a music video shotAInspect
The director rewrites one shot of a delivered music video from a note (free) For a music video whose revisable_until (get_video) is still ahead. Free (counted with the plans an hour), about half a minute. Returns a plan whose revision names the video and the shots made again: the shot asked, and the next one when it carries straight on from it. Show the rewritten shot, then quote_music_video with song_id, plan_id and the video's quality: only the shots made again are charged, the others are reused. create_music_video makes the revision as a new video; the original never changes.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | What should change, in the artist's words | |
| shot | Yes | The shot to change (its index in the plan's shots) | |
| video_id | Yes | The video id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the mutation/safety profile; the description adds cost behavior ('Free (counted with the plans an hour)'), latency ('about half a minute'), billing semantics ('only the shots made again are charged, the others are reused'), and immutability of the original. It also discloses that the returned plan may include the following shot when it carries straight on, which is non-obvious behavior beyond any structured field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and cost, then preconditions, then post-call workflow, then the sibling contrast — a sensible ordering with little waste. Minor deductions for compressed phrasing such as 'Free (counted with the plans an hour)' and the run-on final sentence, which take a second read to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description explains what comes back (a plan whose revision names the video and the re-made shots) and what to do with it. For a 3-parameter, non-idempotent mutation tool, the preconditions, billing model, timing, and follow-up call leave nothing an agent needs missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so video_id, shot and note are already documented, and the description adds no format or constraint detail for them. It does add adjacent meaning by explaining that the shot index also pulls in the next shot when continuity requires it, but that is closer to behavioral disclosure than to parameter semantics. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('rewrites one shot of a delivered music video from a note') and immediately scopes it against the sibling that could be confused with it: 'create_music_video makes the revision as a new video; the original never changes.' An agent can distinguish revise-in-place from create-new without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit precondition ('For a music video whose revisable_until (get_video) is still ahead'), names the alternative (create_music_video) and its different outcome, and prescribes the follow-up sequence: show the rewritten shot, then quote_music_video with song_id, plan_id and quality. When-to-use, when-to-use-something-else, and next step are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_music_video_lookSave a music video's LookAIdempotentInspect
A delivered music video's direction as a reusable Look (free) Made the first time (the director writes its treatment without the song, the lyrics or the artist), private to the workspace until the video is made public; its AI-drawn places and props travel with it, never the artist. Use it with plan_music_video or quote_music_video look_id on any song.
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | The video id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotent, non-destructive, closed-world), the description adds genuinely useful behavior: the save is free, it happens only the first time, the Look stays private to the workspace until the video is made public, and only AI-drawn places/props are carried — never the artist. These are non-obvious visibility and content-scoping details that the annotations do not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loads the verb+resource, but it is written as a single elliptical sentence with missing articles and nested parentheses ("(free) Made the first time (...)", "(the director writes its treatment...)"), which forces re-reading. The information earns its place; the packaging does not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter and full annotation coverage, the definition covers cost, idempotency behavior, visibility, and what content is carried over — everything needed to decide to call it. The remaining gap is that no output schema exists and the description never says a Look id/record is returned, which the follow-up plan/quote step depends on.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% but the schema text is only "The video id", so the description's qualifier that it must be a *delivered* music video meaningfully narrows which video_id is valid. It stops short of saying what happens with a non-delivered or already-saved video, so it is good rather than complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening states a concrete verb and object: saving a delivered music video's direction as a reusable Look. That is distinguishable from the delete/get/list look siblings, though the run-on parentheticals ("(free) Made the first time (the director writes its treatment without the song, the lyrics or the artist)") muddy the read rather than sharpen it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"A delivered music video's..." implies a precondition (the video must already exist and be delivered), and the closing sentence points at downstream consumers (plan_music_video / quote_music_video look_id). However there is no explicit when-not guidance and no statement of what to do if a Look was already saved for that video, so the agent must infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_stockSearch stock mediaARead-onlyIdempotentInspect
Find stock photos or clips to use as a background 24 results a page. Pass an item's id as look.background.stock_id (source "stock-photo" or "stock-video") or as a Canvas's stock_id to use it instead of the director's pick, and credit the photographer (credit) wherever you show it. orientation: portrait for 9:16 and 1:1, landscape when 16:9 is among the formats (a Canvas is portrait). Clips too short for the loop are left out: pass seconds for a Canvas. thumbnail_url is a 480 px still, preview_url a 1280 px one (the photo, or the clip's poster), preview_video_url a small MP4 of a clip.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Search words, e.g. "foggy pine forest" | |
| kind | Yes | photo for stock-photo, video for stock-video | |
| page | No | Default 1; next_page says whether there are more | |
| seconds | No | Clips for a Canvas of this length (5–8); omit for a Look's loop | |
| orientation | No | Default portrait |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so safety is covered. The description adds real behavioral detail beyond annotations: 24 results per page and the rule that clips too short for the loop are filtered out, plus what the returned thumbnail/preview URLs represent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and every sentence contributes specific information. It is dense and somewhat run-on in the middle sentence about passing ids, but no sentence is expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by explaining the key return fields (thumbnail_url, preview_url, preview_video_url) and page size. It omits explicit mention of next_page, but the schema already documents that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds meaning beyond the schema: orientation is explained in terms of aspect ratios (portrait for 9:16 and 1:1, landscape when 16:9 is among formats) and seconds is tied to excluding clips too short for a Canvas loop.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Find stock photos or clips to use as a background') with clear scope. No sibling tool overlaps, and the description makes the purpose unmistakable without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explains how to use results (pass id as look.background.stock_id or a Canvas's stock_id), how orientation maps to formats, and when to pass seconds. It gives clear usage context but does not explicitly exclude alternatives such as upload_background.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_artist_imageSet the artist imageAIdempotentInspect
Upload or replace the artist’s image, their picture on the artist page and in lists The artist image (image_url on the artist) is kept as a 512 px square: upload the file (or a public https image_url, JPEG, PNG or WebP, at least 512 px on the short side, up to 15 MB) and, optionally, crop: the square to keep in fractions of the upright image (x/y the top-left corner, size the side relative to the image’s short side); left out, it is centered. It replaces the current image; the uploaded file itself is not kept. It is only a display picture: never shown to a model (videos keep the artist from their character: list_characters). Works without a plan.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | The square to keep, in fractions of the image; centered when omitted | |
| artist_id | Yes | The artist id | |
| image_url | No | A public https URL of the image (or upload the file with the CLI) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the traits that actually matter for a call: the current image is replaced, the uploaded file itself is not kept, accepted formats with a minimum 512 px short side and 15 MB cap, centering when crop is omitted, and no plan requirement. The idempotentHint=true annotation is reinforced by the replace semantics described in prose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense and front-loaded, with the primary action first and constraints after. It is weakened by a run-on opening sentence with a missing period ('...in lists The artist image...') and by mentioning a CLI upload path that does not correspond to any parameter here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation tool with a nested crop object and no output schema, the description covers formats, dimensions, size limit, crop coordinate system, default behavior, replacement semantics, and plan requirements. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, yet the description still adds real meaning: it explains that x/y is the top-left corner of the square, that size is relative to the image's short side, and that omitting crop centers the square, plus format and size constraints absent from the schema. That is meaningfully more than restating the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Upload or replace the artist's image') and pins down the exact field it affects (image_url on the artist). It also disambiguates from the character/video tools by saying the image is never shown to a model and that videos use list_characters, so an agent can rule out the wrong family of tools without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly conveys when to call it: to upload or replace the artist picture, optionally with a crop, and notes 'Works without a plan' which removes a prerequisite the agent might otherwise assume. It never names remove_artist_image as the alternative for deletion, so the exclusion half of the guidance is implicit rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_look_visibilityPublish or unpublish a LookAIdempotentInspect
Make one of your Looks public (earns 10 credits) or private Public Looks join the Community library under your @username. A Look that shows your artist stays private (409).
| Name | Required | Description | Default |
|---|---|---|---|
| look_id | Yes | The Look id | |
| visibility | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare mutation safety, idempotency, and open-world behavior. The description adds meaningful consequences beyond that: public Looks cost/earn 10 credits, join the Community library under your @username, and the 409 constraint for artist Looks.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the core action and consequences. There is minor awkwardness in phrasing, but every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with annotations covering safety and idempotency, the description supplies the key operational context: credit effect, publication destination, and the 409 restriction. It is largely complete, though it could mention visibility semantics more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%, with look_id documented and visibility only having an enum. The description adds semantic meaning to the visibility parameter by explaining the effects of public vs. private, but it does not add detail about look_id or otherwise compensate fully for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: making a Look public or private. It is clearly distinguishable from siblings such as rename_look, delete_look, and get_look by its publishing action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies when to use the tool (publishing/unpublishing) and gives an explicit exclusion: a Look showing your artist stays private and returns 409. It does not name alternative tools, but the usage context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_song_lyricsSet a song’s lyricsADestructiveIdempotentInspect
Give a song its own lyrics, or replace them The song’s lyrics as text: plain (Suno-style [Verse]/[Chorus] tags and (x2) marks are fine), or the contents of an SRT, WebVTT or LRC file. Every word is still timed from the audio: your text fixes misheard words and sets where lines break in videos, and its section tags set the song’s sections (a chorus sung once is still a chorus). A part sung again (a chorus) can be written once; lyrics that don’t match what’s sung, or cover only part of it, are refused (409, the song unchanged). They are checked right away (analysis.lyrics in the answer says what changed), or once the analysis finishes if it hasn’t (202). Videos made from then on use them; videos already made stay as they are.
| Name | Required | Description | Default |
|---|---|---|---|
| lyrics | Yes | The lyrics: text, or an SRT, WebVTT or LRC file’s contents | |
| song_id | Yes | The song id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
It discloses several behavioral traits not covered by annotations, such as the acceptance of multiple formats (SRT, WebVTT), the refusal mechanism (409), and the lifecycle rule that only new videos incorporate the change.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is highly detailed, which sacrifices brevity; however, the extensive detail is functionally necessary for the AI to understand this complex operation and its constraints.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is exceptionally complete, covering input formats, validation logic, output behavior (new vs. old videos), and error handling, leaving no major gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even with 100% schema coverage, the description adds crucial semantic value by defining the acceptable content and structure of the 'lyrics' string (text, plain, or specific file contents).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The purpose is explicitly stated ('Give a song its own lyrics, or replace them') and is clearly distinct from related tools like clear_song_lyrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strict usage criteria by stating that lyrics must match the audio ('lyrics that don’t match what’s sung... are refused'), which prevents incorrect invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_looksShow LooksARead-onlyIdempotentInspect
Shows Looks to the person as a gallery they can play and pick from (each Look plays as the real render). Use it whenever they want to see, browse or choose Looks; pass song_id to preview the Looks with one of their analyzed songs. Their pick comes back as a message naming the Look.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Part of a Look's name or description | |
| limit | No | How many (default 12) | |
| scope | No | official (default), community, mine or all | |
| offset | No | For paging | |
| song_id | No | Preview the Looks with this analyzed song instead of a sample | |
| category | No | A Look category id from get_options, e.g. release | |
| look_ids | No | Show exactly these Looks | |
| artist_id | No | Leave out Looks that show another artist | |
| lyric_style | No | A lyric style id from get_options |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare the safe read profile (readOnly, idempotent, non-destructive), but the description adds the crucial interaction model: this renders an interactive gallery, waits for a pick, and returns it as a message naming the Look. That return/round-trip behavior is exactly the kind of trait the annotations cannot express, though latency/blocking expectations are unstated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, zero waste: core behavior first, then when-to-use and the song_id variant, then the return contract. Each sentence earns its place and the most important information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With nine fully documented parameters and no output schema, the description provides the one thing the schema can't: what calling this actually produces (an interactive gallery plus a message naming the pick). Nothing essential is missing, though the absence of any latency/interaction-cost note is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are already documented in the schema. The description's only param note (song_id previews with an analyzed song) restates what the schema already says, adding no new syntax or format detail. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Shows') and resource ('Looks') plus the distinctive modality: a gallery the person can play and pick from, with each Look playing as the real render. That interactive framing implicitly separates it from list_looks, but the sibling is never named, so an agent must infer the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear triggering condition ('whenever they want to see, browse or choose Looks') and explicitly scopes song_id to previewing with an analyzed song. However, 'browse' overlaps with list_looks and no when-not or alternative is offered, leaving the boundary to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_songsShow songsARead-onlyIdempotentInspect
Shows the person's songs as a list with covers, length and analysis status, each offering a lyric video, a Canvas or a music video. Use it when they want to see or pick a song.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Part of the title or artist | |
| limit | No | How many (default 12) | |
| offset | No | For paging | |
| artist_id | No | Only this artist's songs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful context about what each result contains, including covers, length, analysis status, and available lyric/Canvas/music-video offerings.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loads the returned content before the usage cue. It is appropriately sized with no redundant or wasted phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only list tool with full parameter documentation and annotations, the description is mostly complete: it explains the result contents and the primary use case. It is only missing explicit sibling differentiation, especially against list_songs and get_song.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so q, limit, offset, and artist_id are already documented in the schema. The description does not add meaning beyond the schema for filtering, paging, or limiting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it shows the person's songs as a list, and it names the returned contents such as covers, length, analysis status, and available video types. It is clear, but it does not explicitly distinguish itself from siblings like list_songs or get_song.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage cue: use it when the user wants to see or pick a song. However, it does not say when not to use it or name alternatives such as list_songs or get_song for narrower lookup needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
show_videoShow videosARead-onlyIdempotentInspect
Shows videos as players: the card follows a render on its own (progress while it renders), then plays the finished video with a download per format. Call it right after create_lyric_video, create_canvas or create_music_video with the video ids it returned (no need to wait_for_video then), or whenever the person asks to see a video.
| Name | Required | Description | Default |
|---|---|---|---|
| video_ids | Yes | The video ids |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the remaining burden is low, and the description adds genuinely new behavior: the card renders on its own with progress, then plays, plus a download per format. It also removes an expected precondition by stating wait_for_video is unnecessary. Minor gap: nothing about what happens with an invalid or still-queued id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence led by the verb, with the post-create nuance and the fallback trigger appended rather than buried. No redundant restatement of the title or the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by explaining what the caller gets back (a player card with render progress and per-format downloads). For a one-parameter read-only display tool that is close to sufficient; only error/edge behavior is left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter's constraint (1-8 items) is fully documented there, so the baseline applies. The description adds that the ids come from the create_* tools' return values, which is useful provenance but not additional format or semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Shows videos as players") and describes what that actually means: a live render with progress, then playback with per-format downloads. It implicitly separates itself from get_video/list_videos by describing a player surface rather than data retrieval, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger conditions: immediately after create_lyric_video, create_canvas, or create_music_video using the returned ids, or whenever the person asks to see a video. It also names the alternative it supersedes ("no need to wait_for_video then"), which is exactly the routing decision an agent needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_characterStart a characterAInspect
Photos of a person to draw a sheet from, or a finished sheet to add mode generate: 1 to 5 photos of one person (any angles); they are read (a clear face is needed, someone else is set aside) and given a base outfit line, which can be edited before drawing (draw_character_sheet, priced in credits). mode add: one finished sheet, read (one person, a clear face, the views it shows, any text on it) and kept as it is, free. Only with the rights to use these images (rights_confirmed). Uploads are kept until the character is kept (keep_character), or a day; a sheet drawn and paid for, 30 days (list_character_requests finds it). Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | generate (default): draw a sheet from photos; add: a finished sheet | |
| photo_urls | No | Public https URLs of the photos, or of the one sheet (or upload files with the CLI) | |
| rights_confirmed | Yes | You have the rights to use these images of this person |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which only say it is not read-only, not idempotent, not destructive), the description discloses the full lifecycle: uploads are kept until keep_character or one day, a paid sheet for 30 days, photos of other people are 'set aside', a base outfit line is generated, and generation is priced in credits while add is free. This is exactly the extra behavioral context annotations cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Content density is high and the main purpose is front-loaded, but the text is a single run-on block of parenthetical clauses that is hard to scan; splitting mode generate and mode add into discrete lines would materially improve it without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with no output schema, the description covers costs, retention windows, required plan and storage, error codes, and follow-up tools. An agent has everything needed to call it correctly and interpret failures.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: the photo set must be one person from any angles, a clear face is required, and generate is credit-priced while add is free. It also notes the CLI upload alternative to URL parameters. It stops short of clarifying what happens on invalid face checks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action and its two variants: it takes '1 to 5 photos of one person' to draw a sheet, or 'one finished sheet' to add as-is. An agent can distinguish the two modes without opening the schema, though the phrasing is convoluted ('mode add: one finished sheet') and takes effort to parse.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly routes between modes ('mode generate' vs 'mode add'), names the downstream/related siblings an agent will need (draw_character_sheet, keep_character, list_character_requests, get_account), and states preconditions and the error codes that signal them (402 plan_required, 402 storage_full). This is unusually complete when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_face_checkStart a face checkAInspect
The page where the person proves, live on camera, that the face is theirs Only the person shown on the character can pass it, on a phone with a camera: give them the link (good for 30 minutes), then get_face_check until passed. consent: they agreed to Kinetune checking their face and keeping it to match their pictures in this model's videos (kinetune.com/privacy, Face checks); ask them first, never assume it. A failed check is started again.
| Name | Required | Description | Default |
|---|---|---|---|
| model | Yes | The music video model it is for | |
| consent | Yes | The person agreed to the face check | |
| character_id | Yes | The character id (kit_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations only establish that this is a non-idempotent, non-destructive, closed-world mutation. The description adds substantial behavior the agent could not infer: the 30-minute link expiry, the requirement that the subject be the person depicted, the phone-with-camera constraint, and the fact that a failed attempt must be restarted. It also discloses the consent scope and points at the privacy policy, which matters for a biometric operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The content is all relevant, but the prose is disorganized: the first sentence runs into the second without punctuation ('that the face is theirs Only the person...'), and the consent block is a mid-sentence parenthetical with a bare 'consent:' label. The critical sequencing instruction is buried inside the first long sentence rather than front-loaded. It is dense but not wasteful, so it lands at adequate rather than strong.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter mutation with no output schema, the description covers what the agent needs: prerequisites, the link and its lifetime, and the follow-up call. The only real gap is that the return value is implied ('give them the link') rather than stated, and the resume-after-failure semantics ('started again') remain slightly ambiguous about whether a new call or a new link is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already carries baseline parameter meaning and a 3 would be the floor. The description earns more by redefining consent in substantive terms - agreement to Kinetune checking the face and retaining it to match their pictures in this model's videos - which goes well beyond the schema's terse 'The person agreed to the face check'. It also ties the model choice to 'this model's videos', giving the model enum a purpose beyond its label.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description conveys a specific operation and resource: a live-camera identity proof page tied to a character, producing a link the person uses. It also distinguishes the operation from the sibling get_face_check, which is positioned as the polling step that follows. The opening is a noun phrase ('The page where...') rather than a verb+resource statement, so the act of 'starting' is implied rather than declared, which costs it the top score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The workflow is spelled out explicitly: hand over the link, it is good for 30 minutes, then call get_face_check until it passes. The preconditions are equally explicit ('Only the person shown on the character can pass it, on a phone with a camera'), and the failure path is covered ('A failed check is started again'). The consent prerequisite is stated as a hard rule with an imperative ('ask them first, never assume it').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_ideaSuggest an ideaAInspect
Suggest a feature or change to Kinetune for others to vote on Posts an idea to the Community board in the app, where everyone signed in can vote and comment, and Kinetune says what is planned and what shipped. Use it when the person asks for something the product can't do yet ("I wish it could…"): say it in their words, one line, with how they would use it in body. It is public to Kinetune's users under the person's name, so leave out private links and contact details, and ask before posting. Suggesting votes for the idea and follows it: the person hears by email when it ships. At most 5 a day.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | What it is about: lyric-video, canvas, music-video, or everything (the whole app) | everything |
| body | No | How they would use it: their release, the platform, why it matters | |
| title | Yes | The idea in one line, in the person's words |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations, which only say this is a non-readonly, non-destructive, non-idempotent write. The description discloses that the post is public and attributed to the person's name, that suggesting auto-votes and follows the idea, that an email arrives on ship, and that there is a 5-per-day rate limit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded and every clause carries information, but it is one long run-on paragraph that packs public visibility, drafting guidance, notification behavior, and rate limits together. Slight structural tightening would help, though nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a three-parameter write tool with no output schema, the description covers everything an agent needs: what gets created, where it appears, who sees it, the safety preconditions, the side effects, and the throttling limit. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents title, body, and the area enum. The description restates the title/body intent in prose ('one line, in their words… how they would use it in body') but adds little beyond the existing field descriptions and never mentions the area parameter. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: posts an idea to Kinetune's public Community board where users vote and comment. This is unmistakably distinct from every sibling, all of which operate on artists, songs, videos, or looks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition ('when the person asks for something the product can't do yet'), the phrasing to use, and a hard exclusion ('leave out private links and contact details, and ask before posting'). No sibling tool could be confused for this action, so the absence of named alternatives is not a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
swap_music_video_placeChange a place's photoAIdempotentInspect
Another stock photo for one of a plan's places Returns the next draft: the same shot list, set in this photo (no director call, free). Pick a photo of the same kind of place, with no people, from search_stock.
| Name | Required | Description | Default |
|---|---|---|---|
| place | Yes | The place's number (places[].index) | |
| plan_id | Yes | The plan id (plan_…) | |
| stock_id | Yes | A stock photo id from search_stock |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already disclose that this is a non-readonly, idempotent, non-destructive operation. The description adds useful behavioral context beyond that: it returns the next draft with the same shot list, set in the chosen photo, and involves no director call and no cost.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The definition is compact and front-loads the core action, then adds return behavior and selection constraints. There is minor awkwardness in the run-on first sentence, but no substantial wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutating tool with no output schema, the description explains the returned artifact: the next draft with the same shot list set in the new photo. Annotations cover safety and idempotency, and the parameter constraints are sufficiently described, though error or plan-state conditions are not covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters have complete schema descriptions, so the baseline is 3. The description adds meaningful constraints for stock_id, namely same kind of place and no people, and ties the place parameter to one of a plan's places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description clearly state a specific action: changing a place's photo within a plan by supplying a stock photo. It also distinguishes the tool from search by requiring a stock_id from search_stock and from render by noting no director call and no cost.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear prerequisite workflow: pick a photo from search_stock, of the same kind of place, with no people. It does not explicitly name when not to use this tool or list alternative sibling tools, so it falls short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unfollow_ideaStop following an ideaCIdempotentInspect
No more email about it
| Name | Required | Description | Default |
|---|---|---|---|
| idea_id | Yes | The idea id (idea_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false, and readOnlyHint=false, so the safety profile is covered. The description contributes one piece of extra context—that following an idea is tied to email notifications—but does not say whether the follow state itself is removed or only the email subscription, which matters for an agent reasoning about reversibility.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four words with no filler, but the terseness borders on under-specification rather than efficient communication; the pronoun "it" is unresolved within the description itself. It is well front-loaded with the outcome, which is the most useful part.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter tool with full schema coverage and complete annotations, the description provides just enough for an agent to invoke it correctly. However, it leaves the object of "it" and the interaction with follow_idea unexplained, and there is no output schema so no return-value expectations are set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single required parameter with 100% schema description coverage, so the schema already carries parameter meaning. The description adds nothing about the idea_id format or where to obtain it, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"No more email about it" conveys the effect (stopping email notifications) but never names the verb or resource, relying on the title "Stop following an idea" to establish what is actually happening. An agent reading the description alone gets a vague sense of the outcome rather than a specific verb+resource statement, and there is no reference to the inverse sibling follow_idea.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any mention of the paired follow_idea tool or the conditions under which someone would stop following. The inverse relationship is only inferable from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_kit_pieceChange a kit pieceBIdempotentInspect
Rename it, change its handle or description, crop it again, or share it crop is cut again from the image the piece was added from. shared: offer it (a character too) to every other artist's songs (true), or keep it to its own artist's (false); it stays in its own artist's kit either way. ai_made, on a character only: an AI-made person who looks like no real person (true), or a real one (false); a person who passed a face check is real (withdraw it first). Plans already made keep the pieces as they were planned.
| Name | Required | Description | Default |
|---|---|---|---|
| crop | No | The new rectangle, in fractions of the source image | |
| name | No | ||
| handle | No | ||
| kit_id | Yes | The kit piece id | |
| shared | No | Offer it to every other artist’s songs too (true), or only its own artist’s (false) | |
| ai_made | No | A character only: an AI-made person (true) or a real one (false) | |
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly=false, idempotent=true, destructive=false), so the description's job is to add context — and it does, twice. It discloses that a piece 'stays in its own artist's kit either way' after sharing, and that 'plans already made keep the pieces as they were planned', i.e. edits do not retroactively alter existing music-video plans. It also flags the face-check prerequisite for flipping ai_made. The only weakness is the corrupted crop sentence, which leaves the source-image relationship ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The field list is front-loaded correctly and the per-field explanations are logically ordered. But the crop clause is textually corrupted and unparseable, and the shared/ai_made explanations are dense with nested parentheticals that slow an agent down. Every sentence attempts to earn its place, yet one of them fails outright.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter partial-update tool with no output schema and a nested crop object, the description covers the semantically risky parameters and one important side effect (existing plans). It does not state that omitted fields are left unchanged, does not say what the call returns, and the crop-source relationship is mangled. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 57%, so the description must compensate on some parameters, and it does for the two subtle booleans. 'shared' is explained as offering the piece to every other artist's songs while remaining in its own artist's kit — meaning the schema's one-liner does not carry. 'ai_made' gains the character-only restriction, the definition of real vs AI-made, and the face-check withdrawal prerequisite. The crop, name, handle, and description fields are left to the schema, which documents them adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates the mutable facets — name, handle, description, crop, shared, ai_made — so an agent can tell this is a partial-update tool for a kit piece rather than add_kit_piece or delete_kit_piece. However, the clause about cropping is garbled ('or share it crop is cut again from the image the piece was added from'), which blurs exactly what the crop operation does. The purpose is recoverable but not stated cleanly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives conditional usage rules rather than alternatives: ai_made applies 'on a character only', and a face-checked person must be withdrawn first before it can be set to real. There is no explicit routing to siblings such as delete_kit_piece or get_kit_piece, so the when-not guidance is absent. Usage is implied through the field-level conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_music_video_lookbookSave a lookbook to the kit or notBIdempotentInspect
Whether its kept pieces join the kit when a video is planned from it save_to_kit true (default): the kept pieces become kit pieces of the workspace and the artist; false: they are used for that video only.
| Name | Required | Description | Default |
|---|---|---|---|
| lookbook_id | Yes | The lookbook id | |
| save_to_kit | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=false, idempotent=true, destructive=false, and openWorld=false, so the safety profile is covered. The description adds real value beyond that by disclosing the persistent side effect: kept pieces become kit pieces of the workspace and the artist, a state change in two scopes. It does not say whether that join is reversible or what permissions are needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Short and front-loaded with the key branch, but the single sentence is a run-on with a missing clause boundary ('...planned from it save_to_kit true (default):') and a missing apostrophe, making it harder to parse than its length justifies. The content density is good; the structure is not.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-required-param tool with no output schema and full annotation coverage, the description covers the one semantically opaque parameter. It leaves undefined terms ('kept pieces', what a lookbook must be in for the update to apply) and omits any return-value note, so it is adequate rather than complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50%: save_to_kit has no schema description at all, and lookbook_id only says 'The lookbook id'. The description compensates by defining exactly what true and false do for save_to_kit, which is the only meaningful ambiguity. It does not reconcile the stated 'default: true' with the parameter being required, which is a small gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explains the effect of the save_to_kit flag (kept pieces join the kit vs. video-only), which conveys the tool's purpose obliquely, but never states the core action ('update a lookbook's kit-saving setting') and never references how it differs from siblings like keep_music_video_lookbook_piece or redesign_music_video_lookbook. An agent could infer intent, but only after parsing a garbled sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'when a video is planned from it' implies the lifecycle stage at which this is called, and the true/false branches give the decision context. However, there is no explicit when-to-use/when-not guidance and no naming of alternatives, so the routing signal is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_organizationUpdate the organizationAIdempotentInspect
Rename the organization (workspace) these credentials act for, or switch it between artist, label and creator Owners and admins only. An artist workspace can become a label or creator workspace any time, and those can switch between each other; they can become an artist workspace only while they have one artist or none (409 otherwise).
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | The new workspace name | |
| type | No | artist (one artist), label (a roster) or creator (projects) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description adds the permission requirement, the 409 failure condition, and the asymmetric transition rules - notably that converting back to an artist workspace is blocked while more than one artist exists. This is meaningful operational context an agent cannot get from the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the two capabilities followed by the constraints. The second sentence is fairly dense and slightly run-on, but every clause carries distinct operational information and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter mutation with no output schema, the definition covers purpose, permissions, error behavior and transition rules thoroughly. The only gap is that with zero required parameters it never states the effect of omitting name, type, or both.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: it explains the consequences of choosing a type (the transition constraints and 409 case) rather than merely restating the enum labels. It does not clarify what happens when either optional parameter is omitted, which keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource - rename the organization/workspace and switch it between artist, label and creator - and clearly scopes it as the org these credentials act for, distinguishing it from create_organization, list_organizations and the rename_artist/rename_song siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit preconditions for use (Owners and admins only) and precisely when each type transition is permitted versus rejected with 409. It does not name an alternative tool or explain when to avoid the operation entirely, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_backgroundUpload a backgroundAInspect
Upload your own photo or video, or use one of your music videos, to design a New Look around Photo: JPEG, PNG or WebP, at least 720 px on the short side, up to 25 MB. Video: MP4, MOV or WebM, 4–180 seconds, at least 720 px on the short side, up to 300 MB; it becomes a seamless loop of up to 20 s. Only with the rights to use it. Or video_id: one of this workspace's delivered music videos (list_videos with type music-video and the song's song_id), copied in as a video background (no rights_confirmed needed); the answer's music_video names its song and section (trim). A lyric video with it must be of that song: it takes that section (send that trim, or leave trim out), and the music video plays once from its first frame in step with the lyrics, with its own sound. Then quote a lyric video with look {"mode":"new","category":"…","background":{"source":"upload-photo" or "upload-video","upload_id":"…"},"visibility":"private"}. Needs an active plan (402 plan_required without one; get_account: plan.active) and room in its storage (402 storage_full when it would not fit; get_account: storage).
| Name | Required | Description | Default |
|---|---|---|---|
| file_url | No | A public https URL of the photo or video | |
| video_id | No | One of your delivered music videos, instead of a file: it then plays in step with its song’s lyrics, with its own sound | |
| rights_confirmed | No | You have the rights to use this photo or video (required with a file or file_url) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare a non-read-only, open-world, non-idempotent but non-destructive operation; the description goes well beyond by disclosing rights requirements (rights_confirmed required with a file, not needed for video_id), transformation behavior (a video 'becomes a seamless loop of up to 20 s'; a music video 'plays once from its first frame in step with the lyrics, with its own sound'), and specific failure modes (402 plan_required, 402 storage_full with the get_account fields to check). No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the two modes, and nearly every clause carries operative detail (formats, limits, error codes). However it is one dense, semicolon-chained paragraph with minor redundancy between 'Only with the rights to use it' and the rights_confirmed requirement, which makes it harder to scan than a short bulleted structure would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter upload with no output schema, the description covers input formats and resolution/size/duration limits, the alternate source, permission requirements, billing/storage failure modes, and what the result feeds into. Little an agent needs in order to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so the baseline would be 3, but the description adds real meaning the schema cannot: the mutual exclusivity of file_url and video_id, how to obtain a valid video_id, and that rights_confirmed is conditionally required depending on which path is taken. It also constrains embedded/iOS-side behavior of video_id (trim must match the song's section in the follow-up lyric video quote).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and dual resource path ('Upload your own photo or video, or use one of your music videos, to design a New Look around'), which names the end artifact (a New Look background). It also disambiguates from sibling paths by naming list_videos and quote_lyric_video, so an agent can tell this apart from create_lyric_video or search_stock without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes between two mutually exclusive modes: a file_url (with rights_confirmed) versus a video_id from this workspace's delivered music videos, including the exact listing call (list_videos with type music-video and the song's song_id). It also states preconditions (active plan, storage room) and the downstream handoff ('Then quote a lyric video with look {…}'), which is when-to-use guidance in the strongest form.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vote_for_ideaVote for an ideaAIdempotentInspect
Add the person's vote to an open idea Upvotes only, while the idea is open (409 once it shipped or was declined). Votes are public as a count, under the person's account: ask before voting.
| Name | Required | Description | Default |
|---|---|---|---|
| idea_id | Yes | The idea id (idea_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the write/non-destructive profile is covered. The description adds genuinely new behavior: a 409 on closed or declined ideas, a public vote count, and attribution under the person's account with a 'ask before voting' consent requirement. It does not say what the response contains, but no output schema exists so that is a minor gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is short and front-loaded with the action, but the sentence boundary is broken ('...an open idea Upvotes only, while...'), producing a run-on that reads as two thoughts fused without punctuation. Content density is good; the formatting defect costs it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter mutation tool with full annotation coverage, the description supplies the key missing context: the closed-idea failure mode, the public visibility of votes, and the consent requirement. Only the return value and the undo path via remove_idea_vote are unaddressed, both minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, including a format pattern, so the schema carries the load. The description says nothing about idea_id beyond implying the idea must be open, which is the baseline expectation for a well-documented single-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Add the person's vote to an open idea') and constrains it to upvotes, which implicitly distinguishes it from the sibling remove_idea_vote. It stops short of naming that sibling explicitly, so differentiation relies on the agent inferring the inverse from the verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear condition for use ('while the idea is open') and an explicit precondition for failure (409 once it shipped or was declined), plus a consent rule ('ask before voting'). It does not point to remove_idea_vote as the undo path, which is the one obvious alternative an agent would want.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_videoWait for a videoARead-onlyIdempotentInspect
Waits up to max_seconds (default 50) for a video to finish, then returns it like get_video. Call again while status is queued or processing. While it waits, queue says why: plan_limit (the workspace already makes as many videos at once as its plan allows; position is its place in line) or render_capacity (every render machine is busy; estimated_wait_seconds is about how long) or generator_capacity (a music video: every music video generator is busy; position is its place in line). Tell the user.
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | The video id | |
| max_seconds | No | How long to wait (5–55, default 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent/non-destructive profile, and the description goes well beyond them: it discloses that the call blocks for up to 55 seconds, that it must be re-invoked on queued/processing, and it enumerates all three queue reasons (plan_limit, render_capacity, generator_capacity) with what position and estimated_wait_seconds mean.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the polling instruction before the queue-reason taxonomy. The long parenthetical enumeration of the three queue states is dense but justified by the 'Tell the user' directive; slightly heavier than necessary for a two-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by defining the return shape by reference ('returns it like get_video') and by explaining the queue-state fields the agent will see. Nothing needed to call or interpret the result is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the description's parenthetical '(default 50)' simply restates the schema's own '(5–55, default 50)'. It adds no format or behavior detail beyond the binding, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Waits up to max_seconds for a video to finish') and explicitly anchors the result to a named sibling ('returns it like get_video'), so an agent can distinguish it from get_video without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly prescribes the polling loop: 'Call again while status is queued or processing.' It also tells the agent what to relay to the user while waiting. It stops short of stating when not to use it (e.g., prefer get_video for a non-blocking single check), so it misses the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
withdraw_face_checkWithdraw a face checkADestructiveIdempotentInspect
Deletes the person's checked face: the model stops showing them Their checked face is deleted with every picture registered against it, and the models it covered can't show them until they pass a new check. Videos already made stay. Deleting the character withdraws every check.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | The music video model it was for; left out, every face check of this person | |
| character_id | Yes | The character id (kit_…) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, yet the description goes well beyond them: it specifies that all pictures registered against the check are deleted, that covered models cannot render the person until a new check passes, that already-produced videos survive, and that deleting the character withdraws every check. That is exactly the blast-radius and irreversibility context an agent needs before invoking a destructive call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action is front-loaded and no sentence is filler, but the structure breaks down where two clauses run together without punctuation ("the model stops showing them Their checked face is deleted with every picture registered against it"), forcing the agent to re-parse the sentence. A short factual list of what is deleted versus preserved would read far cleaner.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter destructive tool with no output schema, the description covers the essentials: what is destroyed, what is retained, and how the character-level delete interacts. Only the confirmation of a return value or partial-failure behavior is missing, which is minor here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, including the identical "left out, every face check of this person" note on `model`. The description adds only the character-level cascade ("Deleting the character withdraws every check"), so it sits at the baseline for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete verb+resource: "Deletes the person's checked face," so an agent knows exactly which object is being removed, and the cascade sentences clarify scope (per-model vs. all checks). It does not name sibling tools like get_face_check or start_face_check to sharpen differentiation, which keeps it just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied from the destructive effect — an agent can infer this is the undo path for a face check, but the description never states when to call it versus inspecting state first with get_face_check or how it relates to start_face_check. The `model` scoping note (omitted = every check) gives partial operational guidance but no explicit when/when-not framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- Changed
create_music_video1 field changed- changed
Input schema / properties / refinish / descriptionPrevious value: -"Finish a delivered music video again with another outro, or none (send song_id, refinish.video_id and outro or not; one variation): no shot is made again, only setup and delivery are charged. Needs the video's revisable_until ahead"New value: +"Finish a delivered music video again with another outro, or none (send song_id, refinish.video_id and outro or not; one variation): no shot is made again (its kept shots are joined again under the song), only setup and delivery are charged. Needs the video's revisable_until ahead"
- Changed
quote_music_video1 field changed- changed
Input schema / properties / refinish / descriptionPrevious value: -"Finish a delivered music video again with another outro, or none (send song_id, refinish.video_id and outro or not; one variation): no shot is made again, only setup and delivery are charged. Needs the video's revisable_until ahead"New value: +"Finish a delivered music video again with another outro, or none (send song_id, refinish.video_id and outro or not; one variation): no shot is made again (its kept shots are joined again under the song), only setup and delivery are charged. Needs the video's revisable_until ahead"
2 tool updates
- Added
draw_music_video_frame - Added
list_music_video_frames
12 tool updates
- Changed
create_music_video2 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"The music video model: one-take (default; MiniMax H3 Max, the artist lip-synced in shots cut between the song's lines). get_options lists the models with the categories, styles, formats, takes and length each makes"New value: +"The music video model: one-take (default; MiniMax H3 Max), seedance-2-0, seedance-2-0-fast, seedance-2-0-mini or seedance-2-5. get_options lists the models offered to you with the categories, styles, formats, takes and length each makes, and guide: what each is best for, its strengths, weaknesses and public benchmark scores. When the person hasn't named a model, suggest the kind's recommended_model (get_options music_video.categories) with its best_for line and the price difference between models from quotes, and let them choose any" - changed
Input schema / properties / plan_id / descriptionPrevious value: -"Make the video from this plan (plan_music_video): its brief replaces the one sent, so send song_id and plan_id. Omitted, the director plans it while it is made"New value: +"Make the video from this plan (plan_music_video): its brief (model, kind, look, format, section…) replaces the one sent, so send song_id and plan_id; quality left out is the plan's model's default. Omitted, the director plans it while it is made"
- Changed
design_music_video_shoot1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"The music video model: one-take (default; MiniMax H3 Max, the artist lip-synced in shots cut between the song's lines). get_options lists the models with the categories, styles, formats, takes and length each makes"New value: +"The music video model: one-take (default; MiniMax H3 Max), seedance-2-0, seedance-2-0-fast, seedance-2-0-mini or seedance-2-5. get_options lists the models offered to you with the categories, styles, formats, takes and length each makes, and guide: what each is best for, its strengths, weaknesses and public benchmark scores. When the person hasn't named a model, suggest the kind's recommended_model (get_options music_video.categories) with its best_for line and the price difference between models from quotes, and let them choose any"
- Added
follow_idea - Added
get_idea - Added
list_ideas - Changed
plan_music_video1 field changed- changed
Input schema / properties / model / descriptionPrevious value: -"The music video model: one-take (default; MiniMax H3 Max, the artist lip-synced in shots cut between the song's lines). get_options lists the models with the categories, styles, formats, takes and length each makes"New value: +"The music video model: one-take (default; MiniMax H3 Max), seedance-2-0, seedance-2-0-fast, seedance-2-0-mini or seedance-2-5. get_options lists the models offered to you with the categories, styles, formats, takes and length each makes, and guide: what each is best for, its strengths, weaknesses and public benchmark scores. When the person hasn't named a model, suggest the kind's recommended_model (get_options music_video.categories) with its best_for line and the price difference between models from quotes, and let them choose any"
- Changed
quote_music_video2 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"The music video model: one-take (default; MiniMax H3 Max, the artist lip-synced in shots cut between the song's lines). get_options lists the models with the categories, styles, formats, takes and length each makes"New value: +"The music video model: one-take (default; MiniMax H3 Max), seedance-2-0, seedance-2-0-fast, seedance-2-0-mini or seedance-2-5. get_options lists the models offered to you with the categories, styles, formats, takes and length each makes, and guide: what each is best for, its strengths, weaknesses and public benchmark scores. When the person hasn't named a model, suggest the kind's recommended_model (get_options music_video.categories) with its best_for line and the price difference between models from quotes, and let them choose any" - changed
Input schema / properties / plan_id / descriptionPrevious value: -"Make the video from this plan (plan_music_video): its brief replaces the one sent, so send song_id and plan_id. Omitted, the director plans it while it is made"New value: +"Make the video from this plan (plan_music_video): its brief (model, kind, look, format, section…) replaces the one sent, so send song_id and plan_id; quality left out is the plan's model's default. Omitted, the director plans it while it is made"
- Added
remove_idea_vote - Added
share_video - Added
unfollow_idea - Added
unshare_video - Added
vote_for_idea
1 tool update
- Changed
upload_background1 field changed- changed
Input schema / properties / video_id / descriptionPrevious value: -"One of your delivered music videos, instead of a file"New value: +"One of your delivered music videos, instead of a file: it then plays in step with its song’s lyrics, with its own sound"
4 tool updates
- Changed
create_lyric_video1 field changed- changed
Input schema / properties / look / descriptionPrevious value: -"{\"mode\":\"existing\",\"id\":\"look_…\"} to reuse a saved Look (add \"lyric_style\" to render it in another lyric style, at no extra cost), or {\"mode\":\"new\",\"category\":\"…\",\"lyric_style\":\"…\",\"background\":{\"source\":\"ai-image\",\"quality\":\"high\"},\"visibility\":\"private\",\"direction\":\"…\"} to have one designed (background.source \"upload-photo\"/\"upload-video\" with background.upload_id from upload_background designs it around your own media; such a Look stays private. \"stock-photo\"/\"stock-video\" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references \"stock\" (AI image or AI video, default \"none\") with feature_artist \"always\" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist \"always\" (default \"never\") makes them the subject of the background, recognizable from their character (list_characters; start_character makes one); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false"New value: +"{\"mode\":\"existing\",\"id\":\"look_…\"} to reuse a saved Look (add \"lyric_style\" to render it in another lyric style, at no extra cost), or {\"mode\":\"new\",\"category\":\"…\",\"lyric_style\":\"…\",\"background\":{\"source\":\"ai-image\",\"quality\":\"high\"},\"visibility\":\"private\",\"direction\":\"…\"} to have one designed (any category takes any background.source, \"designed\" being a free moving gradient the director draws; background.source \"upload-photo\"/\"upload-video\" with background.upload_id from upload_background designs it around your own media; such a Look stays private. \"stock-photo\"/\"stock-video\" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references \"stock\" (AI image or AI video, default \"none\") with feature_artist \"always\" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist \"always\" (default \"never\") makes them the subject of the background, recognizable from their character (list_characters; start_character makes one); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false"
- Changed
list_videos1 field changed- added
Input schema / properties / quote_idAdded value: +{ + "description": "Only the videos this quote made (none until it is used)", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +}
- Changed
quote_lyric_video1 field changed- changed
Input schema / properties / look / descriptionPrevious value: -"{\"mode\":\"existing\",\"id\":\"look_…\"} to reuse a saved Look (add \"lyric_style\" to render it in another lyric style, at no extra cost), or {\"mode\":\"new\",\"category\":\"…\",\"lyric_style\":\"…\",\"background\":{\"source\":\"ai-image\",\"quality\":\"high\"},\"visibility\":\"private\",\"direction\":\"…\"} to have one designed (background.source \"upload-photo\"/\"upload-video\" with background.upload_id from upload_background designs it around your own media; such a Look stays private. \"stock-photo\"/\"stock-video\" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references \"stock\" (AI image or AI video, default \"none\") with feature_artist \"always\" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist \"always\" (default \"never\") makes them the subject of the background, recognizable from their character (list_characters; start_character makes one); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false"New value: +"{\"mode\":\"existing\",\"id\":\"look_…\"} to reuse a saved Look (add \"lyric_style\" to render it in another lyric style, at no extra cost), or {\"mode\":\"new\",\"category\":\"…\",\"lyric_style\":\"…\",\"background\":{\"source\":\"ai-image\",\"quality\":\"high\"},\"visibility\":\"private\",\"direction\":\"…\"} to have one designed (any category takes any background.source, \"designed\" being a free moving gradient the director draws; background.source \"upload-photo\"/\"upload-video\" with background.upload_id from upload_background designs it around your own media; such a Look stays private. \"stock-photo\"/\"stock-video\" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references \"stock\" (AI image or AI video, default \"none\") with feature_artist \"always\" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist \"always\" (default \"never\") makes them the subject of the background, recognizable from their character (list_characters; start_character makes one); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false"
- Changed
upload_background3 fields changed- changed
Input schema / properties / rights_confirmed / descriptionPrevious value: -"You have the rights to use this photo or video"New value: +"You have the rights to use this photo or video (required with a file or file_url)" - added
Input schema / properties / video_idAdded value: +{ + "description": "One of your delivered music videos, instead of a file", + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "rights_confirmed" -]
1 tool update
- Changed
create_song1 field changed- changed
Input schema / properties / lyrics / descriptionPrevious value: -"Optional. The song’s lyrics as text: plain (Suno-style [Verse]/[Chorus] tags and (x2) marks are fine), or the contents of an SRT, WebVTT or LRC file. Every word is still timed from the audio: your text fixes misheard words and sets where lines break in videos. A part sung again (a chorus) can be written once; lyrics that don’t match what’s sung, or cover only part of it, are refused once the song is analyzed (get_song: analysis.lyrics.status \"mismatch\")"New value: +"Optional. The song’s lyrics as text: plain (Suno-style [Verse]/[Chorus] tags and (x2) marks are fine), or the contents of an SRT, WebVTT or LRC file. Every word is still timed from the audio: your text fixes misheard words and sets where lines break in videos, and its section tags set the song’s sections (a chorus sung once is still a chorus). A part sung again (a chorus) can be written once; lyrics that don’t match what’s sung, or cover only part of it, are refused once the song is analyzed (get_song: analysis.lyrics.status \"mismatch\")"
4 tool updates
- Changed
create_music_video1 field changed- changed
Input schema / properties / on_screen / descriptionPrevious value: -"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes"New value: +"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed and there are no outfits; continuous takes join on the cast and the place"
- Changed
design_music_video_shoot1 field changed- changed
Input schema / properties / on_screen / descriptionPrevious value: -"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes"New value: +"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed and there are no outfits; continuous takes join on the cast and the place"
- Changed
plan_music_video1 field changed- changed
Input schema / properties / on_screen / descriptionPrevious value: -"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes"New value: +"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed and there are no outfits; continuous takes join on the cast and the place"
- Changed
quote_music_video1 field changed- changed
Input schema / properties / on_screen / descriptionPrevious value: -"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes"New value: +"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed and there are no outfits; continuous takes join on the cast and the place"
11 tool updates
- Changed
add_kit_piece3 fields changed- changed
Input schema / properties / kind / descriptionPrevious value: -"outfit (an artist’s), place or prop (the workspace’s)"New value: +"outfit (an artist’s), place or prop" - added
Input schema / properties / owner_artist_idAdded value: +{ + "description": "A place or prop: the artist whose kit it goes in (a project in a Creator workspace)", + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / sharedAdded value: +{ + "description": "Offer it to every other artist’s songs too (default false)", + "type": "boolean" +}
- Changed
create_canvas1 field changed- changed
Input schema / properties / performer / descriptionPrevious value: -"A Creator workspace only: the cast character (list_characters) who may appear, with feature_artist auto or always on an AI source. Omitted: the song's artist's character"New value: +"A Creator workspace only: the character (list_characters with for_artist_id: one in the song's project's kit or one another project shared) who may appear, with feature_artist auto or always on an AI source. Omitted: the song's artist's character"
- Changed
create_music_video3 fields changed- changed
Input schema / properties / direction / descriptionPrevious value: -"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (any of the workspace's, the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle answers 400"New value: +"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (those in the song's artist's kit and those other artists shared, list_characters with for_artist_id; the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle, or another artist's piece they haven't shared, answers 400" - changed
Input schema / properties / on_screen / descriptionPrevious value: -"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the cast member performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes"New value: +"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes" - changed
Input schema / properties / performer / descriptionPrevious value: -"Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character of its cast (list_characters: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places)."New value: +"Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character in the song's project's kit or one another project shared (list_characters with for_artist_id: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places)."
- Changed
design_music_video_shoot3 fields changed- changed
Input schema / properties / direction / descriptionPrevious value: -"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (any of the workspace's, the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle answers 400"New value: +"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (those in the song's artist's kit and those other artists shared, list_characters with for_artist_id; the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle, or another artist's piece they haven't shared, answers 400" - changed
Input schema / properties / on_screen / descriptionPrevious value: -"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the cast member performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes"New value: +"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes" - changed
Input schema / properties / performer / descriptionPrevious value: -"Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character of its cast (list_characters: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places)."New value: +"Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character in the song's project's kit or one another project shared (list_characters with for_artist_id: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places)."
- Changed
keep_character2 fields changed- added
Input schema / properties / owner_artist_idAdded value: +{ + "description": "Cast only: the artist whose kit they go in (a project in a Creator workspace)", + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / sharedAdded value: +{ + "description": "Offer them to every other artist's videos too (default false)", + "type": "boolean" +}
- Changed
list_characters2 fields changed- added
Input schema / properties / for_artist_idAdded value: +{ + "description": "Those a video of this artist's songs can show: theirs first, then those other artists shared", + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / owner_artist_idAdded value: +{ + "description": "Only those in this artist's kit: their own character and the people kept for them", + "maxLength": 120, + "minLength": 1, + "type": "string" +}
- Changed
list_kit2 fields changed- changed
Input schema / properties / artist_id / descriptionPrevious value: -"Only the workspace’s pieces and this artist’s outfits"New value: +"What a brief for this artist’s song can mention: theirs and those shared" - added
Input schema / properties / owner_artist_idAdded value: +{ + "description": "Only the pieces in this artist’s kit", + "maxLength": 120, + "minLength": 1, + "type": "string" +}
- Changed
plan_music_video3 fields changed- changed
Input schema / properties / direction / descriptionPrevious value: -"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (any of the workspace's, the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle answers 400"New value: +"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (those in the song's artist's kit and those other artists shared, list_characters with for_artist_id; the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle, or another artist's piece they haven't shared, answers 400" - changed
Input schema / properties / on_screen / descriptionPrevious value: -"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the cast member performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes"New value: +"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes" - changed
Input schema / properties / performer / descriptionPrevious value: -"Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character of its cast (list_characters: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places)."New value: +"Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character in the song's project's kit or one another project shared (list_characters with for_artist_id: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places)."
- Changed
quote_canvas1 field changed- changed
Input schema / properties / performer / descriptionPrevious value: -"A Creator workspace only: the cast character (list_characters) who may appear, with feature_artist auto or always on an AI source. Omitted: the song's artist's character"New value: +"A Creator workspace only: the character (list_characters with for_artist_id: one in the song's project's kit or one another project shared) who may appear, with feature_artist auto or always on an AI source. Omitted: the song's artist's character"
- Changed
quote_music_video3 fields changed- changed
Input schema / properties / direction / descriptionPrevious value: -"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (any of the workspace's, the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle answers 400"New value: +"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (those in the song's artist's kit and those other artists shared, list_characters with for_artist_id; the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle, or another artist's piece they haven't shared, answers 400" - changed
Input schema / properties / on_screen / descriptionPrevious value: -"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the cast member performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes"New value: +"Who is on screen: artist (the song's artist, from their character; in a Creator workspace the character performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes" - changed
Input schema / properties / performer / descriptionPrevious value: -"Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character of its cast (list_characters: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places)."New value: +"Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character in the song's project's kit or one another project shared (list_characters with for_artist_id: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places)."
- Changed
update_kit_piece1 field changed- added
Input schema / properties / sharedAdded value: +{ + "description": "Offer it to every other artist’s songs too (true), or only its own artist’s (false)", + "type": "boolean" +}
38 tool updates
- Removed
add_artist_photos - Changed
create_canvas4 fields changed- changed
Input schema / properties / direction / descriptionPrevious value: -"Optional mood, motifs or references; the concept still comes from the cover"New value: +"Optional mood, motifs or references" - changed
Input schema / properties / feature_artist / descriptionPrevious value: -"Whether the Canvas shows the artist: auto (the director decides), always or never (AI sources; needs artist photos for \"always\")"New value: +"Whether the Canvas shows the artist: auto (the director decides), always or never (AI sources; \"always\" needs the artist's character: list_characters, start_character makes one)" - added
Input schema / properties / inspirationAdded value: +{ + "default": "cover", + "description": "Where the idea comes from: cover (default; the cover art's world, colors and motifs, brought to life) or song (its words, story and sound lead, the colors kept close to the cover so the two sit together in the player)", + "enum": [ + "cover", + "song" + ], + "type": "string" +} - added
Input schema / properties / performerAdded value: +{ + "description": "A Creator workspace only: the cast character (list_characters) who may appear, with feature_artist auto or always on an AI source. Omitted: the song's artist's character", + "pattern": "^kit_[0-9a-f-]{36}$", + "type": "string" +}
- Changed
create_lyric_video1 field changed- changed
Input schema / properties / look / descriptionPrevious value: -"{\"mode\":\"existing\",\"id\":\"look_…\"} to reuse a saved Look (add \"lyric_style\" to render it in another lyric style, at no extra cost), or {\"mode\":\"new\",\"category\":\"…\",\"lyric_style\":\"…\",\"background\":{\"source\":\"ai-image\",\"quality\":\"high\"},\"visibility\":\"private\",\"direction\":\"…\"} to have one designed (background.source \"upload-photo\"/\"upload-video\" with background.upload_id from upload_background designs it around your own media; such a Look stays private. \"stock-photo\"/\"stock-video\" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references \"stock\" (AI image or AI video, default \"none\") with feature_artist \"always\" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist \"always\" (default \"never\") makes them the subject of the background, recognizable from their artist photos (add_artist_photos); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false"New value: +"{\"mode\":\"existing\",\"id\":\"look_…\"} to reuse a saved Look (add \"lyric_style\" to render it in another lyric style, at no extra cost), or {\"mode\":\"new\",\"category\":\"…\",\"lyric_style\":\"…\",\"background\":{\"source\":\"ai-image\",\"quality\":\"high\"},\"visibility\":\"private\",\"direction\":\"…\"} to have one designed (background.source \"upload-photo\"/\"upload-video\" with background.upload_id from upload_background designs it around your own media; such a Look stays private. \"stock-photo\"/\"stock-video\" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references \"stock\" (AI image or AI video, default \"none\") with feature_artist \"always\" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist \"always\" (default \"never\") makes them the subject of the background, recognizable from their character (list_characters; start_character makes one); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false"
- Changed
create_music_video21 fields changed- changed
Input schema / properties / cast / descriptionPrevious value: -"The two photos the artist is kept from: face_photo_id (a sharp face, mouth visible) and outfit_photo_id (the outfit and body worn throughout); either left out, the director picks it. One photo can be both; hidden photos (add_artist_photos hidden) work too"New value: +"The performer in it, kept from their character: what they wear, outfit_kit (a kit outfit's @handle, without the @, worn in every shot they are in); left out, the director picks. Only when the performer is on screen" - removed
Input schema / properties / cast / properties / face_photo_idRemoved value: -{ - "pattern": "^photo_[0-9a-f-]{36}$", - "type": "string" -} - added
Input schema / properties / cast / properties / outfit_kitAdded value: +{ + "pattern": "^[a-z0-9-]{1,40}$", + "type": "string" +} - removed
Input schema / properties / cast / properties / outfit_photo_idRemoved value: -{ - "pattern": "^photo_[0-9a-f-]{36}$", - "type": "string" -} - changed
Input schema / properties / category / enumPrevious value: -[ - "performance", - "intercut", - "cinematic", - "story", - "surreal" -]New value: +[ + "performance", + "intercut", + "cinematic", + "story", + "surreal", + "studio", + "live", + "instrument", + "lyric-led", + "vlog", + "fashion", + "oner", + "cast-story", + "mood", + "places", + "dance", + "band", + "action" +] - added
Input schema / properties / design_shootAdded value: +{ + "default": false, + "description": "Without a plan: the director first designs the shoot (the outfits, places and props the brief leaves open) and draws each as a picture every shot is given. The quote counts the most pictures it may draw; only those drawn are charged", + "type": "boolean" +} - changed
Input schema / properties / direction / descriptionPrevious value: -"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. An unknown handle answers 400"New value: +"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (any of the workspace's, the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle answers 400" - added
Input schema / properties / lipsyncAdded value: +{ + "default": "auto", + "description": "\"auto\" (default: the director has the artist sing the important lines on camera) or \"never\" (nobody sings on camera; the song plays over every shot). A kind sung on camera (lyric-led) refuses \"never\"; an instrumental song never lip-syncs", + "enum": [ + "auto", + "never" + ], + "type": "string" +} - added
Input schema / properties / look_idAdded value: +{ + "description": "A music video Look (list_music_video_looks: one made public, or the workspace's own) the video follows: its treatment leads the director and its places and props join the kit. Send its category, style, takes and lipsync too (or your own)", + "pattern": "^mvlook_[0-9a-f-]{36}$", + "type": "string" +} - changed
Input schema / properties / model / enumPrevious value: -[ - "one-take" -]New value: +[ + "one-take", + "seedance-2-0", + "seedance-2-0-fast", + "seedance-2-0-mini", + "seedance-2-5" +] - added
Input schema / properties / on_screenAdded value: +{ + "description": "Who is on screen: artist (the song's artist, from their character; in a Creator workspace the cast member performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes", + "enum": [ + "artist", + "cast", + "none" + ], + "type": "string" +} - added
Input schema / properties / outroAdded value: +{ + "additionalProperties": false, + "description": "Optional: end on a release card after the last shot, the song playing on under it (the delivered video is up to 5 seconds longer; the director designs it for the video, or look_id: a lyric video Look from list_looks whose card is used as it is). display: title, artist, cover, badges (true/false) and optional cover_scale, text_scale, artist_scale, spacing_scale. Free with the video", + "properties": { + "display": { + "additionalProperties": false, + "properties": { + "artist": { + "default": true, + "type": "boolean" + }, + "artist_scale": { + "maximum": 1.5, + "minimum": 0.85, + "type": "number" + }, + "badges": { + "default": true, + "type": "boolean" + }, + "cover": { + "default": true, + "type": "boolean" + }, + "cover_scale": { + "maximum": 1.25, + "minimum": 0.75, + "type": "number" + }, + "spacing_scale": { + "maximum": 1.5, + "minimum": 0.75, + "type": "number" + }, + "text_scale": { + "maximum": 1.3, + "minimum": 0.85, + "type": "number" + }, + "title": { + "default": true, + "type": "boolean" + } + }, + "type": "object" + }, + "look_id": { + "maxLength": 120, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "display" + ], + "type": "object" +} - added
Input schema / properties / peopleAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "character": { + "pattern": "^[a-z0-9][a-z0-9-]{0,39}$", + "type": "string" + }, + "does": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "outfit": { + "pattern": "^[a-z0-9][a-z0-9-]{0,39}$", + "type": "string" + } + }, + "required": [ + "character" + ], + "type": "object" + }, + "maxItems": 8, + "type": "array" +} - added
Input schema / properties / performerAdded value: +{ + "description": "Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character of its cast (list_characters: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places).", + "pattern": "^kit_[0-9a-f-]{36}$", + "type": "string" +} - removed
Input schema / properties / quality / defaultRemoved value: -"768p" - changed
Input schema / properties / quality / descriptionPrevious value: -"The resolution it is made at: one of the qualities get_options lists for the model (768p by default; 1080p is the same video sharper for about twice the credits); not part of the plan, so a plan is made in any quality. get_options lists each model's qualities with about how long each takes; credits.music_video.models has a minute by model and quality"New value: +"The resolution it is made at: one of the qualities get_options lists for the model (left out, the model's default_quality: 768p for MiniMax H3 Max, 720p for Seedance; a sharper one is the same video for more credits); not part of the plan, so a plan is made in any quality. get_options lists each model's qualities with about how long each takes; credits.music_video.models has a minute by model and quality" - changed
Input schema / properties / quality / enumPrevious value: -[ - "480p", - "768p", - "1080p" -]New value: +[ + "480p", + "720p", + "768p", + "1080p", + "4k" +] - added
Input schema / properties / refinishAdded value: +{ + "additionalProperties": false, + "description": "Finish a delivered music video again with another outro, or none (send song_id, refinish.video_id and outro or not; one variation): no shot is made again, only setup and delivery are charged. Needs the video's revisable_until ahead", + "properties": { + "video_id": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "video_id" + ], + "type": "object" +} - changed
Input schema / properties / song_id / descriptionPrevious value: -"The song; its artist performs the video and needs photos (add_artist_photos)"New value: +"The song; its artist performs the video and needs their character (list_characters; start_character makes one), unless performer names another character" - changed
Input schema / properties / style / enumPrevious value: -[ - "natural", - "film", - "golden-hour", - "neon-night", - "noir", - "vintage", - "dreamy" -]New value: +[ + "natural", + "film", + "golden-hour", + "neon-night", + "noir", + "vintage", + "dreamy", + "super-8", + "vhs", + "documentary", + "glossy-pop", + "indie", + "cyberpunk", + "y2k", + "lofi", + "painterly", + "anime", + "clay" +] - changed
Input schema / properties / takes / descriptionPrevious value: -"How the shots meet: \"cuts\" (default: shots meet between the song's lines like an edit, with a cut or the transition the director picks at each join: dissolve, dip to black, flash or whip; ask for them, or for none, in direction) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)"New value: +"How the shots meet: \"cuts\" (default: shots meet with a cut between the song's lines, like an edit) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)"
- Changed
create_organization2 fields changed- changed
Input schema / properties / type / descriptionPrevious value: -"artist: one artist and its songs; label: a roster of artists"New value: +"artist: one artist and its songs; label: a roster of artists (or a team working for them); creator: projects (artists in the API) whose performer is optional" - changed
Input schema / properties / type / enumPrevious value: -[ - "artist", - "label" -]New value: +[ + "artist", + "label", + "creator" +]
- Changed
create_song1 field changed- added
Input schema / properties / instrumentalAdded value: +{ + "deprecated": true, + "description": "Deprecated: the analysis hears whether a song has vocals (get_song: instrumental). true still skips transcription: lyric videos have no words and music videos never lip-sync (no lyrics with it). Stops working on 2027-04-30.", + "type": "boolean", + "x-sunset": "2027-04-30" +}
- Removed
delete_artist_photo - Added
delete_music_video_look - Added
delete_music_video_lookbook - Added
delete_music_video_plan - Changed
design_music_video_shoot15 fields changed- changed
Input schema / properties / cast / descriptionPrevious value: -"The two photos the artist is kept from: face_photo_id (a sharp face, mouth visible) and outfit_photo_id (the outfit and body worn throughout); either left out, the director picks it. One photo can be both; hidden photos (add_artist_photos hidden) work too"New value: +"The performer in it, kept from their character: what they wear, outfit_kit (a kit outfit's @handle, without the @, worn in every shot they are in); left out, the director picks. Only when the performer is on screen" - removed
Input schema / properties / cast / properties / face_photo_idRemoved value: -{ - "pattern": "^photo_[0-9a-f-]{36}$", - "type": "string" -} - added
Input schema / properties / cast / properties / outfit_kitAdded value: +{ + "pattern": "^[a-z0-9-]{1,40}$", + "type": "string" +} - removed
Input schema / properties / cast / properties / outfit_photo_idRemoved value: -{ - "pattern": "^photo_[0-9a-f-]{36}$", - "type": "string" -} - changed
Input schema / properties / category / enumPrevious value: -[ - "performance", - "intercut", - "cinematic", - "story", - "surreal" -]New value: +[ + "performance", + "intercut", + "cinematic", + "story", + "surreal", + "studio", + "live", + "instrument", + "lyric-led", + "vlog", + "fashion", + "oner", + "cast-story", + "mood", + "places", + "dance", + "band", + "action" +] - changed
Input schema / properties / direction / descriptionPrevious value: -"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. An unknown handle answers 400"New value: +"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (any of the workspace's, the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle answers 400" - added
Input schema / properties / lipsyncAdded value: +{ + "default": "auto", + "description": "\"auto\" (default: the director has the artist sing the important lines on camera) or \"never\" (nobody sings on camera; the song plays over every shot). A kind sung on camera (lyric-led) refuses \"never\"; an instrumental song never lip-syncs", + "enum": [ + "auto", + "never" + ], + "type": "string" +} - added
Input schema / properties / look_idAdded value: +{ + "description": "A music video Look (list_music_video_looks: one made public, or the workspace's own) the video follows: its treatment leads the director and its places and props join the kit. Send its category, style, takes and lipsync too (or your own)", + "pattern": "^mvlook_[0-9a-f-]{36}$", + "type": "string" +} - changed
Input schema / properties / model / enumPrevious value: -[ - "one-take" -]New value: +[ + "one-take", + "seedance-2-0", + "seedance-2-0-fast", + "seedance-2-0-mini", + "seedance-2-5" +] - added
Input schema / properties / on_screenAdded value: +{ + "description": "Who is on screen: artist (the song's artist, from their character; in a Creator workspace the cast member performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes", + "enum": [ + "artist", + "cast", + "none" + ], + "type": "string" +} - added
Input schema / properties / peopleAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "character": { + "pattern": "^[a-z0-9][a-z0-9-]{0,39}$", + "type": "string" + }, + "does": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "outfit": { + "pattern": "^[a-z0-9][a-z0-9-]{0,39}$", + "type": "string" + } + }, + "required": [ + "character" + ], + "type": "object" + }, + "maxItems": 8, + "type": "array" +} - added
Input schema / properties / performerAdded value: +{ + "description": "Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character of its cast (list_characters: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places).", + "pattern": "^kit_[0-9a-f-]{36}$", + "type": "string" +} - changed
Input schema / properties / song_id / descriptionPrevious value: -"The song; its artist performs the video and needs photos (add_artist_photos)"New value: +"The song; its artist performs the video and needs their character (list_characters; start_character makes one), unless performer names another character" - changed
Input schema / properties / style / enumPrevious value: -[ - "natural", - "film", - "golden-hour", - "neon-night", - "noir", - "vintage", - "dreamy" -]New value: +[ + "natural", + "film", + "golden-hour", + "neon-night", + "noir", + "vintage", + "dreamy", + "super-8", + "vhs", + "documentary", + "glossy-pop", + "indie", + "cyberpunk", + "y2k", + "lofi", + "painterly", + "anime", + "clay" +] - changed
Input schema / properties / takes / descriptionPrevious value: -"How the shots meet: \"cuts\" (default: shots meet between the song's lines like an edit, with a cut or the transition the director picks at each join: dissolve, dip to black, flash or whip; ask for them, or for none, in direction) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)"New value: +"How the shots meet: \"cuts\" (default: shots meet with a cut between the song's lines, like an edit) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)"
- Added
discard_character_request - Added
draw_character_sheet - Added
get_character_request - Added
get_face_check - Added
get_music_video_look - Added
keep_character - Removed
list_artist_photos - Added
list_character_requests - Added
list_characters - Changed
list_kit3 fields changed- added
Input schema / properties / limitAdded value: +{ + "description": "Pieces per page, 1-100 (default: every piece)", + "maximum": 100, + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / offsetAdded value: +{ + "description": "How many pieces to skip", + "maximum": 9007199254740991, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / qAdded value: +{ + "description": "Part of the name, @handle or description", + "maxLength": 100, + "type": "string" +}
- Added
list_music_video_drafts - Added
list_music_video_looks - Changed
plan_music_video15 fields changed- changed
Input schema / properties / cast / descriptionPrevious value: -"The two photos the artist is kept from: face_photo_id (a sharp face, mouth visible) and outfit_photo_id (the outfit and body worn throughout); either left out, the director picks it. One photo can be both; hidden photos (add_artist_photos hidden) work too"New value: +"The performer in it, kept from their character: what they wear, outfit_kit (a kit outfit's @handle, without the @, worn in every shot they are in); left out, the director picks. Only when the performer is on screen" - removed
Input schema / properties / cast / properties / face_photo_idRemoved value: -{ - "pattern": "^photo_[0-9a-f-]{36}$", - "type": "string" -} - added
Input schema / properties / cast / properties / outfit_kitAdded value: +{ + "pattern": "^[a-z0-9-]{1,40}$", + "type": "string" +} - removed
Input schema / properties / cast / properties / outfit_photo_idRemoved value: -{ - "pattern": "^photo_[0-9a-f-]{36}$", - "type": "string" -} - changed
Input schema / properties / category / enumPrevious value: -[ - "performance", - "intercut", - "cinematic", - "story", - "surreal" -]New value: +[ + "performance", + "intercut", + "cinematic", + "story", + "surreal", + "studio", + "live", + "instrument", + "lyric-led", + "vlog", + "fashion", + "oner", + "cast-story", + "mood", + "places", + "dance", + "band", + "action" +] - changed
Input schema / properties / direction / descriptionPrevious value: -"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. An unknown handle answers 400"New value: +"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (any of the workspace's, the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle answers 400" - added
Input schema / properties / lipsyncAdded value: +{ + "default": "auto", + "description": "\"auto\" (default: the director has the artist sing the important lines on camera) or \"never\" (nobody sings on camera; the song plays over every shot). A kind sung on camera (lyric-led) refuses \"never\"; an instrumental song never lip-syncs", + "enum": [ + "auto", + "never" + ], + "type": "string" +} - added
Input schema / properties / look_idAdded value: +{ + "description": "A music video Look (list_music_video_looks: one made public, or the workspace's own) the video follows: its treatment leads the director and its places and props join the kit. Send its category, style, takes and lipsync too (or your own)", + "pattern": "^mvlook_[0-9a-f-]{36}$", + "type": "string" +} - changed
Input schema / properties / model / enumPrevious value: -[ - "one-take" -]New value: +[ + "one-take", + "seedance-2-0", + "seedance-2-0-fast", + "seedance-2-0-mini", + "seedance-2-5" +] - added
Input schema / properties / on_screenAdded value: +{ + "description": "Who is on screen: artist (the song's artist, from their character; in a Creator workspace the cast member performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes", + "enum": [ + "artist", + "cast", + "none" + ], + "type": "string" +} - added
Input schema / properties / peopleAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "character": { + "pattern": "^[a-z0-9][a-z0-9-]{0,39}$", + "type": "string" + }, + "does": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "outfit": { + "pattern": "^[a-z0-9][a-z0-9-]{0,39}$", + "type": "string" + } + }, + "required": [ + "character" + ], + "type": "object" + }, + "maxItems": 8, + "type": "array" +} - added
Input schema / properties / performerAdded value: +{ + "description": "Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character of its cast (list_characters: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places).", + "pattern": "^kit_[0-9a-f-]{36}$", + "type": "string" +} - changed
Input schema / properties / song_id / descriptionPrevious value: -"The song; its artist performs the video and needs photos (add_artist_photos)"New value: +"The song; its artist performs the video and needs their character (list_characters; start_character makes one), unless performer names another character" - changed
Input schema / properties / style / enumPrevious value: -[ - "natural", - "film", - "golden-hour", - "neon-night", - "noir", - "vintage", - "dreamy" -]New value: +[ + "natural", + "film", + "golden-hour", + "neon-night", + "noir", + "vintage", + "dreamy", + "super-8", + "vhs", + "documentary", + "glossy-pop", + "indie", + "cyberpunk", + "y2k", + "lofi", + "painterly", + "anime", + "clay" +] - changed
Input schema / properties / takes / descriptionPrevious value: -"How the shots meet: \"cuts\" (default: shots meet between the song's lines like an edit, with a cut or the transition the director picks at each join: dissolve, dip to black, flash or whip; ask for them, or for none, in direction) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)"New value: +"How the shots meet: \"cuts\" (default: shots meet with a cut between the song's lines, like an edit) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)"
- Changed
quote_canvas4 fields changed- changed
Input schema / properties / direction / descriptionPrevious value: -"Optional mood, motifs or references; the concept still comes from the cover"New value: +"Optional mood, motifs or references" - changed
Input schema / properties / feature_artist / descriptionPrevious value: -"Whether the Canvas shows the artist: auto (the director decides), always or never (AI sources; needs artist photos for \"always\")"New value: +"Whether the Canvas shows the artist: auto (the director decides), always or never (AI sources; \"always\" needs the artist's character: list_characters, start_character makes one)" - added
Input schema / properties / inspirationAdded value: +{ + "default": "cover", + "description": "Where the idea comes from: cover (default; the cover art's world, colors and motifs, brought to life) or song (its words, story and sound lead, the colors kept close to the cover so the two sit together in the player)", + "enum": [ + "cover", + "song" + ], + "type": "string" +} - added
Input schema / properties / performerAdded value: +{ + "description": "A Creator workspace only: the cast character (list_characters) who may appear, with feature_artist auto or always on an AI source. Omitted: the song's artist's character", + "pattern": "^kit_[0-9a-f-]{36}$", + "type": "string" +}
- Changed
quote_lyric_video1 field changed- changed
Input schema / properties / look / descriptionPrevious value: -"{\"mode\":\"existing\",\"id\":\"look_…\"} to reuse a saved Look (add \"lyric_style\" to render it in another lyric style, at no extra cost), or {\"mode\":\"new\",\"category\":\"…\",\"lyric_style\":\"…\",\"background\":{\"source\":\"ai-image\",\"quality\":\"high\"},\"visibility\":\"private\",\"direction\":\"…\"} to have one designed (background.source \"upload-photo\"/\"upload-video\" with background.upload_id from upload_background designs it around your own media; such a Look stays private. \"stock-photo\"/\"stock-video\" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references \"stock\" (AI image or AI video, default \"none\") with feature_artist \"always\" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist \"always\" (default \"never\") makes them the subject of the background, recognizable from their artist photos (add_artist_photos); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false"New value: +"{\"mode\":\"existing\",\"id\":\"look_…\"} to reuse a saved Look (add \"lyric_style\" to render it in another lyric style, at no extra cost), or {\"mode\":\"new\",\"category\":\"…\",\"lyric_style\":\"…\",\"background\":{\"source\":\"ai-image\",\"quality\":\"high\"},\"visibility\":\"private\",\"direction\":\"…\"} to have one designed (background.source \"upload-photo\"/\"upload-video\" with background.upload_id from upload_background designs it around your own media; such a Look stays private. \"stock-photo\"/\"stock-video\" with background.stock_id from search_stock uses that stock photo or clip instead of the director's pick). lyric_style (optional, from get_options) sets how the lyrics are presented and animated: block-stack, punch, player, neon, terminal, cinematic… Omit it and the director picks one. background.scenes (2–4, AI image only) makes that many shots of the same world that cut on the song's sections, each priced like the first. background.references \"stock\" (AI image or AI video, default \"none\") with feature_artist \"always\" makes the background one real stock photo of a place the director picks, with the artist put into it and restyled a little for the Look; no extra cost. The singer is left out unless asked: feature_artist \"always\" (default \"never\") makes them the subject of the background, recognizable from their character (list_characters; start_character makes one); it needs an AI image or AI video background, a private Look and display.cover false (the cover would hide them), and that Look then only serves this artist's songs. A saved Look that shows an artist (featured_artist) only serves that artist's songs, also with display.cover false"
- Changed
quote_music_video21 fields changed- changed
Input schema / properties / cast / descriptionPrevious value: -"The two photos the artist is kept from: face_photo_id (a sharp face, mouth visible) and outfit_photo_id (the outfit and body worn throughout); either left out, the director picks it. One photo can be both; hidden photos (add_artist_photos hidden) work too"New value: +"The performer in it, kept from their character: what they wear, outfit_kit (a kit outfit's @handle, without the @, worn in every shot they are in); left out, the director picks. Only when the performer is on screen" - removed
Input schema / properties / cast / properties / face_photo_idRemoved value: -{ - "pattern": "^photo_[0-9a-f-]{36}$", - "type": "string" -} - added
Input schema / properties / cast / properties / outfit_kitAdded value: +{ + "pattern": "^[a-z0-9-]{1,40}$", + "type": "string" +} - removed
Input schema / properties / cast / properties / outfit_photo_idRemoved value: -{ - "pattern": "^photo_[0-9a-f-]{36}$", - "type": "string" -} - changed
Input schema / properties / category / enumPrevious value: -[ - "performance", - "intercut", - "cinematic", - "story", - "surreal" -]New value: +[ + "performance", + "intercut", + "cinematic", + "story", + "surreal", + "studio", + "live", + "instrument", + "lyric-led", + "vlog", + "fashion", + "oner", + "cast-story", + "mood", + "places", + "dance", + "band", + "action" +] - added
Input schema / properties / design_shootAdded value: +{ + "default": false, + "description": "Without a plan: the director first designs the shoot (the outfits, places and props the brief leaves open) and draws each as a picture every shot is given. The quote counts the most pictures it may draw; only those drawn are charged", + "type": "boolean" +} - changed
Input schema / properties / direction / descriptionPrevious value: -"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. An unknown handle answers 400"New value: +"Optional notes for the director (a place, an era, a story idea, a mood). Mention kit pieces by @handle (list_kit): \"@nina-kazora in the @blue-set on the @rooftop, the @chrome-mic in hand\"; a mentioned piece is used exactly as it is and the director designs the rest. Mention characters by @handle (list_characters) to put them in the shots beside the performer (any of the workspace's, the song's artist's own too when another character performs; in a story with a cast, they are the cast): \"@mia-torres dances behind her in the last chorus\". An unknown handle answers 400" - added
Input schema / properties / lipsyncAdded value: +{ + "default": "auto", + "description": "\"auto\" (default: the director has the artist sing the important lines on camera) or \"never\" (nobody sings on camera; the song plays over every shot). A kind sung on camera (lyric-led) refuses \"never\"; an instrumental song never lip-syncs", + "enum": [ + "auto", + "never" + ], + "type": "string" +} - added
Input schema / properties / look_idAdded value: +{ + "description": "A music video Look (list_music_video_looks: one made public, or the workspace's own) the video follows: its treatment leads the director and its places and props join the kit. Send its category, style, takes and lipsync too (or your own)", + "pattern": "^mvlook_[0-9a-f-]{36}$", + "type": "string" +} - changed
Input schema / properties / model / enumPrevious value: -[ - "one-take" -]New value: +[ + "one-take", + "seedance-2-0", + "seedance-2-0-fast", + "seedance-2-0-mini", + "seedance-2-5" +] - added
Input schema / properties / on_screenAdded value: +{ + "description": "Who is on screen: artist (the song's artist, from their character; in a Creator workspace the cast member performer names), cast (people the director casts and describes; the artist needn't appear) or none (places, light and objects). Omitted: the kind's (cast-story a cast, mood and places no one, else the artist). Only what the model makes: get_options lists on_screen per model (cast and none are offered once a model is tested with them). Without the artist no character is needed, there are no outfits and no continuous takes", + "enum": [ + "artist", + "cast", + "none" + ], + "type": "string" +} - added
Input schema / properties / outroAdded value: +{ + "additionalProperties": false, + "description": "Optional: end on a release card after the last shot, the song playing on under it (the delivered video is up to 5 seconds longer; the director designs it for the video, or look_id: a lyric video Look from list_looks whose card is used as it is). display: title, artist, cover, badges (true/false) and optional cover_scale, text_scale, artist_scale, spacing_scale. Free with the video", + "properties": { + "display": { + "additionalProperties": false, + "properties": { + "artist": { + "default": true, + "type": "boolean" + }, + "artist_scale": { + "maximum": 1.5, + "minimum": 0.85, + "type": "number" + }, + "badges": { + "default": true, + "type": "boolean" + }, + "cover": { + "default": true, + "type": "boolean" + }, + "cover_scale": { + "maximum": 1.25, + "minimum": 0.75, + "type": "number" + }, + "spacing_scale": { + "maximum": 1.5, + "minimum": 0.75, + "type": "number" + }, + "text_scale": { + "maximum": 1.3, + "minimum": 0.85, + "type": "number" + }, + "title": { + "default": true, + "type": "boolean" + } + }, + "type": "object" + }, + "look_id": { + "maxLength": 120, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "display" + ], + "type": "object" +} - added
Input schema / properties / peopleAdded value: +{ + "items": { + "additionalProperties": false, + "properties": { + "character": { + "pattern": "^[a-z0-9][a-z0-9-]{0,39}$", + "type": "string" + }, + "does": { + "maxLength": 300, + "minLength": 1, + "type": "string" + }, + "outfit": { + "pattern": "^[a-z0-9][a-z0-9-]{0,39}$", + "type": "string" + } + }, + "required": [ + "character" + ], + "type": "object" + }, + "maxItems": 8, + "type": "array" +} - added
Input schema / properties / performerAdded value: +{ + "description": "Only in a Creator workspace (its projects have no character of their own): who performs (sings to camera lip-synced, or plays), a character of its cast (list_characters: its id, kit_…). Anywhere else the song's artist performs, from their character: leave it out. Only when someone performs (on_screen artist: every kind but cast-story, mood and places).", + "pattern": "^kit_[0-9a-f-]{36}$", + "type": "string" +} - removed
Input schema / properties / quality / defaultRemoved value: -"768p" - changed
Input schema / properties / quality / descriptionPrevious value: -"The resolution it is made at: one of the qualities get_options lists for the model (768p by default; 1080p is the same video sharper for about twice the credits); not part of the plan, so a plan is made in any quality. get_options lists each model's qualities with about how long each takes; credits.music_video.models has a minute by model and quality"New value: +"The resolution it is made at: one of the qualities get_options lists for the model (left out, the model's default_quality: 768p for MiniMax H3 Max, 720p for Seedance; a sharper one is the same video for more credits); not part of the plan, so a plan is made in any quality. get_options lists each model's qualities with about how long each takes; credits.music_video.models has a minute by model and quality" - changed
Input schema / properties / quality / enumPrevious value: -[ - "480p", - "768p", - "1080p" -]New value: +[ + "480p", + "720p", + "768p", + "1080p", + "4k" +] - added
Input schema / properties / refinishAdded value: +{ + "additionalProperties": false, + "description": "Finish a delivered music video again with another outro, or none (send song_id, refinish.video_id and outro or not; one variation): no shot is made again, only setup and delivery are charged. Needs the video's revisable_until ahead", + "properties": { + "video_id": { + "format": "uuid", + "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$", + "type": "string" + } + }, + "required": [ + "video_id" + ], + "type": "object" +} - changed
Input schema / properties / song_id / descriptionPrevious value: -"The song; its artist performs the video and needs photos (add_artist_photos)"New value: +"The song; its artist performs the video and needs their character (list_characters; start_character makes one), unless performer names another character" - changed
Input schema / properties / style / enumPrevious value: -[ - "natural", - "film", - "golden-hour", - "neon-night", - "noir", - "vintage", - "dreamy" -]New value: +[ + "natural", + "film", + "golden-hour", + "neon-night", + "noir", + "vintage", + "dreamy", + "super-8", + "vhs", + "documentary", + "glossy-pop", + "indie", + "cyberpunk", + "y2k", + "lofi", + "painterly", + "anime", + "clay" +] - changed
Input schema / properties / takes / descriptionPrevious value: -"How the shots meet: \"cuts\" (default: shots meet between the song's lines like an edit, with a cut or the transition the director picks at each join: dissolve, dip to black, flash or whip; ask for them, or for none, in direction) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)"New value: +"How the shots meet: \"cuts\" (default: shots meet with a cut between the song's lines, like an edit) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)"
- Added
remove_artist_image - Changed
rename_song2 fields changed- added
Input schema / properties / instrumentalAdded value: +{ + "deprecated": true, + "description": "Deprecated: the analysis hears whether a song has vocals. true: a song without vocals (never transcribed, never lip-synced). Stops working on 2027-04-30.", + "type": "boolean", + "x-sunset": "2027-04-30" +} - changed
Input schema / requiredPrevious value: -[ - "song_id", - "title" -]New value: +[ + "song_id" +]
- Added
revise_music_video_shot - Added
save_music_video_look - Added
set_artist_image - Removed
set_artist_picture - Added
start_character - Added
start_face_check - Changed
update_kit_piece1 field changed- added
Input schema / properties / ai_madeAdded value: +{ + "description": "A character only: an AI-made person (true) or a real one (false)", + "type": "boolean" +}
- Changed
update_organization2 fields changed- changed
Input schema / properties / type / descriptionPrevious value: -"artist (one artist) or label (a roster)"New value: +"artist (one artist), label (a roster) or creator (projects)" - changed
Input schema / properties / type / enumPrevious value: -[ - "artist", - "label" -]New value: +[ + "artist", + "label", + "creator" +]
- Added
withdraw_face_check
4 tool updates
- Changed
create_music_video3 fields changed- changed
Input schema / properties / category / descriptionPrevious value: -"performance (default: sings to camera in one place), intercut (performance cut against the artist living the song's story), cinematic (a moving camera through a location), story (acts out the song's story in one take) or surreal (the world transforms with the song). get_options lists the ones each model makes"New value: +"performance (default: sings to camera in one place), intercut (performance cut against the artist living the song's story), cinematic (a moving camera through a location), story (acts out the song's story) or surreal (the world transforms with the song). get_options lists the ones each model makes" - changed
Input schema / properties / model / descriptionPrevious value: -"The music video model: one-take (default; one continuous, lip-synced take of the artist). get_options lists the models with the categories, styles, formats and length each makes"New value: +"The music video model: one-take (default; MiniMax H3 Max, the artist lip-synced in shots cut between the song's lines). get_options lists the models with the categories, styles, formats, takes and length each makes" - added
Input schema / properties / takesAdded value: +{ + "default": "cuts", + "description": "How the shots meet: \"cuts\" (default: shots meet between the song's lines like an edit, with a cut or the transition the director picks at each join: dissolve, dip to black, flash or whip; ask for them, or for none, in direction) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)", + "enum": [ + "cuts", + "continuous" + ], + "type": "string" +}
- Changed
design_music_video_shoot2 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"The music video model: one-take (default; one continuous, lip-synced take of the artist). get_options lists the models with the categories, styles, formats and length each makes"New value: +"The music video model: one-take (default; MiniMax H3 Max, the artist lip-synced in shots cut between the song's lines). get_options lists the models with the categories, styles, formats, takes and length each makes" - added
Input schema / properties / takesAdded value: +{ + "default": "cuts", + "description": "How the shots meet: \"cuts\" (default: shots meet between the song's lines like an edit, with a cut or the transition the director picks at each join: dissolve, dip to black, flash or whip; ask for them, or for none, in direction) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)", + "enum": [ + "cuts", + "continuous" + ], + "type": "string" +}
- Changed
plan_music_video2 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"The music video model: one-take (default; one continuous, lip-synced take of the artist). get_options lists the models with the categories, styles, formats and length each makes"New value: +"The music video model: one-take (default; MiniMax H3 Max, the artist lip-synced in shots cut between the song's lines). get_options lists the models with the categories, styles, formats, takes and length each makes" - added
Input schema / properties / takesAdded value: +{ + "default": "cuts", + "description": "How the shots meet: \"cuts\" (default: shots meet between the song's lines like an edit, with a cut or the transition the director picks at each join: dissolve, dip to black, flash or whip; ask for them, or for none, in direction) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)", + "enum": [ + "cuts", + "continuous" + ], + "type": "string" +}
- Changed
quote_music_video3 fields changed- changed
Input schema / properties / category / descriptionPrevious value: -"performance (default: sings to camera in one place), intercut (performance cut against the artist living the song's story), cinematic (a moving camera through a location), story (acts out the song's story in one take) or surreal (the world transforms with the song). get_options lists the ones each model makes"New value: +"performance (default: sings to camera in one place), intercut (performance cut against the artist living the song's story), cinematic (a moving camera through a location), story (acts out the song's story) or surreal (the world transforms with the song). get_options lists the ones each model makes" - changed
Input schema / properties / model / descriptionPrevious value: -"The music video model: one-take (default; one continuous, lip-synced take of the artist). get_options lists the models with the categories, styles, formats and length each makes"New value: +"The music video model: one-take (default; MiniMax H3 Max, the artist lip-synced in shots cut between the song's lines). get_options lists the models with the categories, styles, formats, takes and length each makes" - added
Input schema / properties / takesAdded value: +{ + "default": "cuts", + "description": "How the shots meet: \"cuts\" (default: shots meet between the song's lines like an edit, with a cut or the transition the director picks at each join: dissolve, dip to black, flash or whip; ask for them, or for none, in direction) or \"continuous\" (the director may carry a shot on into the next through a picture drawn of the moment they meet, priced per picture; the quote before a plan counts every join, the plan's quote only the ones it draws)", + "enum": [ + "cuts", + "continuous" + ], + "type": "string" +}
7 tool updates
- Changed
create_lyric_video1 field changed- changed
Input schema / properties / trim / descriptionPrevious value: -"Render only this section of the song (at least 8 seconds)"New value: +"Render only this section of the song (at least 8 seconds). Best: a part from get_song_analysis (parts[]: its start and end never cut a word)"
- Changed
create_music_video1 field changed- changed
Input schema / properties / trim / descriptionPrevious value: -"Perform only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). The price follows its length"New value: +"Perform only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). The price follows its length. Best: a part from get_song_analysis (parts[]: its start and end never cut a word)"
- Changed
design_music_video_shoot1 field changed- changed
Input schema / properties / trim / descriptionPrevious value: -"Only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long)"New value: +"Only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). Best: a part from get_song_analysis (parts[]: its start and end never cut a word)"
- Changed
get_song_analysis1 field changed- added
Input schema / properties / min_secondsAdded value: +{ + "description": "The parts for a video at least this long: a music video 15 (its clips are cut no shorter). Default 8, a lyric video", + "maximum": 600, + "minimum": 8, + "type": "number" +}
- Changed
plan_music_video1 field changed- changed
Input schema / properties / trim / descriptionPrevious value: -"Only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long)"New value: +"Only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). Best: a part from get_song_analysis (parts[]: its start and end never cut a word)"
- Changed
quote_lyric_video1 field changed- changed
Input schema / properties / trim / descriptionPrevious value: -"Render only this section of the song (at least 8 seconds)"New value: +"Render only this section of the song (at least 8 seconds). Best: a part from get_song_analysis (parts[]: its start and end never cut a word)"
- Changed
quote_music_video1 field changed- changed
Input schema / properties / trim / descriptionPrevious value: -"Perform only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). The price follows its length"New value: +"Perform only this section of the song (15 seconds to 10 minutes); omitted, the whole song (15 seconds to 10 minutes long). The price follows its length. Best: a part from get_song_analysis (parts[]: its start and end never cut a word)"
19 tool updates
- Changed
add_artist_photos2 fields changed- added
Input schema / properties / hiddenAdded value: +{ + "description": "true: only for a music video, kept off the artist's photos (default false)", + "type": "boolean" +} - changed
Input schema / properties / photo_urls / maxItemsPrevious value: -6New value: +20
- Added
add_kit_piece - Added
create_music_video - Added
delete_kit_piece - Added
design_music_video_shoot - Added
get_kit_piece - Added
get_music_video_lookbook - Added
get_music_video_plan - Added
keep_music_video_lookbook_piece - Added
list_kit - Changed
list_videos4 fields changed- added
Input schema / properties / artist_idAdded value: +{ + "description": "Only videos of this artist’s songs", + "maxLength": 120, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / cursorAdded value: +{ + "description": "next_cursor from the previous page", + "maxLength": 200, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / qAdded value: +{ + "description": "Search the song title, artist name, Look name or video id", + "maxLength": 100, + "minLength": 1, + "type": "string" +} - changed
Input schema / properties / type / enumPrevious value: -[ - "lyric-video", - "canvas" -]New value: +[ + "lyric-video", + "canvas", + "music-video" +]
- Added
plan_music_video - Added
quote_music_video - Added
redesign_music_video_lookbook - Added
redraw_music_video_lookbook_piece - Added
render_music_video_lookbook - Added
swap_music_video_place - Added
update_kit_piece - Added
update_music_video_lookbook
1 tool update
- Added
suggest_idea
Publisher details
- Operator
- Kinetune · Publisher source
- Operator website
- https://kinetune.com
- Vendor relationship
- Unknown
- Documentation
- https://kinetune.com/developers#mcp
- Trust center
- Unknown
- Restrictions
- Unknown
Related MCP Connectors
I do everything related to music and lyrics
Turn a song and its lyrics into a word-synced lyric video, with three styles to choose from.
Audio-reactive music visualizer: turn a track and cover art into a music video.
Turn audio or text into a finished AI music video: narrative, multi-provider clips, final cut.
Related MCP Servers
- AlicenseAqualityNot gradedmaintenanceLocal music video toolkit: BPM, key and Camelot detection, best 15/30 s clip, beat-synced shot lists, Spotify Canvas maker and platform specs. Runs on your machine with ffmpeg, no API key.5MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to create lyric videos by adding images, audio, styled text, and timed lyric lines, then rendering the final MP4.ISC
- AlicenseNot gradedqualityDmaintenanceTurn words, images, and audio into an animated video with MP4 export.MIT

Compeller MCPofficial
AlicenseNot gradedqualityFmaintenanceEnables agents to create AI music videos and audio-reactive visuals from songs through MCP, including style discovery, music search, rendering, webhook registration, and media management.1MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.