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.
audio_urlYesURL of the audio file to sample.
timeout_msNo
end_secondsYesEnd of the sample range in seconds; must exceed start_seconds.
callback_urlNoWebhook URL for async notifications.
start_secondsYesStart of the sample range in seconds.
poll_interval_msNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden, and it only discloses that the call returns a task id, status, and output URLs. It says nothing about the async task lifecycle, how the wait/poll_interval_ms/timeout_ms parameters interact with that lifecycle, cost, or auth requirements, which is a significant gap for a job-creating 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 followed by the return shape; nothing is redundant. It is economically written, though the brevity comes partly from simply omitting necessary context.

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 9 parameters, no annotations, and no output schema, the description is too thin: it covers the action and return shape but omits parameter guidance, async behavior, and any sibling routing. An agent would need to open the schema and guess at operational semantics.

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%, so most parameters (audio_url, start_seconds, end_seconds, wait, model, callback_url, prompt) are already documented in the schema, making 3 the baseline. The description adds no parameter detail and does not compensate for the two undocumented fields (timeout_ms, poll_interval_ms).

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 concrete verb and resource ("Create a Suno task on RunAPI") and parenthetically clarifies the operation ("add samples"), which lets an agent distinguish it from siblings like text_to_music or extend_music. However, it never explicitly contrasts itself with a close sibling (e.g. cover_audio), so the differentiation is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

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 guidance, no prerequisites, and does not name any alternative tool for audio-sample workflows. The required audio_url/start_seconds/end_seconds triad hints at a sample-a-range operation, but the agent is left to infer when this beats cover_audio or remaster_audio.

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.
lyrics_bYesSecond lyrics text to blend.
timeout_msNo
callback_urlNoWebhook URL for async notifications.
poll_interval_msNo

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits itself. It states that the tool returns a task id, status, and result payload, which implies an asynchronous task model, but it does not explain side effects, blocking behavior, error handling, or any prerequisites. The lack of detail gives an agent insufficient awareness of execution semantics.

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 a single sentence with no fluff, front-loading the action and outcome. It is appropriately concise, though it sacrifices useful details for brevity; still, every word earns its place.

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 tool with 6 parameters, no annotations, and no output schema, this description is too sparse. It fails to explain the asynchronous nature, the purpose of wait/timeout/callback parameters, the structure of the result payload, or any constraints. Siblings like generate_lyrics likely have richer contracts, and this description leaves too much 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 description coverage is 67% (4 of 6 params have descriptions), so the baseline is moderate. The tool description itself says nothing about parameters, failing to clarify the two undocumented params (timeout_ms, poll_interval_ms) or how wait interacts with them. It adds no value beyond the schema, which is exactly the baseline scenario.

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 action (create a Suno task) and the specific resource/operation (blend lyrics), which is distinct from siblings like generate_lyrics and create_mashup. The verb 'create' and parenthetical 'blend lyrics' make the purpose unambiguous.

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 the tool is for blending two lyrics (via 'blend lyrics') but provides no explicit guidance on when to use it over alternatives like generate_lyrics or create_mashup. No exclusions or when-not conditions are given, so usage is only implied.

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.

TDQS

C2.9/5.0
Behavior3/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 does disclose that the operation is synchronous and that it 'returns the operation result,' which is useful. However, it omits auth requirements (a login sibling exists), failure behavior, rate limits, and whether this is a safe read or a mutating paid call (check_pricing sibling suggests cost implications). The jargon 'boost style' is never unpacked.

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?

One tight sentence with no filler. The synchronous behavior and return value are front-loaded. Minor deduction for the parenthetical 'boost style,' which is cryptic and could have been replaced with plain language, but overall it's an efficient definition.

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?

