Skip to main content
Glama

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-mcp

Use project scope when the server should be shared with a repository:

claude mcp add suno -s project -- npx -y @runapi.ai/suno-mcp

Codex, 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

convert_audio

Yes

Create a Suno convert audio task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

blend_lyrics

Yes

Create a Suno blend lyrics task and optionally wait for a terminal status. Returns the task id, status, and result payload.

cover_audio

Yes

Create a Suno cover audio task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

create_mashup

Yes

Create a Suno create mashup task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

extend_music

Yes

Create a Suno extend music task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

generate_lyrics

Yes

Create a Suno generate lyrics task and optionally wait for a terminal status. Returns the task id, status, and result payload.

inspire_music

Yes

Create a Suno inspire music task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

add_samples

Yes

Create a Suno add samples task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

visualize_music

Yes

Create a Suno visualize music task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

generate_persona

Yes

Run a Suno generate persona operation synchronously. Returns the operation result.

remaster_audio

Yes

Create a Suno remaster audio task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

separate_audio_stems

Yes

Create a Suno separate audio stems task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

stitch_audio

Yes

Create a Suno stitch audio task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

boost_style

Yes

Run a Suno boost style operation synchronously. Returns the operation result.

text_to_music

Yes

Create a Suno text to music task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

text_to_sound

Yes

Create a Suno text to sound task and optionally wait for a terminal status. Returns the task id, status, and output URLs.

get_timestamped_lyrics

Yes

Run a Suno get timestamped lyrics operation synchronously. Returns the operation result.

generate_voice

Yes

Run a Suno generate voice operation synchronously. Returns the operation result.

get_task

Yes

Fetch the current status and latest payload for an existing task.

check_pricing

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

convert_audio

no model parameter

blend_lyrics

no model parameter

cover_audio

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

create_mashup

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

extend_music

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

generate_lyrics

no model parameter

inspire_music

suno-v4, suno-v4.5, suno-v4.5-plus, suno-v5, suno-v5.5

add_samples

suno-v4, suno-v4.5, suno-v4.5-plus, suno-v5, suno-v5.5

visualize_music

no model parameter

generate_persona

no model parameter

remaster_audio

suno-v4, suno-v4.5, suno-v4.5-plus, suno-v5, suno-v5.5

separate_audio_stems

no model parameter

stitch_audio

suno-v4, suno-v4.5, suno-v4.5-plus, suno-v5, suno-v5.5

boost_style

no model parameter

text_to_music

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

text_to_sound

suno-v5, suno-v5.5

get_timestamped_lyrics

no model parameter

generate_voice

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:

  1. RUNAPI_API_KEY environment variable, useful for headless and CI hosts

  2. ~/.config/runapi/config.json, created by the MCP login tool or runapi login

  3. No 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.


Resource

URL

Suno model page

https://runapi.ai/models/suno

npm package

@runapi.ai/suno-mcp

GitHub repository

runapi-ai/suno-mcp

RunAPI MCP overview

runapi.ai/mcp

RunAPI docs

runapi.ai/docs


License

Licensed under the Apache License, Version 2.0.

Available Tools

21 tools
add_samplesC

Create a Suno task on RunAPI (add samples). Returns a task id, status, and output URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
promptNoOptional description of the sample to add. Declared type: string.
audio_urlYesURL of the audio file to sample. Declared type: string.
timeout_msNo
end_secondsYesEnd of the sample range in seconds; must exceed start_seconds. Declared type: number.
callback_urlNoWebhook URL for async notifications. Declared type: string.
start_secondsYesStart of the sample range in seconds. Declared type: number.
poll_interval_msNo

TDQS

C2.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
lyrics_aYesFirst lyrics text to blend. Declared type: string.
lyrics_bYesSecond lyrics text to blend. Declared type: string.
timeout_msNo
callback_urlNoWebhook URL for async notifications. Declared type: string.
poll_interval_msNo

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionYesStyle description to expand into genre tags. Declared type: string.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
modelNoModel slug. Defaults to the line's primary model.
actionNoEndpoint name. Defaults to the endpoint that offers the model.

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
timeout_msNo
callback_urlNoWebhook URL for async notifications. Declared type: string.
source_task_idNoRunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string.
source_audio_idYesAudio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string.
poll_interval_msNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
styleNoMusic style. Declared type: string.
titleNoMusic title. Declared type: string.
lyricsNoExact cover lyrics to sing. Declared type: string.
promptNoCover brief for automatic lyrics. Declared type: string.
persona_idNoPersona ID. Declared type: string.
timeout_msNo
upload_urlYesURL of the audio file to cover. Declared type: string.
vocal_modeYesVocal generation mode. Declared type: string. Known values: "auto_lyrics", "exact_lyrics", "instrumental".
audio_weightNoAudio weight (0-1). Declared type: number.
callback_urlNoWebhook URL for async notifications. Declared type: string.
persona_typeNoPersona type. Declared type: string. Known values: "style", "voice".
style_weightNoStyle adherence weight (0-1). Declared type: number.
vocal_genderNoVocal gender. Declared type: string. Known values: "male", "female".
negative_tagsNoStyles to avoid. Declared type: string.
poll_interval_msNo
weirdness_constraintNoWeirdness constraint (0-1). Declared type: number.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
styleNoMusic style. Declared type: string.
titleNoMusic title. Declared type: string.
lyricsNoExact mashup lyrics to sing. Declared type: string.
promptNoMashup brief for automatic lyrics. Declared type: string.
persona_idNoPersona ID. Declared type: string.
timeout_msNo
vocal_modeYesVocal generation mode. Declared type: string. Known values: "auto_lyrics", "exact_lyrics", "instrumental".
audio_weightNoAudio weight (0-1). Declared type: number.
callback_urlNoWebhook URL for async notifications. Declared type: string.
persona_typeNoPersona type. Declared type: string. Known values: "style", "voice".
style_weightNoStyle adherence weight (0-1). Declared type: number.
vocal_genderNoVocal gender. Declared type: string. Known values: "male", "female".
upload_url_listYesTwo audio URLs to mashup. Declared type: array.
poll_interval_msNo
weirdness_constraintNoWeirdness constraint (0-1). Declared type: number.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
styleNoStyle preset. Required in custom parameter mode. Declared type: string.
titleNoSong title. Required in custom parameter mode. Declared type: string.
lyricsNoExact lyrics. Only allowed when extending uploaded audio in custom parameter mode. Declared type: string.
promptNoExtension brief. Cannot be combined with lyrics. Declared type: string.
task_idNoSource task ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string.
audio_idNoSource audio ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string.
audio_urlNoSource audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string.
persona_idNoPersona ID. Declared type: string.
timeout_msNo
upload_urlNoUploaded source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url. Declared type: string.
continue_atNoSeconds into the source to continue from. Required in custom parameter mode. Declared type: number.
audio_weightNoAudio weight (0-1). Declared type: number.
callback_urlNoWebhook URL for async notifications. Declared type: string.
instrumentalNoWhen true, generate without vocals. Declared type: boolean.
persona_typeNoPersona type. Declared type: string. Known values: "style", "voice".
style_weightNoStyle adherence weight (0-1). Declared type: number.
vocal_genderNoVocal gender. Declared type: string. Known values: "male", "female".
negative_tagsNoStyles to avoid. Declared type: string.
parameter_modeYesInherit the source track's parameters (source) or supply custom ones (custom). Declared type: string. Known values: "source", "custom".
poll_interval_msNo
weirdness_constraintNoWeirdness constraint (0-1). Declared type: number.

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
promptYesLyrics generation prompt. Declared type: string.
timeout_msNo
callback_urlNoWebhook URL for async notifications. Declared type: string.
poll_interval_msNo

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesPersona name. Declared type: string.
descriptionYesPersona description. Declared type: string.
source_task_idYesRunAPI Task id that produced the reference audio. Declared type: string.
source_audio_idYesAudio id within the source Task that carries the reference vocals. Declared type: string.

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoVoice name. Declared type: string.
source_audio_urlYesPublic URL of the voice recording to clone. Declared type: string.

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose2/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesAsynchronous endpoint the task was created on.
task_idYesTask id returned when the task was created.

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_task_idNoRunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string.
source_audio_idYesAudio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
audio_urlsYesOne to four audio URLs that guide the new music. Declared type: array.
timeout_msNo
callback_urlNoWebhook URL for async notifications. Declared type: string.
poll_interval_msNo

