suno-mcp
This server enables AI agents to generate and manipulate music/sound via Suno models on RunAPI, with pricing checks and task polling.
Create music from text:
text_to_music(with lyrics, style, vocal mode, duration) andtext_to_sound(sound effects with key/tempo)Transform existing audio:
cover_audio,remaster_audio,extend_music,stitch_audio,separate_audio_stems,add_samples,create_mashupGenerate lyrics and personas:
generate_lyrics,generate_persona(from a reference audio clip)Inspire new music:
inspire_musicusing 1–4 audio URLs as guidesBlend lyrics:
blend_lyricsto merge two lyric textsPoll and retrieve results:
get_taskto check status and payload of asynchronous tasksCheck pricing:
check_pricingfor models/endpoints (works without auth)Authenticate:
loginfor browser-based credential setup, or useRUNAPI_API_KEY
Provides tools for generating music and sounds using Suno AI models, including text-to-music, text-to-sound, cover audio, create mashup, extend music, task status polling, and pricing lookup.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@suno-mcpgenerate a song about a rainy day"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Why This Package?
@runapi.ai/suno-mcp is a focused Model Context Protocol server for the Suno model line on RunAPI.
It gives MCP-compatible assistants direct access to 18 endpoints and 9 model variants without loading the full RunAPI catalog.
Use this per-model server when an agent should stay scoped to Suno. Use @runapi.ai/mcp when one assistant should discover every RunAPI model line.
Related MCP server: MCP-Suno
Install
Add it to Claude Code:
claude mcp add suno -s user -- npx -y @runapi.ai/suno-mcpUse project scope when the server should be shared with a repository:
claude mcp add suno -s project -- npx -y @runapi.ai/suno-mcpCodex, Cursor, Windsurf, VS Code, Roo Code, and other MCP hosts can use the same stdio command:
{
"mcpServers": {
"suno": {
"command": "npx",
"args": ["-y", "@runapi.ai/suno-mcp"]
}
}
}check_pricing works before sign-in. For task creation and status polling, ask your assistant to call the login tool. It opens a browser login and saves credentials to ~/.config/runapi/config.json, the same file used by runapi login.
Headless and CI hosts can still set RUNAPI_API_KEY before starting the MCP host.
Ready-made examples are in examples/ for Claude, Cursor, Windsurf, VS Code, and Roo Code.
Tools
Tool | Auth | Purpose |
| Yes | Create a Suno convert audio task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno blend lyrics task and optionally wait for a terminal status. Returns the task id, status, and result payload. |
| Yes | Create a Suno cover audio task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno create mashup task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno extend music task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno generate lyrics task and optionally wait for a terminal status. Returns the task id, status, and result payload. |
| Yes | Create a Suno inspire music task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno add samples task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno visualize music task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Run a Suno generate persona operation synchronously. Returns the operation result. |
| Yes | Create a Suno remaster audio task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno separate audio stems task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno stitch audio task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Run a Suno boost style operation synchronously. Returns the operation result. |
| Yes | Create a Suno text to music task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Create a Suno text to sound task and optionally wait for a terminal status. Returns the task id, status, and output URLs. |
| Yes | Run a Suno get timestamped lyrics operation synchronously. Returns the operation result. |
| Yes | Run a Suno generate voice operation synchronously. Returns the operation result. |
| Yes | Fetch the current status and latest payload for an existing task. |
| No | Look up current pricing for a Suno model and endpoint. |
Models
Suno covers 9 model variants across 18 endpoints. Each tool accepts the models listed for it:
Tool | Models |
| no model parameter |
| no model parameter |
|
|
|
|
|
|
| no model parameter |
|
|
|
|
| no model parameter |
| no model parameter |
|
|
| no model parameter |
|
|
| no model parameter |
|
|
|
|
| no model parameter |
| no model parameter |
Model availability can change between releases. Use check_pricing or the Suno model page for the current catalog view.
Agent Prompts
Ask your assistant in natural language; it can inspect pricing, create the task, and return the task id plus output URLs.
Create a task
Run a Suno convert audio task with RunAPI.The assistant can call check_pricing, then convert_audio, and return the task id, status, and output URLs.
Submit without waiting
Create the task but don't wait for it to finish.The assistant calls the create tool with wait: false and returns the task id. Check on it later with get_task.
Check pricing before creating
Check current Suno pricing, then create the task if it matches my request.The assistant calls check_pricing and can link to the Suno model page for the canonical catalog entry.
Configuration
The server resolves auth in this order:
RUNAPI_API_KEYenvironment variable, useful for headless and CI hosts~/.config/runapi/config.json, created by the MCPlogintool orrunapi loginNo key, which still allows
check_pricing
The config file is normally managed by login. A pre-provisioned headless config can use:
{
"apiKey": "your_runapi_key"
}Do not commit real API keys.
Links
Resource | URL |
Suno model page | |
npm package | |
GitHub repository | |
RunAPI MCP overview | |
RunAPI docs |
License
Licensed under the Apache License, Version 2.0.
Available Tools
21 toolsadd_samplesC
Create a Suno task on RunAPI (add samples). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | No | Optional description of the sample to add. Declared type: string. | |
| audio_url | Yes | URL of the audio file to sample. Declared type: string. | |
| timeout_ms | No | ||
| end_seconds | Yes | End of the sample range in seconds; must exceed start_seconds. Declared type: number. | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| start_seconds | Yes | Start of the sample range in seconds. Declared type: number. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose that the tool returns a task id, status, and output URLs, which is useful since there is no output schema. But it omits critical async behavior, polling semantics (wait, timeout_ms, poll_interval_ms), callback handling, and permission or error characteristics.
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 short sentences with no wasted words, and the core action is front-loaded. It is appropriately sized, though it could use slightly more specificity without becoming bloated.
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 9-parameter tool with no annotations and no output schema, the description is too thin. It provides only a minimal return description and omits usage context, parameter interpretation, and behavioral details that an agent needs to invoke 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 description coverage is 78%, which is high, so the schema already documents most parameters. The description adds no parameter meaning beyond what the schema provides, 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 names a specific verb (Create) and resource (Suno task), with a parenthetical action label (add samples). However, it does not explain what adding samples actually does or distinguish the tool from other task-creating siblings such as convert_audio or extend_music.
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, no prerequisites, and no conditions for selection. The description only states what the tool does, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blend_lyricsB
Create a Suno task on RunAPI (blend lyrics). Returns a task id, status, and result payload.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| lyrics_a | Yes | First lyrics text to blend. Declared type: string. | |
| lyrics_b | Yes | Second lyrics text to blend. Declared type: string. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the task-lifecycle model on return: 'task id, status, and result payload.' However, it omits material traits an agent needs for a generation call: cost/credit implications, authentication requirements, whether the task consumes quota, and how errors or terminal failures surface. Useful but incomplete.
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, front-loaded with the primary action and followed by the return shape. Nothing is redundant, though the '(blend lyrics)' parenthetical duplicates the tool name and title 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?
There is no output schema, so the brief return-value sentence partially compensates, and the async task model is implied. But with six parameters, no annotations, and a sibling get_task that is the natural polling counterpart, the description should explain the wait/callback trade-off and terminal-status handling and does not.
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?
Six parameters with 67% schema coverage, and the description adds nothing about any of them. timeout_ms and poll_interval_ms are undocumented both in the schema and in the description, and the interaction between wait, poll_interval_ms, and callback_url is left entirely to inference.
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 a Suno task that blends lyrics, and names the operation '(blend lyrics)'. This distinguishes it from create_mashup and text_to_music, which operate on audio rather than lyric text, though it does not explicitly name those siblings. The purpose is clear 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?
The description gives no when-to-use condition, no prerequisites, and no alternatives. An agent cannot tell from the text whether to prefer this over create_mashup, generate_lyrics, or inspire_music, nor when to supply a callback_url versus relying on the default wait/poll behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
boost_styleC
Run a synchronous Suno operation on RunAPI (boost style). Returns the operation result.
| Name | Required | Description | Default |
|---|---|---|---|
| description | Yes | Style description to expand into genre tags. Declared type: string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It mentions that the operation is synchronous and returns a result, which is useful, but it omits whether the operation mutates anything, what permissions or credits it requires, and whether it has any side effects or rate limits. For an external API operation, this is a significant 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?
The description is two short sentences with no wasted words and is front-loaded with the operation type. However, its extreme brevity borders on under-specification rather than optimal 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?
Given the crowded music-tool suite, no annotations, and no output schema, the description is not complete enough for reliable tool selection. It fails to explain what 'boost style' produces or how it differs from nearby tools like generate_lyrics or inspire_music. The parameter schema helps, but the overall definition leaves the agent with unresolved questions.
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 input schema already fully documents the single 'description' parameter, including its role in expanding a style into genre tags. The main description adds no additional parameter meaning beyond what the schema provides. 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 states a synchronous Suno operation called 'boost style,' but it does not explain what boosting a style actually does. The purpose is vague and does not distinguish this tool from the many other music-generation siblings. The parameter schema clarifies it expands a style description into genre tags, but the main description alone leaves the agent guessing.
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. With 20 sibling tools for music tasks, the description provides no context, prerequisites, or routing information. It simply says to run the operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_pricingB
Look up RunAPI pricing for the suno model line.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model slug. Defaults to the line's primary model. | |
| action | No | Endpoint name. Defaults to the endpoint that offers the model. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. 'Look up' implies a read-only, non-destructive operation, but the description does not mention permissions, rate limits, default behavior, or the kind of pricing information returned.
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. It is appropriately sized for a simple lookup 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?
The tool is low-complexity and the schema fully documents both optional parameters. However, with no annotations and no output schema, the description does not explain the return format or any auth requirements, leaving minor gaps for an agent 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?
Schema description coverage is 100%, and both parameters are documented in the schema, including an enum for action and a default note for model. The description adds only the broad scope ('suno model line') and does not add syntax or selection guidance 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 ('Look up'), resource ('RunAPI pricing'), and scope ('for the suno model line'). It clearly distinguishes this tool from the sibling generation and task-management tools, which do not cover pricing.
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 that the tool is for checking pricing, but it provides no explicit when-to-use guidance, prerequisites, or alternatives. With no sibling pricing tool, there are also no named alternatives to route against.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
convert_audioC
Create a Suno task on RunAPI (convert audio). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| source_task_id | No | RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string. | |
| source_audio_id | Yes | Audio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses the return shape (task id, status, output URLs) but does not state whether this is async, what permissions/credits are needed, what 'convert' actually does to the audio, or how failures surface. This is a significant gap for a task-creation/mutation 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?
Two short sentences, front-loaded with the action, and no wasted wording. It earns its length but is under-specified rather than overly verbose.
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 6-parameter task-creation tool with no annotations and no output schema, the description is too thin. It should clarify what conversion does, the async/polling contract, and distinguish itself from sibling audio transforms; the return-shape sentence is the only substantive content.
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 mentions none of the 6 parameters. Schema coverage is 67%, so the schema documents most inputs (wait, callback_url, source_task_id, source_audio_id), but roughly a third are undocumented and the description compensates for nothing. It adds no 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?
It states a verb ('Create') and a resource ('Suno task on RunAPI') plus a parenthetical 'convert audio'. However, 'convert' is left undefined against siblings like cover_audio, remaster_audio, and separate_audio_stems, so an agent cannot tell what transformation this performs. The purpose is identifiable but genuinely vague.
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 use this versus the many sibling audio tools (cover_audio, remaster_audio, separate_audio_stems, extend_music). No prerequisites or exclusions are stated. The agent must infer usage 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.
cover_audioC
Create a Suno task on RunAPI (cover audio). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| style | No | Music style. Declared type: string. | |
| title | No | Music title. Declared type: string. | |
| lyrics | No | Exact cover lyrics to sing. Declared type: string. | |
| prompt | No | Cover brief for automatic lyrics. Declared type: string. | |
| persona_id | No | Persona ID. Declared type: string. | |
| timeout_ms | No | ||
| upload_url | Yes | URL of the audio file to cover. Declared type: string. | |
| vocal_mode | Yes | Vocal generation mode. Declared type: string. Known values: "auto_lyrics", "exact_lyrics", "instrumental". | |
| audio_weight | No | Audio weight (0-1). Declared type: number. | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| persona_type | No | Persona type. Declared type: string. Known values: "style", "voice". | |
| style_weight | No | Style adherence weight (0-1). Declared type: number. | |
| vocal_gender | No | Vocal gender. Declared type: string. Known values: "male", "female". | |
| negative_tags | No | Styles to avoid. Declared type: string. | |
| poll_interval_ms | No | ||
| weirdness_constraint | No | Weirdness constraint (0-1). Declared type: number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, yet it only says it returns a task id, status and output URLs. It does not disclose the asynchronous task lifecycle, the effect of the 'wait' polling flag, cost/credit implications, or whether an existing audio asset is consumed or a new one produced.
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, correctly front-loaded with the action before the return-value note. Nothing is redundant, though the second sentence is generic.
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 18-parameter, 2-required, annotation-free music generation tool with no output schema, the description omits the async/polling behavior, credential/API-key expectations, and any hint about which optional fields are mutually exclusive (lyrics vs prompt). It is far too thin for this complexity.
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 89%, so the schema already documents nearly every parameter (upload_url, vocal_mode, weights, callback_url, etc.). The description adds no parameter meaning, 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 concrete verb+resource ('Create a Suno task... cover audio'), which is better than a tautology, but it never distinguishes this from sibling cover/transform tools like convert_audio, remaster_audio, or extend_music. An agent must infer the difference from the name 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?
There is no when-to-use guidance, no prerequisite (for example that an upload_url must first be obtained), and no mention of any alternative tool. Among ~20 audio siblings, this leaves routing entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_mashupC
Create a Suno task on RunAPI (create mashup). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| style | No | Music style. Declared type: string. | |
| title | No | Music title. Declared type: string. | |
| lyrics | No | Exact mashup lyrics to sing. Declared type: string. | |
| prompt | No | Mashup brief for automatic lyrics. Declared type: string. | |
| persona_id | No | Persona ID. Declared type: string. | |
| timeout_ms | No | ||
| vocal_mode | Yes | Vocal generation mode. Declared type: string. Known values: "auto_lyrics", "exact_lyrics", "instrumental". | |
| audio_weight | No | Audio weight (0-1). Declared type: number. | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| persona_type | No | Persona type. Declared type: string. Known values: "style", "voice". | |
| style_weight | No | Style adherence weight (0-1). Declared type: number. | |
| vocal_gender | No | Vocal gender. Declared type: string. Known values: "male", "female". | |
| upload_url_list | Yes | Two audio URLs to mashup. Declared type: array. | |
| poll_interval_ms | No | ||
| weirdness_constraint | No | Weirdness constraint (0-1). Declared type: number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implies a task/async workflow and mentions the return fields, but says nothing about permissions, whether the created task is billed, what happens on failure, or how 'wait'/'timeout_ms'/'poll_interval_ms' change behavior. For a 17-parameter mutation tool this is thin.
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, front-loaded sentences with no filler; the purpose leads and the return shape follows. It is efficiently written, if a bit spare given the tool's complexity.
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?
A 17-parameter creation tool with no annotations and no output schema deserves more than naming three return fields. Nothing explains the required upload_url_list/vocal_mode relationship, polling behavior, or side effects, leaving meaningful 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 description coverage is 88%, so the schema already documents nearly all 17 parameters (including vocal_mode enum values). The description adds no parameter meaning beyond that, so 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?
States a specific verb+resource ('Create a Suno task ... mashup') and identifies the underlying service (RunAPI), which distinguishes it from sibling audio tools like cover_audio or extend_music. It stops short of explicitly contrasting with those siblings, but the purpose 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, no exclusions, and no routing to alternatives among the many audio-mutation siblings (blend_lyrics, add_samples, stitch_audio). The agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extend_musicC
Create a Suno task on RunAPI (extend music). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| style | No | Style preset. Required in custom parameter mode. Declared type: string. | |
| title | No | Song title. Required in custom parameter mode. Declared type: string. | |
| lyrics | No | Exact lyrics. Only allowed when extending uploaded audio in custom parameter mode. Declared type: string. | |
| prompt | No | Extension brief. Cannot be combined with lyrics. Declared type: string. | |
| task_id | No | Source task ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string. | |
| audio_id | No | Source audio ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string. | |
| audio_url | No | Source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string. | |
| persona_id | No | Persona ID. Declared type: string. | |
| timeout_ms | No | ||
| upload_url | No | Uploaded source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string. | |
| continue_at | No | Seconds into the source to continue from. Required in custom parameter mode. Declared type: number. | |
| audio_weight | No | Audio weight (0-1). Declared type: number. | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| instrumental | No | When true, generate without vocals. Declared type: boolean. | |
| persona_type | No | Persona type. Declared type: string. Known values: "style", "voice". | |
| style_weight | No | Style adherence weight (0-1). Declared type: number. | |
| vocal_gender | No | Vocal gender. Declared type: string. Known values: "male", "female". | |
| negative_tags | No | Styles to avoid. Declared type: string. | |
| parameter_mode | Yes | Inherit the source track's parameters (source) or supply custom ones (custom). Declared type: string. Known values: "source", "custom". | |
| poll_interval_ms | No | ||
| weirdness_constraint | No | Weirdness constraint (0-1). Declared type: number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It notes the return shape (task id, status, output URLs), which is useful since there is no output schema, but says nothing about asynchronous generation, the wait/polling behavior, cost, or auth, which matter for a 23-param generation task.
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, front-loaded sentences with no filler; the only weakness is that the parenthetical restates the tool name 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 23-parameter music-generation tool with no annotations and no output schema, the description is thin: it covers the return payload but omits async/polling semantics and any usage framing. The rich schema compensates for most parameter gaps, keeping this at a minimum-viable 3.
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 91%, so the schema already documents nearly every parameter, including mutual exclusivity of prompt/lyrics and the source-vs-custom mode. The description adds no parameter meaning beyond that, 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?
The description states a verb and a loose resource ("Create a Suno task ... (extend music)"), but "extend music" largely restates the tool name and never explains what extending means (continuing a source track from a point) or how it differs from siblings like text_to_music or cover_audio.
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 mention of choosing between source/custom parameter_mode as a decision, and no alternatives named among the many sibling generation tools. An agent must infer the entire usage context from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_lyricsB
Create a Suno task on RunAPI (generate lyrics). Returns a task id, status, and result payload.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| prompt | Yes | Lyrics generation prompt. Declared type: string. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden, but it does usefully disclose the task-based async model and the return payload (task id, status, result). It says nothing about auth needs, rate limits, cost, or how the wait/poll parameters affect blocking 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?
Two short sentences, front-loaded with the action and followed by the return shape. No filler, though '(generate lyrics)' partially restates the tool name.
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?
Since there is no output schema, the description's mention of task id/status/result payload is valuable and fills that gap. However, for a 5-parameter async task tool with no annotations, it omits usage context, permissions, and behavioral details around polling/waiting.
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 60% (timeout_ms and poll_interval_ms are undocumented, prompt has only a placeholder description), and the description adds no parameter meaning whatsoever. It does not compensate for the gap as required at this coverage level.
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 (Create) and resource (Suno task for lyrics generation), so the agent knows this initiates a lyrics-generation job. It is distinguishable from sibling get_timestamped_lyrics (a fetch) and blend_lyrics (a merger), though it doesn't explicitly name 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?
No when-to-use guidance is offered and no alternatives are named, despite several overlapping siblings (get_timestamped_lyrics, blend_lyrics, inspire_music). The agent is left to infer that this is the entry point for new lyrics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_personaC
Run a synchronous Suno operation on RunAPI (generate persona). Returns the operation result.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Persona name. Declared type: string. | |
| description | Yes | Persona description. Declared type: string. | |
| source_task_id | Yes | RunAPI Task id that produced the reference audio. Declared type: string. | |
| source_audio_id | Yes | Audio id within the source Task that carries the reference vocals. Declared type: string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the operation is synchronous and returns a result, but omits whether it consumes credits, requires authentication, creates persistent resources, or has other side effects.
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 short sentences with no wasted words. It is front-loaded with the operation type, though it omits useful context that would make it more actionable.
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 generation tool with four required parameters, no annotations, and no output schema, the description is too sparse. It does not explain what the operation returns beyond 'operation result', when to choose it over siblings, or what a persona represents, leaving significant gaps for an 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?
The input schema has 100% description coverage, fully documenting all four required parameters (source_task_id, source_audio_id, name, description). The description adds no parameter details beyond what the schema already provides, so 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 description states a general verb and resource ('Run a synchronous Suno operation') and names the operation in parentheses, but the parenthetical merely restates the tool name. It does not explain what a 'persona' is, how it differs from siblings like generate_voice or inspire_music, or what source audio produces 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?
No guidance is given on when to use this tool versus alternatives such as generate_voice, cover_audio, or text_to_music. The description provides no prerequisites, context, or exclusions, leaving usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_voiceC
Run a synchronous Suno operation on RunAPI (generate voice). Returns the operation result.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Voice name. Declared type: string. | |
| source_audio_url | Yes | Public URL of the voice recording to clone. Declared type: string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does disclose that the call is synchronous (blocking) and that it returns an operation result, which is modestly useful, but it omits auth/permission needs, latency or rate-limit expectations, and any failure behavior for a generation endpoint.
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, front-loaded and free of padding, though the trailing "Returns the operation result" is near-vacuous given no output schema exists to describe.
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 annotations and no output schema, the description should explain cloning behavior, required inputs, and expected outcome; instead it gives generic "synchronous operation" language. An agent lacks enough context to invoke this confidently versus its siblings.
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 only 2 parameters, so the schema already documents name and source_audio_url. The description adds no parameter meaning beyond that, which puts it at 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?
The description largely restates the tool name ("generate voice") and adds only provider boilerplate ("Suno operation on RunAPI"). It does not distinguish this from siblings like generate_persona or text_to_music, nor does it say the operation clones a voice from a supplied recording. An agent cannot tell what specifically this tool produces beyond the 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?
No when-to-use guidance and no mention of alternatives, despite several plausible siblings (generate_persona, text_to_music, inspire_music). It does not state that a public source audio URL is a prerequisite, which is the key selection criterion for this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_taskB
Fetch the current status and latest result payload for a suno task.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Asynchronous endpoint the task was created on. | |
| task_id | Yes | Task id returned when the task was created. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses that the tool is a read-like fetch returning status and the latest result payload, but it omits authentication requirements, rate limits, error behavior, and whether the task may still be processing.
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, well-structured sentence that front-loads the action and resource. Every word earns its place with no filler or redundancy.
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 retrieval tool with no output schema, the description mentions what is returned ('status and latest result payload') but does not explain the shape or meaning of that payload, nor does it cover polling or error semantics. It is minimally adequate but leaves notable 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 description coverage is 100%, so the schema already documents both task_id and action. The description adds no parameter-level detail beyond the phrase 'suno task', making the baseline score of 3 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 states a specific verb ('Fetch') and resource ('current status and latest result payload for a suno task'), making the tool's purpose clear. It distinguishes itself from the action-creation siblings like convert_audio and text_to_music, though it does not explicitly name 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?
The description gives no explicit when-to-use guidance, prerequisites, or alternatives. It does not explain that this tool should be called after creating an asynchronous task with one of the action endpoints, nor does it mention polling frequency or failure conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_timestamped_lyricsC
Run a synchronous Suno operation on RunAPI (get timestamped lyrics). Returns the operation result.
| Name | Required | Description | Default |
|---|---|---|---|
| source_task_id | No | RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string. | |
| source_audio_id | Yes | Audio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses that the operation is synchronous and returns a result, which is useful, but it omits permissions, side effects, error behavior, credit consumption, and what the result actually contains.
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 very short, front-loaded, and contains no redundant filler. Its compressed structure is appropriate, though the generic wrapper sentence contributes little beyond stating that a synchronous RunAPI operation is performed.
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 are no annotations and no output schema, so the description should do more to explain operational context and return behavior. It only says 'Returns the operation result,' which is too vague for an agent to understand what timestamped lyrics output will look like or how to use it reliably.
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 well documented in the input schema. The description adds no additional parameter meaning, syntax, or constraints, making the baseline score of 3 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 states a clear verb and resource: getting timestamped lyrics via a synchronous Suno operation on RunAPI. It is understandable on its own, but it does not differentiate this tool from siblings like generate_lyrics or blend_lyrics, leaving the agent to infer the distinction from the name 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 description gives no guidance on when to use this tool versus alternatives, no prerequisites, and no conditions for selecting it over other lyric-related or audio-related siblings. It only identifies the operation type, leaving usage entirely implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inspire_musicC
Create a Suno task on RunAPI (inspire music). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| audio_urls | Yes | One to four audio URLs that guide the new music. Declared type: array. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return shape (task id, status, output URLs), which is genuinely useful, but says nothing about mutation side effects, the async/polling nature implied by the wait, timeout_ms, and poll_interval_ms parameters, callback behavior, or auth/rate-limit requirements.
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 that are front-loaded with the action and the backend, followed by the return values. The parenthetical '(inspire music)' is redundant with the name but costs little.
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?
A six-parameter mutation tool with no annotations and no output schema should do much more: it never explains that the call is asynchronous, how 'wait' interacts with timeout_ms/poll_interval_ms and callback_url, or when this model line is appropriate. The return-value sentence is the only substantive disclosure.
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 only 67%; timeout_ms and poll_interval_ms have no descriptions anywhere, and the description never compensates. The mention of 'inspire music' loosely hints that audio_urls guide generation but adds no format, count, or model-selection 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?
States a specific verb (Create) and names the backing service (Suno task on RunAPI), plus what is returned (task id, status, output URLs). However, 'inspire music' merely echoes the tool name and never explains that the operation generates new music guided by input audio, so with ~20 sibling music-generation tools (text_to_music, cover_audio, extend_music) an agent cannot tell what distinguishes this 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?
No indication of when to use this tool versus text_to_music, cover_audio, extend_music, or any other sibling. No prerequisites, no note that it is async or that it requires audio inputs (only inferable from the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginA
Authenticate RunAPI by opening a browser PKCE login flow and saving the API key to ~/.config/runapi/config.json.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Re-run browser login when the current credential comes from the local config file. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the interactive browser flow and the file write side effect (config.json). However, it does not mention that it may overwrite existing credentials or that it could block waiting for user input, though these are implied.
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, well-structured sentence that front-loads the action ('Authenticate RunAPI') and provides necessary details without extraneous 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 simple login tool with one optional parameter and no output schema, the description covers the core purpose and side effect. It lacks an explicit statement that this is a prerequisite for other tools, but that is implied.
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% (the only parameter 'force' has a description). The tool description adds no additional meaning about parameters beyond the schema, 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 clearly states the tool's purpose with a specific verb ('Authenticate'), target resource ('RunAPI'), method ('browser PKCE login flow'), and side effect (saving to config.json). It is distinct from sibling tools, none of which relate to authentication.
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 usage (to authenticate RunAPI) but does not explicitly say when to run it (e.g., before other RunAPI tools) or when to use the 'force' parameter. Since there are no alternative auth tools among siblings, 'vs alternatives' is not applicable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remaster_audioC
Create a Suno task on RunAPI (remaster audio). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| audio_id | Yes | Audio ID within the source task. Declared type: string. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| source_task_id | Yes | Completed Suno music task ID; any model version and any channel is accepted as the source. Declared type: string. | |
| poll_interval_ms | No | ||
| variation_category | No | How far the remaster may drift from the original. Applies to suno-v5 and suno-v5.5 targets; defaults to normal. Declared type: string. Known values: "subtle", "normal", "high". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the response shape (task id, status, output URLs), which is useful, but says nothing about the asynchronous task lifecycle implied by the 'wait' flag, polling defaults, timeouts, cost, or failure behavior for a mutation-style 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 short, front-loaded sentences with zero filler. It is efficient, though the brevity comes at the cost of substantive guidance rather than being an example of tight writing about a complex 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?
An 8-parameter task-creation tool with no annotations and no output schema deserves more: async/polling behavior, timeout semantics, cost implications, and any source-task requirements are all absent. The description covers only the return fields.
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 75%, so most parameters are documented in the schema itself, and the description adds no parameter-level detail. Baseline 3 applies for a schema that largely 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 states a specific verb and resource: create a remaster task on RunAPI for audio. 'Remaster' distinguishes it from siblings like convert_audio, cover_audio, and extend_music, though it never explicitly contrasts with them or with boost_style.
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 is given. It never explains when remastering is preferable to convert_audio, cover_audio, or extend_music, nor does it mention preconditions such as the source task needing to be completed (that detail lives only in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
separate_audio_stemsC
Create a Suno task on RunAPI (separate audio stems). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Stem separation mode. Declared type: string. Known values: "separate_vocal", "split_stem", "split_stem_advanced". | |
| wait | No | Poll until the task reaches a terminal status. | |
| task_id | Yes | Source task ID. Declared type: string. | |
| audio_id | Yes | Audio ID within the source task. Declared type: string. | |
| stem_name | No | Target stem for advanced separation. Required when type is split_stem_advanced. Declared type: string. Known values: "Lead Vocal", "Drum Kit", "Kick", "Snare", "Risers", "Bass", "Backing Vocals", "Piano", "Electric Guitar", "Percussion", "String Section", "Synth", "Acoustic Guitar", "Sound Effects", "Synth Pad", "Synth Bass", "Guitar", "Brass Section", "Organ", "Electronic Drum Kit", "Lead Electric Guitar", "Synth Keys", "Rhythm Electric Guitar", "Electric Piano", "Upright Bass", "Keyboards", "Distorted Electric Guitar", "Synth Strings", "Synth Lead", "Woodwinds", "Rhythm Acoustic Guitar", "Flute", "Harp", "Tambourine", "Trumpet", "Arpeggiator", "Accordion", "Fiddle", "Pedal Steel Guitar", "Synth Voice", "Violin", "Digital Piano", "Synth Brass", "Mandolin", "Choir", "Banjo", "Bells", "Clarinet", "Tenor Saxophone", "Trombone", "Shaker", "French Horn", "Glockenspiel", "Electric Bass", "Cello", "Timpani", "Harmonica", "Marimba", "Vibraphone", "Lap Steel Guitar", "Saxophone", "Orchestra", "Horns", "Cymbals", "Hand Clap", "Oboe", "Celesta", "Congas", "Drone", "Alto Saxophone", "Double Bass", "Ukulele", "Harpsichord", "Baritone Saxophone", "Xylophone", "Tuba", "Bass Guitar", "Whistle", "Lead Guitar", "Rhodes", "808", "Bongos", "Bassoon", "Cowbell", "Viola", "Sitar", "Steel Drums", "Piccolo", "Theremin", "Bagpipes", "Hi-Hat", "Music Box", "Melodica", "Tabla", "Koto", "Djembe", "Taiko", "Didgeridoo". | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states the tool returns a task id, status, and output URLs, which is useful, but omits that this is an async task-creation call, how polling/`wait` behaves, whether it costs credits, or any auth requirements.
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 with the action and the return shape front-loaded; there is no filler. It is efficient, though terse to the point of under-informing.
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, async task-creation tool with no annotations and no output schema, the description is thin. It never explains the relationship between task_id/audio_id inputs, the wait/callback_url/poll_interval_ms control trio, or what the returned task id is used for.
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 75%, so the schema already documents most parameters (including the large enum of stem_name values), making 3 the baseline. The description itself adds no parameter meaning; timeout_ms and poll_interval_ms remain undocumented in both 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 description names a specific verb and resource ('Create a Suno task ... separate audio stems'), so an agent knows this initiates stem separation rather than conversion or remastering. It is clear but does not explicitly contrast itself with siblings like convert_audio or remaster_audio.
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 mention of prerequisites, and no routing to alternatives among the many audio siblings. The agent must infer that it needs an existing source task and audio to operate on.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stitch_audioC
Create a Suno task on RunAPI (stitch audio). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| audio_id | Yes | Audio ID within the source task. Declared type: string. | |
| timeout_ms | No | ||
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| source_task_id | Yes | Completed source task ID. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It says a task is created and returns task id, status, and output URLs, but omits side effects, authentication needs, async/polling behavior (wait, callback_url), cost, and 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?
Two sentences with purpose front-loaded and return values second. There is no filler, though the parenthetical phrasing is slightly terse.
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 task-creation tool with no annotations and no output schema, the description is not complete enough. It mentions return fields but omits async behavior, parameter roles, and usage context.
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 71%, and the description adds no parameter meaning. It does not explain source_task_id, audio_id, model, timeout_ms, poll_interval_ms, or the wait/callback_url semantics beyond what the schema already says.
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 verb 'Create' and resource 'Suno task' with the parenthetical '(stitch audio)', so the core operation is identifiable. It does not differentiate from siblings like convert_audio or create_mashup, leaving the intended scope somewhat ambiguous.
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?
Provides no when-to-use guidance, prerequisites, or alternatives. Usage is only implied by the tool name and the required source_task_id/audio_id parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
text_to_musicC
Create a Suno task on RunAPI (text to music). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| style | No | Music style. Declared type: string. | |
| title | No | Music title. Declared type: string. | |
| lyrics | No | Exact lyrics to sing. Declared type: string. | |
| prompt | No | Song brief for automatic lyrics. Declared type: string. | |
| voice_id | No | RunAPI Voice handle. Declared type: string. | |
| persona_id | No | Persona ID. Declared type: string. | |
| timeout_ms | No | ||
| vocal_mode | Yes | Vocal generation mode. Declared type: string. Known values: "auto_lyrics", "exact_lyrics", "instrumental". | |
| continue_at | No | Timestamp in seconds to continue from. Declared type: number. | |
| audio_weight | No | Audio weight (0-1). Declared type: number. | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| persona_type | No | Persona type. Declared type: string. Known values: "style", "voice". | |
| style_weight | No | Style adherence weight (0-1). Declared type: number. | |
| vocal_gender | No | Vocal gender. Declared type: string. Known values: "male", "female". | |
| negative_tags | No | Styles to avoid. Declared type: string. | |
| duration_seconds | No | Preferred duration in seconds; only available for Suno V5.5 custom requests. Declared type: integer. | |
| poll_interval_ms | No | ||
| weirdness_constraint | No | Weirdness constraint (0-1). Declared type: number. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It hints at an async task model by naming a returned task id and status, but never explains that wait defaults to true and triggers polling to a terminal state, nor describes timeout/poll_interval behavior, cost implications, or failure modes for what is clearly a long-running 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?
Two tight sentences with the operation front-loaded and return values trailing, and every clause carries information. It is appropriately short, though given the tool's complexity the brevity edges toward under-specification rather than pure efficiency.
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 20-parameter, no-annotation, no-output-schema generation tool with an implicit async lifecycle. The description gives a one-line return summary but omits polling/wait semantics and any selection logic for the many mutually-influential fields (lyrics vs prompt vs vocal_mode), leaving meaningful gaps for an agent to fill.
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 90% across 20 parameters, so the schema already documents nearly everything, and per the rubric that establishes a baseline of 3. The description adds no parameter-level meaning beyond the schema (e.g., how lyrics conflicts with prompt under each vocal_mode), so it does not rise above 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?
States a specific verb (Create) and resource (Suno task on RunAPI), plus a parenthetical that pins the modality (text to music), which distinguishes it from siblings like text_to_sound, cover_audio, or extend_music. It stops short of explicitly naming the sibling it should be chosen over, so it lands just below the top band.
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 versus text_to_sound, inspire_music, extend_music, or the other generation siblings, and no mention of prerequisites such as auth or how vocal_mode drives the request. The agent must infer routing entirely 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.
text_to_soundC
Create a Suno task on RunAPI (text to sound). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| model | No | RunAPI model slug for this model line. | |
| prompt | Yes | Sound description (max 500 characters). Declared type: string. | |
| sound_key | No | Musical key. Declared type: string. Known values: "Cm", "C#m", "Dm", "D#m", "Em", "Fm", "F#m", "Gm", "G#m", "Am", "A#m", "Bm", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B". | |
| sound_loop | No | When true, produce loopable audio. Default false. Declared type: boolean. | |
| timeout_ms | No | ||
| grab_lyrics | No | Capture lyric subtitles. Default false. Declared type: boolean. | |
| sound_tempo | No | Tempo in BPM (1-300). Declared type: integer. | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses the return shape (task id, status, output URLs) but says nothing about credit/cost implications, whether the call blocks, failure behavior, or what the required prompt must contain beyond the schema's 500-char note.
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 compact sentences with the action front-loaded and zero filler. It is arguably too spare for a 10-parameter generation tool, 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?
For a 10-param tool with no annotations and no output schema, the description is thin. It partially covers returns, but leaves async/sync behavior (wait, poll_interval_ms, timeout_ms), model selection, and the text_to_music distinction entirely to 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 80%, so the schema already documents prompt, sound_key, sound_loop, tempo, callback_url, wait, and polling. The description adds no parameter meaning beyond that, so the 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 gives a specific verb+resource ('Create a Suno task ... text to sound') and even names the backend, so the basic action is unambiguous. However, it does nothing to distinguish this from the near-identical sibling 'text_to_music' (nor 'inspire_music'), leaving an agent without a rule for choosing between 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 when-to-use guidance, no prerequisites, and no mention of alternatives. Given a sibling named text_to_music, the absence of any disambiguation is a conspicuous gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
visualize_musicC
Create a Suno task on RunAPI (visualize music). Returns a task id, status, and output URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | Poll until the task reaches a terminal status. | |
| author | No | Author name shown in the video. Declared type: string. | |
| timeout_ms | No | ||
| domain_name | No | Domain name watermark. Declared type: string. | |
| callback_url | No | Webhook URL for async notifications. Declared type: string. | |
| source_task_id | No | RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string. | |
| source_audio_id | Yes | Audio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string. | |
| poll_interval_ms | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly signals an async task model by saying it returns a task id and status, but it omits cost/credit implications, whether the operation is idempotent or destructive, and how the wait/callback mechanisms interact. For an 8-parameter async generation tool this is thin.
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 compact sentences with the action front-loaded and no filler. Minor redundancy in 'on RunAPI (visualize music)', but overall 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?
With 8 parameters, no annotations, and no output schema, the description should explain the async lifecycle and the source_audio_id/source_task_id pairing. It partially compensates by naming return fields (task id, status, output URLs), but leaves too much of the calling contract implicit.
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 75%, so the schema documents most parameters itself. The description adds nothing beyond the schema about wait, timeout_ms, poll_interval_ms, callback_url, or the source_task_id/source_audio_id relationship, 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 verb ('Create') and names the operation ('visualize music') plus the provider (Suno on RunAPI), but 'visualize music' is opaque about what actually gets produced — a music video from source audio? The description does not differentiate this from siblings like cover_audio, remaster_audio, or text_to_music.
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 statement of prerequisites (e.g., that a source_audio_id from a prior task is required), and no mention of alternatives among the ~20 sibling music tools. The agent must infer placement 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
20 tool updates
v0.4.0- Changed
add_samples9 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_url / descriptionPrevious value: -"URL of the audio file to sample."New value: +"URL of the audio file to sample. Declared type: string." - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / end_seconds / descriptionPrevious value: -"End of the sample range in seconds; must exceed start_seconds."New value: +"End of the sample range in seconds; must exceed start_seconds. Declared type: number." - removed
Input schema / properties / end_seconds / minimumRemoved value: -0 - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -] - changed
Input schema / properties / prompt / descriptionPrevious value: -"Optional description of the sample to add."New value: +"Optional description of the sample to add. Declared type: string." - changed
Input schema / properties / start_seconds / descriptionPrevious value: -"Start of the sample range in seconds."New value: +"Start of the sample range in seconds. Declared type: number." - removed
Input schema / properties / start_seconds / minimumRemoved value: -0
- Changed
blend_lyrics4 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / lyrics_a / descriptionPrevious value: -"First lyrics text to blend."New value: +"First lyrics text to blend. Declared type: string." - changed
Input schema / properties / lyrics_b / descriptionPrevious value: -"Second lyrics text to blend."New value: +"Second lyrics text to blend. Declared type: string."
- Changed
boost_style2 fields changed- changed
Input schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Input schema / properties / description / descriptionPrevious value: -"Style description to expand into genre tags."New value: +"Style description to expand into genre tags. Declared type: string."
- Changed
check_pricing2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5", - "suno-v6", - "suno-v6-mini", - "suno-v6-wild" -]
- Changed
convert_audio4 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / source_audio_id / descriptionPrevious value: -"Audio id within the source Task, or a RunAPI audio resource id returned by a previous request."New value: +"Audio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string." - changed
Input schema / properties / source_task_id / descriptionPrevious value: -"RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source."New value: +"RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string."
- Changed
cover_audio32 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_weight / descriptionPrevious value: -"Audio weight (0-1)."New value: +"Audio weight (0-1). Declared type: number." - removed
Input schema / properties / audio_weight / maximumRemoved value: -1 - removed
Input schema / properties / audio_weight / minimumRemoved value: -0 - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / lyrics / descriptionPrevious value: -"Exact cover lyrics to sing."New value: +"Exact cover lyrics to sing. Declared type: string." - removed
Input schema / properties / lyrics / maxLengthRemoved value: -5000 - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5", - "suno-v6", - "suno-v6-mini", - "suno-v6-wild" -] - changed
Input schema / properties / negative_tags / descriptionPrevious value: -"Styles to avoid."New value: +"Styles to avoid. Declared type: string." - changed
Input schema / properties / persona_id / descriptionPrevious value: -"Persona ID."New value: +"Persona ID. Declared type: string." - removed
Input schema / properties / persona_type / anyOfRemoved value: -[ - { - "const": "style", - "type": "string" - }, - { - "const": "voice", - "type": "string" - } -] - changed
Input schema / properties / persona_type / descriptionPrevious value: -"Persona type."New value: +"Persona type. Declared type: string. Known values: \"style\", \"voice\"." - added
Input schema / properties / persona_type / typeAdded value: +"string" - changed
Input schema / properties / prompt / descriptionPrevious value: -"Cover brief for automatic lyrics."New value: +"Cover brief for automatic lyrics. Declared type: string." - removed
Input schema / properties / prompt / maxLengthRemoved value: -5000 - changed
Input schema / properties / style / descriptionPrevious value: -"Music style."New value: +"Music style. Declared type: string." - removed
Input schema / properties / style / maxLengthRemoved value: -1000 - changed
Input schema / properties / style_weight / descriptionPrevious value: -"Style adherence weight (0-1)."New value: +"Style adherence weight (0-1). Declared type: number." - removed
Input schema / properties / style_weight / maximumRemoved value: -1 - removed
Input schema / properties / style_weight / minimumRemoved value: -0 - changed
Input schema / properties / title / descriptionPrevious value: -"Music title."New value: +"Music title. Declared type: string." - removed
Input schema / properties / title / maxLengthRemoved value: -80 - changed
Input schema / properties / upload_url / descriptionPrevious value: -"URL of the audio file to cover."New value: +"URL of the audio file to cover. Declared type: string." - removed
Input schema / properties / vocal_gender / anyOfRemoved value: -[ - { - "const": "male", - "type": "string" - }, - { - "const": "female", - "type": "string" - } -] - changed
Input schema / properties / vocal_gender / descriptionPrevious value: -"Vocal gender."New value: +"Vocal gender. Declared type: string. Known values: \"male\", \"female\"." - added
Input schema / properties / vocal_gender / typeAdded value: +"string" - removed
Input schema / properties / vocal_mode / anyOfRemoved value: -[ - { - "const": "auto_lyrics", - "type": "string" - }, - { - "const": "exact_lyrics", - "type": "string" - }, - { - "const": "instrumental", - "type": "string" - } -] - changed
Input schema / properties / vocal_mode / descriptionPrevious value: -"Vocal generation mode."New value: +"Vocal generation mode. Declared type: string. Known values: \"auto_lyrics\", \"exact_lyrics\", \"instrumental\"." - added
Input schema / properties / vocal_mode / typeAdded value: +"string" - changed
Input schema / properties / weirdness_constraint / descriptionPrevious value: -"Weirdness constraint (0-1)."New value: +"Weirdness constraint (0-1). Declared type: number." - removed
Input schema / properties / weirdness_constraint / maximumRemoved value: -1 - removed
Input schema / properties / weirdness_constraint / minimumRemoved value: -0
- Changed
create_mashup33 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_weight / descriptionPrevious value: -"Audio weight (0-1)."New value: +"Audio weight (0-1). Declared type: number." - removed
Input schema / properties / audio_weight / maximumRemoved value: -1 - removed
Input schema / properties / audio_weight / minimumRemoved value: -0 - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / lyrics / descriptionPrevious value: -"Exact mashup lyrics to sing."New value: +"Exact mashup lyrics to sing. Declared type: string." - removed
Input schema / properties / lyrics / maxLengthRemoved value: -5000 - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5", - "suno-v6", - "suno-v6-mini", - "suno-v6-wild" -] - changed
Input schema / properties / persona_id / descriptionPrevious value: -"Persona ID."New value: +"Persona ID. Declared type: string." - removed
Input schema / properties / persona_type / anyOfRemoved value: -[ - { - "const": "style", - "type": "string" - }, - { - "const": "voice", - "type": "string" - } -] - changed
Input schema / properties / persona_type / descriptionPrevious value: -"Persona type."New value: +"Persona type. Declared type: string. Known values: \"style\", \"voice\"." - added
Input schema / properties / persona_type / typeAdded value: +"string" - changed
Input schema / properties / prompt / descriptionPrevious value: -"Mashup brief for automatic lyrics."New value: +"Mashup brief for automatic lyrics. Declared type: string." - removed
Input schema / properties / prompt / maxLengthRemoved value: -5000 - changed
Input schema / properties / style / descriptionPrevious value: -"Music style."New value: +"Music style. Declared type: string." - removed
Input schema / properties / style / maxLengthRemoved value: -1000 - changed
Input schema / properties / style_weight / descriptionPrevious value: -"Style adherence weight (0-1)."New value: +"Style adherence weight (0-1). Declared type: number." - removed
Input schema / properties / style_weight / maximumRemoved value: -1 - removed
Input schema / properties / style_weight / minimumRemoved value: -0 - changed
Input schema / properties / title / descriptionPrevious value: -"Music title."New value: +"Music title. Declared type: string." - removed
Input schema / properties / title / maxLengthRemoved value: -80 - changed
Input schema / properties / upload_url_list / descriptionPrevious value: -"Two audio URLs to mashup."New value: +"Two audio URLs to mashup. Declared type: array." - removed
Input schema / properties / upload_url_list / maxItemsRemoved value: -2 - removed
Input schema / properties / upload_url_list / minItemsRemoved value: -2 - removed
Input schema / properties / vocal_gender / anyOfRemoved value: -[ - { - "const": "male", - "type": "string" - }, - { - "const": "female", - "type": "string" - } -] - changed
Input schema / properties / vocal_gender / descriptionPrevious value: -"Vocal gender."New value: +"Vocal gender. Declared type: string. Known values: \"male\", \"female\"." - added
Input schema / properties / vocal_gender / typeAdded value: +"string" - removed
Input schema / properties / vocal_mode / anyOfRemoved value: -[ - { - "const": "auto_lyrics", - "type": "string" - }, - { - "const": "exact_lyrics", - "type": "string" - }, - { - "const": "instrumental", - "type": "string" - } -] - changed
Input schema / properties / vocal_mode / descriptionPrevious value: -"Vocal generation mode."New value: +"Vocal generation mode. Declared type: string. Known values: \"auto_lyrics\", \"exact_lyrics\", \"instrumental\"." - added
Input schema / properties / vocal_mode / typeAdded value: +"string" - changed
Input schema / properties / weirdness_constraint / descriptionPrevious value: -"Weirdness constraint (0-1)."New value: +"Weirdness constraint (0-1). Declared type: number." - removed
Input schema / properties / weirdness_constraint / maximumRemoved value: -1 - removed
Input schema / properties / weirdness_constraint / minimumRemoved value: -0
- Changed
extend_music37 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_id / descriptionPrevious value: -"Source audio ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url."New value: +"Source audio ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string." - changed
Input schema / properties / audio_url / descriptionPrevious value: -"Source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url."New value: +"Source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string." - changed
Input schema / properties / audio_weight / descriptionPrevious value: -"Audio weight (0-1)."New value: +"Audio weight (0-1). Declared type: number." - removed
Input schema / properties / audio_weight / maximumRemoved value: -1 - removed
Input schema / properties / audio_weight / minimumRemoved value: -0 - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / continue_at / descriptionPrevious value: -"Seconds into the source to continue from. Required in custom parameter mode."New value: +"Seconds into the source to continue from. Required in custom parameter mode. Declared type: number." - changed
Input schema / properties / instrumental / descriptionPrevious value: -"When true, generate without vocals."New value: +"When true, generate without vocals. Declared type: boolean." - changed
Input schema / properties / lyrics / descriptionPrevious value: -"Exact lyrics. Only allowed when extending uploaded audio in custom parameter mode."New value: +"Exact lyrics. Only allowed when extending uploaded audio in custom parameter mode. Declared type: string." - removed
Input schema / properties / lyrics / maxLengthRemoved value: -5000 - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5", - "suno-v6", - "suno-v6-mini", - "suno-v6-wild" -] - changed
Input schema / properties / negative_tags / descriptionPrevious value: -"Styles to avoid."New value: +"Styles to avoid. Declared type: string." - removed
Input schema / properties / parameter_mode / anyOfRemoved value: -[ - { - "const": "source", - "type": "string" - }, - { - "const": "custom", - "type": "string" - } -] - changed
Input schema / properties / parameter_mode / descriptionPrevious value: -"Inherit the source track's parameters (source) or supply custom ones (custom)."New value: +"Inherit the source track's parameters (source) or supply custom ones (custom). Declared type: string. Known values: \"source\", \"custom\"." - added
Input schema / properties / parameter_mode / typeAdded value: +"string" - changed
Input schema / properties / persona_id / descriptionPrevious value: -"Persona ID."New value: +"Persona ID. Declared type: string." - removed
Input schema / properties / persona_type / anyOfRemoved value: -[ - { - "const": "style", - "type": "string" - }, - { - "const": "voice", - "type": "string" - } -] - changed
Input schema / properties / persona_type / descriptionPrevious value: -"Persona type."New value: +"Persona type. Declared type: string. Known values: \"style\", \"voice\"." - added
Input schema / properties / persona_type / typeAdded value: +"string" - changed
Input schema / properties / prompt / descriptionPrevious value: -"Extension brief. Cannot be combined with lyrics."New value: +"Extension brief. Cannot be combined with lyrics. Declared type: string." - removed
Input schema / properties / prompt / maxLengthRemoved value: -5000 - changed
Input schema / properties / style / descriptionPrevious value: -"Style preset. Required in custom parameter mode."New value: +"Style preset. Required in custom parameter mode. Declared type: string." - removed
Input schema / properties / style / maxLengthRemoved value: -1000 - changed
Input schema / properties / style_weight / descriptionPrevious value: -"Style adherence weight (0-1)."New value: +"Style adherence weight (0-1). Declared type: number." - removed
Input schema / properties / style_weight / maximumRemoved value: -1 - removed
Input schema / properties / style_weight / minimumRemoved value: -0 - changed
Input schema / properties / task_id / descriptionPrevious value: -"Source task ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url."New value: +"Source task ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string." - changed
Input schema / properties / title / descriptionPrevious value: -"Song title. Required in custom parameter mode."New value: +"Song title. Required in custom parameter mode. Declared type: string." - removed
Input schema / properties / title / maxLengthRemoved value: -80 - changed
Input schema / properties / upload_url / descriptionPrevious value: -"Uploaded source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url."New value: +"Uploaded source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string." - removed
Input schema / properties / vocal_gender / anyOfRemoved value: -[ - { - "const": "male", - "type": "string" - }, - { - "const": "female", - "type": "string" - } -] - changed
Input schema / properties / vocal_gender / descriptionPrevious value: -"Vocal gender."New value: +"Vocal gender. Declared type: string. Known values: \"male\", \"female\"." - added
Input schema / properties / vocal_gender / typeAdded value: +"string" - changed
Input schema / properties / weirdness_constraint / descriptionPrevious value: -"Weirdness constraint (0-1)."New value: +"Weirdness constraint (0-1). Declared type: number." - removed
Input schema / properties / weirdness_constraint / maximumRemoved value: -1 - removed
Input schema / properties / weirdness_constraint / minimumRemoved value: -0
- Changed
generate_lyrics3 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / prompt / descriptionPrevious value: -"Lyrics generation prompt."New value: +"Lyrics generation prompt. Declared type: string."
- Changed
generate_persona5 fields changed- changed
Input schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Input schema / properties / description / descriptionPrevious value: -"Persona description."New value: +"Persona description. Declared type: string." - changed
Input schema / properties / name / descriptionPrevious value: -"Persona name."New value: +"Persona name. Declared type: string." - changed
Input schema / properties / source_audio_id / descriptionPrevious value: -"Audio id within the source Task that carries the reference vocals."New value: +"Audio id within the source Task that carries the reference vocals. Declared type: string." - changed
Input schema / properties / source_task_id / descriptionPrevious value: -"RunAPI Task id that produced the reference audio."New value: +"RunAPI Task id that produced the reference audio. Declared type: string."
- Changed
generate_voice3 fields changed- changed
Input schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Input schema / properties / name / descriptionPrevious value: -"Voice name."New value: +"Voice name. Declared type: string." - changed
Input schema / properties / source_audio_url / descriptionPrevious value: -"Public URL of the voice recording to clone."New value: +"Public URL of the voice recording to clone. Declared type: string."
- Changed
get_task1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_timestamped_lyrics3 fields changed- changed
Input schema / additionalPropertiesPrevious value: -falseNew value: +{} - changed
Input schema / properties / source_audio_id / descriptionPrevious value: -"Audio id within the source Task, or a RunAPI audio resource id returned by a previous request."New value: +"Audio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string." - changed
Input schema / properties / source_task_id / descriptionPrevious value: -"RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source."New value: +"RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string."
- Changed
inspire_music6 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_urls / descriptionPrevious value: -"One to four audio URLs that guide the new music."New value: +"One to four audio URLs that guide the new music. Declared type: array." - removed
Input schema / properties / audio_urls / maxItemsRemoved value: -4 - removed
Input schema / properties / audio_urls / minItemsRemoved value: -1 - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -]
- Changed
remaster_audio6 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_id / descriptionPrevious value: -"Audio ID within the source task."New value: +"Audio ID within the source task. Declared type: string." - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -] - changed
Input schema / properties / source_task_id / descriptionPrevious value: -"Completed source task ID."New value: +"Completed Suno music task ID; any model version and any channel is accepted as the source. Declared type: string." - added
Input schema / properties / variation_categoryAdded value: +{ + "description": "How far the remaster may drift from the original. Applies to suno-v5 and suno-v5.5 targets; defaults to normal. Declared type: string. Known values: \"subtle\", \"normal\", \"high\".", + "type": "string" +}
- Changed
separate_audio_stems10 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_id / descriptionPrevious value: -"Audio ID within the source task."New value: +"Audio ID within the source task. Declared type: string." - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - removed
Input schema / properties / stem_name / anyOfRemoved value: -[ - { - "const": "Lead Vocal", - "type": "string" - }, - { - "const": "Drum Kit", - "type": "string" - }, - { - "const": "Kick", - "type": "string" - }, - { - "const": "Snare", - "type": "string" - }, - { - "const": "Risers", - "type": "string" - }, - { - "const": "Bass", - "type": "string" - }, - { - "const": "Backing Vocals", - "type": "string" - }, - { - "const": "Piano", - "type": "string" - }, - { - "const": "Electric Guitar", - "type": "string" - }, - { - "const": "Percussion", - "type": "string" - }, - { - "const": "String Section", - "type": "string" - }, - { - "const": "Synth", - "type": "string" - }, - { - "const": "Acoustic Guitar", - "type": "string" - }, - { - "const": "Sound Effects", - "type": "string" - }, - { - "const": "Synth Pad", - "type": "string" - }, - { - "const": "Synth Bass", - "type": "string" - }, - { - "const": "Guitar", - "type": "string" - }, - { - "const": "Brass Section", - "type": "string" - }, - { - "const": "Organ", - "type": "string" - }, - { - "const": "Electronic Drum Kit", - "type": "string" - }, - { - "const": "Lead Electric Guitar", - "type": "string" - }, - { - "const": "Synth Keys", - "type": "string" - }, - { - "const": "Rhythm Electric Guitar", - "type": "string" - }, - { - "const": "Electric Piano", - "type": "string" - }, - { - "const": "Upright Bass", - "type": "string" - }, - { - "const": "Keyboards", - "type": "string" - }, - { - "const": "Distorted Electric Guitar", - "type": "string" - }, - { - "const": "Synth Strings", - "type": "string" - }, - { - "const": "Synth Lead", - "type": "string" - }, - { - "const": "Woodwinds", - "type": "string" - }, - { - "const": "Rhythm Acoustic Guitar", - "type": "string" - }, - { - "const": "Flute", - "type": "string" - }, - { - "const": "Harp", - "type": "string" - }, - { - "const": "Tambourine", - "type": "string" - }, - { - "const": "Trumpet", - "type": "string" - }, - { - "const": "Arpeggiator", - "type": "string" - }, - { - "const": "Accordion", - "type": "string" - }, - { - "const": "Fiddle", - "type": "string" - }, - { - "const": "Pedal Steel Guitar", - "type": "string" - }, - { - "const": "Synth Voice", - "type": "string" - }, - { - "const": "Violin", - "type": "string" - }, - { - "const": "Digital Piano", - "type": "string" - }, - { - "const": "Synth Brass", - "type": "string" - }, - { - "const": "Mandolin", - "type": "string" - }, - { - "const": "Choir", - "type": "string" - }, - { - "const": "Banjo", - "type": "string" - }, - { - "const": "Bells", - "type": "string" - }, - { - "const": "Clarinet", - "type": "string" - }, - { - "const": "Tenor Saxophone", - "type": "string" - }, - { - "const": "Trombone", - "type": "string" - }, - { - "const": "Shaker", - "type": "string" - }, - { - "const": "French Horn", - "type": "string" - }, - { - "const": "Glockenspiel", - "type": "string" - }, - { - "const": "Electric Bass", - "type": "string" - }, - { - "const": "Cello", - "type": "string" - }, - { - "const": "Timpani", - "type": "string" - }, - { - "const": "Harmonica", - "type": "string" - }, - { - "const": "Marimba", - "type": "string" - }, - { - "const": "Vibraphone", - "type": "string" - }, - { - "const": "Lap Steel Guitar", - "type": "string" - }, - { - "const": "Saxophone", - "type": "string" - }, - { - "const": "Orchestra", - "type": "string" - }, - { - "const": "Horns", - "type": "string" - }, - { - "const": "Cymbals", - "type": "string" - }, - { - "const": "Hand Clap", - "type": "string" - }, - { - "const": "Oboe", - "type": "string" - }, - { - "const": "Celesta", - "type": "string" - }, - { - "const": "Congas", - "type": "string" - }, - { - "const": "Drone", - "type": "string" - }, - { - "const": "Alto Saxophone", - "type": "string" - }, - { - "const": "Double Bass", - "type": "string" - }, - { - "const": "Ukulele", - "type": "string" - }, - { - "const": "Harpsichord", - "type": "string" - }, - { - "const": "Baritone Saxophone", - "type": "string" - }, - { - "const": "Xylophone", - "type": "string" - }, - { - "const": "Tuba", - "type": "string" - }, - { - "const": "Bass Guitar", - "type": "string" - }, - { - "const": "Whistle", - "type": "string" - }, - { - "const": "Lead Guitar", - "type": "string" - }, - { - "const": "Rhodes", - "type": "string" - }, - { - "const": "808", - "type": "string" - }, - { - "const": "Bongos", - "type": "string" - }, - { - "const": "Bassoon", - "type": "string" - }, - { - "const": "Cowbell", - "type": "string" - }, - { - "const": "Viola", - "type": "string" - }, - { - "const": "Sitar", - "type": "string" - }, - { - "const": "Steel Drums", - "type": "string" - }, - { - "const": "Piccolo", - "type": "string" - }, - { - "const": "Theremin", - "type": "string" - }, - { - "const": "Bagpipes", - "type": "string" - }, - { - "const": "Hi-Hat", - "type": "string" - }, - { - "const": "Music Box", - "type": "string" - }, - { - "const": "Melodica", - "type": "string" - }, - { - "const": "Tabla", - "type": "string" - }, - { - "const": "Koto", - "type": "string" - }, - { - "const": "Djembe", - "type": "string" - }, - { - "const": "Taiko", - "type": "string" - }, - { - "const": "Didgeridoo", - "type": "string" - } -] - changed
Input schema / properties / stem_name / descriptionPrevious value: -"Target stem for advanced separation. Required when type is split_stem_advanced."New value: +"Target stem for advanced separation. Required when type is split_stem_advanced. Declared type: string. Known values: \"Lead Vocal\", \"Drum Kit\", \"Kick\", \"Snare\", \"Risers\", \"Bass\", \"Backing Vocals\", \"Piano\", \"Electric Guitar\", \"Percussion\", \"String Section\", \"Synth\", \"Acoustic Guitar\", \"Sound Effects\", \"Synth Pad\", \"Synth Bass\", \"Guitar\", \"Brass Section\", \"Organ\", \"Electronic Drum Kit\", \"Lead Electric Guitar\", \"Synth Keys\", \"Rhythm Electric Guitar\", \"Electric Piano\", \"Upright Bass\", \"Keyboards\", \"Distorted Electric Guitar\", \"Synth Strings\", \"Synth Lead\", \"Woodwinds\", \"Rhythm Acoustic Guitar\", \"Flute\", \"Harp\", \"Tambourine\", \"Trumpet\", \"Arpeggiator\", \"Accordion\", \"Fiddle\", \"Pedal Steel Guitar\", \"Synth Voice\", \"Violin\", \"Digital Piano\", \"Synth Brass\", \"Mandolin\", \"Choir\", \"Banjo\", \"Bells\", \"Clarinet\", \"Tenor Saxophone\", \"Trombone\", \"Shaker\", \"French Horn\", \"Glockenspiel\", \"Electric Bass\", \"Cello\", \"Timpani\", \"Harmonica\", \"Marimba\", \"Vibraphone\", \"Lap Steel Guitar\", \"Saxophone\", \"Orchestra\", \"Horns\", \"Cymbals\", \"Hand Clap\", \"Oboe\", \"Celesta\", \"Congas\", \"Drone\", \"Alto Saxophone\", \"Double Bass\", \"Ukulele\", \"Harpsichord\", \"Baritone Saxophone\", \"Xylophone\", \"Tuba\", \"Bass Guitar\", \"Whistle\", \"Lead Guitar\", \"Rhodes\", \"808\", \"Bongos\", \"Bassoon\", \"Cowbell\", \"Viola\", \"Sitar\", \"Steel Drums\", \"Piccolo\", \"Theremin\", \"Bagpipes\", \"Hi-Hat\", \"Music Box\", \"Melodica\", \"Tabla\", \"Koto\", \"Djembe\", \"Taiko\", \"Didgeridoo\"." - added
Input schema / properties / stem_name / typeAdded value: +"string" - changed
Input schema / properties / task_id / descriptionPrevious value: -"Source task ID."New value: +"Source task ID. Declared type: string." - removed
Input schema / properties / type / anyOfRemoved value: -[ - { - "const": "separate_vocal", - "type": "string" - }, - { - "const": "split_stem", - "type": "string" - }, - { - "const": "split_stem_advanced", - "type": "string" - } -] - changed
Input schema / properties / type / descriptionPrevious value: -"Stem separation mode."New value: +"Stem separation mode. Declared type: string. Known values: \"separate_vocal\", \"split_stem\", \"split_stem_advanced\"." - added
Input schema / properties / type / typeAdded value: +"string"
- Changed
stitch_audio5 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_id / descriptionPrevious value: -"Audio ID within the source task."New value: +"Audio ID within the source task. Declared type: string." - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -] - changed
Input schema / properties / source_task_id / descriptionPrevious value: -"Completed source task ID."New value: +"Completed source task ID. Declared type: string."
- Changed
text_to_music37 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / audio_weight / descriptionPrevious value: -"Audio weight (0-1)."New value: +"Audio weight (0-1). Declared type: number." - removed
Input schema / properties / audio_weight / maximumRemoved value: -1 - removed
Input schema / properties / audio_weight / minimumRemoved value: -0 - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / continue_at / descriptionPrevious value: -"Timestamp in seconds to continue from."New value: +"Timestamp in seconds to continue from. Declared type: number." - changed
Input schema / properties / duration_seconds / descriptionPrevious value: -"Preferred duration in seconds; only available for Suno V5.5 custom requests."New value: +"Preferred duration in seconds; only available for Suno V5.5 custom requests. Declared type: integer." - removed
Input schema / properties / duration_seconds / maximumRemoved value: -360 - removed
Input schema / properties / duration_seconds / minimumRemoved value: -10 - changed
Input schema / properties / duration_seconds / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / lyrics / descriptionPrevious value: -"Exact lyrics to sing."New value: +"Exact lyrics to sing. Declared type: string." - removed
Input schema / properties / lyrics / maxLengthRemoved value: -5000 - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5", - "suno-v6", - "suno-v6-mini", - "suno-v6-wild" -] - changed
Input schema / properties / negative_tags / descriptionPrevious value: -"Styles to avoid."New value: +"Styles to avoid. Declared type: string." - changed
Input schema / properties / persona_id / descriptionPrevious value: -"Persona ID."New value: +"Persona ID. Declared type: string." - removed
Input schema / properties / persona_type / anyOfRemoved value: -[ - { - "const": "style", - "type": "string" - }, - { - "const": "voice", - "type": "string" - } -] - changed
Input schema / properties / persona_type / descriptionPrevious value: -"Persona type."New value: +"Persona type. Declared type: string. Known values: \"style\", \"voice\"." - added
Input schema / properties / persona_type / typeAdded value: +"string" - changed
Input schema / properties / prompt / descriptionPrevious value: -"Song brief for automatic lyrics."New value: +"Song brief for automatic lyrics. Declared type: string." - removed
Input schema / properties / prompt / maxLengthRemoved value: -5000 - changed
Input schema / properties / style / descriptionPrevious value: -"Music style."New value: +"Music style. Declared type: string." - removed
Input schema / properties / style / maxLengthRemoved value: -1000 - changed
Input schema / properties / style_weight / descriptionPrevious value: -"Style adherence weight (0-1)."New value: +"Style adherence weight (0-1). Declared type: number." - removed
Input schema / properties / style_weight / maximumRemoved value: -1 - removed
Input schema / properties / style_weight / minimumRemoved value: -0 - changed
Input schema / properties / title / descriptionPrevious value: -"Music title."New value: +"Music title. Declared type: string." - removed
Input schema / properties / title / maxLengthRemoved value: -80 - removed
Input schema / properties / vocal_gender / anyOfRemoved value: -[ - { - "const": "male", - "type": "string" - }, - { - "const": "female", - "type": "string" - } -] - changed
Input schema / properties / vocal_gender / descriptionPrevious value: -"Vocal gender."New value: +"Vocal gender. Declared type: string. Known values: \"male\", \"female\"." - added
Input schema / properties / vocal_gender / typeAdded value: +"string" - removed
Input schema / properties / vocal_mode / anyOfRemoved value: -[ - { - "const": "auto_lyrics", - "type": "string" - }, - { - "const": "exact_lyrics", - "type": "string" - }, - { - "const": "instrumental", - "type": "string" - } -] - changed
Input schema / properties / vocal_mode / descriptionPrevious value: -"Vocal generation mode."New value: +"Vocal generation mode. Declared type: string. Known values: \"auto_lyrics\", \"exact_lyrics\", \"instrumental\"." - added
Input schema / properties / vocal_mode / typeAdded value: +"string" - changed
Input schema / properties / voice_id / descriptionPrevious value: -"RunAPI Voice handle."New value: +"RunAPI Voice handle. Declared type: string." - changed
Input schema / properties / weirdness_constraint / descriptionPrevious value: -"Weirdness constraint (0-1)."New value: +"Weirdness constraint (0-1). Declared type: number." - removed
Input schema / properties / weirdness_constraint / maximumRemoved value: -1 - removed
Input schema / properties / weirdness_constraint / minimumRemoved value: -0
- Changed
text_to_sound11 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / grab_lyrics / descriptionPrevious value: -"Capture lyric subtitles. Default false."New value: +"Capture lyric subtitles. Default false. Declared type: boolean." - removed
Input schema / properties / model / enumRemoved value: -[ - "suno-v5", - "suno-v5.5" -] - changed
Input schema / properties / prompt / descriptionPrevious value: -"Sound description (max 500 characters)."New value: +"Sound description (max 500 characters). Declared type: string." - removed
Input schema / properties / sound_key / anyOfRemoved value: -[ - { - "const": "Cm", - "type": "string" - }, - { - "const": "C#m", - "type": "string" - }, - { - "const": "Dm", - "type": "string" - }, - { - "const": "D#m", - "type": "string" - }, - { - "const": "Em", - "type": "string" - }, - { - "const": "Fm", - "type": "string" - }, - { - "const": "F#m", - "type": "string" - }, - { - "const": "Gm", - "type": "string" - }, - { - "const": "G#m", - "type": "string" - }, - { - "const": "Am", - "type": "string" - }, - { - "const": "A#m", - "type": "string" - }, - { - "const": "Bm", - "type": "string" - }, - { - "const": "C", - "type": "string" - }, - { - "const": "C#", - "type": "string" - }, - { - "const": "D", - "type": "string" - }, - { - "const": "D#", - "type": "string" - }, - { - "const": "E", - "type": "string" - }, - { - "const": "F", - "type": "string" - }, - { - "const": "F#", - "type": "string" - }, - { - "const": "G", - "type": "string" - }, - { - "const": "G#", - "type": "string" - }, - { - "const": "A", - "type": "string" - }, - { - "const": "A#", - "type": "string" - }, - { - "const": "B", - "type": "string" - } -] - changed
Input schema / properties / sound_key / descriptionPrevious value: -"Musical key."New value: +"Musical key. Declared type: string. Known values: \"Cm\", \"C#m\", \"Dm\", \"D#m\", \"Em\", \"Fm\", \"F#m\", \"Gm\", \"G#m\", \"Am\", \"A#m\", \"Bm\", \"C\", \"C#\", \"D\", \"D#\", \"E\", \"F\", \"F#\", \"G\", \"G#\", \"A\", \"A#\", \"B\"." - added
Input schema / properties / sound_key / typeAdded value: +"string" - changed
Input schema / properties / sound_loop / descriptionPrevious value: -"When true, produce loopable audio. Default false."New value: +"When true, produce loopable audio. Default false. Declared type: boolean." - changed
Input schema / properties / sound_tempo / descriptionPrevious value: -"Tempo in BPM (1-300)."New value: +"Tempo in BPM (1-300). Declared type: integer." - changed
Input schema / properties / sound_tempo / typePrevious value: -"number"New value: +"integer"
- Changed
visualize_music6 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - changed
Input schema / properties / author / descriptionPrevious value: -"Author name shown in the video."New value: +"Author name shown in the video. Declared type: string." - changed
Input schema / properties / callback_url / descriptionPrevious value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string." - changed
Input schema / properties / domain_name / descriptionPrevious value: -"Domain name watermark."New value: +"Domain name watermark. Declared type: string." - changed
Input schema / properties / source_audio_id / descriptionPrevious value: -"Audio id within the source Task, or a RunAPI audio resource id returned by a previous request."New value: +"Audio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string." - changed
Input schema / properties / source_task_id / descriptionPrevious value: -"RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source."New value: +"RunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string."
12 tool updates
v0.3.6- Added
boost_style - Changed
check_pricing2 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "add_samples", - "blend_lyrics", - "cover_audio", - "create_mashup", - "extend_music", - "generate_lyrics", - "generate_persona", - "inspire_music", - "remaster_audio", - "separate_audio_stems", - "stitch_audio", - "text_to_music", - "text_to_sound" -]New value: +[ + "convert_audio", + "blend_lyrics", + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "inspire_music", + "add_samples", + "visualize_music", + "generate_persona", + "remaster_audio", + "separate_audio_stems", + "stitch_audio", + "boost_style", + "text_to_music", + "text_to_sound", + "get_timestamped_lyrics", + "generate_voice" +] - changed
Input schema / properties / model / enumPrevious value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5", - "suno-v4.5-all" -]New value: +[ + "suno-v4", + "suno-v4.5", + "suno-v4.5-all", + "suno-v4.5-plus", + "suno-v5", + "suno-v5.5", + "suno-v6", + "suno-v6-mini", + "suno-v6-wild" +]
- Added
convert_audio - Changed
cover_audio1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -]New value: +[ + "suno-v4", + "suno-v4.5", + "suno-v4.5-all", + "suno-v4.5-plus", + "suno-v5", + "suno-v5.5", + "suno-v6", + "suno-v6-mini", + "suno-v6-wild" +]
- Changed
create_mashup1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -]New value: +[ + "suno-v4", + "suno-v4.5", + "suno-v4.5-all", + "suno-v4.5-plus", + "suno-v5", + "suno-v5.5", + "suno-v6", + "suno-v6-mini", + "suno-v6-wild" +]
- Changed
extend_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -]New value: +[ + "suno-v4", + "suno-v4.5", + "suno-v4.5-all", + "suno-v4.5-plus", + "suno-v5", + "suno-v5.5", + "suno-v6", + "suno-v6-mini", + "suno-v6-wild" +]
- Changed
generate_persona5 fields changed- removed
Input schema / properties / audio_idRemoved value: -{ - "description": "Audio ID within the source task.", - "type": "string" -} - added
Input schema / properties / source_audio_idAdded value: +{ + "description": "Audio id within the source Task that carries the reference vocals.", + "type": "string" +} - added
Input schema / properties / source_task_idAdded value: +{ + "description": "RunAPI Task id that produced the reference audio.", + "type": "string" +} - removed
Input schema / properties / task_idRemoved value: -{ - "description": "Source task ID with reference vocals.", - "type": "string" -} - changed
Input schema / requiredPrevious value: -[ - "task_id", - "audio_id", - "name", - "description" -]New value: +[ + "source_task_id", + "source_audio_id", + "name", + "description" +]
- Added
generate_voice - Changed
get_task1 field changed- changed
Input schema / properties / action / enumPrevious value: -[ - "add_samples", - "blend_lyrics", - "cover_audio", - "create_mashup", - "extend_music", - "generate_lyrics", - "inspire_music", - "remaster_audio", - "separate_audio_stems", - "stitch_audio", - "text_to_music", - "text_to_sound" -]New value: +[ + "convert_audio", + "blend_lyrics", + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "inspire_music", + "add_samples", + "visualize_music", + "remaster_audio", + "separate_audio_stems", + "stitch_audio", + "text_to_music", + "text_to_sound" +]
- Added
get_timestamped_lyrics - Changed
text_to_music2 fields changed- changed
Input schema / properties / model / enumPrevious value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -]New value: +[ + "suno-v4", + "suno-v4.5", + "suno-v4.5-all", + "suno-v4.5-plus", + "suno-v5", + "suno-v5.5", + "suno-v6", + "suno-v6-mini", + "suno-v6-wild" +] - added
Input schema / properties / voice_idAdded value: +{ + "description": "RunAPI Voice handle.", + "type": "string" +}
- Added
visualize_music
7 tool updates
v0.3.5- Changed
add_samples1 field changed- added
Input schema / properties / promptAdded value: +{ + "description": "Optional description of the sample to add.", + "type": "string" +}
- Changed
check_pricing1 field changed- changed
Input schema / properties / action / enumPrevious value: -[ - "add_samples", - "blend_lyrics", - "cover_audio", - "create_mashup", - "extend_music", - "generate_lyrics", - "inspire_music", - "remaster_audio", - "separate_audio_stems", - "stitch_audio", - "text_to_music", - "text_to_sound" -]New value: +[ + "add_samples", + "blend_lyrics", + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "generate_persona", + "inspire_music", + "remaster_audio", + "separate_audio_stems", + "stitch_audio", + "text_to_music", + "text_to_sound" +]
- Changed
cover_audio10 fields changed- added
Input schema / properties / audio_weight / maximumAdded value: +1 - added
Input schema / properties / audio_weight / minimumAdded value: +0 - added
Input schema / properties / lyrics / maxLengthAdded value: +5000 - added
Input schema / properties / prompt / maxLengthAdded value: +5000 - added
Input schema / properties / style / maxLengthAdded value: +1000 - added
Input schema / properties / style_weight / maximumAdded value: +1 - added
Input schema / properties / style_weight / minimumAdded value: +0 - added
Input schema / properties / title / maxLengthAdded value: +80 - added
Input schema / properties / weirdness_constraint / maximumAdded value: +1 - added
Input schema / properties / weirdness_constraint / minimumAdded value: +0
- Changed
create_mashup10 fields changed- added
Input schema / properties / audio_weight / maximumAdded value: +1 - added
Input schema / properties / audio_weight / minimumAdded value: +0 - added
Input schema / properties / lyrics / maxLengthAdded value: +5000 - added
Input schema / properties / prompt / maxLengthAdded value: +5000 - added
Input schema / properties / style / maxLengthAdded value: +1000 - added
Input schema / properties / style_weight / maximumAdded value: +1 - added
Input schema / properties / style_weight / minimumAdded value: +0 - added
Input schema / properties / title / maxLengthAdded value: +80 - added
Input schema / properties / weirdness_constraint / maximumAdded value: +1 - added
Input schema / properties / weirdness_constraint / minimumAdded value: +0
- Changed
extend_music10 fields changed- added
Input schema / properties / audio_weight / maximumAdded value: +1 - added
Input schema / properties / audio_weight / minimumAdded value: +0 - added
Input schema / properties / lyrics / maxLengthAdded value: +5000 - added
Input schema / properties / prompt / maxLengthAdded value: +5000 - added
Input schema / properties / style / maxLengthAdded value: +1000 - added
Input schema / properties / style_weight / maximumAdded value: +1 - added
Input schema / properties / style_weight / minimumAdded value: +0 - added
Input schema / properties / title / maxLengthAdded value: +80 - added
Input schema / properties / weirdness_constraint / maximumAdded value: +1 - added
Input schema / properties / weirdness_constraint / minimumAdded value: +0
- Added
generate_persona - Changed
text_to_music10 fields changed- added
Input schema / properties / audio_weight / maximumAdded value: +1 - added
Input schema / properties / audio_weight / minimumAdded value: +0 - added
Input schema / properties / lyrics / maxLengthAdded value: +5000 - changed
Input schema / properties / prompt / maxLengthPrevious value: -3000New value: +5000 - added
Input schema / properties / style / maxLengthAdded value: +1000 - added
Input schema / properties / style_weight / maximumAdded value: +1 - added
Input schema / properties / style_weight / minimumAdded value: +0 - added
Input schema / properties / title / maxLengthAdded value: +80 - added
Input schema / properties / weirdness_constraint / maximumAdded value: +1 - added
Input schema / properties / weirdness_constraint / minimumAdded value: +0
14 tool updates
v0.3.2- Added
add_samples - Changed
blend_lyrics3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991
- Changed
check_pricing2 fields changed- changed
Input schema / properties / action / enumPrevious value: -[ - "blend_lyrics", - "cover_audio", - "create_mashup", - "extend_music", - "generate_lyrics", - "separate_audio_stems", - "text_to_music", - "text_to_sound" -]New value: +[ + "add_samples", + "blend_lyrics", + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "inspire_music", + "remaster_audio", + "separate_audio_stems", + "stitch_audio", + "text_to_music", + "text_to_sound" +] - changed
Input schema / properties / model / enumPrevious value: -[ - "suno-v4", - "suno-v4.5", - "suno-v4.5-all", - "suno-v4.5-plus", - "suno-v5", - "suno-v5.5" -]New value: +[ + "suno-v4", + "suno-v4.5", + "suno-v4.5-plus", + "suno-v5", + "suno-v5.5", + "suno-v4.5-all" +]
- Changed
cover_audio12 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / persona_type / anyOfAdded value: +[ + { + "const": "style", + "type": "string" + }, + { + "const": "voice", + "type": "string" + } +] - removed
Input schema / properties / persona_type / enumRemoved value: -[ - "style", - "voice" -] - removed
Input schema / properties / persona_type / typeRemoved value: -"string" - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / vocal_gender / anyOfAdded value: +[ + { + "const": "male", + "type": "string" + }, + { + "const": "female", + "type": "string" + } +] - removed
Input schema / properties / vocal_gender / enumRemoved value: -[ - "male", - "female" -] - removed
Input schema / properties / vocal_gender / typeRemoved value: -"string" - added
Input schema / properties / vocal_mode / anyOfAdded value: +[ + { + "const": "auto_lyrics", + "type": "string" + }, + { + "const": "exact_lyrics", + "type": "string" + }, + { + "const": "instrumental", + "type": "string" + } +] - removed
Input schema / properties / vocal_mode / enumRemoved value: -[ - "auto_lyrics", - "exact_lyrics", - "instrumental" -] - removed
Input schema / properties / vocal_mode / typeRemoved value: -"string"
- Changed
create_mashup12 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / persona_type / anyOfAdded value: +[ + { + "const": "style", + "type": "string" + }, + { + "const": "voice", + "type": "string" + } +] - removed
Input schema / properties / persona_type / enumRemoved value: -[ - "style", - "voice" -] - removed
Input schema / properties / persona_type / typeRemoved value: -"string" - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / vocal_gender / anyOfAdded value: +[ + { + "const": "male", + "type": "string" + }, + { + "const": "female", + "type": "string" + } +] - removed
Input schema / properties / vocal_gender / enumRemoved value: -[ - "male", - "female" -] - removed
Input schema / properties / vocal_gender / typeRemoved value: -"string" - added
Input schema / properties / vocal_mode / anyOfAdded value: +[ + { + "const": "auto_lyrics", + "type": "string" + }, + { + "const": "exact_lyrics", + "type": "string" + }, + { + "const": "instrumental", + "type": "string" + } +] - removed
Input schema / properties / vocal_mode / enumRemoved value: -[ - "auto_lyrics", - "exact_lyrics", - "instrumental" -] - removed
Input schema / properties / vocal_mode / typeRemoved value: -"string"
- Changed
extend_music12 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / parameter_mode / anyOfAdded value: +[ + { + "const": "source", + "type": "string" + }, + { + "const": "custom", + "type": "string" + } +] - removed
Input schema / properties / parameter_mode / enumRemoved value: -[ - "source", - "custom" -] - removed
Input schema / properties / parameter_mode / typeRemoved value: -"string" - added
Input schema / properties / persona_type / anyOfAdded value: +[ + { + "const": "style", + "type": "string" + }, + { + "const": "voice", + "type": "string" + } +] - removed
Input schema / properties / persona_type / enumRemoved value: -[ - "style", - "voice" -] - removed
Input schema / properties / persona_type / typeRemoved value: -"string" - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / vocal_gender / anyOfAdded value: +[ + { + "const": "male", + "type": "string" + }, + { + "const": "female", + "type": "string" + } +] - removed
Input schema / properties / vocal_gender / enumRemoved value: -[ - "male", - "female" -] - removed
Input schema / properties / vocal_gender / typeRemoved value: -"string"
- Changed
generate_lyrics3 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991
- Changed
get_task1 field changed- changed
Input schema / properties / action / enumPrevious value: -[ - "blend_lyrics", - "cover_audio", - "create_mashup", - "extend_music", - "generate_lyrics", - "separate_audio_stems", - "text_to_music", - "text_to_sound" -]New value: +[ + "add_samples", + "blend_lyrics", + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "inspire_music", + "remaster_audio", + "separate_audio_stems", + "stitch_audio", + "text_to_music", + "text_to_sound" +]
- Added
inspire_music - Added
remaster_audio - Changed
separate_audio_stems9 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / stem_name / anyOfAdded value: +[ + { + "const": "Lead Vocal", + "type": "string" + }, + { + "const": "Drum Kit", + "type": "string" + }, + { + "const": "Kick", + "type": "string" + }, + { + "const": "Snare", + "type": "string" + }, + { + "const": "Risers", + "type": "string" + }, + { + "const": "Bass", + "type": "string" + }, + { + "const": "Backing Vocals", + "type": "string" + }, + { + "const": "Piano", + "type": "string" + }, + { + "const": "Electric Guitar", + "type": "string" + }, + { + "const": "Percussion", + "type": "string" + }, + { + "const": "String Section", + "type": "string" + }, + { + "const": "Synth", + "type": "string" + }, + { + "const": "Acoustic Guitar", + "type": "string" + }, + { + "const": "Sound Effects", + "type": "string" + }, + { + "const": "Synth Pad", + "type": "string" + }, + { + "const": "Synth Bass", + "type": "string" + }, + { + "const": "Guitar", + "type": "string" + }, + { + "const": "Brass Section", + "type": "string" + }, + { + "const": "Organ", + "type": "string" + }, + { + "const": "Electronic Drum Kit", + "type": "string" + }, + { + "const": "Lead Electric Guitar", + "type": "string" + }, + { + "const": "Synth Keys", + "type": "string" + }, + { + "const": "Rhythm Electric Guitar", + "type": "string" + }, + { + "const": "Electric Piano", + "type": "string" + }, + { + "const": "Upright Bass", + "type": "string" + }, + { + "const": "Keyboards", + "type": "string" + }, + { + "const": "Distorted Electric Guitar", + "type": "string" + }, + { + "const": "Synth Strings", + "type": "string" + }, + { + "const": "Synth Lead", + "type": "string" + }, + { + "const": "Woodwinds", + "type": "string" + }, + { + "const": "Rhythm Acoustic Guitar", + "type": "string" + }, + { + "const": "Flute", + "type": "string" + }, + { + "const": "Harp", + "type": "string" + }, + { + "const": "Tambourine", + "type": "string" + }, + { + "const": "Trumpet", + "type": "string" + }, + { + "const": "Arpeggiator", + "type": "string" + }, + { + "const": "Accordion", + "type": "string" + }, + { + "const": "Fiddle", + "type": "string" + }, + { + "const": "Pedal Steel Guitar", + "type": "string" + }, + { + "const": "Synth Voice", + "type": "string" + }, + { + "const": "Violin", + "type": "string" + }, + { + "const": "Digital Piano", + "type": "string" + }, + { + "const": "Synth Brass", + "type": "string" + }, + { + "const": "Mandolin", + "type": "string" + }, + { + "const": "Choir", + "type": "string" + }, + { + "const": "Banjo", + "type": "string" + }, + { + "const": "Bells", + "type": "string" + }, + { + "const": "Clarinet", + "type": "string" + }, + { + "const": "Tenor Saxophone", + "type": "string" + }, + { + "const": "Trombone", + "type": "string" + }, + { + "const": "Shaker", + "type": "string" + }, + { + "const": "French Horn", + "type": "string" + }, + { + "const": "Glockenspiel", + "type": "string" + }, + { + "const": "Electric Bass", + "type": "string" + }, + { + "const": "Cello", + "type": "string" + }, + { + "const": "Timpani", + "type": "string" + }, + { + "const": "Harmonica", + "type": "string" + }, + { + "const": "Marimba", + "type": "string" + }, + { + "const": "Vibraphone", + "type": "string" + }, + { + "const": "Lap Steel Guitar", + "type": "string" + }, + { + "const": "Saxophone", + "type": "string" + }, + { + "const": "Orchestra", + "type": "string" + }, + { + "const": "Horns", + "type": "string" + }, + { + "const": "Cymbals", + "type": "string" + }, + { + "const": "Hand Clap", + "type": "string" + }, + { + "const": "Oboe", + "type": "string" + }, + { + "const": "Celesta", + "type": "string" + }, + { + "const": "Congas", + "type": "string" + }, + { + "const": "Drone", + "type": "string" + }, + { + "const": "Alto Saxophone", + "type": "string" + }, + { + "const": "Double Bass", + "type": "string" + }, + { + "const": "Ukulele", + "type": "string" + }, + { + "const": "Harpsichord", + "type": "string" + }, + { + "const": "Baritone Saxophone", + "type": "string" + }, + { + "const": "Xylophone", + "type": "string" + }, + { + "const": "Tuba", + "type": "string" + }, + { + "const": "Bass Guitar", + "type": "string" + }, + { + "const": "Whistle", + "type": "string" + }, + { + "const": "Lead Guitar", + "type": "string" + }, + { + "const": "Rhodes", + "type": "string" + }, + { + "const": "808", + "type": "string" + }, + { + "const": "Bongos", + "type": "string" + }, + { + "const": "Bassoon", + "type": "string" + }, + { + "const": "Cowbell", + "type": "string" + }, + { + "const": "Viola", + "type": "string" + }, + { + "const": "Sitar", + "type": "string" + }, + { + "const": "Steel Drums", + "type": "string" + }, + { + "const": "Piccolo", + "type": "string" + }, + { + "const": "Theremin", + "type": "string" + }, + { + "const": "Bagpipes", + "type": "string" + }, + { + "const": "Hi-Hat", + "type": "string" + }, + { + "const": "Music Box", + "type": "string" + }, + { + "const": "Melodica", + "type": "string" + }, + { + "const": "Tabla", + "type": "string" + }, + { + "const": "Koto", + "type": "string" + }, + { + "const": "Djembe", + "type": "string" + }, + { + "const": "Taiko", + "type": "string" + }, + { + "const": "Didgeridoo", + "type": "string" + } +] - removed
Input schema / properties / stem_name / enumRemoved value: -[ - "Lead Vocal", - "Drum Kit", - "Kick", - "Snare", - "Risers", - "Bass", - "Backing Vocals", - "Piano", - "Electric Guitar", - "Percussion", - "String Section", - "Synth", - "Acoustic Guitar", - "Sound Effects", - "Synth Pad", - "Synth Bass", - "Guitar", - "Brass Section", - "Organ", - "Electronic Drum Kit", - "Lead Electric Guitar", - "Synth Keys", - "Rhythm Electric Guitar", - "Electric Piano", - "Upright Bass", - "Keyboards", - "Distorted Electric Guitar", - "Synth Strings", - "Synth Lead", - "Woodwinds", - "Rhythm Acoustic Guitar", - "Flute", - "Harp", - "Tambourine", - "Trumpet", - "Arpeggiator", - "Accordion", - "Fiddle", - "Pedal Steel Guitar", - "Synth Voice", - "Violin", - "Digital Piano", - "Synth Brass", - "Mandolin", - "Choir", - "Banjo", - "Bells", - "Clarinet", - "Tenor Saxophone", - "Trombone", - "Shaker", - "French Horn", - "Glockenspiel", - "Electric Bass", - "Cello", - "Timpani", - "Harmonica", - "Marimba", - "Vibraphone", - "Lap Steel Guitar", - "Saxophone", - "Orchestra", - "Horns", - "Cymbals", - "Hand Clap", - "Oboe", - "Celesta", - "Congas", - "Drone", - "Alto Saxophone", - "Double Bass", - "Ukulele", - "Harpsichord", - "Baritone Saxophone", - "Xylophone", - "Tuba", - "Bass Guitar", - "Whistle", - "Lead Guitar", - "Rhodes", - "808", - "Bongos", - "Bassoon", - "Cowbell", - "Viola", - "Sitar", - "Steel Drums", - "Piccolo", - "Theremin", - "Bagpipes", - "Hi-Hat", - "Music Box", - "Melodica", - "Tabla", - "Koto", - "Djembe", - "Taiko", - "Didgeridoo" -] - removed
Input schema / properties / stem_name / typeRemoved value: -"string" - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / type / anyOfAdded value: +[ + { + "const": "separate_vocal", + "type": "string" + }, + { + "const": "split_stem", + "type": "string" + }, + { + "const": "split_stem_advanced", + "type": "string" + } +] - removed
Input schema / properties / type / enumRemoved value: -[ - "separate_vocal", - "split_stem", - "split_stem_advanced" -] - removed
Input schema / properties / type / typeRemoved value: -"string"
- Added
stitch_audio - Changed
text_to_music16 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - changed
Input schema / properties / duration_seconds / descriptionPrevious value: -"Duration in seconds."New value: +"Preferred duration in seconds; only available for Suno V5.5 custom requests." - added
Input schema / properties / duration_seconds / maximumAdded value: +360 - added
Input schema / properties / duration_seconds / minimumAdded value: +10 - added
Input schema / properties / persona_type / anyOfAdded value: +[ + { + "const": "style", + "type": "string" + }, + { + "const": "voice", + "type": "string" + } +] - removed
Input schema / properties / persona_type / enumRemoved value: -[ - "style", - "voice" -] - removed
Input schema / properties / persona_type / typeRemoved value: -"string" - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / prompt / maxLengthAdded value: +3000 - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / vocal_gender / anyOfAdded value: +[ + { + "const": "male", + "type": "string" + }, + { + "const": "female", + "type": "string" + } +] - removed
Input schema / properties / vocal_gender / enumRemoved value: -[ - "male", - "female" -] - removed
Input schema / properties / vocal_gender / typeRemoved value: -"string" - added
Input schema / properties / vocal_mode / anyOfAdded value: +[ + { + "const": "auto_lyrics", + "type": "string" + }, + { + "const": "exact_lyrics", + "type": "string" + }, + { + "const": "instrumental", + "type": "string" + } +] - removed
Input schema / properties / vocal_mode / enumRemoved value: -[ - "auto_lyrics", - "exact_lyrics", - "instrumental" -] - removed
Input schema / properties / vocal_mode / typeRemoved value: -"string"
- Changed
text_to_sound6 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - added
Input schema / properties / poll_interval_ms / maximumAdded value: +9007199254740991 - added
Input schema / properties / sound_key / anyOfAdded value: +[ + { + "const": "Cm", + "type": "string" + }, + { + "const": "C#m", + "type": "string" + }, + { + "const": "Dm", + "type": "string" + }, + { + "const": "D#m", + "type": "string" + }, + { + "const": "Em", + "type": "string" + }, + { + "const": "Fm", + "type": "string" + }, + { + "const": "F#m", + "type": "string" + }, + { + "const": "Gm", + "type": "string" + }, + { + "const": "G#m", + "type": "string" + }, + { + "const": "Am", + "type": "string" + }, + { + "const": "A#m", + "type": "string" + }, + { + "const": "Bm", + "type": "string" + }, + { + "const": "C", + "type": "string" + }, + { + "const": "C#", + "type": "string" + }, + { + "const": "D", + "type": "string" + }, + { + "const": "D#", + "type": "string" + }, + { + "const": "E", + "type": "string" + }, + { + "const": "F", + "type": "string" + }, + { + "const": "F#", + "type": "string" + }, + { + "const": "G", + "type": "string" + }, + { + "const": "G#", + "type": "string" + }, + { + "const": "A", + "type": "string" + }, + { + "const": "A#", + "type": "string" + }, + { + "const": "B", + "type": "string" + } +] - removed
Input schema / properties / sound_key / enumRemoved value: -[ - "Cm", - "C#m", - "Dm", - "D#m", - "Em", - "Fm", - "F#m", - "Gm", - "G#m", - "Am", - "A#m", - "Bm", - "C", - "C#", - "D", - "D#", - "E", - "F", - "F#", - "G", - "G#", - "A", - "A#", - "B" -] - removed
Input schema / properties / sound_key / typeRemoved value: -"string" - added
Input schema / properties / timeout_ms / maximumAdded value: +9007199254740991
10 tool updates
v0.2.4- Added
blend_lyrics - Changed
check_pricing1 field changed- changed
Input schema / properties / action / enumPrevious value: -[ - "cover_audio", - "create_mashup", - "extend_music", - "generate_lyrics", - "text_to_music", - "text_to_sound" -]New value: +[ + "blend_lyrics", + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "separate_audio_stems", + "text_to_music", + "text_to_sound" +]
- Changed
cover_audio14 fields changed- added
Input schema / properties / audio_weight / descriptionAdded value: +"Audio weight (0-1)." - added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / lyrics / descriptionAdded value: +"Exact cover lyrics to sing." - added
Input schema / properties / negative_tags / descriptionAdded value: +"Styles to avoid." - added
Input schema / properties / persona_id / descriptionAdded value: +"Persona ID." - added
Input schema / properties / persona_type / descriptionAdded value: +"Persona type." - added
Input schema / properties / prompt / descriptionAdded value: +"Cover brief for automatic lyrics." - added
Input schema / properties / style / descriptionAdded value: +"Music style." - added
Input schema / properties / style_weight / descriptionAdded value: +"Style adherence weight (0-1)." - added
Input schema / properties / title / descriptionAdded value: +"Music title." - added
Input schema / properties / upload_url / descriptionAdded value: +"URL of the audio file to cover." - added
Input schema / properties / vocal_gender / descriptionAdded value: +"Vocal gender." - added
Input schema / properties / vocal_mode / descriptionAdded value: +"Vocal generation mode." - added
Input schema / properties / weirdness_constraint / descriptionAdded value: +"Weirdness constraint (0-1)."
- Changed
create_mashup15 fields changed- added
Input schema / properties / audio_weight / descriptionAdded value: +"Audio weight (0-1)." - added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / lyrics / descriptionAdded value: +"Exact mashup lyrics to sing." - added
Input schema / properties / persona_id / descriptionAdded value: +"Persona ID." - added
Input schema / properties / persona_type / descriptionAdded value: +"Persona type." - added
Input schema / properties / prompt / descriptionAdded value: +"Mashup brief for automatic lyrics." - added
Input schema / properties / style / descriptionAdded value: +"Music style." - added
Input schema / properties / style_weight / descriptionAdded value: +"Style adherence weight (0-1)." - added
Input schema / properties / title / descriptionAdded value: +"Music title." - added
Input schema / properties / upload_url_list / descriptionAdded value: +"Two audio URLs to mashup." - added
Input schema / properties / upload_url_list / maxItemsAdded value: +2 - added
Input schema / properties / upload_url_list / minItemsAdded value: +2 - added
Input schema / properties / vocal_gender / descriptionAdded value: +"Vocal gender." - added
Input schema / properties / vocal_mode / descriptionAdded value: +"Vocal generation mode." - added
Input schema / properties / weirdness_constraint / descriptionAdded value: +"Weirdness constraint (0-1)."
- Changed
extend_music20 fields changed- added
Input schema / properties / audio_id / descriptionAdded value: +"Source audio ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url." - added
Input schema / properties / audio_url / descriptionAdded value: +"Source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url." - added
Input schema / properties / audio_weight / descriptionAdded value: +"Audio weight (0-1)." - added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / continue_at / descriptionAdded value: +"Seconds into the source to continue from. Required in custom parameter mode." - added
Input schema / properties / instrumental / descriptionAdded value: +"When true, generate without vocals." - added
Input schema / properties / lyrics / descriptionAdded value: +"Exact lyrics. Only allowed when extending uploaded audio in custom parameter mode." - added
Input schema / properties / negative_tags / descriptionAdded value: +"Styles to avoid." - added
Input schema / properties / parameter_mode / descriptionAdded value: +"Inherit the source track's parameters (source) or supply custom ones (custom)." - added
Input schema / properties / persona_id / descriptionAdded value: +"Persona ID." - added
Input schema / properties / persona_type / descriptionAdded value: +"Persona type." - added
Input schema / properties / prompt / descriptionAdded value: +"Extension brief. Cannot be combined with lyrics." - added
Input schema / properties / style / descriptionAdded value: +"Style preset. Required in custom parameter mode." - added
Input schema / properties / style_weight / descriptionAdded value: +"Style adherence weight (0-1)." - added
Input schema / properties / task_id / descriptionAdded value: +"Source task ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url." - added
Input schema / properties / title / descriptionAdded value: +"Song title. Required in custom parameter mode." - added
Input schema / properties / upload_url / descriptionAdded value: +"Uploaded source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url." - added
Input schema / properties / vocal_gender / descriptionAdded value: +"Vocal gender." - added
Input schema / properties / weirdness_constraint / descriptionAdded value: +"Weirdness constraint (0-1)." - added
Input schema / requiredAdded value: +[ + "parameter_mode" +]
- Changed
generate_lyrics3 fields changed- added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / prompt / descriptionAdded value: +"Lyrics generation prompt." - added
Input schema / requiredAdded value: +[ + "prompt" +]
- Changed
get_task2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Endpoint the task was created on."New value: +"Asynchronous endpoint the task was created on." - changed
Input schema / properties / action / enumPrevious value: -[ - "cover_audio", - "create_mashup", - "extend_music", - "generate_lyrics", - "text_to_music", - "text_to_sound" -]New value: +[ + "blend_lyrics", + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "separate_audio_stems", + "text_to_music", + "text_to_sound" +]
- Added
separate_audio_stems - Changed
text_to_music16 fields changed- added
Input schema / properties / audio_weight / descriptionAdded value: +"Audio weight (0-1)." - added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / continue_at / descriptionAdded value: +"Timestamp in seconds to continue from." - added
Input schema / properties / duration_seconds / descriptionAdded value: +"Duration in seconds." - removed
Input schema / properties / endpointRemoved value: -{ - "type": "string" -} - added
Input schema / properties / lyrics / descriptionAdded value: +"Exact lyrics to sing." - added
Input schema / properties / negative_tags / descriptionAdded value: +"Styles to avoid." - added
Input schema / properties / persona_id / descriptionAdded value: +"Persona ID." - added
Input schema / properties / persona_type / descriptionAdded value: +"Persona type." - added
Input schema / properties / prompt / descriptionAdded value: +"Song brief for automatic lyrics." - added
Input schema / properties / style / descriptionAdded value: +"Music style." - added
Input schema / properties / style_weight / descriptionAdded value: +"Style adherence weight (0-1)." - added
Input schema / properties / title / descriptionAdded value: +"Music title." - added
Input schema / properties / vocal_gender / descriptionAdded value: +"Vocal gender." - added
Input schema / properties / vocal_mode / descriptionAdded value: +"Vocal generation mode." - added
Input schema / properties / weirdness_constraint / descriptionAdded value: +"Weirdness constraint (0-1)."
- Changed
text_to_sound6 fields changed- added
Input schema / properties / callback_url / descriptionAdded value: +"Webhook URL for async notifications." - added
Input schema / properties / grab_lyrics / descriptionAdded value: +"Capture lyric subtitles. Default false." - added
Input schema / properties / prompt / descriptionAdded value: +"Sound description (max 500 characters)." - added
Input schema / properties / sound_key / descriptionAdded value: +"Musical key." - added
Input schema / properties / sound_loop / descriptionAdded value: +"When true, produce loopable audio. Default false." - added
Input schema / properties / sound_tempo / descriptionAdded value: +"Tempo in BPM (1-300)."
3 tool updates
v0.1.9- Changed
create_mashup1 field changed- changed
Input schema / requiredPrevious value: -[ - "vocal_mode", - "upload_url_list" -]New value: +[ + "upload_url_list", + "vocal_mode" +]
- Added
login - Changed
text_to_music1 field changed- added
Input schema / properties / endpointAdded value: +{ + "type": "string" +}
8 tool updates
v0.1.2- Changed
check_pricing1 field changed- changed
Input schema / properties / action / enumPrevious value: -[ - "cover_audio", - "create_mashup", - "extend_music", - "text_to_music", - "text_to_sound" -]New value: +[ + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "text_to_music", + "text_to_sound" +]
- Changed
cover_audio9 fields changed- added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / lyrics / typeAdded value: +"string" - added
Input schema / properties / negative_tags / typeAdded value: +"string" - added
Input schema / properties / persona_id / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string" - added
Input schema / properties / style / typeAdded value: +"string" - added
Input schema / properties / title / typeAdded value: +"string" - added
Input schema / properties / upload_url / typeAdded value: +"string" - changed
Input schema / requiredPrevious value: -[ - "vocal_mode" -]New value: +[ + "upload_url", + "vocal_mode" +]
- Changed
create_mashup6 fields changed- added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / lyrics / typeAdded value: +"string" - added
Input schema / properties / persona_id / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string" - added
Input schema / properties / style / typeAdded value: +"string" - added
Input schema / properties / title / typeAdded value: +"string"
- Changed
extend_music11 fields changed- added
Input schema / properties / audio_id / typeAdded value: +"string" - added
Input schema / properties / audio_url / typeAdded value: +"string" - added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / lyrics / typeAdded value: +"string" - added
Input schema / properties / negative_tags / typeAdded value: +"string" - added
Input schema / properties / persona_id / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string" - added
Input schema / properties / style / typeAdded value: +"string" - added
Input schema / properties / task_id / typeAdded value: +"string" - added
Input schema / properties / title / typeAdded value: +"string" - added
Input schema / properties / upload_url / typeAdded value: +"string"
- Added
generate_lyrics - Changed
get_task1 field changed- changed
Input schema / properties / action / enumPrevious value: -[ - "cover_audio", - "create_mashup", - "extend_music", - "text_to_music", - "text_to_sound" -]New value: +[ + "cover_audio", + "create_mashup", + "extend_music", + "generate_lyrics", + "text_to_music", + "text_to_sound" +]
- Changed
text_to_music7 fields changed- added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / lyrics / typeAdded value: +"string" - added
Input schema / properties / negative_tags / typeAdded value: +"string" - added
Input schema / properties / persona_id / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string" - added
Input schema / properties / style / typeAdded value: +"string" - added
Input schema / properties / title / typeAdded value: +"string"
- Changed
text_to_sound3 fields changed- added
Input schema / properties / callback_url / typeAdded value: +"string" - added
Input schema / properties / prompt / typeAdded value: +"string" - added
Input schema / requiredAdded value: +[ + "prompt" +]
7 tool updates
v0.1.0- First observed
check_pricing - First observed
cover_audio - First observed
create_mashup - First observed
extend_music - First observed
get_task - First observed
text_to_music - First observed
text_to_sound
TDQS
Scored across 21 tools
Each tool targets a distinct Suno operation (e.g., text_to_music vs convert_audio vs cover_audio), but the extremely terse descriptions provide little context to differentiate similar-sounding actions like generate_lyrics vs blend_lyrics or text_to_music vs inspire_music. The names themselves are mostly clear, but an agent may still need to infer nuances.
Nearly all tools follow a snake_case verb_noun pattern (convert_audio, generate_lyrics, get_task). Exceptions like login and text_to_music/text_to_sound introduce minor deviations, but overall the naming is predictable and readable.
21 tools is on the higher side, but each corresponds to a distinct Suno API operation, so the count is justified for comprehensive coverage. The set includes auxiliary tools (login, get_task, check_pricing) that round out the workflow without excessive bloat.
The surface covers a wide range of music generation and manipulation tasks, plus task status retrieval and pricing lookup. Minor gaps exist (e.g., no cancel_task or list_tasks), but core create-and-check workflows are fully supported.
Maintenance
Related MCP Connectors
MCP server for Suno AI music generation, lyrics, and covers
Generate Suno AI music (v5.5) from any MCP client. Async; billed only on success.
Generate full songs with vocals, instrumentals and sound effects from text. One server for Suno, Google Lyria, Mureka, MiniMax, ACE-Step, YuE and ElevenLabs. Your agent can quote the credit cost before generating, start a song, wait for it to finish and return download links. Sign in with OAuth; optional daily credit caps; retries never charge twice.
MCP server for Producer/Riffusion AI music generation
Related MCP Servers
- AlicenseAqualityBmaintenanceAn MCP server that generates music using your Suno account, enabling credit checking, song generation, and MP3 downloads without third-party APIs.731 PyPIMIT
- FlicenseAqualityDmaintenanceMCP server for Suno music generation API that enables generating lyrics and custom songs with style tags, model selection, and automatic polling for task completion.2-
- AlicenseAqualityAmaintenanceMCP server for the Gemini Omni model line, enabling task creation (audio, character, text-to-video) and pricing checks through RunAPI.6289 npmApache 2.0
- AlicenseAqualityDmaintenanceGenerate music with Suno (v5.5) from any MCP client — async, and billed only on successful renders (a failed render auto-refunds). Hosted Streamable-HTTP server; tools generate_song / wait_for_song / check_song.39 npmMIT