With no output schema and no annotations, the description should explain what the operation result looks like and when the tool is used in a workflow. It only says 'returns the operation result' without any format or usage context. For a single-parameter tool this is passable but leaves the agent guessing about the meaning of 'boost style' and the shape of the return value.

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 100% — the schema already documents 'description' as 'Style description to expand into genre tags.' The tool description adds essentially nothing about the parameter beyond the parenthetical 'boost style,' so it lands at the baseline 3 for fully-covered schemas.

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 (run) and resource (Suno operation on RunAPI), but 'boost style' is unexplained jargon. The schema parameter clarifies it expands style descriptions into genre tags, giving the purpose some grounding. However, it fails to distinguish itself from the many sibling music/audio tools — 'boost style' doesn't convey what outcome the agent should expect.

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 tool versus any of the 20 siblings. There's no mention of when boost_style is appropriate (e.g., after generating a style, before text_to_music), no prerequisites, and no exclusions. An agent has no way to route to this tool over inspire_music or generate_persona.

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.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full responsibility for behavioral disclosure. 'Look up' implies a read-only, non-mutating operation, but it says nothing about authentication, rate limits, response format, caching, or whether the data is live. This is minimal transparency, and important behavioral traits are absent.

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 sentence with no wasted words. It is front-loaded with the core action and resource, and every part of the sentence contributes meaning. It is appropriately concise for such 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 very simple (no required parameters, no output schema, no nested objects). The description covers the core purpose and the schema fully documents the parameters. However, it does not describe what the returned pricing data contains or how to interpret it, which is a gap given there is no output schema. It is adequate but not fully complete.

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%; both 'model' and 'action' have clear descriptions including defaults in the schema itself. The description text adds no parameter-level semantics beyond what the schema already 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Look up RunAPI pricing for the suno model line' uses a specific verb ('look up') and a specific resource ('RunAPI pricing for the suno model line'). It clearly distinguishes this tool from the sibling audio/action endpoints because it is the only one about pricing. However, it does not explicitly name a sibling or state what it is not, so it doesn't fully earn a 5.

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 provides no guidance on when to use this tool versus alternatives. It does not mention checking pricing before running an expensive operation, nor does it note any exclusions or prerequisites. The agent must infer its role from the name alone. There is no explicit context for when it should be called.

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.
source_task_idNoRunAPI Task id that produced the audio. Required when the audio id alone does not identify the source.
source_audio_idYesAudio id within the source Task, or a RunAPI audio resource id returned by a previous request.
poll_interval_msNo

TDQS

C2.8/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 'Returns a task id, status, and output URLs' but does not reveal that this is an asynchronous long-running task — strongly implied by wait, timeout_ms, callback_url, and poll_interval_ms params — nor that it depends on a prior audio-generation task (source_task_id). These are significant behavioral traits an agent must know before calling.

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?

A single sentence with zero waste: purpose is front-loaded, operation tag and return info follow immediately. Appropriate length for 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?

Given 6 params, no output schema, and no annotations, the description should disclose the async task behavior, the prerequisite prior-task dependency, and what the output URLs point to. It covers the return values partially, but omits the asynchronous workflow (wait/callback/polling) and source-audio chaining that the parameter set implies. Meaningful gaps remain for an agent deciding how to invoke it.

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 67% (4 of 6 params documented), which is mid-range. The description adds no parameter meaning whatsoever — it never mentions source_audio_id, wait, callback_url, or the source dependency. The two undocumented params (timeout_ms, poll_interval_ms) are left to be inferred from their names, and the description does not bridge that gap.

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 on RunAPI') with an operation tag 'convert audio' and describes return values (task id, status, output URLs). The purpose is clear at a high level, but it does not differentiate 'convert' from closely related audio siblings like remaster_audio, stitch_audio, or separate_audio_stems — what exactly the conversion targets (format? channels?) is left 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?

Provides no when-to-use or when-not-to-use guidance. With 20 siblings, many of which also operate on audio (cover_audio, remaster_audio, stitch_audio, separate_audio_stems), the description never names an alternative or a condition for selection. Usage must be inferred entirely from the 'convert audio' parenthetical.

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.
titleNoMusic title.
lyricsNoExact cover lyrics to sing.
promptNoCover brief for automatic lyrics.
persona_idNoPersona ID.
timeout_msNo
upload_urlYesURL of the audio file to cover.
vocal_modeYesVocal generation mode.
audio_weightNoAudio weight (0-1).
callback_urlNoWebhook URL for async notifications.
persona_typeNoPersona type.
style_weightNoStyle adherence weight (0-1).
vocal_genderNoVocal gender.
negative_tagsNoStyles to avoid.
poll_interval_msNo
weirdness_constraintNoWeirdness constraint (0-1).

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 must disclose behavioral traits itself. It only mentions the return values but does not disclose that this is likely an asynchronous task creation with polling/wait options, that it incurs cost, or that it requires authentication. The existence of wait, timeout_ms, poll_interval_ms, and callback_url parameters implies asynchronous behavior, but the description is silent on it.

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 sentence that quickly states the action and the return type. It is short and front-loaded with the core purpose, with no wasted words.

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 complex tool with 18 parameters, no annotations, and no output schema, the description is inadequate. It mentions the return values but does not explain how to use the task id, whether to wait, what statuses mean, or any usage constraints. An agent would need to rely on the schema, which still leaves 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?