TDQS

C2.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoRe-run browser login when the current credential comes from the local config file.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
audio_idYesAudio ID within the source task. Declared type: string.
timeout_msNo
callback_urlNoWebhook URL for async notifications. Declared type: string.
source_task_idYesCompleted Suno music task ID; any model version and any channel is accepted as the source. Declared type: string.
poll_interval_msNo
variation_categoryNoHow 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

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoStem separation mode. Declared type: string. Known values: "separate_vocal", "split_stem", "split_stem_advanced".
waitNoPoll until the task reaches a terminal status.
task_idYesSource task ID. Declared type: string.
audio_idYesAudio ID within the source task. Declared type: string.
stem_nameNoTarget 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_msNo
callback_urlNoWebhook URL for async notifications. Declared type: string.
poll_interval_msNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
audio_idYesAudio ID within the source task. Declared type: string.
timeout_msNo
callback_urlNoWebhook URL for async notifications. Declared type: string.
source_task_idYesCompleted source task ID. Declared type: string.
poll_interval_msNo

TDQS

C2.7/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
styleNoMusic style. Declared type: string.
titleNoMusic title. Declared type: string.
lyricsNoExact lyrics to sing. Declared type: string.
promptNoSong brief for automatic lyrics. Declared type: string.
voice_idNoRunAPI Voice handle. Declared type: string.
persona_idNoPersona ID. Declared type: string.
timeout_msNo
vocal_modeYesVocal generation mode. Declared type: string. Known values: "auto_lyrics", "exact_lyrics", "instrumental".
continue_atNoTimestamp in seconds to continue from. Declared type: number.
audio_weightNoAudio weight (0-1). Declared type: number.
callback_urlNoWebhook URL for async notifications. Declared type: string.
persona_typeNoPersona type. Declared type: string. Known values: "style", "voice".
style_weightNoStyle adherence weight (0-1). Declared type: number.
vocal_genderNoVocal gender. Declared type: string. Known values: "male", "female".
negative_tagsNoStyles to avoid. Declared type: string.
duration_secondsNoPreferred duration in seconds; only available for Suno V5.5 custom requests. Declared type: integer.
poll_interval_msNo
weirdness_constraintNoWeirdness constraint (0-1). Declared type: number.

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
modelNoRunAPI model slug for this model line.
promptYesSound description (max 500 characters). Declared type: string.
sound_keyNoMusical 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_loopNoWhen true, produce loopable audio. Default false. Declared type: boolean.
timeout_msNo
grab_lyricsNoCapture lyric subtitles. Default false. Declared type: boolean.
sound_tempoNoTempo in BPM (1-300). Declared type: integer.
callback_urlNoWebhook URL for async notifications. Declared type: string.
poll_interval_msNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
waitNoPoll until the task reaches a terminal status.
authorNoAuthor name shown in the video. Declared type: string.
timeout_msNo
domain_nameNoDomain name watermark. Declared type: string.
callback_urlNoWebhook URL for async notifications. Declared type: string.
source_task_idNoRunAPI Task id that produced the audio. Required when the audio id alone does not identify the source. Declared type: string.
source_audio_idYesAudio id within the source Task, or a RunAPI audio resource id returned by a previous request. Declared type: string.
poll_interval_msNo

TDQS