The schema already describes the parameters with 89% coverage. The description adds no parameter-specific meaning beyond the name 'cover audio', which is already apparent from the tool name. Since schema coverage is high, the baseline score 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?

The description clearly states the tool creates a Suno task for covering audio on RunAPI and lists the return values. It uses a specific verb ('Create') and resource ('Suno task'), and the 'cover audio' qualifier distinguishes it from many sibling tools, though it does not explicitly name alternatives.

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 provided about when to use this tool versus alternatives like convert_audio or remaster_audio. There is no mention of prerequisites, context, or exclusion criteria, so an agent is left without direction on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_mashupB

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.
titleNoMusic title.
lyricsNoExact mashup lyrics to sing.
promptNoMashup brief for automatic lyrics.
persona_idNoPersona ID.
timeout_msNo
vocal_modeYesVocal generation mode.
audio_weightNoAudio weight (0-1).
callback_urlNoWebhook URL for async notifications.
persona_typeNoPersona type.
style_weightNoStyle adherence weight (0-1).
vocal_genderNoVocal gender.
upload_url_listYesTwo audio URLs to mashup.
poll_interval_msNo
weirdness_constraintNoWeirdness constraint (0-1).

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description itself must carry behavioral weight; it does state the core side effect ('Create a Suno task') and a useful outcome ('Returns a task id, status, and output URLs'). It does not disclose async/polling behavior, webhook interaction, or any limitations, but the minimal create-and-return contract is at least present.

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?

A single front-loaded sentence communicates the core action and return values with no filler. Every word earns its place, and the parenthetical 'create mashup' reinforces the function name without bloating the text.

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 complex tool (17 parameters, no output schema, no annotations) but the description only provides a one-line contract. Missing context includes the connection between vocal_mode and lyrics/prompt, how wait/callback_url affect the returned task, and what 'output URLs' refer to; an agent would need to reason from the schema alone for nearly everything.

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 88%, so the baseline of 3 applies: the schema already documents all parameters, including required 'upload_url_list' (exactly two URLs) and 'vocal_mode'. The description adds no parameter-level meaning, but it doesn't need to because the schema carries the burden.

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 on RunAPI') and clarifies the specific operation with '(create mashup)', which distinguishes it from siblings like text_to_music or cover_audio. However, it doesn't explain what makes a 'mashup' task distinct from related Suno operations 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?

There is no when-to-use guidance, and no sibling alternatives are mentioned. An agent must infer from the name and the 'mashup' parenthetical that this is for combining two audio files, rather than being told when to choose it over blend_lyrics, cover_audio, or text_to_music.

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.
titleNoSong title. Required in custom parameter mode.
lyricsNoExact lyrics. Only allowed when extending uploaded audio in custom parameter mode.
promptNoExtension brief. Cannot be combined with lyrics.
task_idNoSource task ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url.
audio_idNoSource audio ID to extend. Provide one of task_id, audio_id, audio_url, or upload_url.
audio_urlNoSource audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url.
persona_idNoPersona ID.
timeout_msNo
upload_urlNoUploaded source audio URL to extend. Provide one of task_id, audio_id, audio_url, or upload_url.
continue_atNoSeconds into the source to continue from. Required in custom parameter mode.
audio_weightNoAudio weight (0-1).
callback_urlNoWebhook URL for async notifications.
instrumentalNoWhen true, generate without vocals.
persona_typeNoPersona type.
style_weightNoStyle adherence weight (0-1).
vocal_genderNoVocal gender.
negative_tagsNoStyles to avoid.
parameter_modeYesInherit the source track's parameters (source) or supply custom ones (custom).
poll_interval_msNo
weirdness_constraintNoWeirdness constraint (0-1).

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full behavioral burden. It discloses that the call returns a task id, status, and output URLs, but does not explain asynchronous behavior, polling, cost implications, required source inputs, or side effects. For a creation task with 23 parameters, this is under-disclosed.

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 one concise sentence that leads with the primary action and then summarizes the return value. There is no wasted wording, though it is arguably too terse for 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?

This is a complex tool with 23 parameters, one required parameter, no output schema, and no annotations. The description does not explain parameter_mode, the mutually exclusive source inputs, the wait/callback behavior, or how this relates to sibling creation tools, leaving significant 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 91%, so the schema already documents most parameters. The description itself adds no parameter-level meaning, but per the high-coverage baseline it does not need to; a 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 names a specific verb ('Create'), a specific resource ('a Suno task on RunAPI'), and an operation ('extend music'). It is clear enough to identify the tool's core action, though it does not explicitly distinguish it from siblings like cover_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?

The description gives no guidance on when to use this tool versus alternatives, no mention of requiring a source track, and no explanation of the source vs custom parameter modes. An agent has to infer usage entirely from the 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.
timeout_msNo
callback_urlNoWebhook URL for async notifications.
poll_interval_msNo

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It usefully states the return payload (task id, status, result), but does not disclose asynchronous behavior, required authentication, or polling semantics. This is partial disclosure but leaves significant context to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two short sentences, front-loaded with the action and resource. Every word contributes: it states the operation, context (Suno/RunAPI), and return structure, with no 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 tool with 5 parameters, no annotations, and no output schema, the description gives the basic purpose and return structure but lacks important context about async polling, parameter semantics, and usage boundaries. It is adequate for a high-level understanding but not fully complete for an agent to invoke correctly without inferring from schema.

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 does not mention any parameters or their roles. With 60% schema coverage, two parameters (timeout_ms, poll_interval_ms) are undocumented in both schema and description, and the description adds no semantic meaning to the prompt, wait, or callback_url parameters.

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 clearly states the action ('Create a Suno task') and the specific function ('generate lyrics'), along with the return payload (task id, status, result). It distinguishes from siblings like text_to_music or blend_lyrics by focusing on lyric generation, 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 Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the phrase 'generate lyrics' but there is no explicit guidance on when to use this tool vs alternatives, nor any exclusions or prerequisites. The description does not mention when to prefer this over text_to_music or other Suno-related tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_personaB

Run a synchronous Suno operation on RunAPI (generate persona). Returns the operation result.

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

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the operation is synchronous and returns the result, which is useful behavioral context. However, with no annotations, it fails to mention potential side effects (e.g., creating a persona, consuming credits), authentication requirements, or error behavior. It is minimal but not misleading.

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 a single, focused sentence that front-loads the main action and result. It is free of fluff and every word earns its place, though it could incorporate additional useful context 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?

Given the lack of annotations, an output schema, and the tool's four required parameters, the description is notably incomplete. It does not explain what a persona is, what the returned result looks like, or any preconditions on the source task and audio IDs. An agent would have to infer these from the schema alone.

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?