C2.6/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

  1. 20 tool updatesv0.4.0
    • Changedadd_samples9 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_url / description
        Previous value: -"URL of the audio file to sample."New value: +"URL of the audio file to sample. Declared type: string."
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / end_seconds / description
        Previous 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."
      • removedInput schema / properties / end_seconds / minimum
        Removed value: -0
      • removedInput schema / properties / model / enum
        Removed value: -[
        -  "suno-v4",
        -  "suno-v4.5",
        -  "suno-v4.5-plus",
        -  "suno-v5",
        -  "suno-v5.5"
        -]
      • changedInput schema / properties / prompt / description
        Previous value: -"Optional description of the sample to add."New value: +"Optional description of the sample to add. Declared type: string."
      • changedInput schema / properties / start_seconds / description
        Previous value: -"Start of the sample range in seconds."New value: +"Start of the sample range in seconds. Declared type: number."
      • removedInput schema / properties / start_seconds / minimum
        Removed value: -0
    • Changedblend_lyrics4 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / lyrics_a / description
        Previous value: -"First lyrics text to blend."New value: +"First lyrics text to blend. Declared type: string."
      • changedInput schema / properties / lyrics_b / description
        Previous value: -"Second lyrics text to blend."New value: +"Second lyrics text to blend. Declared type: string."
    • Changedboost_style2 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +{}
      • changedInput schema / properties / description / description
        Previous value: -"Style description to expand into genre tags."New value: +"Style description to expand into genre tags. Declared type: string."
    • Changedcheck_pricing2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / model / enum
        Removed 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"
        -]
    • Changedconvert_audio4 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / source_audio_id / description
        Previous 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."
      • changedInput schema / properties / source_task_id / description
        Previous 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."
    • Changedcover_audio32 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_weight / description
        Previous value: -"Audio weight (0-1)."New value: +"Audio weight (0-1). Declared type: number."
      • removedInput schema / properties / audio_weight / maximum
        Removed value: -1
      • removedInput schema / properties / audio_weight / minimum
        Removed value: -0
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / lyrics / description
        Previous value: -"Exact cover lyrics to sing."New value: +"Exact cover lyrics to sing. Declared type: string."
      • removedInput schema / properties / lyrics / maxLength
        Removed value: -5000
      • removedInput schema / properties / model / enum
        Removed 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"
        -]
      • changedInput schema / properties / negative_tags / description
        Previous value: -"Styles to avoid."New value: +"Styles to avoid. Declared type: string."
      • changedInput schema / properties / persona_id / description
        Previous value: -"Persona ID."New value: +"Persona ID. Declared type: string."
      • removedInput schema / properties / persona_type / anyOf
        Removed value: -[
        -  {
        -    "const": "style",
        -    "type": "string"
        -  },
        -  {
        -    "const": "voice",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / persona_type / description
        Previous value: -"Persona type."New value: +"Persona type. Declared type: string. Known values: \"style\", \"voice\"."
      • addedInput schema / properties / persona_type / type
        Added value: +"string"
      • changedInput schema / properties / prompt / description
        Previous value: -"Cover brief for automatic lyrics."New value: +"Cover brief for automatic lyrics. Declared type: string."
      • removedInput schema / properties / prompt / maxLength
        Removed value: -5000
      • changedInput schema / properties / style / description
        Previous value: -"Music style."New value: +"Music style. Declared type: string."
      • removedInput schema / properties / style / maxLength
        Removed value: -1000
      • changedInput schema / properties / style_weight / description
        Previous value: -"Style adherence weight (0-1)."New value: +"Style adherence weight (0-1). Declared type: number."
      • removedInput schema / properties / style_weight / maximum
        Removed value: -1
      • removedInput schema / properties / style_weight / minimum
        Removed value: -0
      • changedInput schema / properties / title / description
        Previous value: -"Music title."New value: +"Music title. Declared type: string."
      • removedInput schema / properties / title / maxLength
        Removed value: -80
      • changedInput schema / properties / upload_url / description
        Previous value: -"URL of the audio file to cover."New value: +"URL of the audio file to cover. Declared type: string."
      • removedInput schema / properties / vocal_gender / anyOf
        Removed value: -[
        -  {
        -    "const": "male",
        -    "type": "string"
        -  },
        -  {
        -    "const": "female",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / vocal_gender / description
        Previous value: -"Vocal gender."New value: +"Vocal gender. Declared type: string. Known values: \"male\", \"female\"."
      • addedInput schema / properties / vocal_gender / type
        Added value: +"string"
      • removedInput schema / properties / vocal_mode / anyOf
        Removed value: -[
        -  {
        -    "const": "auto_lyrics",
        -    "type": "string"
        -  },
        -  {
        -    "const": "exact_lyrics",
        -    "type": "string"
        -  },
        -  {
        -    "const": "instrumental",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / vocal_mode / description
        Previous value: -"Vocal generation mode."New value: +"Vocal generation mode. Declared type: string. Known values: \"auto_lyrics\", \"exact_lyrics\", \"instrumental\"."
      • addedInput schema / properties / vocal_mode / type
        Added value: +"string"
      • changedInput schema / properties / weirdness_constraint / description
        Previous value: -"Weirdness constraint (0-1)."New value: +"Weirdness constraint (0-1). Declared type: number."
      • removedInput schema / properties / weirdness_constraint / maximum
        Removed value: -1
      • removedInput schema / properties / weirdness_constraint / minimum
        Removed value: -0
    • Changedcreate_mashup33 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_weight / description
        Previous value: -"Audio weight (0-1)."New value: +"Audio weight (0-1). Declared type: number."
      • removedInput schema / properties / audio_weight / maximum
        Removed value: -1
      • removedInput schema / properties / audio_weight / minimum
        Removed value: -0
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / lyrics / description
        Previous value: -"Exact mashup lyrics to sing."New value: +"Exact mashup lyrics to sing. Declared type: string."
      • removedInput schema / properties / lyrics / maxLength
        Removed value: -5000
      • removedInput schema / properties / model / enum
        Removed 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"
        -]
      • changedInput schema / properties / persona_id / description
        Previous value: -"Persona ID."New value: +"Persona ID. Declared type: string."
      • removedInput schema / properties / persona_type / anyOf
        Removed value: -[
        -  {
        -    "const": "style",
        -    "type": "string"
        -  },
        -  {
        -    "const": "voice",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / persona_type / description
        Previous value: -"Persona type."New value: +"Persona type. Declared type: string. Known values: \"style\", \"voice\"."
      • addedInput schema / properties / persona_type / type
        Added value: +"string"
      • changedInput schema / properties / prompt / description
        Previous value: -"Mashup brief for automatic lyrics."New value: +"Mashup brief for automatic lyrics. Declared type: string."
      • removedInput schema / properties / prompt / maxLength
        Removed value: -5000
      • changedInput schema / properties / style / description
        Previous value: -"Music style."New value: +"Music style. Declared type: string."
      • removedInput schema / properties / style / maxLength
        Removed value: -1000
      • changedInput schema / properties / style_weight / description
        Previous value: -"Style adherence weight (0-1)."New value: +"Style adherence weight (0-1). Declared type: number."
      • removedInput schema / properties / style_weight / maximum
        Removed value: -1
      • removedInput schema / properties / style_weight / minimum
        Removed value: -0
      • changedInput schema / properties / title / description
        Previous value: -"Music title."New value: +"Music title. Declared type: string."
      • removedInput schema / properties / title / maxLength
        Removed value: -80
      • changedInput schema / properties / upload_url_list / description
        Previous value: -"Two audio URLs to mashup."New value: +"Two audio URLs to mashup. Declared type: array."
      • removedInput schema / properties / upload_url_list / maxItems
        Removed value: -2
      • removedInput schema / properties / upload_url_list / minItems
        Removed value: -2
      • removedInput schema / properties / vocal_gender / anyOf
        Removed value: -[
        -  {
        -    "const": "male",
        -    "type": "string"
        -  },
        -  {
        -    "const": "female",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / vocal_gender / description
        Previous value: -"Vocal gender."New value: +"Vocal gender. Declared type: string. Known values: \"male\", \"female\"."
      • addedInput schema / properties / vocal_gender / type
        Added value: +"string"
      • removedInput schema / properties / vocal_mode / anyOf
        Removed value: -[
        -  {
        -    "const": "auto_lyrics",
        -    "type": "string"
        -  },
        -  {
        -    "const": "exact_lyrics",
        -    "type": "string"
        -  },
        -  {
        -    "const": "instrumental",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / vocal_mode / description
        Previous value: -"Vocal generation mode."New value: +"Vocal generation mode. Declared type: string. Known values: \"auto_lyrics\", \"exact_lyrics\", \"instrumental\"."
      • addedInput schema / properties / vocal_mode / type
        Added value: +"string"
      • changedInput schema / properties / weirdness_constraint / description
        Previous value: -"Weirdness constraint (0-1)."New value: +"Weirdness constraint (0-1). Declared type: number."
      • removedInput schema / properties / weirdness_constraint / maximum
        Removed value: -1
      • removedInput schema / properties / weirdness_constraint / minimum
        Removed value: -0
    • Changedextend_music37 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_id / description
        Previous 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."
      • changedInput schema / properties / audio_url / description
        Previous 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."
      • changedInput schema / properties / audio_weight / description
        Previous value: -"Audio weight (0-1)."New value: +"Audio weight (0-1). Declared type: number."
      • removedInput schema / properties / audio_weight / maximum
        Removed value: -1
      • removedInput schema / properties / audio_weight / minimum
        Removed value: -0
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / continue_at / description
        Previous 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."
      • changedInput schema / properties / instrumental / description
        Previous value: -"When true, generate without vocals."New value: +"When true, generate without vocals. Declared type: boolean."
      • changedInput schema / properties / lyrics / description
        Previous 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."
      • removedInput schema / properties / lyrics / maxLength
        Removed value: -5000
      • removedInput schema / properties / model / enum
        Removed 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"
        -]
      • changedInput schema / properties / negative_tags / description
        Previous value: -"Styles to avoid."New value: +"Styles to avoid. Declared type: string."
      • removedInput schema / properties / parameter_mode / anyOf
        Removed value: -[
        -  {
        -    "const": "source",
        -    "type": "string"
        -  },
        -  {
        -    "const": "custom",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / parameter_mode / description
        Previous 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\"."
      • addedInput schema / properties / parameter_mode / type
        Added value: +"string"
      • changedInput schema / properties / persona_id / description
        Previous value: -"Persona ID."New value: +"Persona ID. Declared type: string."
      • removedInput schema / properties / persona_type / anyOf
        Removed value: -[
        -  {
        -    "const": "style",
        -    "type": "string"
        -  },
        -  {
        -    "const": "voice",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / persona_type / description
        Previous value: -"Persona type."New value: +"Persona type. Declared type: string. Known values: \"style\", \"voice\"."
      • addedInput schema / properties / persona_type / type
        Added value: +"string"
      • changedInput schema / properties / prompt / description
        Previous value: -"Extension brief. Cannot be combined with lyrics."New value: +"Extension brief. Cannot be combined with lyrics. Declared type: string."
      • removedInput schema / properties / prompt / maxLength
        Removed value: -5000
      • changedInput schema / properties / style / description
        Previous value: -"Style preset. Required in custom parameter mode."New value: +"Style preset. Required in custom parameter mode. Declared type: string."
      • removedInput schema / properties / style / maxLength
        Removed value: -1000
      • changedInput schema / properties / style_weight / description
        Previous value: -"Style adherence weight (0-1)."New value: +"Style adherence weight (0-1). Declared type: number."
      • removedInput schema / properties / style_weight / maximum
        Removed value: -1
      • removedInput schema / properties / style_weight / minimum
        Removed value: -0
      • changedInput schema / properties / task_id / description
        Previous 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."
      • changedInput schema / properties / title / description
        Previous value: -"Song title. Required in custom parameter mode."New value: +"Song title. Required in custom parameter mode. Declared type: string."
      • removedInput schema / properties / title / maxLength
        Removed value: -80
      • changedInput schema / properties / upload_url / description
        Previous 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."
      • removedInput schema / properties / vocal_gender / anyOf
        Removed value: -[
        -  {
        -    "const": "male",
        -    "type": "string"
        -  },
        -  {
        -    "const": "female",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / vocal_gender / description
        Previous value: -"Vocal gender."New value: +"Vocal gender. Declared type: string. Known values: \"male\", \"female\"."
      • addedInput schema / properties / vocal_gender / type
        Added value: +"string"
      • changedInput schema / properties / weirdness_constraint / description
        Previous value: -"Weirdness constraint (0-1)."New value: +"Weirdness constraint (0-1). Declared type: number."
      • removedInput schema / properties / weirdness_constraint / maximum
        Removed value: -1
      • removedInput schema / properties / weirdness_constraint / minimum
        Removed value: -0
    • Changedgenerate_lyrics3 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / prompt / description
        Previous value: -"Lyrics generation prompt."New value: +"Lyrics generation prompt. Declared type: string."
    • Changedgenerate_persona5 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +{}
      • changedInput schema / properties / description / description
        Previous value: -"Persona description."New value: +"Persona description. Declared type: string."
      • changedInput schema / properties / name / description
        Previous value: -"Persona name."New value: +"Persona name. Declared type: string."
      • changedInput schema / properties / source_audio_id / description
        Previous 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."
      • changedInput schema / properties / source_task_id / description
        Previous value: -"RunAPI Task id that produced the reference audio."New value: +"RunAPI Task id that produced the reference audio. Declared type: string."
    • Changedgenerate_voice3 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +{}
      • changedInput schema / properties / name / description
        Previous value: -"Voice name."New value: +"Voice name. Declared type: string."
      • changedInput schema / properties / source_audio_url / description
        Previous value: -"Public URL of the voice recording to clone."New value: +"Public URL of the voice recording to clone. Declared type: string."
    • Changedget_task1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_timestamped_lyrics3 fields changed
      • changedInput schema / additionalProperties
        Previous value: -falseNew value: +{}
      • changedInput schema / properties / source_audio_id / description
        Previous 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."
      • changedInput schema / properties / source_task_id / description
        Previous 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."
    • Changedinspire_music6 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_urls / description
        Previous 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."
      • removedInput schema / properties / audio_urls / maxItems
        Removed value: -4
      • removedInput schema / properties / audio_urls / minItems
        Removed value: -1
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • removedInput schema / properties / model / enum
        Removed value: -[
        -  "suno-v4",
        -  "suno-v4.5",
        -  "suno-v4.5-plus",
        -  "suno-v5",
        -  "suno-v5.5"
        -]
    • Changedremaster_audio6 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_id / description
        Previous value: -"Audio ID within the source task."New value: +"Audio ID within the source task. Declared type: string."
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • removedInput schema / properties / model / enum
        Removed value: -[
        -  "suno-v4",
        -  "suno-v4.5",
        -  "suno-v4.5-plus",
        -  "suno-v5",
        -  "suno-v5.5"
        -]
      • changedInput schema / properties / source_task_id / description
        Previous 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."
      • addedInput schema / properties / variation_category
        Added 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"
        +}
    • Changedseparate_audio_stems10 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_id / description
        Previous value: -"Audio ID within the source task."New value: +"Audio ID within the source task. Declared type: string."
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • removedInput schema / properties / stem_name / anyOf
        Removed 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"
        -  }
        -]
      • changedInput schema / properties / stem_name / description
        Previous 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\"."
      • addedInput schema / properties / stem_name / type
        Added value: +"string"
      • changedInput schema / properties / task_id / description
        Previous value: -"Source task ID."New value: +"Source task ID. Declared type: string."
      • removedInput schema / properties / type / anyOf
        Removed value: -[
        -  {
        -    "const": "separate_vocal",
        -    "type": "string"
        -  },
        -  {
        -    "const": "split_stem",
        -    "type": "string"
        -  },
        -  {
        -    "const": "split_stem_advanced",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / type / description
        Previous value: -"Stem separation mode."New value: +"Stem separation mode. Declared type: string. Known values: \"separate_vocal\", \"split_stem\", \"split_stem_advanced\"."
      • addedInput schema / properties / type / type
        Added value: +"string"
    • Changedstitch_audio5 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_id / description
        Previous value: -"Audio ID within the source task."New value: +"Audio ID within the source task. Declared type: string."
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • removedInput schema / properties / model / enum
        Removed value: -[
        -  "suno-v4",
        -  "suno-v4.5",
        -  "suno-v4.5-plus",
        -  "suno-v5",
        -  "suno-v5.5"
        -]
      • changedInput schema / properties / source_task_id / description
        Previous value: -"Completed source task ID."New value: +"Completed source task ID. Declared type: string."
    • Changedtext_to_music37 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / audio_weight / description
        Previous value: -"Audio weight (0-1)."New value: +"Audio weight (0-1). Declared type: number."
      • removedInput schema / properties / audio_weight / maximum
        Removed value: -1
      • removedInput schema / properties / audio_weight / minimum
        Removed value: -0
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / continue_at / description
        Previous value: -"Timestamp in seconds to continue from."New value: +"Timestamp in seconds to continue from. Declared type: number."
      • changedInput schema / properties / duration_seconds / description
        Previous 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."
      • removedInput schema / properties / duration_seconds / maximum
        Removed value: -360
      • removedInput schema / properties / duration_seconds / minimum
        Removed value: -10
      • changedInput schema / properties / duration_seconds / type
        Previous value: -"number"New value: +"integer"
      • changedInput schema / properties / lyrics / description
        Previous value: -"Exact lyrics to sing."New value: +"Exact lyrics to sing. Declared type: string."
      • removedInput schema / properties / lyrics / maxLength
        Removed value: -5000
      • removedInput schema / properties / model / enum
        Removed 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"
        -]
      • changedInput schema / properties / negative_tags / description
        Previous value: -"Styles to avoid."New value: +"Styles to avoid. Declared type: string."
      • changedInput schema / properties / persona_id / description
        Previous value: -"Persona ID."New value: +"Persona ID. Declared type: string."
      • removedInput schema / properties / persona_type / anyOf
        Removed value: -[
        -  {
        -    "const": "style",
        -    "type": "string"
        -  },
        -  {
        -    "const": "voice",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / persona_type / description
        Previous value: -"Persona type."New value: +"Persona type. Declared type: string. Known values: \"style\", \"voice\"."
      • addedInput schema / properties / persona_type / type
        Added value: +"string"
      • changedInput schema / properties / prompt / description
        Previous value: -"Song brief for automatic lyrics."New value: +"Song brief for automatic lyrics. Declared type: string."
      • removedInput schema / properties / prompt / maxLength
        Removed value: -5000
      • changedInput schema / properties / style / description
        Previous value: -"Music style."New value: +"Music style. Declared type: string."
      • removedInput schema / properties / style / maxLength
        Removed value: -1000
      • changedInput schema / properties / style_weight / description
        Previous value: -"Style adherence weight (0-1)."New value: +"Style adherence weight (0-1). Declared type: number."
      • removedInput schema / properties / style_weight / maximum
        Removed value: -1
      • removedInput schema / properties / style_weight / minimum
        Removed value: -0
      • changedInput schema / properties / title / description
        Previous value: -"Music title."New value: +"Music title. Declared type: string."
      • removedInput schema / properties / title / maxLength
        Removed value: -80
      • removedInput schema / properties / vocal_gender / anyOf
        Removed value: -[
        -  {
        -    "const": "male",
        -    "type": "string"
        -  },
        -  {
        -    "const": "female",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / vocal_gender / description
        Previous value: -"Vocal gender."New value: +"Vocal gender. Declared type: string. Known values: \"male\", \"female\"."
      • addedInput schema / properties / vocal_gender / type
        Added value: +"string"
      • removedInput schema / properties / vocal_mode / anyOf
        Removed value: -[
        -  {
        -    "const": "auto_lyrics",
        -    "type": "string"
        -  },
        -  {
        -    "const": "exact_lyrics",
        -    "type": "string"
        -  },
        -  {
        -    "const": "instrumental",
        -    "type": "string"
        -  }
        -]
      • changedInput schema / properties / vocal_mode / description
        Previous value: -"Vocal generation mode."New value: +"Vocal generation mode. Declared type: string. Known values: \"auto_lyrics\", \"exact_lyrics\", \"instrumental\"."
      • addedInput schema / properties / vocal_mode / type
        Added value: +"string"
      • changedInput schema / properties / voice_id / description
        Previous value: -"RunAPI Voice handle."New value: +"RunAPI Voice handle. Declared type: string."
      • changedInput schema / properties / weirdness_constraint / description
        Previous value: -"Weirdness constraint (0-1)."New value: +"Weirdness constraint (0-1). Declared type: number."
      • removedInput schema / properties / weirdness_constraint / maximum
        Removed value: -1
      • removedInput schema / properties / weirdness_constraint / minimum
        Removed value: -0
    • Changedtext_to_sound11 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / grab_lyrics / description
        Previous value: -"Capture lyric subtitles. Default false."New value: +"Capture lyric subtitles. Default false. Declared type: boolean."
      • removedInput schema / properties / model / enum
        Removed value: -[
        -  "suno-v5",
        -  "suno-v5.5"
        -]
      • changedInput schema / properties / prompt / description
        Previous value: -"Sound description (max 500 characters)."New value: +"Sound description (max 500 characters). Declared type: string."
      • removedInput schema / properties / sound_key / anyOf
        Removed 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"
        -  }
        -]
      • changedInput schema / properties / sound_key / description
        Previous 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\"."
      • addedInput schema / properties / sound_key / type
        Added value: +"string"
      • changedInput schema / properties / sound_loop / description
        Previous value: -"When true, produce loopable audio. Default false."New value: +"When true, produce loopable audio. Default false. Declared type: boolean."
      • changedInput schema / properties / sound_tempo / description
        Previous value: -"Tempo in BPM (1-300)."New value: +"Tempo in BPM (1-300). Declared type: integer."
      • changedInput schema / properties / sound_tempo / type
        Previous value: -"number"New value: +"integer"
    • Changedvisualize_music6 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • changedInput schema / properties / author / description
        Previous value: -"Author name shown in the video."New value: +"Author name shown in the video. Declared type: string."
      • changedInput schema / properties / callback_url / description
        Previous value: -"Webhook URL for async notifications."New value: +"Webhook URL for async notifications. Declared type: string."
      • changedInput schema / properties / domain_name / description
        Previous value: -"Domain name watermark."New value: +"Domain name watermark. Declared type: string."
      • changedInput schema / properties / source_audio_id / description
        Previous 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."
      • changedInput schema / properties / source_task_id / description
        Previous 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."
  2. 12 tool updatesv0.3.6
    • Addedboost_style
    • Changedcheck_pricing2 fields changed
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
    • Addedconvert_audio
    • Changedcover_audio1 field changed
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
    • Changedcreate_mashup1 field changed
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
    • Changedextend_music1 field changed
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
    • Changedgenerate_persona5 fields changed
      • removedInput schema / properties / audio_id
        Removed value: -{
        -  "description": "Audio ID within the source task.",
        -  "type": "string"
        -}
      • addedInput schema / properties / source_audio_id
        Added value: +{
        +  "description": "Audio id within the source Task that carries the reference vocals.",
        +  "type": "string"
        +}
      • addedInput schema / properties / source_task_id
        Added value: +{
        +  "description": "RunAPI Task id that produced the reference audio.",
        +  "type": "string"
        +}
      • removedInput schema / properties / task_id
        Removed value: -{
        -  "description": "Source task ID with reference vocals.",
        -  "type": "string"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "task_id",
        -  "audio_id",
        -  "name",
        -  "description"
        -]New value: +[
        +  "source_task_id",
        +  "source_audio_id",
        +  "name",
        +  "description"
        +]
    • Addedgenerate_voice
    • Changedget_task1 field changed
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
    • Addedget_timestamped_lyrics
    • Changedtext_to_music2 fields changed
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
      • addedInput schema / properties / voice_id
        Added value: +{
        +  "description": "RunAPI Voice handle.",
        +  "type": "string"
        +}
    • Addedvisualize_music
  3. 7 tool updatesv0.3.5
    • Changedadd_samples1 field changed
      • addedInput schema / properties / prompt
        Added value: +{
        +  "description": "Optional description of the sample to add.",
        +  "type": "string"
        +}
    • Changedcheck_pricing1 field changed
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
    • Changedcover_audio10 fields changed
      • addedInput schema / properties / audio_weight / maximum
        Added value: +1
      • addedInput schema / properties / audio_weight / minimum
        Added value: +0
      • addedInput schema / properties / lyrics / maxLength
        Added value: +5000
      • addedInput schema / properties / prompt / maxLength
        Added value: +5000
      • addedInput schema / properties / style / maxLength
        Added value: +1000
      • addedInput schema / properties / style_weight / maximum
        Added value: +1
      • addedInput schema / properties / style_weight / minimum
        Added value: +0
      • addedInput schema / properties / title / maxLength
        Added value: +80
      • addedInput schema / properties / weirdness_constraint / maximum
        Added value: +1
      • addedInput schema / properties / weirdness_constraint / minimum
        Added value: +0
    • Changedcreate_mashup10 fields changed
      • addedInput schema / properties / audio_weight / maximum
        Added value: +1
      • addedInput schema / properties / audio_weight / minimum
        Added value: +0
      • addedInput schema / properties / lyrics / maxLength
        Added value: +5000
      • addedInput schema / properties / prompt / maxLength
        Added value: +5000
      • addedInput schema / properties / style / maxLength
        Added value: +1000
      • addedInput schema / properties / style_weight / maximum
        Added value: +1
      • addedInput schema / properties / style_weight / minimum
        Added value: +0
      • addedInput schema / properties / title / maxLength
        Added value: +80
      • addedInput schema / properties / weirdness_constraint / maximum
        Added value: +1
      • addedInput schema / properties / weirdness_constraint / minimum
        Added value: +0
    • Changedextend_music10 fields changed
      • addedInput schema / properties / audio_weight / maximum
        Added value: +1
      • addedInput schema / properties / audio_weight / minimum
        Added value: +0
      • addedInput schema / properties / lyrics / maxLength
        Added value: +5000
      • addedInput schema / properties / prompt / maxLength
        Added value: +5000
      • addedInput schema / properties / style / maxLength
        Added value: +1000
      • addedInput schema / properties / style_weight / maximum
        Added value: +1
      • addedInput schema / properties / style_weight / minimum
        Added value: +0
      • addedInput schema / properties / title / maxLength
        Added value: +80
      • addedInput schema / properties / weirdness_constraint / maximum
        Added value: +1
      • addedInput schema / properties / weirdness_constraint / minimum
        Added value: +0
    • Addedgenerate_persona
    • Changedtext_to_music10 fields changed
      • addedInput schema / properties / audio_weight / maximum
        Added value: +1
      • addedInput schema / properties / audio_weight / minimum
        Added value: +0
      • addedInput schema / properties / lyrics / maxLength
        Added value: +5000
      • changedInput schema / properties / prompt / maxLength
        Previous value: -3000New value: +5000
      • addedInput schema / properties / style / maxLength
        Added value: +1000
      • addedInput schema / properties / style_weight / maximum
        Added value: +1
      • addedInput schema / properties / style_weight / minimum
        Added value: +0
      • addedInput schema / properties / title / maxLength
        Added value: +80
      • addedInput schema / properties / weirdness_constraint / maximum
        Added value: +1
      • addedInput schema / properties / weirdness_constraint / minimum
        Added value: +0
  4. 14 tool updatesv0.3.2
    • Addedadd_samples
    • Changedblend_lyrics3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / poll_interval_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +9007199254740991
    • Changedcheck_pricing2 fields changed
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
      • changedInput schema / properties / model / enum
        Previous 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"
        +]
    • Changedcover_audio12 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / persona_type / anyOf
        Added value: +[
        +  {
        +    "const": "style",
        +    "type": "string"
        +  },
        +  {
        +    "const": "voice",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / persona_type / enum
        Removed value: -[
        -  "style",
        -  "voice"
        -]
      • removedInput schema / properties / persona_type / type
        Removed value: -"string"
      • addedInput schema / properties / poll_interval_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / vocal_gender / anyOf
        Added value: +[
        +  {
        +    "const": "male",
        +    "type": "string"
        +  },
        +  {
        +    "const": "female",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / vocal_gender / enum
        Removed value: -[
        -  "male",
        -  "female"
        -]
      • removedInput schema / properties / vocal_gender / type
        Removed value: -"string"
      • addedInput schema / properties / vocal_mode / anyOf
        Added value: +[
        +  {
        +    "const": "auto_lyrics",
        +    "type": "string"
        +  },
        +  {
        +    "const": "exact_lyrics",
        +    "type": "string"
        +  },
        +  {
        +    "const": "instrumental",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / vocal_mode / enum
        Removed value: -[
        -  "auto_lyrics",
        -  "exact_lyrics",
        -  "instrumental"
        -]
      • removedInput schema / properties / vocal_mode / type
        Removed value: -"string"
    • Changedcreate_mashup12 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / persona_type / anyOf
        Added value: +[
        +  {
        +    "const": "style",
        +    "type": "string"
        +  },
        +  {
        +    "const": "voice",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / persona_type / enum
        Removed value: -[
        -  "style",
        -  "voice"
        -]
      • removedInput schema / properties / persona_type / type
        Removed value: -"string"
      • addedInput schema / properties / poll_interval_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / vocal_gender / anyOf
        Added value: +[
        +  {
        +    "const": "male",
        +    "type": "string"
        +  },
        +  {
        +    "const": "female",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / vocal_gender / enum
        Removed value: -[
        -  "male",
        -  "female"
        -]
      • removedInput schema / properties / vocal_gender / type
        Removed value: -"string"
      • addedInput schema / properties / vocal_mode / anyOf
        Added value: +[
        +  {
        +    "const": "auto_lyrics",
        +    "type": "string"
        +  },
        +  {
        +    "const": "exact_lyrics",
        +    "type": "string"
        +  },
        +  {
        +    "const": "instrumental",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / vocal_mode / enum
        Removed value: -[
        -  "auto_lyrics",
        -  "exact_lyrics",
        -  "instrumental"
        -]
      • removedInput schema / properties / vocal_mode / type
        Removed value: -"string"
    • Changedextend_music12 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / parameter_mode / anyOf
        Added value: +[
        +  {
        +    "const": "source",
        +    "type": "string"
        +  },
        +  {
        +    "const": "custom",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / parameter_mode / enum
        Removed value: -[
        -  "source",
        -  "custom"
        -]
      • removedInput schema / properties / parameter_mode / type
        Removed value: -"string"
      • addedInput schema / properties / persona_type / anyOf
        Added value: +[
        +  {
        +    "const": "style",
        +    "type": "string"
        +  },
        +  {
        +    "const": "voice",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / persona_type / enum
        Removed value: -[
        -  "style",
        -  "voice"
        -]
      • removedInput schema / properties / persona_type / type
        Removed value: -"string"
      • addedInput schema / properties / poll_interval_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / vocal_gender / anyOf
        Added value: +[
        +  {
        +    "const": "male",
        +    "type": "string"
        +  },
        +  {
        +    "const": "female",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / vocal_gender / enum
        Removed value: -[
        -  "male",
        -  "female"
        -]
      • removedInput schema / properties / vocal_gender / type
        Removed value: -"string"
    • Changedgenerate_lyrics3 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / poll_interval_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +9007199254740991
    • Changedget_task1 field changed
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
    • Addedinspire_music
    • Addedremaster_audio
    • Changedseparate_audio_stems9 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / poll_interval_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / stem_name / anyOf
        Added 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"
        +  }
        +]
      • removedInput schema / properties / stem_name / enum
        Removed 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"
        -]
      • removedInput schema / properties / stem_name / type
        Removed value: -"string"
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / type / anyOf
        Added value: +[
        +  {
        +    "const": "separate_vocal",
        +    "type": "string"
        +  },
        +  {
        +    "const": "split_stem",
        +    "type": "string"
        +  },
        +  {
        +    "const": "split_stem_advanced",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / type / enum
        Removed value: -[
        -  "separate_vocal",
        -  "split_stem",
        -  "split_stem_advanced"
        -]
      • removedInput schema / properties / type / type
        Removed value: -"string"
    • Addedstitch_audio
    • Changedtext_to_music16 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • changedInput schema / properties / duration_seconds / description
        Previous value: -"Duration in seconds."New value: +"Preferred duration in seconds; only available for Suno V5.5 custom requests."
      • addedInput schema / properties / duration_seconds / maximum
        Added value: +360
      • addedInput schema / properties / duration_seconds / minimum
        Added value: +10
      • addedInput schema / properties / persona_type / anyOf
        Added value: +[
        +  {
        +    "const": "style",
        +    "type": "string"
        +  },
        +  {
        +    "const": "voice",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / persona_type / enum
        Removed value: -[
        -  "style",
        -  "voice"
        -]
      • removedInput schema / properties / persona_type / type
        Removed value: -"string"
      • addedInput schema / properties / poll_interval_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / prompt / maxLength
        Added value: +3000
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / vocal_gender / anyOf
        Added value: +[
        +  {
        +    "const": "male",
        +    "type": "string"
        +  },
        +  {
        +    "const": "female",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / vocal_gender / enum
        Removed value: -[
        -  "male",
        -  "female"
        -]
      • removedInput schema / properties / vocal_gender / type
        Removed value: -"string"
      • addedInput schema / properties / vocal_mode / anyOf
        Added value: +[
        +  {
        +    "const": "auto_lyrics",
        +    "type": "string"
        +  },
        +  {
        +    "const": "exact_lyrics",
        +    "type": "string"
        +  },
        +  {
        +    "const": "instrumental",
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / vocal_mode / enum
        Removed value: -[
        -  "auto_lyrics",
        -  "exact_lyrics",
        -  "instrumental"
        -]
      • removedInput schema / properties / vocal_mode / type
        Removed value: -"string"
    • Changedtext_to_sound6 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • addedInput schema / properties / poll_interval_ms / maximum
        Added value: +9007199254740991
      • addedInput schema / properties / sound_key / anyOf
        Added 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"
        +  }
        +]
      • removedInput schema / properties / sound_key / enum
        Removed 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"
        -]
      • removedInput schema / properties / sound_key / type
        Removed value: -"string"
      • addedInput schema / properties / timeout_ms / maximum
        Added value: +9007199254740991
  5. 10 tool updatesv0.2.4
    • Addedblend_lyrics
    • Changedcheck_pricing1 field changed
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
    • Changedcover_audio14 fields changed
      • addedInput schema / properties / audio_weight / description
        Added value: +"Audio weight (0-1)."
      • addedInput schema / properties / callback_url / description
        Added value: +"Webhook URL for async notifications."
      • addedInput schema / properties / lyrics / description
        Added value: +"Exact cover lyrics to sing."
      • addedInput schema / properties / negative_tags / description
        Added value: +"Styles to avoid."
      • addedInput schema / properties / persona_id / description
        Added value: +"Persona ID."
      • addedInput schema / properties / persona_type / description
        Added value: +"Persona type."
      • addedInput schema / properties / prompt / description
        Added value: +"Cover brief for automatic lyrics."
      • addedInput schema / properties / style / description
        Added value: +"Music style."
      • addedInput schema / properties / style_weight / description
        Added value: +"Style adherence weight (0-1)."
      • addedInput schema / properties / title / description
        Added value: +"Music title."
      • addedInput schema / properties / upload_url / description
        Added value: +"URL of the audio file to cover."
      • addedInput schema / properties / vocal_gender / description
        Added value: +"Vocal gender."
      • addedInput schema / properties / vocal_mode / description
        Added value: +"Vocal generation mode."
      • addedInput schema / properties / weirdness_constraint / description
        Added value: +"Weirdness constraint (0-1)."
    • Changedcreate_mashup15 fields changed
      • addedInput schema / properties / audio_weight / description
        Added value: +"Audio weight (0-1)."
      • addedInput schema / properties / callback_url / description
        Added value: +"Webhook URL for async notifications."
      • addedInput schema / properties / lyrics / description
        Added value: +"Exact mashup lyrics to sing."
      • addedInput schema / properties / persona_id / description
        Added value: +"Persona ID."
      • addedInput schema / properties / persona_type / description
        Added value: +"Persona type."
      • addedInput schema / properties / prompt / description
        Added value: +"Mashup brief for automatic lyrics."
      • addedInput schema / properties / style / description
        Added value: +"Music style."
      • addedInput schema / properties / style_weight / description
        Added value: +"Style adherence weight (0-1)."
      • addedInput schema / properties / title / description
        Added value: +"Music title."
      • addedInput schema / properties / upload_url_list / description
        Added value: +"Two audio URLs to mashup."
      • addedInput schema / properties / upload_url_list / maxItems
        Added value: +2
      • addedInput schema / properties / upload_url_list / minItems
        Added value: +2
      • addedInput schema / properties / vocal_gender / description
        Added value: +"Vocal gender."
      • addedInput schema / properties / vocal_mode / description
        Added value: +"Vocal generation mode."
      • addedInput schema / properties / weirdness_constraint / description
        Added value: +"Weirdness constraint (0-1)."
    • Changedextend_music20 fields changed
      • addedInput schema / properties / audio_id / description
        Added value: +"Source audio ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url."
      • addedInput schema / properties / audio_url / description
        Added value: +"Source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url."
      • addedInput schema / properties / audio_weight / description
        Added value: +"Audio weight (0-1)."
      • addedInput schema / properties / callback_url / description
        Added value: +"Webhook URL for async notifications."
      • addedInput schema / properties / continue_at / description
        Added value: +"Seconds into the source to continue from. Required in custom parameter mode."
      • addedInput schema / properties / instrumental / description
        Added value: +"When true, generate without vocals."
      • addedInput schema / properties / lyrics / description
        Added value: +"Exact lyrics. Only allowed when extending uploaded audio in custom parameter mode."
      • addedInput schema / properties / negative_tags / description
        Added value: +"Styles to avoid."
      • addedInput schema / properties / parameter_mode / description
        Added value: +"Inherit the source track's parameters (source) or supply custom ones (custom)."
      • addedInput schema / properties / persona_id / description
        Added value: +"Persona ID."
      • addedInput schema / properties / persona_type / description
        Added value: +"Persona type."
      • addedInput schema / properties / prompt / description
        Added value: +"Extension brief. Cannot be combined with lyrics."
      • addedInput schema / properties / style / description
        Added value: +"Style preset. Required in custom parameter mode."
      • addedInput schema / properties / style_weight / description
        Added value: +"Style adherence weight (0-1)."
      • addedInput schema / properties / task_id / description
        Added value: +"Source task ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url."
      • addedInput schema / properties / title / description
        Added value: +"Song title. Required in custom parameter mode."
      • addedInput schema / properties / upload_url / description
        Added value: +"Uploaded source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url."
      • addedInput schema / properties / vocal_gender / description
        Added value: +"Vocal gender."
      • addedInput schema / properties / weirdness_constraint / description
        Added value: +"Weirdness constraint (0-1)."
      • addedInput schema / required
        Added value: +[
        +  "parameter_mode"
        +]
    • Changedgenerate_lyrics3 fields changed
      • addedInput schema / properties / callback_url / description
        Added value: +"Webhook URL for async notifications."
      • addedInput schema / properties / prompt / description
        Added value: +"Lyrics generation prompt."
      • addedInput schema / required
        Added value: +[
        +  "prompt"
        +]
    • Changedget_task2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Endpoint the task was created on."New value: +"Asynchronous endpoint the task was created on."
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
    • Addedseparate_audio_stems
    • Changedtext_to_music16 fields changed
      • addedInput schema / properties / audio_weight / description
        Added value: +"Audio weight (0-1)."
      • addedInput schema / properties / callback_url / description
        Added value: +"Webhook URL for async notifications."
      • addedInput schema / properties / continue_at / description
        Added value: +"Timestamp in seconds to continue from."
      • addedInput schema / properties / duration_seconds / description
        Added value: +"Duration in seconds."
      • removedInput schema / properties / endpoint
        Removed value: -{
        -  "type": "string"
        -}
      • addedInput schema / properties / lyrics / description
        Added value: +"Exact lyrics to sing."
      • addedInput schema / properties / negative_tags / description
        Added value: +"Styles to avoid."
      • addedInput schema / properties / persona_id / description
        Added value: +"Persona ID."
      • addedInput schema / properties / persona_type / description
        Added value: +"Persona type."
      • addedInput schema / properties / prompt / description
        Added value: +"Song brief for automatic lyrics."
      • addedInput schema / properties / style / description
        Added value: +"Music style."
      • addedInput schema / properties / style_weight / description
        Added value: +"Style adherence weight (0-1)."
      • addedInput schema / properties / title / description
        Added value: +"Music title."
      • addedInput schema / properties / vocal_gender / description
        Added value: +"Vocal gender."
      • addedInput schema / properties / vocal_mode / description
        Added value: +"Vocal generation mode."
      • addedInput schema / properties / weirdness_constraint / description
        Added value: +"Weirdness constraint (0-1)."
    • Changedtext_to_sound6 fields changed
      • addedInput schema / properties / callback_url / description
        Added value: +"Webhook URL for async notifications."
      • addedInput schema / properties / grab_lyrics / description
        Added value: +"Capture lyric subtitles. Default false."
      • addedInput schema / properties / prompt / description
        Added value: +"Sound description (max 500 characters)."
      • addedInput schema / properties / sound_key / description
        Added value: +"Musical key."
      • addedInput schema / properties / sound_loop / description
        Added value: +"When true, produce loopable audio. Default false."
      • addedInput schema / properties / sound_tempo / description
        Added value: +"Tempo in BPM (1-300)."
  6. 3 tool updatesv0.1.9
    • Changedcreate_mashup1 field changed
      • changedInput schema / required
        Previous value: -[
        -  "vocal_mode",
        -  "upload_url_list"
        -]New value: +[
        +  "upload_url_list",
        +  "vocal_mode"
        +]
    • Addedlogin
    • Changedtext_to_music1 field changed
      • addedInput schema / properties / endpoint
        Added value: +{
        +  "type": "string"
        +}
  7. 8 tool updatesv0.1.2
    • Changedcheck_pricing1 field changed
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
    • Changedcover_audio9 fields changed
      • addedInput schema / properties / callback_url / type
        Added value: +"string"
      • addedInput schema / properties / lyrics / type
        Added value: +"string"
      • addedInput schema / properties / negative_tags / type
        Added value: +"string"
      • addedInput schema / properties / persona_id / type
        Added value: +"string"
      • addedInput schema / properties / prompt / type
        Added value: +"string"
      • addedInput schema / properties / style / type
        Added value: +"string"
      • addedInput schema / properties / title / type
        Added value: +"string"
      • addedInput schema / properties / upload_url / type
        Added value: +"string"
      • changedInput schema / required
        Previous value: -[
        -  "vocal_mode"
        -]New value: +[
        +  "upload_url",
        +  "vocal_mode"
        +]
    • Changedcreate_mashup6 fields changed
      • addedInput schema / properties / callback_url / type
        Added value: +"string"
      • addedInput schema / properties / lyrics / type
        Added value: +"string"
      • addedInput schema / properties / persona_id / type
        Added value: +"string"
      • addedInput schema / properties / prompt / type
        Added value: +"string"
      • addedInput schema / properties / style / type
        Added value: +"string"
      • addedInput schema / properties / title / type
        Added value: +"string"
    • Changedextend_music11 fields changed
      • addedInput schema / properties / audio_id / type
        Added value: +"string"
      • addedInput schema / properties / audio_url / type
        Added value: +"string"
      • addedInput schema / properties / callback_url / type
        Added value: +"string"
      • addedInput schema / properties / lyrics / type
        Added value: +"string"
      • addedInput schema / properties / negative_tags / type
        Added value: +"string"
      • addedInput schema / properties / persona_id / type
        Added value: +"string"
      • addedInput schema / properties / prompt / type
        Added value: +"string"
      • addedInput schema / properties / style / type
        Added value: +"string"
      • addedInput schema / properties / task_id / type
        Added value: +"string"
      • addedInput schema / properties / title / type
        Added value: +"string"
      • addedInput schema / properties / upload_url / type
        Added value: +"string"
    • Addedgenerate_lyrics
    • Changedget_task1 field changed
      • changedInput schema / properties / action / enum
        Previous 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"
        +]
    • Changedtext_to_music7 fields changed
      • addedInput schema / properties / callback_url / type
        Added value: +"string"
      • addedInput schema / properties / lyrics / type
        Added value: +"string"
      • addedInput schema / properties / negative_tags / type
        Added value: +"string"
      • addedInput schema / properties / persona_id / type
        Added value: +"string"
      • addedInput schema / properties / prompt / type
        Added value: +"string"
      • addedInput schema / properties / style / type
        Added value: +"string"
      • addedInput schema / properties / title / type
        Added value: +"string"
    • Changedtext_to_sound3 fields changed
      • addedInput schema / properties / callback_url / type
        Added value: +"string"
      • addedInput schema / properties / prompt / type
        Added value: +"string"
      • addedInput schema / required
        Added value: +[
        +  "prompt"
        +]
  8. 7 tool updatesv0.1.0
    • First observedcheck_pricing
    • First observedcover_audio
    • First observedcreate_mashup
    • First observedextend_music
    • First observedget_task
    • First observedtext_to_music
    • First observedtext_to_sound

TDQS

B3/5.0

Scored across 21 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count4/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    MCP 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
    -
  • A
    license
    A
    quality
    D
    maintenance
    Generate 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.
    3
    9 npm
    MIT