All parameters are fully described in the schema (100% coverage), so the baseline is 3. The description itself does not add any semantic nuance beyond the schema, such as how parameters interrelate or what the source task/audio IDs represent in the operation flow.

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 clearly states the action ('Run a synchronous Suno operation') and identifies the specific operation ('generate persona'), which matches the tool name. It is not a tautology because it adds the 'synchronous' and 'RunAPI' context, but it does not explain what a persona is or how this differs from sibling tools like generate_voice.

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 such as generate_voice or text_to_music. The description provides no context about prerequisites, intended scenarios, or conditions that would make this tool the right choice.

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.
source_audio_urlYesPublic URL of the voice recording to clone.

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It mentions 'synchronous' and that it returns an operation result, but does not state side effects (e.g., mutation, cost), authentication requirements, or what the operation result contains. For a tool that likely generates a cloned voice, this is a significant omission.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is appropriately brief, but it does not front-load the core action clearly. It prioritizes 'synchronous Suno operation' over the actual purpose, making it less useful despite being short. It is under-specified rather than concisely informative.

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 no output schema, the description should explain the return value in detail, but it only says 'Returns the operation result' without specifying the format or content. It also lacks information about required setup, errors, or rate limits. For a two-parameter tool, this is insufficient to guide correct invocation.

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 already have clear descriptions. The tool description adds no additional context about parameter usage, format, or relationships. Baseline 3 applies because the schema carries the load and the description does not interfere.

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 'Run' and a resource 'Suno operation' but is vague about what 'generate voice' entails. It does not explicitly say this tool clones a voice from an audio URL, which the schema implies. Among many sibling audio tools, it does not differentiate itself beyond the parenthetical 'generate voice', leaving ambiguity about its exact function.

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 like text_to_music or cover_audio. There is no mention of prerequisites, use cases, or conditions under which this tool is appropriate. The agent is left to infer usage entirely from the vague description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_taskA

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

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the behavioral disclosure burden. It does indicate a read-only fetch and what is returned, but it omits important async behavior such as eventual consistency, polling, and whether the result payload is empty until the task completes. This is 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. The key action and resource appear immediately, and every word adds meaningful 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 low-complexity tool with two fully-documented required parameters, the description plus schema covers the essentials for invocation. The only notable gap is the missing async/polling context, but that is minor for selecting and calling 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 100%, so the schema already fully documents task_id and action, including the action enum. The description adds no additional meaning or format detail beyond 'suno task', so the baseline score of 3 is appropriate.

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 names a specific verb ('Fetch'), a clear resource ('a suno task'), and the exact data returned ('current status and latest result payload'). It is immediately distinguishable from the sibling tools, which are all task-creation endpoints like convert_audio, cover_audio, and 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 or when-not-to-use guidance. The description does not say to call this after submitting an async task, to poll until completion, or how it relates to the creation endpoints. Usage must be inferred entirely from the verb 'Fetch' and the sibling tool names.

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.
source_audio_idYesAudio id within the source Task, or a RunAPI audio resource id returned by a previous request.

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 needed to cover side effects, auth/cost expectations, and output semantics; it only discloses that the operation is synchronous and returns the operation result. It does not mention potential credit usage, permission requirements, or that the result is likely a raw API payload rather than parsed lyrics.

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 no fluff; the synchronous behavior and returned result are front-loaded. The phrase 'Run a synchronous Suno operation' is slightly generic, but overall the description is 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?

For a tool with no output schema and no annotations, this is underspecified: it lacks when-to-use guidance, expected return shape beyond 'operation result', and any behavioral caveats such as cost or latency. The schema covers inputs well, but overall call context is incomplete.

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?

All parameters are already documented in the schema (100% coverage), so the baseline for this dimension is 3. The description adds no param-level detail, but it does not need to given the schema's thorough descriptions of source_audio_id and source_task_id.

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 identifies the target operation (timestamped lyrics via Suno on RunAPI) and notes it returns the operation result, so an agent can see this is a retrieval-style operation distinct from generate_lyrics or get_task. However, the verb 'Run' is generic and the boundary of what 'timestamped lyrics' means vs other Suno operations is only implicit.

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 explicit guidance is given on when to call this tool rather than generate_lyrics or get_task. The name and parenthetical imply the use case, but the description never states a selection rule or alternatives, leaving an agent to infer.

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.
timeout_msNo
callback_urlNoWebhook URL for async notifications.
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 must disclose all behavioral traits. The description mentions the return of task id, status, and URLs, implying an asynchronous pattern, but it does not explain the asynchronous behavior, polling, or whether the task is destructive. The schema hints at wait/timeout/polling, but the description does not connect these to the operational behavior, leaving the agent uninformed about side effects or execution flow.

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 a single sentence with no filler words. It is grammatically correct and front-loads the action and resource. However, given the tool's complexity, this brevity borders on under-specification rather than true conciseness. Yet, strictly by the dimension, it is efficient and free of extraneous content, earning a high score.

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 6 parameters, no output schema, and no annotations, the description must carry substantial weight. It tells the agent what the tool does and what it returns, but leaves out crucial context such as the purpose of 'inspire music' mode, how the audio URLs are used, the significance of the model versions, and any differences from the siblings. An agent cannot effectively decide or invoke this tool without further investigation.

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 67% (4 out of 6 parameters have descriptions, but timeout_ms and poll_interval_ms do not). Since coverage is not high (>80%), the description is expected to compensate, but it adds no parameter information at all. The only implicit reference is to audio_urls (as the required input), but it does not explain how they are used or their constraints (e.g., max 4 items). It falls short of the baseline 3 because the missing parameters remain undocumented.

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 action ('Create a Suno task') and specific resource ('RunAPI' with 'inspire music' mode). It also mentions what it returns (task id, status, output URLs), which helps define its scope. However, it does not explicitly distinguish it from sibling tools that also generate music (e.g., text_to_music, cover_audio, create_mashup), so the differentiation is lacking.

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. It does not state any prerequisites, exclusions, or when to prefer it over other music generation tools. The phrase 'inspire music' is ambiguous and not elaborated elsewhere. With 13 sibling tools in the same domain, this lack of contextual guidance is a major gap.

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_audioA

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.
timeout_msNo
callback_urlNoWebhook URL for async notifications.
source_task_idYesCompleted source task ID.
poll_interval_msNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description mentions that it returns a task id, status, and output URLs, giving some insight into the outcome. However, it does not disclose async behavior, potential delays, error conditions, or side effects. Since annotations are absent, the description carries the full burden but provides minimal behavioral detail.

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 concise sentence with no unnecessary words. It clearly conveys the purpose and primary output without fluff.

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 relatively simple tool, the description covers the essential purpose and return values. It lacks details such as async behavior or error handling, but given the presence of parameters like 'wait' and 'timeout_ms', the absence of such context is a minor gap. Overall, it is sufficiently complete for basic understanding.

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 schema already describes several parameters (wait, model, audio_id, callback_url, source_task_id) with meaningful descriptions. The tool's description adds no extra meaning beyond the schema, and the schema coverage is high (71%), so a baseline of 3 is appropriate.

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 it creates a Suno task for remastering audio, which distinguishes it from other audio generation tools like text_to_music or cover_audio. The verb 'Create' and resource 'Suno task' are specific.

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 provides no guidance on when to use this tool versus alternatives. It only states what it does, without indicating use cases or conditions (e.g., when you have existing audio needing remastering). No explicit comparison with sibling tools.

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.
waitNoPoll until the task reaches a terminal status.
task_idYesSource task ID.
audio_idYesAudio ID within the source task.
stem_nameNoTarget stem for advanced separation. Required when type is split_stem_advanced.
timeout_msNo
callback_urlNoWebhook URL for async notifications.
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 provided, the description carries the full burden of behavioral disclosure. It mentions return values (task id, status, URL) but omits critical behavioral aspects such as that this is a long-running asynchronous task, that the 'wait' parameter controls polling, or that it creates a new resource (a mutation). No safety profile, permission requirements, or side effects are disclosed, leaving significant gaps.

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 sentence with no filler. It efficiently conveys the core purpose and expected output structure, achieving maximum conciseness without sacrificing essential information.

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?

The tool has 8 parameters including complex enums (stem_name has ~100 options), yet the description provides no context on how separation modes work, when to use 'wait' vs 'callback_url', or how output URLs are delivered. With no output schema and no annotations, the description is insufficient for an agent to confidently invoke this tool without external knowledge.

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% because most parameters (type, wait, stem_name, callback_url, timeout_ms, poll_interval_ms) have their own descriptions in the schema. The tool description adds nothing about parameters beyond the schema, so it does not compensate for the 25% uncovered (task_id and audio_id are minimally described but are required and self-explanatory). Baseline of 3 is appropriate since the schema handles most semantics.

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 'Create a Suno task on RunAPI (separate audio stems)' which clearly identifies the verb (create), resource (Suno task on RunAPI), and function (separate audio stems). It unambiguously indicates what the tool does and distinguishes it from sibling tools that handle generation, lyrics, or mixing. However, it does not explicitly compare with other 'create task' possibilities, so it misses the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

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. It does not mention circumstances where separation is appropriate, nor does it explain prerequisites like needing an existing task_id or audio_id. Without any usage context or exclusionary notes, the agent is left to infer 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.

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.
timeout_msNo
callback_urlNoWebhook URL for async notifications.
source_task_idYesCompleted source task ID.
poll_interval_msNo

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 of behavioral disclosure. It only states that a task is created and returns task id/status/output URLs, but it does not disclose async behavior, the wait default, terminal statuses, side effects, or permission requirements. This is insufficient for a task-creation tool.

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 sentence that is front-loaded with the action and resource, followed by the key return values. There is no filler or redundant information.

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 7 parameters, no annotations, and no output schema, the one-sentence description leaves major gaps: no usage context, no task lifecycle details, no clarification of wait/polling behavior, and no explanation of the output URL semantics. It is minimally viable but far from complete for an agent to use it 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?

The schema already describes 5 of 7 parameters (71% coverage), and the description adds no additional parameter semantics beyond the tool's purpose. The undocumented timeout_ms and poll_interval_ms are not explained, and the description does not clarify how source_task_id and audio_id relate to the stitching operation, so the description provides minimal added value.

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 uses a specific verb ('Create a Suno task') with a resource ('RunAPI (stitch audio)') and states return values (task id, status, output URLs), which distinguishes it from sibling tools like cover_audio or remaster_audio. However, it does not explain what 'stitch audio' actually entails beyond the operation 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?

There is no guidance on when to use this tool versus alternatives such as create_mashup or extend_music, and no prerequisites are mentioned (e.g., needing a completed source_task_id). The only usage context is the tool name, so an agent cannot confidently decide between this and sibling audio tools.

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.
titleNoMusic title.
lyricsNoExact lyrics to sing.
promptNoSong brief for automatic lyrics.
voice_idNoRunAPI Voice handle.
persona_idNoPersona ID.
timeout_msNo
vocal_modeYesVocal generation mode.
continue_atNoTimestamp in seconds to continue from.
audio_weightNoAudio weight (0-1).
callback_urlNoWebhook URL for async notifications.
persona_typeNoPersona type.
style_weightNoStyle adherence weight (0-1).
vocal_genderNoVocal gender.
negative_tagsNoStyles to avoid.
duration_secondsNoPreferred duration in seconds; only available for Suno V5.5 custom requests.
poll_interval_msNo
weirdness_constraintNoWeirdness constraint (0-1).

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 of behavioral disclosure. It mentions returning a task id, status, and output URLs, implying an asynchronous task-based flow, but it does not disclose any side effects (e.g., cost, rate limits), how to poll or retrieve results beyond that, or any prerequisites. For a mutation tool, this is minimal disclosure.

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 concise at two sentences with no fluff. The core purpose is front-loaded, and the return information is stated briefly. It is efficient and to the point, though it could add a bit more context without becoming 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?

Despite having 20 parameters and no output schema, the description is extremely sparse. It does not explain the task lifecycle (e.g., how the wait parameter works, how to use callback_url, or how to interpret statuses), nor does it mention the range of vocal modes or other key options. The agent is left to rely solely on the schema, which is not sufficient for a tool of 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 90%, so the schema already documents most parameters. The description adds no parameter-specific meaning beyond what the schema provides; it does not explain how parameters relate to the text-to-music process. Baseline 3 is appropriate given high schema coverage.

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 clearly states the action ('Create a Suno task') and the resource ('text to music on RunAPI'), and mentions the return values. It distinguishes from siblings like text_to_sound by specifying 'music' rather than 'sound', but does not explicitly name alternatives. A clear purpose with minor differentiation gap.

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 tool versus alternatives like cover_audio, text_to_sound, or extend_music. The description only states what it does, not the conditions or contexts where it is the preferred choice. This leaves the agent to infer usage from the name and siblings.

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).
sound_keyNoMusical key.
sound_loopNoWhen true, produce loopable audio. Default false.
timeout_msNo
grab_lyricsNoCapture lyric subtitles. Default false.
sound_tempoNoTempo in BPM (1-300).
callback_urlNoWebhook URL for async notifications.
poll_interval_msNo

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description must carry the full burden of behavioral disclosure. It tells the agent that a task is created and returns IDs and URLs, but it omits key asynchronous traits such as polling behavior, wait semantics, webhook notifications, or the fact that the returned task may be processed asynchronously. This is insufficient for an agent to anticipate side effects or lifecycle 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?

The description is a single sentence that gets directly to the point and front-loads the core purpose. It contains no redundant or vague filler. While it is sparse, it avoids wasted words and is easy to process.

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?

The tool has 10 parameters, no output schema, and no annotations, so the description should provide richer context about async behavior, return format, and operational details. It only states the basics: creates a task and returns some fields. This is incomplete for an asynchronous task creation tool with multiple undocumented parameters and no output schema to guide the 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?

Schema descriptions already cover 80% of parameters, so the baseline is 3. The description itself adds no parameter-specific meaning. Two parameters timeout_ms and poll_interval_ms are left undocumented in the schema and description, but the high coverage leaves the core requirements clear enough.

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 clearly states a specific action: 'Create a Suno task on RunAPI (text to sound)' with an identifiable verb, resource, and scope. It also mentions the return value (task id, status, output URLs). However, it does not distinguish this from the sibling 'text_to_music' tool, so it is not fully differentiated.

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 provided on when to use this tool versus alternatives like text_to_music, generate_lyrics, or blend_lyrics. There are no exclusion criteria, prerequisites, or contextual hints about appropriate use. The description simply states what the tool does, not when it should be chosen.

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.
timeout_msNo
domain_nameNoDomain name watermark.
callback_urlNoWebhook URL for async notifications.
source_task_idNoRunAPI Task id that produced the audio. Required when the audio id alone does not identify the source.
source_audio_idYesAudio id within the source Task, or a RunAPI audio resource id returned by a previous request.
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 provided, the description carries the full burden of behavioral disclosure. It says the tool returns a task id, status, and output URLs, but does not explain whether the task runs synchronously, when polling or callbacks are needed, or how the wait and timeout parameters affect 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?

The description is one concise sentence with no filler, and it front-loads the core action and return values. It is appropriately short, though it sacrifices useful context for brevity.

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 eight parameters, no output schema, and no annotations, the description is too thin. It omits the async workflow, the role of callback_url, the meaning of source_task_id, and when wait should be false. An agent would need to infer much of the calling convention from parameter names alone.

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 high at 75%, so the schema already documents most parameters. The description adds minimal semantic value beyond framing the tool as a Suno task; it does not clarify relationships among source_audio_id, source_task_id, wait, and callback_url.

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 uses a specific verb and resource: 'Create a Suno task on RunAPI (visualize music).' This clearly identifies the operation and distinguishes it from siblings like text_to_music or remaster_audio, though it leaves some ambiguity about what 'visualize music' concretely produces.

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, nor any mention of prerequisites such as requiring previously generated audio. The description simply states what the tool does without contextualizing it against the many sibling tools.

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. 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
  2. 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
  3. 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
  4. 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)."
  5. 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"
        +}
  6. 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"
        +]
  7. 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.2/5.0

Scored across 21 tools

Disambiguation3/5

While tool names are distinct, many descriptions are nearly identical except for the parenthetical action, making it hard to distinguish similar operations like convert_audio vs remaster_audio vs stitch_audio. Some pairs like generate_lyrics vs blend_lyrics or text_to_music vs text_to_sound could be confused without deeper context.

Naming Consistency5/5

All 21 tools follow a consistent snake_case verb_noun pattern (e.g., convert_audio, generate_lyrics, get_task). No deviations or mixed conventions, making the naming highly predictable.

Tool Count3/5

With 21 tools, the server is on the heavier side. It feels borderline (16-25 tools per calibration) but the number is justified by the wide range of Suno audio/music operations and supporting functions. Still, it could be trimmed to reduce cognitive load.

Completeness4/5

The tool surface covers core Suno operations: generation (text_to_music, cover_audio, create_mashup), audio manipulation (remaster, stitch, separate stems), and utility (get_task, login, pricing). Minor gaps include lack of task cancellation or listing, and no user info endpoint, but the main workflows are well 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
    B
    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
    6 npm
    MIT