SunoMCP
SunoMCP is an MCP server for AI music generation and audio editing through Suno/AceDataCloud, with tools for songs, lyrics, processing, personas, custom models, projects, and task tracking.
Generate music from prompts, custom lyrics/styles, reference-audio inspiration, personas, or custom models.
Generate song lyrics, mashup lyrics, style prompts, and lyric-format guidance.
Extend, cover/remix, remaster, replace sections, concatenate, mash up, and adjust speed.
Separate or extract stems, vocals, and instruments; add/extract specific stems.
Upload audio and apply extension, cover, underpainting, overpainting, samples, and related operations.
Convert or retrieve MP4, WAV, MP3, MIDI, timing/subtitle data, and vocal extracts.
Generate sound effects and manage sound type, BPM, key, and MP3 output.
Create, list, delete, and use artist personas/voices.
Create, inspect, list, archive, and generate with custom music models.
Manage Studio projects: create, retrieve, save, upload, add/generate/replace tracks, commit candidates, remove tracks, and render.
Check audio availability and query single or batch task status/results.
List available Suno models, API actions, and corresponding tools.
Allows for the extraction of MIDI data from generated songs for use in music production and digital audio workstations.
Enables AI music generation, including creating songs from text prompts, custom lyrics management, song extensions, and audio stem separation.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
Suno by Ace Data Cloud
A Model Context Protocol (MCP) server for AI music generation using Suno through the AceDataCloud API.
Generate AI music, lyrics, and manage audio projects directly from Claude, VS Code, or any MCP-compatible client.
Use Suno in Glama
Find the Ace-provided Suno source listing or remote connector. Follow the Glama installation, API Token and first-use guide. Public discovery and a successful personal connection are separate checks; generation uses your Ace account balance.
Related MCP server: Suno MCP
Suno in goose
Use the independent Suno by Ace Data Cloud native goose plugin: install and API Token guide · 简体中文. It reuses this MCP server and does not imply goose Marketplace or default-provider inclusion.
Find the Suno integration in the official MCP Registry
Open Suno in the official MCP Registry, expand the matching io.github.AceDataCloud entry, and use its Packages or Remotes installation information in a client that consumes MCP catalogs. This is the Suno integration provided by Ace Data Cloud; it is not an endorsement by the model vendor. The Registry is a directory, not the app that runs a tool.
Search for mcp-suno (or io.github.AceDataCloud/mcp-suno) to locate the exact entry. The official Registry search currently matches server names; spaces in a display title do not create extra search aliases. If your client does not consume the catalog, use the client-specific connection instructions below and check Applications → General application for your token, service permissions, balance and current price. Keep the original task ID when checking asynchronous results.
Features
Music Generation - Create AI-generated songs from text prompts
Custom Lyrics & Style - Full control over lyrics, title, and music style
Song Extension - Continue existing songs from any timestamp
Cover/Remix - Create cover versions with different styles
Lyrics Generation - Generate structured lyrics from descriptions
Persona Management - Save and reuse voice styles
Custom Music Models - Create and reuse app-owned custom music models
Task Tracking - Monitor generation progress and retrieve results
Tool Reference
Tool | Description |
| Generate AI music from a text prompt using Suno's Inspiration Mode. |
| Generate AI music with full control over lyrics, title, and style (Custom Mode). |
| Extend an existing song from a specific timestamp with new lyrics. |
| Create a cover or remix version of an existing song in a different style. |
| Concatenate extended song segments into a single complete audio file. |
| Generate music using a saved artist persona for consistent vocal style. |
| Remaster an existing song; v5/v5.5 require a variation category. |
| Separate a song into individual stems (vocals and instruments). |
| Replace a specific time range in a song with new generated content. |
| Extend an uploaded audio (your own music) with new AI-generated content. |
| Create an AI cover of an uploaded audio (your own music). |
| Blend exactly two songs using a required creative-direction prompt. |
| Return two distinct 12-stem candidate sets, labeled |
| Generate song lyrics from a text prompt. |
| Get an MP4 video version of a generated song. |
| Get timing and subtitle data for a generated song. |
| Synchronously check for positive evidence that an audio ID is available on the current channel. |
| Extract a required vocal interval shorter than 30 seconds. |
| Get the lossless WAV format of a generated song. |
| Get the compressed MP3 format of a generated song. |
| Get MIDI data extracted from a generated song. |
| Create a new artist persona from an existing audio's vocal style. |
| Create a reusable custom music model from 6 to 24 authorized audio URLs. |
| Retrieve one custom music model by ID. |
| List custom music models for the current Suno application. |
| Generate a song using a ready custom music model. |
| Archive a custom music model so it can no longer be used. |
| Optimize a music style description for better generation results. |
| Generate mashup lyrics by combining two sets of lyrics. |
| Upload external audio in standard or enhanced mode for subsequent operations. |
| Query the status and result of a music generation task. |
| Query multiple music generation tasks at once. |
| List all available Suno models and their capabilities. |
| List all available Suno API actions and corresponding tools. |
| Get guidance on formatting lyrics for Suno music generation. |
Connect in minutes
The hosted server is https://suno.mcp.acedata.cloud/mcp. Choose one authentication route before following a client example:
Route | Use it when | What you provide |
Browser sign-in (OAuth) | Your MCP client supports remote OAuth; use DCR if the client requires automatic registration | The server URL; sign in to AceDataCloud and approve access in the browser. No key needs to be pasted into the MCP config. |
API token | Your client cannot complete the remote OAuth flow, or you need an explicit credential for an integration | An AceDataCloud API token in the client's Bearer header. Keep it in a user-level secret store or environment variable. |
Local stdio | You want the MCP process to run on your machine | Install |
The hosted server always receives a Bearer token: with OAuth, the client obtains and sends it after sign-in; with API-token setup, you supply it. DCR is client registration, not a separate AceDataCloud API key. After consent, the hosted service currently reuses or creates an API credential for your account; it may fail if the account cannot obtain one. Some clients offer a published client identity or manual client ID; those are client-specific alternatives, not a second API-token requirement. Browser sign-in does not remove the need for an AceDataCloud account. Music generation uses your AceDataCloud account and may incur usage charges. Review current Suno pricing and limits before generating.
Browser sign-in: hosted server
Use this path for clients with remote MCP OAuth support. Add only the URL first; do not also set an Authorization header. If a client cannot complete discovery or registration, use the API-token route below.
Claude and Claude Desktop chat
Use Claude's remote custom connector in Customize → Connectors → Add custom connector (or your organization's connector settings). Enter the hosted URL, choose sign-in, and select Register automatically for the OAuth client if Claude asks. Complete the AceDataCloud login and consent flow, then enable the connector in your conversation. Claude Desktop's claude_desktop_config.json is for local MCP processes; it is not where Claude's remote custom connectors are installed. Claude's connector guide.
Claude Code
claude mcp add --transport http --scope user suno https://suno.mcp.acedata.cloud/mcp
claude mcp login sunoIn Claude Code, /mcp shows the connection and available tools. For project scope, merge {"mcpServers":{"suno":{"type":"http","url":"https://suno.mcp.acedata.cloud/mcp"}}} into <project>/.mcp.json; keep existing entries when merging. Claude Code and Claude Desktop chat have separate MCP configuration. Claude Code MCP guide.
Cursor
In Cursor's MCP settings, add a remote server with the hosted URL and complete the OAuth prompt. For project scope, merge this into <project>/.cursor/mcp.json; for your own machines, use ~/.cursor/mcp.json:
{
"mcpServers": {
"suno": {
"url": "https://suno.mcp.acedata.cloud/mcp"
}
}
}The URL-only project config contains no token. Do not commit a project config if you later add a real token. Cursor MCP guide.
VS Code with GitHub Copilot
Run MCP: Add Server, choose HTTP, and enter the hosted URL. Save to the user profile for personal use or to a workspace config for a team; approve the server and complete sign-in when prompted. New workspace configs use <project>/.mcp.json; VS Code also reads its .vscode/mcp.json format. This is the VS Code format for a local workspace:
{
"servers": {
"suno": {
"type": "http",
"url": "https://suno.mcp.acedata.cloud/mcp"
}
}
}Run MCP: List Servers to check connection and tool loading. VS Code MCP setup and configuration reference.
Codex CLI or Codex app
codex mcp add suno --url https://suno.mcp.acedata.cloud/mcp
codex mcp login sunoCodex keeps user MCP settings in ~/.codex/config.toml and can show the server in /mcp. Official Codex MCP guide.
API token: hosted server
Open Ace Data Cloud → Applications. Sign in, or register an account first.
Find General application. If it has not been created, choose Initialize General Application. A general key can use the services available to your account; a dedicated application's key is limited to its service. Check the required service/model access and current pricing.
Copy the API Key from the application card, or open Keys / Manage Keys → Create to create a separate key for this integration. Give it a recognizable name so you can revoke or rotate it independently.
When creating a key, review Expiration Time, Set Usage Limitation, and Allowed APIs. Enable only the restrictions you need, allow the operations you will call, then click Create and copy the token from the key list. Task lookup does not grant permission to submit a generation. Confirm the application's balance can cover your first request; any trial allowance is whatever your account currently displays.
Copy only the token value, without quotation marks, spaces, or
Bearer. An API Key / API Token field expects this raw value; only a manually configured HTTPAuthorizationheader needs theBearerprefix. Aplatform-...account-management token cannot replace a generation API key.


Save the key in the client's credential store or the environment variable shown below. Never put it in a prompt, shared workflow, screenshot, or Git commit. If authentication fails, check the full copied value, application/service access, expiration, usage limit, and balance before creating another key.
Use this route when you need a fixed credential or your client does not complete OAuth. An invalid fixed header does not automatically fall back to browser sign-in.
For Claude Code, set the variable in the environment that starts Claude Code, then add the server. The shell expands the token when you add the server, so treat the saved user-level MCP config as a secret; use browser sign-in above if you do not want a key in client config:
export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
claude mcp add --transport http --scope user suno https://suno.mcp.acedata.cloud/mcp \
--header "Authorization: Bearer $ACEDATACLOUD_API_TOKEN"For a shared project config, put only the variable reference in <project>/.mcp.json and keep the token in each user's environment. Unlike the CLI example above, Claude Code expands ${ACEDATACLOUD_API_TOKEN} when it reads .mcp.json. Merge this entry with existing servers:
{
"mcpServers": {
"suno": {
"type": "http",
"url": "https://suno.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer ${ACEDATACLOUD_API_TOKEN}"
}
}
}
}For Cursor, use its ${env:ACEDATACLOUD_API_TOKEN} syntax in a user-level ~/.cursor/mcp.json (or an uncommitted project config):
{
"mcpServers": {
"suno": {
"url": "https://suno.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer ${env:ACEDATACLOUD_API_TOKEN}"
}
}
}
}For VS Code, prefer a user-profile MCP config and a masked input instead of putting the token in the JSON. Merge these fields into the file opened by MCP: Open User Configuration:
{
"inputs": [
{"id": "acedata-suno-token", "type": "promptString", "description": "AceDataCloud API token", "password": true}
],
"servers": {
"suno": {
"type": "http",
"url": "https://suno.mcp.acedata.cloud/mcp",
"headers": {"Authorization": "Bearer ${input:acedata-suno-token}"}
}
}
}This interactive input is specific to VS Code's user/workspace format; do not copy it into .mcp.json for Agent Host. VS Code prompts once and stores the value securely for later use. VS Code configuration reference.
Other clients use different schemas. For Cline, open MCP Servers → Configure → Configure MCP Servers (Cline CLI: ~/.cline/data/settings/cline_mcp_settings.json) and use type: "streamableHttp" under mcpServers; Cline's guide has the full shape. For JetBrains AI Assistant, go to Settings → Tools → AI Assistant → Model Context Protocol (MCP) and add a remote server using the hosted URL; check its connection status and use the API-token route if your version does not complete OAuth. JetBrains' guide. For Zed, use context_servers with the hosted URL in its settings; omitting Authorization starts its OAuth flow. Zed's guide.
Local stdio server
Local mode needs an API token. Use it when your client only supports local processes or you want the MCP process on your machine; it still calls the AceDataCloud API and does not run Suno locally.
# Install once, then run the local stdio server
python -m pip install mcp-suno
export ACEDATACLOUD_API_TOKEN='YOUR_API_TOKEN'
mcp-sunoFor Claude Desktop's local MCP configuration, merge this into the file opened by its developer settings (~/Library/Application Support/Claude/claude_desktop_config.json on macOS). This is a local uvx process; it is separate from the remote custom connector above:
{
"mcpServers": {
"suno": {
"command": "uvx",
"args": ["mcp-suno"],
"env": {
"ACEDATACLOUD_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}Keep this user-level file private. On Windows, set $env:ACEDATACLOUD_API_TOKEN = 'YOUR_API_TOKEN' in the shell that starts local clients. uvx requires uv on PATH; mcp-suno requires the package installed in the environment from which the client launches it.
For self-hosted HTTP, run mcp-suno --transport http --port 8000 or build this repository's Dockerfile and run the resulting image. Clients must send their own Bearer tokens; expose the service only with suitable network and TLS controls.
Check the connection before generating
https://suno.mcp.acedata.cloud/healthreturning{"status":"ok"}checks reachability only, not authentication.Use the client's MCP server list to confirm Suno tools appear.
suno_list_modelsandsuno_list_actionsreturn static reference data; they confirm tool loading, not that your downstream API credential or balance works.When ready, ask the client to call
suno_generate_musicwith a short prompt. Save the returned task ID, then callsuno_get_taskuntil it completes. This is the first end-to-end API check and can be billed. Check the current Suno service limits and pricing before this step.
If you see 401, check whether the client completed OAuth or sent a valid token, and do not configure both paths at once. If OAuth redirects but fails, retry from the same client session; if the account cannot create or retrieve a credential, resolve that in AceDataCloud Platform. A tool list can load while an API call fails for balance, permissions, or service availability, so check the returned error rather than assuming the connection failed.
Use the tools
Tool names in the client include the suno_ prefix. Start with suno_list_models or suno_list_actions to confirm the connection. For generation, use suno_generate_music for a prompt or suno_generate_custom_music for your own lyrics and style. Advanced operations, media conversion, personas, and custom models are listed in the tool reference and exposed by the MCP server.
Generation and edits return a task ID, not a finished song. Query suno_get_task (or suno_get_tasks_batch for multiple IDs) until the task reports success and final media URLs. An intermediate audio URL may be only a preview; a failed task should stop polling. Do not repeat the generation call to check progress, because it may submit and bill another task.
Example request to your MCP client:
Use
suno_generate_musicto create a short upbeat acoustic birthday song. Give me the task ID, check it withsuno_get_task, and share the final audio only after the task completes.
For custom lyrics:
Use
suno_generate_custom_musicwith title “Storm”, style “energetic rock”, and these lyrics:[Verse] Thunder in the night [Chorus] We are the storm. Then follow the returned task ID to completion.
negative_tags excludes styles or genres in custom generation (custom=true) and in suno_replace_section. The API currently sets no fixed character limit for this field, but overly long content may still fail; keep the description concise.
Extensions (suno_extend_music, suno_upload_extend) require a positive continue_at in seconds; fractional boundaries such as 30.792 are preserved. Lyrics affect only new content after that boundary, not the original portion. Replacement requires 0 <= replace_section_start < replace_section_end. suno_samples_music selects an interval from one source audio: samples_start defaults to 0, and samples_end is required and must be greater than start. Interval ends must not exceed the source duration. duration (an integer from 10–360) is a target used only for generation; actual length depends on the model.
For suno_generate_inspo, supply 1–4 public reference audio URLs. Use instrumental=true for a no-lyrics request, or custom=true with lyric_prompt and empty lyric for automatic lyrics. The optional persona_id is a voice ID, not an audio ID; voice support with Inspo depends on the service channel. Extensions do not use an additional persona ID.
For suno_all_stems_music, wait for successful terminal completion of the full task. Playable URLs during processing do not mean every stem is complete.
For covers, extensions and stem separation, use the returned audio id as audio_id. A downloadable audio file does not guarantee that its ID remains available for further processing.
Cover with a specified voice
Both suno_cover_music and suno_upload_cover accept persona_id for a specified-voice cover. A private voice created by suno_create_voice requires this sequence:
Keep the returned
persona_idfrom voice creation.Call
suno_upload_audiowith the original song's publicaudio_url,mode: "standard"and thatpersona_idto associate the source with the voice.persona_idcannot be used withmode: "enhanced".Call
suno_upload_coverwith the upload's returneddata.audio_idand the samepersona_id, then follow its task ID to completion.
Do not reuse an older audio ID that was not uploaded with that private voice. Voice creation, upload and cover must use the same service channel. No extra vocal_gender is needed; a gender preference is not a substitute for a voice ID.
Check audio availability before processing
Before a cover or extension, you can call suno_check_audio_availability with the audio UUID from a completed song's id, not the generation task_id:
{"audio_id":"33333333-3333-4333-8333-333333333333"}Pass these arguments to suno_check_audio_availability. It calls POST /suno/availability synchronously with an API token and currently costs no Credits. Do not poll its returned task_id as though it were a generation job.
A successful response has data.id and data.available=true: the current channel found positive evidence of availability at check time. This does not guarantee that a later cover, extension or other operation will succeed. If availability cannot be confirmed, the API returns an error such as HTTP 503 availability_unknown, never available=false. Do not interpret an error (including rate limits or upstream failures) as proof that the audio is unavailable. Retain returned support identifiers and do not blindly retry or submit a paid operation to resolve uncertainty. Invalid audio IDs return HTTP 400; the MCP tool rejects malformed UUIDs before calling the API.
Processing errors
The audio API documents these HTTP 500 errors:
Code | Meaning |
| The audio API reports that the account may have been offline. |
| Music processing is unavailable. |
| The selected model is unavailable for this operation. |
| Music processing returned no audio. |
Stop on terminal failure, retain any returned task_id and trace_id, and contact support with those IDs. Do not blindly resubmit, switch models, or treat an existing download URL as proof that another processing request will work.
Available Models
Model | Version | Max Duration | Features |
| V6 | API-defined | Current v6 model |
| V6 Wild | API-defined | v6 Wild model |
| V6 Mini | API-defined | v6 Mini model |
| V5.5 | 8 minutes | Previous model name |
| V5 | 8 minutes | High quality |
| V4.5+ | 8 minutes | Enhanced quality |
| V4.5 | 4 minutes | Vocal gender control |
| V4 | 150 seconds | Stable |
| V3.5 | 120 seconds | Fast |
| V3 | 120 seconds | Legacy |
Vocal Gender Control (v4.5+ only):
f- Female vocalsm- Male vocals
Configuration
Environment Variables
Variable | Description | Default |
| Local stdio token; hosted requests provide it via OAuth or Bearer header | Required for local stdio |
| API base URL |
|
| OAuth client ID (hosted mode) | — |
| Platform base URL |
|
| Default model for generation |
|
| Request timeout in seconds |
|
| Logging level |
|
Command Line Options
mcp-suno --help
Options:
--version Show version
--transport Transport mode: stdio (default) or http
--port Port for HTTP transport (default: 8000)Development
Setup Development Environment
# Clone repository
git clone https://github.com/AceDataCloud/SunoMCP.git
cd SunoMCP
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or `.venv\Scripts\activate` on Windows
# Install with dev dependencies
pip install -e ".[dev,test]"Run Tests
# Run unit tests
pytest
# Run with coverage
pytest --cov=core --cov=tools
# Run integration tests (requires API token)
pytest tests/test_integration.py -m integrationCode Quality
# Format code
ruff format .
# Lint code
ruff check .
# Type check
mypy core toolsBuild & Publish
# Install build dependencies
pip install -e ".[release]"
# Build package
python -m build
# Upload to PyPI
twine upload dist/*Project Structure
SunoMCP/
├── core/ # Core modules
│ ├── __init__.py
│ ├── client.py # HTTP client for Suno API
│ ├── config.py # Configuration management
│ ├── exceptions.py # Custom exceptions
│ ├── server.py # MCP server initialization
│ └── utils.py # Utility functions
├── tools/ # MCP tool definitions
│ ├── __init__.py
│ ├── audio_tools.py # Audio generation tools
│ ├── info_tools.py # Information tools
│ ├── lyrics_tools.py # Lyrics generation tools
│ ├── media_tools.py # Media conversion tools
│ ├── persona_tools.py # Persona management tools
│ ├── custom_model_tools.py # Custom music model tools
│ └── task_tools.py # Task query tools
├── tests/ # Test suite
│ ├── conftest.py
│ ├── test_client.py
│ ├── test_config.py
│ ├── test_integration.py
│ └── test_utils.py
├── deploy/ # Deployment configs
│ └── production/
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
├── .env.example # Environment template
├── .gitignore
├── CHANGELOG.md
├── Dockerfile # Docker image for HTTP mode
├── docker-compose.yaml # Docker Compose config
├── LICENSE
├── main.py # Entry point
├── pyproject.toml # Project configuration
└── README.mdAPI Reference
This server wraps the AceDataCloud Suno API:
Suno Audios API - Music generation
Suno Lyrics API - Lyrics generation
Suno Tasks API - Task queries
Suno Persona API - Persona management
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch (
git checkout -b feature/amazing)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing)Open a Pull Request
Documentation
License
MIT License - see LICENSE for details.
Links
Made with love by AceDataCloud
Cline setup / Cline 图文接入
Suno by Ace Data Cloud — English guide · 完整中文图文步骤. The Cline marketplace submission is pending review as of 2026-10-18; the guide labels the manual fallback separately. / Cline 官方目录投稿仍待审核,手动接入不等于已上架。
Additional audio operations and controls
suno_add_stem: generate a selected voice/instrument stem with optional style, influence controls,variety, and explicitly opted-inmax_mode.suno_extract_stem: extract a selected stem and complementary remainder.suno_generate_sound: createone-shotorloopsound effects with optional BPM, musical key, and MP3 output selection.suno_adjust_speed: change playback speed from 0.25 to 4, optionally preserving pitch.
Prompt generation accepts variety; custom generation also accepts max_mode
and audio_weight. Enhanced max_mode has a higher API price and remains off
unless explicitly requested. Existing model defaults are unchanged.
suno_generate_with_custom_model accepts instrumental generation or lyric_prompt
in place of supplied lyrics, plus negative_tags, vocal_gender, weirdness,
style_influence, duration, and callback_url. Title and style are optional.
Studio projects (Beta)
suno_manage_project(request=..., idempotency_key=...) covers create, retrieve,
save, upload, add_track, generate_track, replace_section,
commit_candidate, remove_track, and render. Its action-specific schema
requires only the fields applicable to that operation.
Create a project, then retrieve and retain its complete state and latest
version_id.Save complete state, upload material, or add tracks using the current version.
For generation, supply a source audio ID and a completed project render audio ID. Source ranges use seconds; project timeline ranges use beats.
Poll accepted task IDs with
suno_get_taskuntilfinished_atis set and inspectresponse.success. Generating candidates does not modify the project.Choose a candidate and explicitly commit it to a track, then render with the latest version. Candidate playback alone does not prove a project is renderable.
Every write requires a caller-selected idempotency_key. Retry an uncertain
submission with the same key and identical request, or poll its original task ID;
never automatically generate a new key and resubmit a billable operation. On a
version conflict, retrieve the current project and re-plan the change.
suno_get_tasks_batch returns full JSON task records with polling guidance,
preserving model objects, project state/candidates, and media fields such as MIDI.
Available Tools
48 toolssuno_add_stemCInspect
Generate a selected instrument or voice stem for an existing audio. Poll suno_get_task.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | chirp-v5-5 | |
| style | No | ||
| title | No | ||
| prompt | No | ||
| variety | No | ||
| audio_id | Yes | Source audio ID. | |
| max_mode | No | Enhanced mode has a higher API price. Omitted/false keeps normal pricing. | |
| stem_type | Yes | ||
| weirdness | No | ||
| audio_weight | No | ||
| callback_url | No | ||
| negative_tags | No | ||
| style_influence | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden, and it only discloses that the operation is asynchronous via the polling hint. It says nothing about cost, whether the source audio is modified or a new asset is created, or what the task handle looks like, all of which matter for a generation call with 13 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the polling instruction. Nothing is wasted, though the terseness leaves the parameter surface entirely unexplained.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 13-parameter async generation tool with zero annotation coverage, the description is far too thin; an output schema exists so return values need not be explained, but the optional tuning parameters and cost/pricing implications are left completely unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 15%, so the description must compensate, and it barely does: 'selected instrument or voice stem' implies stem_type and 'existing audio' implies audio_id. The other eleven parameters (model, style, prompt, variety, max_mode, weirdness, audio_weight, callback_url, negative_tags, style_influence, title) get no mention at all.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: generate a chosen instrument or voice stem for an existing audio. That is clear enough to act on, but it never distinguishes itself from siblings like suno_extract_stem, suno_stems_music, or suno_all_stems_music, which sound closely related.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Poll suno_get_task' line gives the agent the follow-up workflow, which is genuinely useful. However, there is no guidance on when to pick this over suno_extract_stem or the all-stems variant, nor any stated prerequisites beyond needing an existing audio.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_adjust_speedAInspect
Adjust audio playback speed, optionally preserving pitch. Poll the returned task ID.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | Title of the adjusted audio. | |
| audio_id | Yes | ||
| keep_pitch | No | ||
| callback_url | No | ||
| speed_multiplier | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does disclose that the operation is asynchronous and returns a task ID requiring polling — the single most important behavioral fact. It omits whether the original asset is modified or a new one created, permission requirements, and how callback_url interacts with polling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with no filler; the core action comes first and the async polling note follows. Nothing wasted, nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists so return values need not be described, and the polling behavior is covered. But for a 5-parameter mutation tool with zero annotations and thin schema coverage, the description leaves too much (callback behavior, audio_id expectations, whether output is a new asset) unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 20% (only title documented), so the description must compensate. 'Optionally preserving pitch' usefully explains keep_pitch, but speed_multiplier's 0.25–4 range, audio_id's role, and callback_url's semantics are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource (adjust audio playback speed) plus a meaningful option (preserving pitch). It is clearly distinguishable from the generation-oriented siblings, though it never explicitly contrasts itself with e.g. suno_remaster_music or suno_extend_music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The line 'Poll the returned task ID' gives a real procedural cue for async usage, but there is no guidance on when to choose this tool versus neighboring audio-transform tools, nor any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_all_stems_musicAInspect
Separate a song into all individual stems (vocals, bass, drums, other instruments).
Splits the audio into multiple separate tracks for all components,
providing more granular stem separation than suno_stems_music. The service may
return two same-named sets of 12 stems without metadata that distinguishes the sets;
both sets are preserved so no audio is silently discarded.
Use this when:
- You need full multi-track stem separation
- You want individual instrument tracks for remixing
- You need bass, drums, and other instrument tracks separately
Returns:
Task ID and all stem separation results with individual track URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | ID of the audio to separate into all individual stems. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses a specific behavioral quirk: two same-named sets may be returned without metadata, and both are preserved to avoid data loss. Since annotations are absent, this adds valuable transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections, front-loads the purpose, and includes usage guidance and return info. Slightly verbose with the 'Returns' section but focused and useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is straightforward with 2 params and high schema coverage interesting for asynchronous behavior, but the behavioral quirk is disclosed. It sufficiently covers the key decision points and usage context, though it could mention callback_url usage more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (audio_id and callback_url), so the schema already explains them. The description adds minimal extra semantics, but baseline 3 applies given high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies the exact purpose: separating audio into all individual stems (vocals, bass, drums, other instruments). It clearly differentiates from the sibling tool suno_stems_music by noting it provides more granular separation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists 'Use this when' scenarios: full multi-track separation, remixing, needing individual instrument tracks. It also implicitly contrasts with suno_stems_music, aiding tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_archive_custom_modelAInspect
Archive a custom music model so it can no longer be used.
Archiving does not guarantee that model capacity is released.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the custom music model to archive. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It does add the caveat that archiving does not guarantee capacity release, which is useful, but it omits whether archiving is reversible, whether it affects existing generations or references, and what error or failure conditions may occur.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The core purpose is front-loaded, and the additional capacity caveat earns its place as an important behavioral note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description is mostly complete: it states what happens and adds a relevant caveat. It could improve by mentioning reversibility or confirmation behavior, but the core information needed to call it correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents the single parameter with 100% coverage: 'ID of the custom music model to archive.' The description adds no further semantic detail, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Archive'), a specific resource ('custom music model'), and the key effect ('can no longer be used'). This distinguishes it from sibling custom-model tools like creation, retrieval, listing, and generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The use case is clear: archive an existing custom model to disable its use. It does not explicitly name alternatives or state when not to use it, but the action itself and the effect are specific enough to guide selection among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_check_audio_availabilityAInspect
Check current-channel audio availability synchronously; success only reports available=true, not a guarantee that later operations succeed. Unknown availability raises an error, never false. Requires an API token; currently costs no Credits.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | Audio UUID from a completed Suno song's id, not the task_id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: it discloses synchronous behavior, the limited meaning of available=true, that unknown availability raises an error rather than returning false, API-token requirements, and zero current Credit cost. These are meaningful operational details beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded, moving from purpose to behavioral caveats to operational requirements without wasted text. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter availability check with a complete input schema and an output schema, the description supplies the behavioral and operational context an agent needs. Return-value details are appropriately left to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already fully documents the single audio_id parameter, including that it is a completed song UUID and not a task_id. The description adds no parameter-specific details, so the baseline of 3 is appropriate given 100% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: checking current-channel audio availability synchronously. It is clear what the tool does, though it does not explicitly differentiate itself from any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the availability-check framing and the note that success only reports available=true, but there is no explicit when-to-use guidance or comparison to alternatives. The synchronous nature and caveat provide some context, but exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_concat_musicAInspect
Concatenate extended song segments into a single complete audio file.
After extending a song multiple times with suno_extend_music, use this tool
to merge all the segments into one continuous audio file.
Use this when:
- You've extended a song one or more times
- You want a single audio file instead of multiple segments
- You're ready to finalize a long-form composition
Returns:
Task ID and the concatenated audio information with the full song.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | ID of the LAST segment of an extended song chain. Suno will automatically find and merge all connected segments. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when the concatenation is complete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains that the tool merges all connected segments and returns task ID and audio info, but does not disclose potential side effects, authorization needs, or rate limits. Behavior is straightforward but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise three-paragraph structure: purpose, usage guidance, and return value. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers main aspects: what it does, when to use, and what it returns. Has output schema, so return description is sufficient. Lacks explicit mention of async behavior (implied by callback_url) and error handling, but adequate for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters having descriptions. The tool description does not add additional parameter insights beyond the schema, meeting the baseline for high coverage but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool concatenates extended song segments into a single audio file. It specifically references the sibling tool suno_extend_music, distinguishing this tool's purpose from others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to use: after extending a song multiple times and wanting a single file. Includes clear use cases. No explicit when-not conditions, but the context is sufficient for a specialized utility tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_cover_musicAInspect
Create a cover or remix version of an existing song in a different style.
This generates a new version of a song with a different arrangement, genre,
or mood while keeping the core melody and lyrics.
Use this when:
- You want to hear a song in a different genre
- You want an acoustic/unplugged version of an electronic song
- You want to remix a song with a different vibe
Returns:
Task ID and the cover audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use for the cover. | chirp-v5-5 |
| style | No | Target music style for the cover. Examples: 'jazz, smooth, saxophone', 'acoustic folk, gentle guitar', 'electronic dance, high energy' | |
| prompt | No | Description of how you want the cover to sound. Examples: 'acoustic unplugged version', 'jazz lounge style', '80s synthwave remix' | |
| audio_id | Yes | ID of the audio to create a cover of. This is the 'id' field from a previous generation. | |
| persona_id | No | Persona ID for a specified-voice cover. For private voices from suno_create_voice, first upload the source with the same persona_id in suno_upload_audio, then use suno_upload_cover with its returned audio_id. Keep all steps on the same service channel; vocal_gender is not required and cannot replace the voice ID. | |
| audio_weight | No | Advanced parameter for cover operations. Controls how much the original audio influences the cover generation. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when the cover is complete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries most of the behavioral burden. It usefully states that the tool generates a new version while keeping core melody and lyrics, and that it returns a Task ID and cover audio information. However, it does not clarify asynchronous task handling, whether the original audio is left unchanged, permission requirements, or how the task ID should be used afterward.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and structured with a useful 'Use this when' list. It is reasonably concise, though the first two sentences overlap by both explaining the different-style cover concept.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given full schema coverage and an existing output schema, the description provides enough context to understand the tool's intent, common use cases, and return shape. The main remaining gap is sibling differentiation, especially versus remaster, mashup, upload_cover, and other generation/editing tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all seven parameters, including audio_id, style, prompt, persona_id, and callback_url, are already well documented in the schema. The description does not add parameter-specific meaning beyond the schema and mainly describes the overall cover/remix concept.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: create a cover or remix version of an existing song in a different style. It also clarifies that the new version changes arrangement, genre, or mood while keeping core melody and lyrics. It does not explicitly differentiate from similar siblings such as suno_remaster_music, suno_mashup_music, or suno_upload_cover.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It includes a clear 'Use this when' section with three concrete scenarios: hearing a song in a different genre, making an acoustic version, or remixing with a different vibe. This gives strong positive guidance, though it does not state when not to use it or name alternative sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_create_custom_modelAInspect
Create a reusable custom music model from authorized audio examples.
This is a paid, long-running operation. Call it only after the user confirms the source files and the 5.6-Credit list price.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the custom music model. | |
| audio_urls | Yes | 6 to 24 authorized audio URLs used to train the custom music model. | |
| callback_url | No | Webhook callback URL for custom model creation status. | |
| idempotency_key | No | Optional Idempotency-Key header value for safe retries. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosure. It reveals that this is a 'paid, long-running operation' and that it requires user confirmation before invoking, which is critical behavioral context. It could add more detail about asynchronous status or cost implications, but the provided warning is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs with no filler. The core purpose is front-loaded, and the important usage warning about payment and user confirmation is placed immediately after in a compact, readable format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of a full output schema and complete parameter descriptions, the description provides the key missing context: it is paid, long-running, and must only be invoked after explicit user confirmation. This is sufficient for an agent to decide whether and when to call this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all four parameters. The description's mention of 'source files' and 'authorized audio examples' maps to the audio_urls parameter but adds little new information beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb and resource: 'Create a reusable custom music model from authorized audio examples.' This clearly distinguishes the tool from generation tools like suno_generate_music and suno_generate_with_custom_model, since it creates a reusable artifact rather than generating music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit precondition: 'Call it only after the user confirms the source files and the 5.6-Credit list price.' This is strong guidance on when to invoke the tool. It does not explicitly name alternatives such as suno_generate_with_custom_model or suno_get_custom_model, but the precondition is clear enough for safe usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_create_personaBInspect
Create a new artist persona from an existing audio's vocal style.
This saves the vocal characteristics from a generated song so you can reuse
that same voice style in future generations. Great for maintaining consistency
across multiple songs.
Use this when:
- You generated a song and love the voice
- You want to create multiple songs with the same vocalist
- You're building an album with consistent vocal style
- You want to save a unique voice for future use
After creating a persona, use suno_generate_with_persona with the returned
persona_id to generate new songs with that voice.
Returns:
Persona ID that can be used with suno_generate_with_persona tool.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for this persona. Use a descriptive name that helps you remember the voice style. Examples: 'My Rock Voice', 'Soft Female Singer', 'Deep Male Baritone', 'Energetic Pop Vocalist' | |
| audio_id | Yes | ID of the audio to use as the persona reference. This should be a previously generated song whose vocal style you want to save and reuse. | |
| vocal_end | No | End time in seconds of the vocal segment to use from the audio. | |
| description | No | Description of the singer's style. Examples: 'Warm and breathy female voice with jazz influences', 'Powerful male rock vocalist with raspy tone' | |
| vocal_start | No | Start time in seconds of the vocal segment to use from the audio. Useful for isolating a specific vocal section. | |
| vox_audio_id | No | Optional audio ID used to generate a new singer's style by combining with the main audio. Useful for creating hybrid vocal personas. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It indicates a mutation (creation) but does not disclose side effects, prerequisites (e.g., existing audio), error conditions, or limitations. Basic transparency but lacking depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with purpose. The bullet list of use cases is clear and efficient, though slightly redundant with the prior sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers purpose, usage, workflow, and return value, but lacks behavioral details, error handling, and differentiation from related tools. Given no annotations, it is adequate but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add significant parameter context beyond what the schema already provides; it only mentions 'vocal characteristics' generically.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates an artist persona from existing audio's vocal style for reuse. It explains the purpose and workflow (using with suno_generate_with_persona) but does not explicitly differentiate from the similar sibling suno_create_voice.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists specific use cases (love a voice, multiple songs, album consistency) and provides a clear workflow for subsequent generation. However, it lacks guidance on when not to use the tool or alternatives like suno_create_voice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_create_voiceAInspect
Create a custom voice persona from an external audio URL.
Creates a voice persona directly from a publicly accessible audio URL
(MP3 or WAV format). The audio must contain clear vocals from a single
speaker and be at least 10 seconds long.
This is different from suno_create_persona which creates a persona from
a previously generated Suno audio. Use this to create a persona from
your own voice recordings or external audio files.
Use this when:
- You have an external audio file with clear vocals
- You want to create a voice persona from your own recordings
- You want to use a specific real-world voice as a persona
Returns:
Persona ID that can be used with suno_generate_with_persona tool.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name for the custom voice persona. | |
| audio_url | Yes | Publicly accessible URL of the audio file to create a voice from. Must be MP3 or WAV format, at least 10 seconds long, containing clear vocals from a single speaker without background noise or music. | |
| description | No | Description of the custom voice persona (optional). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden — and it handles this well by specifying hard input constraints (MP3/WAV, ≥10 seconds, single clear speaker, no background noise) and stating the output contract ('Persona ID that can be used with suno_generate_with_persona'). It does not cover failure modes or what happens when requirements are unmet, but for a persona-creation tool this is above-average disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured and front-loaded with a one-line purpose statement, followed by requirement clarification, sibling differentiation, a use-case bullet list, and a Returns note. Every section earns its place with no filler; only slightly longer than strictly necessary given the schema already covers parameter syntax.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a moderate-complexity tool (3 params, 1 required, output schema present), the description is thorough: it covers purpose, input requirements, the key sibling distinction (suno_create_persona vs suno_create_voice), appropriate use cases, and the returned value's downstream usage. The main ambiguity in a 35-tool sibling space is the persona-creation path, and that is fully resolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the audio_url parameter's schema entry already carries the detailed constraints (format, duration, single-speaker requirement). The description echoes the audio requirements but adds little beyond the schema for name and description, which are self-explanatory optional fields. Baseline 3 is appropriate; the heavy lifting is correctly done by the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope ('Create a custom voice persona from an external audio URL') and immediately distinguishes itself from the closest sibling: 'This is different from suno_create_persona which creates a persona from a previously generated Suno audio.' This explicit differentiation against the most confusable sibling makes 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Use this when:' bulleted list with three concrete scenarios, and implicitly states when NOT to use it by contrasting with suno_create_persona. It names the alternative tool directly and clarifies the external-vs-Suno-seed distinction, giving the agent clear decision guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_delete_personaAInspect
Delete a saved artist persona.
Permanently removes a previously created persona. This action cannot be undone.
Use this when:
- You want to remove an unused voice persona
- You need to clean up old personas
- You want to delete a persona you no longer need
Returns:
Confirmation of the deletion.
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | No | The user ID for ownership verification (optional). | |
| persona_id | Yes | The persona ID to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description explicitly states 'This action cannot be undone' and 'Permanently removes', disclosing destructive behavior. Also mentions return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points for usage and returns. Efficiently covers purpose, irreversibility, and output without extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool, description covers what, when, effect, and return value. Lacks prerequisites or error cases, but is adequate given low complexity and existing output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not add meaning beyond schema; only restates persona_id and mentions return value, not parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Delete a saved artist persona' and 'permanently removes a previously created persona'. Distinct from siblings like create and list personas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists three use cases (remove unused, clean up old, delete no longer needed). Does not mention alternatives or when not to use, but provides clear context for a destructive tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_extend_musicAInspect
Extend an existing song from a specific timestamp with new lyrics.
This allows you to continue a previously generated song, adding new sections
like additional verses, a bridge, or an outro.
Use this when:
- A generated song is too short and you want to add more
- You want to add a bridge or outro to an existing song
- You're building a longer song piece by piece
After extending multiple times, use suno_concat_music to merge all segments.
Returns:
Task ID and the extended audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| lyric | Yes | Lyrics for the extended section. Use section markers like [Verse], [Chorus], [Bridge], [Outro]. The extension will continue from where the original song left off. | |
| model | No | Model version to use for the extension. | chirp-v5-5 |
| style | No | Music style for the extension. Leave empty to maintain the original style, or specify to change the style mid-song. | |
| audio_id | Yes | ID of the audio to extend. This is the 'id' field from a previous generation result. | |
| continue_at | Yes | Positive continuation boundary in seconds; fractional seconds are preserved. Lyrics only affect new content after this boundary, not the source before it. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when the extension is complete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden. It signals an async task model ('Returns: Task ID') and describes the continuation semantics as adding new sections, but omits whether the source song is preserved or altered, whether credits are consumed per attempt, and how failures surface. The callback_url async behaviour lives only in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action in the first line, then scoped by a short bullet list and a pointer to the follow-up tool. The trailing 'Returns' block is largely redundant given the output schema, which costs it a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be spelled out, and the description still covers purpose, trigger conditions, and the downstream merge step. The main remaining gap is any mention of prerequisites such as needing a previously generated unfinished or extendable audio_id.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents lyric, model, style, audio_id, continue_at and callback_url in detail. The description restates the core idea of continuing from a timestamp but adds no format or constraint detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (extend) and resource (an existing song) plus the key scoping concept — a specific timestamp — and adds new lyrics. This is clearly distinguishable from sibling operations like suno_replace_section, suno_upload_extend, and suno_concat_music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use this when' block gives three explicit triggering scenarios (song too short, adding bridge/outro, building a longer song piece by piece) and routes the agent forward to suno_concat_music for merging. It doesn't state when NOT to use it — e.g. versus suno_replace_section for editing existing audio or suno_upload_extend for uploaded source audio — so a sibling-boundary gap remains.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_extract_stemCInspect
Extract a selected stem and its complementary remainder. Preserve both returned pairs.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | chirp-v5-5 | |
| audio_id | Yes | ||
| stem_type | Yes | ||
| audio_format | No | ||
| callback_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The only real disclosure is that two artifacts are returned and both should be kept; it says nothing about async behavior (callback_url), model selection effects, cost, or whether the source audio is modified or left intact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the action front-loaded and no filler. The second sentence is a useful operating instruction rather than padding, though the terseness contributes to the under-specification elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists, so return values needn't be explained, and "preserve both returned pairs" is a nice hint. But for a 5-parameter, no-annotation, job-style tool with 0% parameter documentation, the description is far too thin to let an agent invoke it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across 5 parameters, so the description must compensate and does not: audio_id, model, audio_format, and callback_url are never mentioned. Only "selected stem" loosely maps to stem_type, and even the 12 enum values are left to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It states a verb ("Extract") and a resource ("a selected stem"), so the basic action is inferable. However, "its complementary remainder" and "Preserve both returned pairs" are unusual phrasings that leave the actual operation ambiguous, and nothing distinguishes this from nearby siblings like suno_extract_vocals, suno_stems_music, or suno_all_stems_music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use guidance, no prerequisites (e.g. audio must already exist / be processed), and no mention of the alternative stem-extraction tools an agent must choose between. The agent must guess which of the several stem-related siblings to call.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_extract_vocalsAInspect
Extract the vocal track from a generated song (stem separation).
Isolates the vocals from a song, removing instrumental background.
Useful for remixing, creating acapella versions, or persona creation.
Use this when:
- You want an isolated vocal track
- You need vocals for a remix or mashup
- You want to create a persona from specific vocal segments
Returns:
Task ID and extracted vocal audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | The song ID to extract vocals from. | |
| vocal_end | Yes | Required extraction end time in seconds. It must be greater than vocal_start, with a range shorter than 30 seconds. | |
| vocal_start | Yes | Required extraction start time in seconds. The selected range must be shorter than 30 seconds. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the core behavior (isolating vocals, removing instrumental background) and that it returns a Task ID and vocal info, but it does not explain the asynchronous nature, whether the original song is modified, or how the extracted audio is delivered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening, a 'Use this when' list, and a Returns section. It is concise enough but could be tightened by merging the first two sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not detail return values, but it should mention that this is an asynchronous task (Task ID implies it) and that the audio must be Suno-generated. The description covers use cases and return info but misses operational nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add any parameter-specific meaning beyond the schema; it only implies time-based extraction without elaborating on the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts the vocal track from a song (stem separation), using specific verb 'Extract' and resource 'vocal track'. It distinguishes from siblings like suno_all_stems_music by specifying it isolates only vocals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Use this when' bullet points covering isolated vocals, remix/mashup needs, and persona creation. However, it does not mention when not to use it or alternatives like suno_stems_music for full stem separation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_generate_custom_musicAInspect
Generate AI music with full control over lyrics, title, and style (Custom Mode).
This gives you complete creative control over the song. You provide the lyrics
with section markers, and Suno generates the melody and arrangement.
Use this when:
- You have specific lyrics you want to use
- You want precise control over the music style
- You need a specific song title
- You want to specify vocal gender (v4.5+ models)
- You want the API to auto-generate lyrics from a prompt (use lyric_prompt)
- You need a specific track length (use duration)
For quick generation without writing lyrics, use suno_generate_music instead.
Returns:
Task ID and generated audio information including URLs, title, lyrics, and duration.
| Name | Required | Description | Default |
|---|---|---|---|
| lyric | No | Song lyrics with section markers. Use [Verse], [Chorus], [Pre-Chorus], [Bridge], [Outro], [Intro] to structure the song. Example: [Verse 1] Walking down the empty street Rain is falling at my feet [Chorus] But I keep moving on Until the break of dawn. Leave empty when using lyric_prompt to auto-generate lyrics. | |
| model | No | Suno model version. 'chirp-v5-5' or 'chirp-v5' recommended for best quality. | chirp-v5-5 |
| style | No | Music style description. Be specific about genre, mood, tempo, and instruments. Examples: 'upbeat pop rock, energetic drums, electric guitar', 'acoustic folk, gentle, fingerpicking', 'dark electronic, synthwave, 80s retro' | |
| title | No | Title of the song. Keep it concise and memorable. | |
| variety | No | Result diversity: off, normal, high, extra, or max. | |
| duration | No | Target length in whole seconds (10-360). Only generate uses duration; the model may ignore this target. Actual length comes from the result. | |
| max_mode | No | Enable enhanced generation with a higher API price. Omitted/false keeps normal pricing. | |
| weirdness | No | Advanced parameter for custom mode. Controls how unusual/experimental the generation is. | |
| audio_weight | No | Audio influence; 0 is a valid explicit value. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when the audio is generated. | |
| instrumental | No | If true, generate instrumental version (lyrics will be ignored). Default is false. | |
| lyric_prompt | No | Prompt text for auto-generating lyrics. Only used when custom is true and lyric is empty. | |
| vocal_gender | No | Preferred vocal gender. 'f' for female, 'm' for male, empty string for AI to decide. Only works with v4.5+ models. | |
| negative_tags | No | Styles or genres to exclude in custom mode (custom=true). The API currently sets no fixed character limit, but overly long content may still fail; keep it concise. Examples: 'heavy metal, screaming', 'autotune, electronic' | |
| style_influence | No | Advanced parameter for custom mode. Controls how strongly the style prompt influences the generation. | |
| variation_category | No | Variation intensity for v5+ models. 'high' for maximum variation, 'normal' for balanced, 'subtle' for minimal changes. Only supported in chirp-v5 and above. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. It reveals that the call returns a Task ID (implying asynchronous job flow) and lists what comes back, but it says nothing about cost/pricing tiers (only the schema mentions max_mode pricing), polling, or the fact that the tool produces a new artifact with no destructive side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded purpose sentence, a tight bulleted usage list, the sibling redirect, and a return summary. Well sized for 16 parameters; the bullet list mildly duplicates the schema's own descriptions but never buries the key routing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema and full param coverage mean the description needn't explain fields, and it correctly covers purpose and routing. However, for a 16-param async generation tool with no annotations, it omits how to follow up on the Task ID and the lyric-vs-lyric_prompt vs instrumental precedence, which an agent needs to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every one of the 16 parameters thoroughly. The description only restates the lyric/duration/vocal_gender behaviors that the schema spells out in more detail, adding no new semantics such as how lyric_prompt interacts with instrumental mode.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate AI music') and names the distinguishing mode: full control over lyrics, title, and style (Custom Mode). The contrast with the plain generation sibling is made explicit, so an agent can route without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
An explicit 'Use this when' list enumerates the selecting conditions (own lyrics, precise style control, title, vocal gender, lyric_prompt, duration) and closes with the direct alternative: use suno_generate_music for quick generation without lyrics. When-to-use and when-not-to-use are both present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_generate_inspoAInspect
Generate brand-new music inspired by 1 to 4 reference audios (Suno Inspo / 灵感创作).
Unlike a cover, inspo does not reproduce the source tracks - it draws stylistic
inspiration from them and composes a fresh song guided by your prompt and style tags.
Use this when:
- You have reference tracks whose vibe you want to riff on
- You want a new song "in the style of" some audio you provide
Returns:
Task ID and generated audio information including URLs, title, lyrics, and duration.
| Name | Required | Description | Default |
|---|---|---|---|
| lyric | No | Lyrics in custom mode; ignored for instrumental generation. | |
| model | No | Suno model version to use for the inspired generation. | chirp-v5-5 |
| style | No | Optional music style tags. Examples: 'acoustic, folk, warm', 'lo-fi, chill, instrumental' | |
| title | No | Optional title of the song. | |
| custom | No | Enable custom mode; use lyric or lyric_prompt for lyrics. | |
| prompt | No | Optional lyrics or creative brief for the new song. Leave empty to let Suno write its own lyrics. | |
| audio_urls | Yes | 1 to 4 publicly accessible reference audio URLs used as inspiration. Suno extracts stylistic ideas from these tracks (rather than copying them) to create a brand-new song. Tip: avoid well-known catalog recordings, which may be rejected by Suno's copyright check. | |
| persona_id | No | Voice ID, not an audio ID. Availability with Inspo depends on the service channel. | |
| audio_weight | No | How strongly the reference audios influence the result, 0 to 1. Higher means closer to the references' vibe. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when generation completes. | |
| instrumental | No | Generate instrumental music without lyrics. | |
| lyric_prompt | No | Auto-lyric prompt, only when custom=true and lyric is empty. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does add real behavioral context: it discloses that generation is asynchronous (returns a Task ID), and warns that well-known catalog recordings may be rejected by Suno's copyright check — a failure mode an agent could not infer from the schema. It omits cost/credit implications and processing-time expectations, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then the cover contrast, then a scannable 'Use this when' list, then returns. Slightly padded — the parenthetical dual-language name and a returns block that duplicates output-schema content are low-value — but no sentence is confusing or out of order.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-param generation tool whose parameters are fully documented in schema and which has an output schema, the description supplies what structured fields cannot: the inspo-vs-cover distinction, async task semantics, and the copyright rejection caveat. Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, including the audio_urls copyright tip and audio_weight semantics. The description only echoes the 1-4 reference-audio limit and mentions prompt/style tags generically, adding no syntax or format detail beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate brand-new music inspired by 1 to 4 reference audios') and immediately delimits it against the nearest sibling concept: 'Unlike a cover, inspo does not reproduce the source tracks.' An agent can distinguish this from suno_cover_music and suno_generate_music without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
An explicit 'Use this when' block names two concrete selection conditions (reference tracks to riff on; 'in the style of' requests) and the cover contrast functions as an exclusion. It does not name sibling tools directly or say when to prefer suno_generate_music / suno_upload_extend instead, so routing is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_generate_lyricsAInspect
Generate song lyrics from a text prompt.
Creates structured lyrics with proper song sections (Verse, Chorus, Bridge, etc.)
based on your description. The generated lyrics are formatted and ready to use
with suno_generate_custom_music.
Use this when:
- You need lyrics but don't want to write them yourself
- You want AI-generated lyrics for a specific theme or mood
- You need properly structured lyrics with section markers
The output includes section markers like [Verse], [Chorus], [Bridge] that
Suno's music generation understands.
Returns:
Generated lyrics with title, status, and formatted text with section markers.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version for lyrics generation. 'default' works well for most lyrics. 'remi-v1' offers an alternative style. | default |
| prompt | Yes | Description of the lyrics you want. Include theme, mood, genre, and any specific elements. Examples: 'A romantic ballad about lost love and rainy nights', 'An upbeat pop song about summer vacation', 'A motivational hip-hop track about overcoming obstacles' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that lyrics include section markers and are formatted for Suno's music generation, and mentions output fields (title, status, formatted text). However, it omits behavioral traits like error handling, rate limits, or cost implications, which are important for a generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is approximately 100 words, front-loaded with the key action, followed by usage bullets and output summary. Every sentence serves a purpose with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only 2 parameters, and the description covers purpose, usage scenarios, and output format. Given the existence of an output schema (not shown), it appropriately defers return value details. However, it lacks information on potential errors or limits, preventing a full 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal extra semantic value beyond the schema, just confirming that the prompt is a description and that 'default' is recommended for the model parameter. It does not clarify parameter constraints or format requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates song lyrics from a text prompt with structured sections like Verse and Chorus. It differentiates from sibling tools by mentioning integration with suno_generate_custom_music, but does not explicitly contrast with other lyrics-related tools like suno_mashup_lyrics, hence not a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides three bullet-point use cases ('Use this when:') covering common scenarios. However, it lacks guidance on when NOT to use this tool (e.g., if you already have lyrics or need to mashup) and does not compare against alternative sibling tools, limiting its decision-making utility.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_generate_musicAInspect
Generate AI music from a text prompt using Suno's Inspiration Mode.
This is the simplest way to create music - just describe what you want and Suno
will automatically generate appropriate lyrics, melody, style, and arrangement.
Use this when:
- You want quick music generation with minimal input
- You don't have specific lyrics in mind
- You want Suno to be creative with the arrangement
For full control over lyrics and style, use suno_generate_custom_music instead.
Returns:
Task ID and generated audio information including URLs, title, lyrics, and duration.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Suno model version. 'chirp-v5-5' is the latest and recommended for best quality with 8-minute max duration. 'chirp-v4-5' is a reliable choice for most use cases. Older models (v3, v3-5, v4) have shorter duration limits. | chirp-v5-5 |
| prompt | Yes | Description of the music to generate. Be descriptive about genre, mood, instruments, and theme. Examples: 'A happy birthday song with acoustic guitar', 'Epic orchestral battle music with dramatic choir', 'Chill lo-fi hip hop beat for studying' | |
| variety | No | Result diversity: off, normal, high, extra, or max. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when the audio is generated. | |
| instrumental | No | If true, generate instrumental music without vocals. Default is false (with vocals). | |
| variation_category | No | Variation intensity for v5+ models. 'high' for maximum variation, 'normal' for balanced, 'subtle' for minimal changes. Only supported in chirp-v5 and above. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose key behavior beyond the schema (Suno auto-generates lyrics, melody, style, arrangement) and that a task ID plus audio URLs are returned, but it never explains the asynchronous lifecycle (poll via suno_get_task vs. callback_url), credit cost, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core verb and mode, then a scannable 'Use this when' list and a single alternative pointer. The 'Returns:' block partially duplicates the existing output schema, which is minor waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and parameter coverage is complete, so the description need only supply purpose, routing, and creative-behavior context, which it does. The main remaining gap is the async task/polling workflow, which an agent would need in order to act on the returned task ID.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all six parameters (model, prompt, variety, callback_url, instrumental, variation_category) are documented in the schema with examples and defaults. The description adds no parameter-level guidance, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate AI music from a text prompt') and names the Inspiration Mode, which distinguishes it from the custom-music path. However, the sibling suno_generate_inspo is not addressed, leaving some ambiguity about which 'inspiration' flavor this is.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit 'Use this when' list (quick generation, no lyrics in mind, wants Suno to be creative) and routes the agent to suno_generate_custom_music for full control. This is exactly the when/when-not/alternative structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_generate_soundCInspect
Create a one-shot or looping sound effect. Optional bpm and musical key guide the result.
| Name | Required | Description | Default |
|---|---|---|---|
| bpm | No | ||
| key | No | ||
| model | No | chirp-v5-5 | |
| sound | Yes | Description of the sound effect. | |
| sound_type | Yes | ||
| audio_format | No | ||
| callback_url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, yet it says nothing about this being an asynchronous generation job, what callback_url does, whether results must be polled via suno_get_task, cost, or rate limits. It discloses only that bpm/key are optional guides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the core action, with no filler. Brevity comes at the cost of coverage rather than from trimming redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, but with 7 parameters, 14% schema coverage, and no annotations, an agent still lacks guidance on model selection, output format, and asynchronous delivery. Incomplete 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 14% (just the 'sound' field), so the description must compensate. It mentions bpm, key, and the one-shot/loop choice but leaves the 10-value model enum, audio_format, and callback_url completely unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Create a ... sound effect') and immediately scopes it to the two sound types. It is clearly distinct from the many music-generation siblings, though it does not explicitly name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description never says when to pick this over suno_generate_music, suno_generate_inspo, or suno_generate_custom_music, nor any prerequisites. The only implied guidance is the one-shot vs loop distinction, which is already the sound_type enum.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_generate_with_custom_modelAInspect
Generate with a ready custom model, including instrumental or automatic lyrics.
Submission returns a task ID. Poll suno_get_task until finished_at is set and
inspect response.success. This operation never falls back to another model.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Ready custom music model ID to generate with. | |
| lyric | No | Lyrics; required unless instrumental or lyric_prompt is supplied. | |
| style | No | Optional music style. | |
| title | No | Optional song title. | |
| duration | No | Requested duration in seconds; availability depends on the custom model. | |
| weirdness | No | ||
| callback_url | No | HTTPS webhook for the completed task. | |
| instrumental | No | Generate without vocals. Default false. | |
| lyric_prompt | No | Generate lyrics from this description. | |
| vocal_gender | No | Vocal preference: f or m. | |
| negative_tags | No | Styles to exclude. | |
| style_influence | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description genuinely carries the load: it discloses that the call is asynchronous and returns a task ID, that completion must be polled via suno_get_task, that success must be checked via response.success, and that there is no fallback to another model. It omits cost/credit or permission implications of a generation call, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, each front-loaded with an actionable fact: what it does, how to confirm the async result, and the no-fallback constraint. No filler and nothing buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter generation tool with an output schema and high schema coverage, the description supplies what structured fields cannot: the async task lifecycle and the no-fallback trait. It stops short only on prerequisites for obtaining a 'ready' model ID and any cost implication.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (83%), so the schema already documents id, lyric, instrumental, callback_url, lyric_prompt and others, making a baseline of 3 appropriate. The description's only added meaning is the instrumental/automatic-lyrics dichotomy; the undocumented params (weirdness, style_influence) are left unexplained in both places.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: generate audio using a ready custom model, with instrumental or automatic lyrics. This is clear but does not explicitly distinguish itself from the similarly named siblings suno_generate_custom_music and suno_generate_music, so the reader must infer that 'custom model' means a model object rather than custom music.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a concrete post-call workflow (poll suno_get_task until finished_at is set, inspect response.success) and a useful non-behavior ('never falls back to another model'). However, it never states when to prefer this over suno_generate_music or suno_generate_custom_music, or what prerequisite produces a 'ready' model ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_generate_with_personaAInspect
Generate music using a saved artist persona for consistent vocal style.
This allows you to maintain a consistent voice/singing style across multiple
songs by using a previously saved persona.
Use this when:
- You want multiple songs with the same vocal style
- You're creating an album or series with consistent vocals
- You found a voice you like and want to reuse it
First create a persona with suno_create_persona, then use its ID here.
Returns:
Task ID and generated audio information with the persona's voice applied.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use. | chirp-v5-5 |
| prompt | Yes | Description of the music to generate. The persona's voice will be applied to this new song. | |
| audio_id | Yes | ID of a reference audio to base the generation on. | |
| persona_id | Yes | ID of the persona to use. Get this from suno_create_persona tool. The persona defines the vocal style and characteristics. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when the audio is generated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are declared, so the description carries the full burden of behavioral disclosure. It does reveal that the operation is an async-style generation that returns a Task ID and applies the persona's voice, and that it re-uses a previously created persona. It omits behavior details such as credit usage, how long tasks run, failure modes if the persona is invalid, or whether the reference audio is mixed -- are significant gaps for a music generation API with zero annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the 'Use this when' lists plus the prerequisite note come early, so an agent gets the gist quickly. Only minor redundancy: the second paragraph ('This allows you to maintain a consistent voice...') restates the lead sentence about consistent vocal style. The overall length is still justifiable and well-bulleted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description stipulates the workflow, the intended use, and the async Task/audio return, while an output schema exists to cover return values in a structured way. The noteworthy missing part is distinguishing this from the nearest sibling, suno_generate_with_persona_vox, and no mention of authenticity or quota effects. Since no annotations are present, the description should have compensated for these gaps a bit more sharply.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3 even with no additional parameter description. The text does add a workflow note ('use its ID from suno_create_persona') but that is already present in the schema's persona_id description. It adds no semantic value beyond the structured input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The lead sentence names a specific verb ('Generate music'), a specific resource ('a saved artist persona'), and the benefit ('consistent vocal style'). It clearly differentiates this generation-flavored tool from the many non-generative siblings while establishing how it relates to the prerequisite suno_create_persona. Distinguishes the intended flow with confidence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit 'Use this when' bulleted list covering the three main use cases, plus a clear upstream instruction to create the persona first with suno_create_persona. It does not spell out when NOT to use this tool still, e.g., choosing suno_generate_music awkward or persona_vox, so some guidance left is to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_generate_with_persona_voxAInspect
Generate music using a saved artist persona with VOX-specific consistency.
Similar to suno_generate_with_persona but uses the artist_consistency_vox action,
which is optimized for vocal consistency with a persona.
Use this when:
- You want multiple songs with the same vocal style using VOX mode
- You need stricter vocal consistency than suno_generate_with_persona provides
- You're creating content with a specific voice persona
First create a persona with suno_create_persona or suno_create_voice, then use its ID here.
Returns:
Task ID and generated audio information with the persona's voice applied.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use. | chirp-v5-5 |
| prompt | Yes | Description of the music to generate. The persona's voice will be applied to this new song. | |
| audio_id | Yes | ID of a reference audio to base the generation on. | |
| persona_id | Yes | ID of the persona to use for the VOX generation. Get this from suno_create_persona or suno_create_voice tool. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the underlying action (artist_consistency_vox), its optimization for vocal consistency, that it is stricter than the sibling, and that it returns a Task ID and generated audio information. This gives the agent a solid understanding of behavior and expected output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a front-loaded purpose, clear bullet points for usage, and a brief returns note. Every sentence earns its place without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, an output schema, and no annotations, the description covers purpose, usage conditions, prerequisites, and return type comprehensively. It provides everything an agent needs to decide when to call it and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter. The description adds value by explaining the persona_id prerequisite (create persona via suno_create_persona or suno_create_voice) and by implying the vocal consistency context, but it does not add meaning to audio_id, model, or callback_url beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Generate music'), resource ('saved artist persona with VOX-specific consistency'), and explicitly differentiates it from the sibling suno_generate_with_persona by mentioning the artist_consistency_vox action and stricter vocal consistency. This is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Use this when' bullets listing concrete conditions (multiple songs, stricter vocal consistency, specific voice persona), names the alternative (suno_generate_with_persona), and gives a prerequisite (create persona first). This is thorough guidance that leaves no ambiguity about when to select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_custom_modelAInspect
Retrieve a single custom music model by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ID of the custom music model to retrieve. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source of behavioral information. 'Retrieve' clearly communicates a read-only operation with no mutation side effects, which is the main behavioral concern for a get-by-ID tool. It does not go further into error or auth behavior, but the operation itself is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. The scope constraint ('single', 'by ID') appears immediately, and every word contributes to operational clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter get-by-ID tool with an output schema available, the description is sufficient for an agent to select and invoke it correctly. No additional return-format or side-effect details are necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the parameter: id is already documented as 'ID of the custom music model to retrieve.' The description only restates this as 'by ID' and adds no new semantic detail, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (Retrieve), a concrete resource (custom music model), and a precise scope (a single one, by ID). This makes it easy to distinguish from sibling tools like suno_list_custom_models (many models) or suno_create_custom_model/suno_delete_custom_model.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The by-ID phrasing implies the right usage context: you have an ID and want one model. However, the description gives no explicit guidance about when to choose this over list_custom_models or other siblings, and it does not state exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_lyric_format_guideAInspect
Get guidance on formatting lyrics for Suno music generation.
Shows how to structure lyrics with section markers for best results.
Following this format helps Suno understand the song structure and
generate appropriate melodies for each section.
Returns:
Complete guide with section markers, examples, and tips.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It describes the tool as returning a guide, which implies a safe, read-only operation, but does not explicitly state it has no side effects or is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with four sentences including the Returns line. It is front-loaded and clear, though it could be slightly more efficient without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, has output schema), the description completely covers its purpose and return value. It explains the output format and benefits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so no parameter explanations are needed. The description adds value by explaining the return value: 'Complete guide with section markers, examples, and tips.' Baseline 4 is appropriate for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides guidance on formatting lyrics for Suno music generation, specifically with section markers. It is distinct from sibling tools like suno_generate_lyrics which actually generate lyrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly state when to use this tool versus alternatives. It is implied that it should be used before generating lyrics or custom music, but no explicit when-not-to-use or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_midiAInspect
Get MIDI data extracted from a generated song.
Converts the song's melodic and rhythmic information into MIDI format,
which can be used in digital audio workstations (DAWs) for further editing.
Use this when:
- You want to edit the melody in a DAW
- You need note-level data from the song
- You want to recreate the song with different instruments
Returns:
Task ID and MIDI data information.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | The song ID to get MIDI data for. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the return type ('Task ID and MIDI data information'), but does not disclose whether the operation is synchronous or asynchronous, how long it might take, or any side effects. The callback_url parameter suggests async behavior, but this is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a one-liner, an explanatory paragraph, a bullet list for usage, and a returns line. It is relatively concise, but the explanatory paragraph could be merged with the usage list. Every sentence earns its place, but some redundancy exists (e.g., converting to MIDI for DAWs is stated twice).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (2 params, no enums, simple return) and the presence of an output schema, the description is fairly complete. It covers purpose, usage scenarios, and return type. Minor gaps include lack of error/async handling details, but for a retrieval tool this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds 'song ID' for audio_id and 'MIDI data information' for the return, but does not meaningfully extend understanding beyond the schema's 'The song ID' and 'Webhook callback URL for asynchronous notifications.' Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get MIDI data extracted from a generated song.' The verb 'Get' and resource 'MIDI data' are specific. Among 32 sibling tools, none duplicate this exact function (e.g., suno_get_wav, suno_get_mp4 are different formats), so it distinguishes well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use this when:' section provides three explicit scenarios (editing melody in DAW, need note-level data, recreate with different instruments). It gives clear context for when to use, though it does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_mp3AInspect
Get the MP3 format of a generated song.
Converts the song to MP3 format, which is compact and widely supported
across playback devices and platforms.
Use this when:
- You need a compressed and portable audio format
- You want to share songs easily across platforms
- You prefer smaller file sizes than WAV
Returns:
Task ID and MP3 audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | The song ID to get the MP3 format for. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It discloses that conversion to MP3 occurs and that a Task ID plus MP3 audio info are returned, but it does not explain asynchronous behavior or callback semantics despite callback_url being a parameter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and well-organized with clear sections: what it does, when to use it, and what it returns. The wording is efficient and front-loaded with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter documentation, the description provides enough context for basic invocation and selection. The main missing element is an explicit note about the asynchronous task lifecycle, though 'Task ID' implicitly hints at it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both audio_id and callback_url already documented. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets/converts a generated song to MP3 format, with explicit compression and portability rationale. The format-specific focus distinguishes it from sibling tools like suno_get_wav, suno_get_mp4, and suno_get_midi.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a concrete 'Use this when' list covering compressed audio needs, sharing, and smaller file sizes. It does not explicitly name sibling alternatives or exclusion cases, which is the only gap preventing a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_mp4AInspect
Get an MP4 video version of a generated song.
Converts a generated audio into an MP4 video file with visualizations.
Useful for sharing on social media or video platforms.
Use this when:
- You want a video version of a generated song
- You need to share the song on video platforms
- You want a visual representation of the audio
Returns:
Task ID and MP4 video information.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | The song ID to get the MP4 video for. This is the 'id' field from a previous audio generation result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It explains the conversion to video and mentions the return type (Task ID and MP4 info). However, it does not disclose potential asynchronous behavior, processing time, or failure conditions, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear opening sentence, followed by bullet points for usage scenarios. Every sentence adds value, and the structure is front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and an output schema, the description adequately covers purpose, usage, and return type. It lacks details on potential constraints or async processing, but these are minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter audio_id is already well-documented in the input schema, including its source. The description adds no additional semantic meaning beyond the schema, so a baseline score of 3 is appropriate given 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'MP4 video version of a generated song'. It differentiates from siblings like suno_get_wav and suno_get_midi by specifying the MP4 format, making 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Use this when:' bullet points listing three usage scenarios. Does not include when not to use or directly name alternatives, but the context is clear enough for an AI to select this tool for video needs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_taskAInspect
Query the status and result of a music generation task.
Use this to check if a generation is complete and retrieve the resulting
audio URLs, titles, lyrics, and other metadata.
Use this when:
- You want to check if a generation has completed
- You need to retrieve audio URLs from a previous generation
- You want to get the full details of a generated song
Task states:
- 'pending': Generation is still in progress — KEEP POLLING
- 'processing': Generation is being processed — KEEP POLLING
- 'complete': Generation finished successfully
- 'failed': Generation failed (check error message)
The API may omit its top-level state. The MCP normalizes response.success=true to
complete and response.success=false to failed; responses without a success field
remain pending.
Returns:
Task status and generated audio information including URLs, title, lyrics, and task timing metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID returned from a generation request. This is the 'task_id' field from any suno_generate_*, suno_extend_*, suno_cover_*, or suno_concat_* tool response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and excels: it documents task states, clarifies polling behavior, and explains the MCP's normalization of omitted success fields. This gives agents a detailed model of the tool's runtime behavior beyond the basic read/edit nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a leading purpose sentence, 'Use this when' bullets, task state definitions, and a returns summary. It is front-loaded, scannable, and every sentence contributes value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple polling nature and the presence of an output schema, the description covers all necessary context: when to use, states to expect, normalization behavior, and what results are returned. It fully equips an agent to correctly invoke and interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% parameter coverage and a detailed description of task_id, including its source from generation tools. The description adds minimal extra parameter nuance, mostly reiterating 'previous generation' and 'task_id' provenance, so it meets the baseline without significantly enhancing schema semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Query') and resource ('a music generation task'), and clearly distinguishes it from sibling generation/composition tools by focusing on status polling and result retrieval. The opening line and subsequent details unambiguously identify the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Use this when' bullets covering polling and result retrieval, which gives clear contextual signals. However, it does not mention when not to use it or alternative tools (e.g., suno_get_tasks_batch for batch queries), so it lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_tasks_batchAInspect
Query multiple music generation tasks at once.
Efficiently check the status of multiple tasks in a single request.
More efficient than calling suno_get_task multiple times.
Use this when:
- You have multiple pending generations to check
- You want to get status of several songs at once
- You're tracking a batch of generations
The MCP treats response.success=true as complete and response.success=false as
failed when the API omits its top-level state.
Returns:
Status and audio information for all queried tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| task_ids | Yes | List of task IDs to query. Maximum recommended batch size is 50 tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It adds meaningful context about how the MCP interprets response.success=true as complete and response.success=false as failed when the API omits its top-level state, which is useful beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement, usage bullets, a behavioral note, and a returns summary. However, the opening phrases are somewhat redundant: 'Query multiple...', 'Efficiently check...', and 'More efficient than...' all convey similar information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple one-parameter query tool with an output schema, and the description covers the purpose, batching context, special status interpretation, and return content. It provides enough information for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the only parameter, task_ids, is already described with its purpose and maximum recommended batch size. The description adds little beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb and resource ('Query multiple music generation tasks') and clearly distinguishes this tool from the sibling suno_get_task by noting it is more efficient than calling the single-task version multiple times.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit 'Use this when' section with concrete scenarios (multiple pending generations, several songs at once, tracking a batch) and names suno_get_task as the less efficient alternative. It does not explicitly state when not to use it, such as for a single task.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_timingAInspect
Get timing and subtitle data for a generated song.
Returns word-level timing information that can be used for
synchronized lyrics display, karaoke, or subtitle generation.
Use this when:
- You need synchronized lyrics/subtitles
- You want to create karaoke-style displays
- You need word-level timing for video editing
Returns:
Timing data with word-level timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | The song ID to get timing/subtitle data for. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. Discloses that it returns word-level timing data, but does not specify the structure or format of the output. For a read-only tool, this is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, well-structured with a purpose statement, return description, bulleted use cases, and a 'Returns:' line. Every sentence is necessary and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, no nested objects, output schema present), the description covers purpose, usage, and return type adequately. Could mention prerequisites (song must be generated) but overall complete enough for an agent to decide.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (only audio_id). The description merely echoes the schema's parameter definition ('The song ID to get timing/subtitle data for.'), adding no additional semantic value beyond what's already documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get timing and subtitle data for a generated song.' Differentiates from siblings like suno_get_midi or suno_get_wav by focusing on timing/subtitle info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Use this when:' list (synchronized lyrics, karaoke, video editing), giving clear context. Lacks explicit when-not-to-use or alternative tool references, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_get_wavAInspect
Get the lossless WAV format of a generated song.
Converts the song to high-quality uncompressed WAV format.
WAV files are larger but have no quality loss compared to MP3.
Use this when:
- You need a lossless audio format for production
- You want the highest quality audio output
- You need uncompressed audio for further processing
Returns:
Task ID and WAV audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | The song ID to get the WAV format for. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries full burden. It mentions conversion to WAV and file size/quality trade-off, but lacks details on prerequisites (e.g., song must be generated), whether the tool is asynchronous, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise with a few sentences and bullet points. Every sentence adds value: main purpose, quality comparison, use cases, and return type. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, output schema exists), the description is mostly complete. It explains return type and provides usage context. Could mention that the task might be asynchronous or require prior generation, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description does not add meaning beyond the schema; it only mentions 'song ID' and 'webhook callback' which are already described in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description starts with 'Get the lossless WAV format of a generated song', specifying verb and resource. It clearly distinguishes from sibling tools like suno_get_midi and suno_get_mp4 by focusing on WAV format.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a 'Use this when:' list with three bullet points (lossless, highest quality, production processing), providing clear context. However, it does not explicitly exclude alternatives or mention when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_list_actionsAInspect
List all available Suno API actions and corresponding tools.
Reference guide for what each action does and which tool to use.
Helpful for understanding the full capabilities of the Suno MCP.
Returns:
Categorized list of all actions and their corresponding tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full transparency burden. The verb 'list' implies a safe, read-only operation, but the description does not explicitly state lack of side effects or dependencies. Adequate but not explicit.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, followed by usage context and return description. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple listing tool, the description fully conveys purpose, usage, and output structure (categorized list). Given an output schema exists, further detail is unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (100% coverage). Description adds no parameter details, but baseline for zero parameters is 4. No additional meaning needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all available Suno API actions and corresponding tools. It distinguishes itself from sibling tools (specific action tools) by being a meta-level reference guide.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description positions the tool as a 'reference guide for understanding the full capabilities,' implying use for exploration. However, it does not explicitly state when to use it vs alternatives, though context makes it clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_list_custom_modelsBInspect
List custom music models for the current Suno application.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of custom models to return. | |
| offset | No | Number of custom models to skip for pagination. | |
| status | No | Optional status filter for custom models. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'List custom music models' and reveals nothing about pagination behavior, default sorting, whether archived or failed models are included by default, or the read-only nature of the operation. A tool with pagination parameters (limit/offset) and a status filter should at least mention how defaults behave.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It states the action, resource, and scope efficiently. There is no redundant information, and the structure is appropriate for a simple list operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity and the presence of an output schema, the description covers the core purpose, and the schema covers parameters. However, the complete absence of usage guidelines and behavioral context leaves the agent without enough information to decide when to invoke this tool over alternatives or to anticipate default filtering/pagination behavior. It is minimally viable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter (limit, offset, status) already documented in the input schema. The tool description adds no additional parameter context, so the baseline of 3 applies. The schema adequately explains the parameters, but the description does not enhance them further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the verb ('List'), the resource ('custom music models'), and the scope ('for the current Suno application'). This distinguishes it from sibling tools like suno_list_models (which likely lists base models) and suno_get_custom_model (which retrieves a single model). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as suno_get_custom_model, suno_list_models, or suno_generate_with_custom_model. The description simply states what it does without any context about prerequisites, selection criteria, or when another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_list_modelsAInspect
List all available Suno models and their capabilities.
Shows all available model versions with their limits, features, and
recommended use cases. Use this to understand which model to choose
for your music generation.
Model comparison:
- chirp-v6: Current v6 model
- chirp-v6-wild: v6 Wild model
- chirp-v6-mini: v6 Mini model
- chirp-v5-5: Previous model name, retained for compatibility
- chirp-v5: High quality, 8-minute max duration
- chirp-v4-5-plus: High quality with 8-minute duration
- chirp-v4-5: Recommended balance of quality and speed, 4-minute duration
- chirp-v4: Good quality, 150 seconds max
- chirp-v3-5/v3: Legacy models, 120 seconds max
Returns:
Table of all models with their version, limits, and features.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the return format (a table) and the scope (all available models). It also lists model comparisons with limits and durations, which is useful context for agent behavior. Does not mention any side effects (it's a read operation), but since nothing suggests otherwiseton, it's adequately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with a clear intro, a list of model comparisons, and a return-value note. It is front-loaded with the purpose and includes a helpful bulleted list. It is a bit longer than necessary, but every part contributes to decision-making. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero params), the description covers everything an agent needs: what it does, what it returns, and model-specific details to aid selection. The output schema exists, which further covers returns. No missing critical information.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description doesn't need to explain params. The baseline for zero params is 4, and the description exceeds the baseline by adding useful model details that an agent might need. Schema coverage is 100% trivially, but the description adds value by providing model-specific context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all available Suno models and their capabilities, which distinguishes it from generation and other tools. It provides a specific verb and resource, making the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says 'Use this to understand which model to choose for your music generation,' giving clear context but not explicit when-not-to-use or alternatives. It implies usage before generation tasks but doesn't mention alternative info sources like suno_list_custom_models.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_list_personasAInspect
List all saved artist personas for a user.
Returns all personas previously created with suno_create_persona or
suno_create_voice for the given user.
Use this when:
- You want to see all available voice personas
- You need to find a persona ID to use in music generation
- You want to manage your saved vocal styles
Returns:
List of personas with their IDs, names, and descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of personas to return. Default is 50. | |
| offset | No | Number of personas to skip for pagination. Default is 0. | |
| user_id | Yes | The user ID to list personas for. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It states that it returns all personas created with specific tools, implying a read-only operation. However, it does not disclose pagination behavior beyond what is in the schema, nor does it mention auth requirements or potential side effects. The description adds moderate value beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient with a concise statement, a bulleted usage list, and a returns section. Every sentence serves a purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (list with 3 parameters) and presence of an output schema, the description adequately covers purpose, usage, and return format. It could have added a note about read-only status, but overall it is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description mentions user_id implicitly ('for the given user') and hints at pagination via limit and offset, but adds no new semantic meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all saved artist personas for a user.' It uses a specific verb ('list') and resource ('personas'), and distinguishes these from sibling tools like suno_create_persona (create) and suno_delete_persona (delete).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists three when-to-use scenarios, such as viewing all personas or finding a persona ID. It provides clear context but does not exclude cases where other tools might be more appropriate, like suno_generate_with_persona which consumes but does not list personas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_manage_projectAInspect
Create, retrieve, save, upload, add/generate/replace tracks, commit, remove, or render a project.
Use the latest version_id for mutations. Seconds describe the source audio;
beats describe the project timeline. Generation only creates candidates;
commit_candidate explicitly adds one to the selected track. Preserve returned
project/version/operation/candidate IDs. Poll accepted task_id with suno_get_task
until finished_at is set, then inspect response.success. On timeout, retry the
SAME request/key or poll its original task; never automatically regenerate.
| Name | Required | Description | Default |
|---|---|---|---|
| request | Yes | ||
| idempotency_key | No | Required for every action except retrieve. Choose a new stable key for each intended write; retry an uncertain submission with the SAME key and identical request. Changing the key can create a second billable operation. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses async task semantics (accepted task_id, finished_at, response.success), the candidate-vs-committed distinction, stale-version conflict detection, and the idempotency/duplicate-billing risk of changing keys. It stops short of stating which actions are destructive (remove_track, replace_section, render) or what permissions are needed, so it is not fully complete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The action inventory is front-loaded in the first sentence and the remaining sentences each carry a distinct operational rule (units, candidate/commit, ID preservation, polling, timeout). It is dense but earns its length for a ten-action tool, with only minor redundancy between the version_id rule here and in the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers the async polling loop, candidate lifecycle, and retry policy that the schema cannot express. What remains missing is a per-action indication of destructive versus read-only behavior and any mention of prerequisites such as required audio/render IDs before generate_track, which matters for a tool spanning this many mutations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
At 50% schema coverage the description must compensate, and it adds real meaning: seconds describe source audio while beats describe the project timeline, and version_id must be the latest from retrieve. The nested action-specific fields (model enums, stem_control_tags, render_audio_id) are documented in the schema but not reinforced in the description, leaving partial reliance on the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete enumeration of the ten operations this tool performs (create, retrieve, save, upload, add/generate/replace tracks, commit, remove, render), so the agent knows exactly what resource and verb set it covers. However, it never distinguishes itself from siblings that overlap, notably suno_replace_section and suno_add_stem, which an agent could easily confuse with this tool's replace_section and add_track actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Strong workflow guidance: use the latest version_id for mutations, generation only produces candidates while commit_candidate adds one, poll accepted task_id with suno_get_task until finished_at, and on timeout retry the SAME request/key rather than regenerating. The one gap is that it never states when to choose this tool over the similarly-named sibling suno_replace_section, so sibling-level routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_mashup_lyricsAInspect
Generate mashup lyrics by combining two sets of lyrics.
Takes two different song lyrics and intelligently combines them into
a cohesive mashup. Great for creating unique lyrical combinations.
Use this when:
- You want to blend two songs' lyrics together
- You're creating a mashup or medley
- You want creative lyrical combinations from two sources
Returns:
Combined mashup lyrics ready for use in music generation.
| Name | Required | Description | Default |
|---|---|---|---|
| lyrics_a | Yes | The first set of lyrics to combine. Can be full song lyrics with section markers. | |
| lyrics_b | Yes | The second set of lyrics to combine. Can be full song lyrics with section markers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully convey behavioral traits. It uses vague language ('intelligently combines', 'cohesive mashup') without disclosing specifics such as handling of section markers, ordering, or potential failures. The return line mentions 'Combined mashup lyrics' but lacks details on format or structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is about 8 sentences long with a clear structure: function statement, use cases listed with bullet points, and a return line. However, it contains repetitive wording ('combines' appears three times) and could be more succinct without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 string parameters, no annotations) and the existence of an output schema, the description covers the key points: inputs, use cases, and output purpose. It does not need to detail return format as the output schema provides that. Slight improvement possible by explaining mashup strategy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter described as 'first/second set of lyrics... can be full song lyrics with section markers.' The tool description adds minimal value beyond restating that it takes two lyrics and combines them. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'Generate mashup lyrics by combining two sets of lyrics' with a specific verb and resource. It distinguishes from siblings like suno_mashup_music (music mashup) and suno_generate_lyrics (single lyric generation) by focusing on blending two sets of lyrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'Use this when:' list with three explicit scenarios: blending two songs, creating mashup/medley, and seeking creative lyrical combinations. While it lacks explicit when-not-to-use instructions or alternative tool names, the context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_mashup_musicAInspect
Create a musical mashup by blending multiple songs together.
Combines elements from multiple generated songs into a single cohesive
mashup track. Different from lyrics mashup - this blends the actual audio.
Use this when:
- You want to blend two or more songs together musically
- You're creating a DJ-style mashup
- You want to combine melodies from different songs
Returns:
Task ID and the mashup audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use. | chirp-v5-5 |
| style | No | Optional target music style for the mashup. | |
| title | No | Optional title for the mashup. | |
| prompt | Yes | Required creative direction for blending the tracks, such as the desired arrangement, mood, and balance between sources. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. | |
| instrumental | No | If true, generate an instrumental mashup without vocals. | |
| mashup_audio_ids | Yes | Exactly two audio IDs to mash up together. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description must carry the full burden of behavioral disclosure. It mentions it returns a Task ID and mashup audio information, which is useful. However, it does not disclose that the operation creates new audio (a creative generation action), whether it consumes credits, or any other behavioral traits. The asynchronous nature is implied by Task ID but not fully explained. The description is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise, using bullet points and a short returns section. The main purpose is front-loaded. However, the 'Returns' section is redundant with the output schema (which exists per context signals), and the 'Use this when' section could be more compact. Still, it is efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (7 parameters, but only 2 required) and the presence of an output schema, the description covers the essential purpose and usage scenarios. The required parameter 'mashup_audio_ids' is clearly constrained to exactly two audios in the schema, and the description mentions 'multiple songs'. The only missing element is a mention of any prerequisites (e.g., the audio IDs must come from previously generated songs), but this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning every parameter is described in the schema. The tool description adds some context for the 'prompt' parameter by describing it as 'creative direction for blending the tracks', which adds meaning beyond the schema's generic description. However, most parameters like 'model', 'style', 'title', 'instrumental', and 'callback_url' are already well-documented in the schema, so the description adds limited additional value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: creating a musical mashup by blending multiple songs together. It explicitly distinguishes itself from 'lyrics mashup' by specifying it blends the actual audio, which is crucial given the sibling tool suno_mashup_lyrics. The use of specific verb 'create', resource (musical mashup), and clear distinction from alternatives makes the purpose highly clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a 'Use this when' list with three specific scenarios: blending two or more songs musically, creating DJ-style mashups, and combining melodies from different songs. It also implicitly differentiates from lyrics mashup by mentioning the difference. However, it does not explicitly state when NOT to use it or directly reference the alternative suno_mashup_lyrics by name, which would be more complete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_optimize_styleAInspect
Optimize a music style description for better generation results.
Takes a rough style description and refines it into an optimized style
prompt that Suno can better understand and produce higher quality music for.
Use this when:
- You have a vague style idea and want to refine it
- You want better style prompts for suno_generate_custom_music
- You need suggestions for style terms
Returns:
Optimized style description ready for use in music generation.
| Name | Required | Description | Default |
|---|---|---|---|
| prompt | Yes | Style prompt words that need to be optimized. Examples: 'rock guitar', 'jazz smooth', 'electronic dance party' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden for behavioral transparency. It describes input (rough style description) and output (optimized prompt) but does not disclose any side effects, authorization needs, rate limits, or limitations. The behavior is predictable as a simple transformation, but more detail on the optimization process would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. It includes bullet points for usage and a return statement. The 'Returns:' section is slightly redundant but not harmful. Overall, it is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no nested objects, output schema present), the description is complete. It covers the input, output, and usage context. No additional information is necessary for an agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one required parameter 'prompt'. The description adds meaningful examples (e.g., 'rock guitar', 'jazz smooth') that clarify acceptable input beyond the schema's description, which only says 'Style prompt words that need to be optimized.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Optimize a music style description for better generation results.' It identifies the specific resource (style description) and action (optimize), and distinguishes it from sibling tools like suno_generate_custom_music by noting it refines prompts for better generation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases: vague style idea, better style prompts for suno_generate_custom_music, and style term suggestions. It does not explicitly state when not to use or list alternatives, but the use cases are clear enough for selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_overpaintingAInspect
Add AI-generated vocals to uploaded instrumental audio.
Takes your uploaded instrumental track and adds AI-generated vocals
on top of it (overpainting = painting vocals over the music).
Use this when:
- You have an instrumental track and want to add vocals
- You want to give background music a singing voice
- You need to add vocal melody to existing music
Returns:
Task ID and the audio with vocals added.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use. | chirp-v5-5 |
| audio_id | Yes | ID of the uploaded audio to add vocals to. Must be uploaded via suno_upload_audio. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. | |
| overpainting_end | No | End time in seconds for adding vocals. Must be less than total song duration. | |
| overpainting_start | No | Start time in seconds for adding vocals. Default is 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool is asynchronous (returns a Task ID) and that it modifies/creates audio with vocals. However, it doesn't mention that the operation is non-destructive to the original upload, whether it consumes credits, or any rate limits. The async nature is disclosed via 'Returns: Task ID', which is useful but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear summary, use-case bullets, and a returns section. It's slightly longer than necessary—the 'overpainting = painting vocals over the music' parenthetical is helpful but could be trimmed. Overall, every section earns its place and the key info is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the core purpose, use cases, and return value (Task ID). It doesn't explain polling or callback behavior in detail, but the output schema and parameter descriptions cover the mechanics. For a tool with 5 params and an output schema, this is reasonably complete, though it could mention that the result is delivered asynchronously via task polling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 5 parameters. The description adds context for audio_id ('uploaded instrumental track') and explains the overpainting concept, but doesn't add detail beyond the schema for model, callback_url, or the start/end times. Baseline 3 is appropriate since the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: adding AI-generated vocals to an uploaded instrumental track. It uses a specific verb ('add'), names the resource ('uploaded instrumental audio'), and explains the metaphor ('overpainting = painting vocals over the music'). This distinguishes it from siblings like suno_underpainting and suno_extract_vocals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases ('when you have an instrumental track and want to add vocals', 'want to give background music a singing voice', 'need to add vocal melody to existing music'). It doesn't explicitly state when NOT to use it or name alternative tools, but the use-case list gives clear context for when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_remaster_musicAInspect
Remaster an existing song to improve audio quality.
Takes a previously generated song and applies audio remastering to enhance
clarity, dynamics, and overall sound quality.
Use this when:
- You want to improve the audio quality of a generated song
- You want a song generated with an older model to sound better
- You need a polished, production-ready version
Returns:
Task ID and the remastered audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use for remastering. Supported choices are chirp-v4-5-plus, chirp-v5, and chirp-v5-5. | chirp-v5-5 |
| audio_id | Yes | ID of the audio to remaster. This is the 'id' field from a previous generation. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. | |
| variation_category | Yes | Required remaster variation intensity. Use 'high' for maximum variation, 'normal' for balanced, or 'subtle' for minimal changes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source of behavioral context. It discloses that existing audio is remastered and the result is a Task ID and remastered audio info, hinting at async behavior. However, it omits whether the original audio is preserved, permission/rate-limiting implications, or mechanism for retrieving the result, so transparency is partial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an opening statement, explicit use-case bullets, and a return-format note. However, the first two sentences are slightly redundant ('Remaster... to improve audio quality' vs 'Takes... applies... to enhance clarity, dynamics, and overall sound quality'), which prevents a perfect score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the full schema coverage, an output schema, and a moderately simple operation, this description is complete for an agent to decide when to use it and what to expect. It covers the purpose, variants/by-products, and indicates an asynchronous task flow via the returned Task ID; no critical context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 4 parameters are fully described in the schema (100% coverage), including the enum values and the meaning of audio_id. The description adds no new parameter-level meaning; it only reinforces the existing schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Remaster' with resource 'an existing song' and clearly states the purpose: improving audio quality. It distinguishes the tool from siblings like suno_generate_music or suno_cover_music by scoping it to a previously generated song, leaving no ambiguity about what action it performs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Use this when' context: improving quality, modernizing older models, and getting a polished version. This is clear context for choosing this tool. It does not explicitly state when not to use it or name alternatives, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_replace_sectionAInspect
Replace a specific time range in a song with new generated content.
Re-generates a portion of a song between the specified start and end times,
keeping the rest of the song unchanged. Great for fixing sections you don't like.
Use this when:
- A specific section of a song needs improvement
- You want to change lyrics in the middle of a song
- You want to replace a verse or chorus with something different
Returns:
Task ID plus two complete songs by default, or two unmerged clips in candidates mode.
| Name | Required | Description | Default |
|---|---|---|---|
| lyric | No | New lyrics for the replaced section. Use section markers like [Verse], [Chorus]. | |
| model | No | Model version to use. | chirp-v5-5 |
| style | No | Music style for the replaced section. | |
| audio_id | Yes | ID of the audio to replace a section in. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. | |
| negative_tags | No | Styles or genres to exclude from the replacement; keep concise. No fixed API character limit. | |
| replace_section_end | Yes | Required end time in seconds, greater than start and no later than source duration. | |
| replace_section_start | Yes | Required start time in seconds, at least 0; fractions are preserved. | |
| replace_section_result_mode | No | Result shape: full_song returns two complete songs, one from each replacement candidate; candidates returns the two unmerged replacement clips. | full_song |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the load and does disclose the key behavior: the untouched remainder of the song is preserved and output is a Task ID plus either two full songs or two unmerged clips. It omits that the call is asynchronous and requires polling (suno_get_task presumably) and says nothing about cost/credit consumption, which matters for a generation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the one-line definition, then progressively more detail; the bulleted use cases are skimmable. Slightly padded — the 'Great for fixing sections you don't like' line and the Returns block duplicate what the schema's result_mode description already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, fully documented schema with an output schema present and no annotations, the description covers purpose, when-to-use, and what is preserved versus regenerated. Nothing an agent needs to select and invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents every parameter including start/end constraints and the result_mode enum. The description restates the result_mode outcome but adds no syntax or format guidance beyond the schema; baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with scope: 'Replace a specific time range in a song with new generated content,' reinforced by 'Re-generates a portion ... keeping the rest of the song unchanged.' It is not, however, differentiated from plausibly adjacent siblings like suno_overpainting or suno_extend_music, so an agent still has to infer boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
An explicit 'Use this when' list gives three concrete triggering scenarios (fixing a weak section, changing mid-song lyrics, swapping a verse/chorus). There are no stated exclusions or named alternative tools, which keeps it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_samples_musicAInspect
Add AI-generated samples to uploaded audio.
Takes your uploaded audio and adds AI-generated musical samples
within the specified time range.
Use this when:
- You want to add sample loops or motifs to existing music
- You need to enhance a track with additional musical elements
- You want to add AI-generated samples to a specific section
Returns:
Task ID and the audio with samples added.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use. | chirp-v5-5 |
| audio_id | Yes | ID of the uploaded audio to add samples to. Must be uploaded via suno_upload_audio. | |
| samples_end | No | Required sample interval end in seconds, greater than start and no later than source duration. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. | |
| samples_start | No | Sample interval start in seconds, at least 0. Default is 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose async behavior ('Returns: Task ID'), implying the agent must poll via suno_get_task, and it reiterates the upload prerequisite. It does not state whether the source audio is preserved or overwritten, whether credits are consumed, or any limits on the sample interval beyond what the schema says.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action is front-loaded in the first sentence and the returns note is short. The three 'Use this when' bullets overlap heavily ('add sample loops', 'enhance a track', 'add samples to a specific section'), so a bit of the length does not earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so the returns section is largely redundant, and the schema handles parameter semantics. What is missing for a 5-param async generation tool with no annotations is the lifecycle and cost story: whether the original is retained, how the task is retrieved, and any model/cost tradeoffs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are already fully documented, including interval constraints and the model enum. The description only adds the loose phrase 'within the specified time range' and gives no guidance on model selection or interval sizing, so it earns the baseline 3 rather than more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Add AI-generated samples to uploaded audio') and narrows scope to a time range, which separates it from stem tools like suno_add_stem or section tools like suno_replace_section. It stops short of naming the closest siblings explicitly, so an agent must infer the boundary from vocabulary alone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use this when' block gives three concrete selection conditions (sample loops/motifs, enhancing a track, targeting a specific section). There are no when-not conditions and no named alternatives, so the agent gets positive guidance but no exclusion logic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_stems_musicAInspect
Separate a song into individual stems (vocals and instruments).
Splits the audio into separate tracks for vocals and instrumentals,
useful for remixing, karaoke, or isolating specific parts.
Use this when:
- You want to separate vocals from instrumentals
- You need individual stem tracks for mixing
- You want to create a karaoke version
Returns:
Task ID and stem separation results with individual track URLs.
| Name | Required | Description | Default |
|---|---|---|---|
| audio_id | Yes | ID of the audio to separate into stems. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the action (splits audio) and return format (Task ID and stem results with URLs), but does not disclose behavior like whether it is destructive, async nature (callback_url implies async), or any prerequisites.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with purpose, then explains use cases, then returns. It is reasonably concise but could be slightly more streamlined by removing the redundant 'Separate a song' line.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (2 params, simple action, output schema exists), the description covers purpose, usage, and return format adequately. It is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds minimal value: it mentions return format but not parameter details. Schema already describes both parameters clearly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool separates a song into stems (vocals and instruments). It specifies the resource (song) and the action (separate), and distinguishes from similar sibling tools like suno_extract_vocals by emphasizing multiple stems.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Use this when' list with three clear scenarios (separating vocals, needing stems, karaoke). However, it does not explicitly state when not to use or compare to alternatives like suno_extract_vocals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_underpaintingAInspect
Add AI-generated accompaniment/instrumental background to uploaded audio.
Takes your uploaded vocal track and adds an AI-generated instrumental
accompaniment beneath it (underpainting = adding music under vocals).
Use this when:
- You have a vocal recording and want to add music behind it
- You want to give an acapella track a full musical arrangement
- You need to add instrumental backing to existing vocals
Returns:
Task ID and the audio with accompaniment added.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use. | chirp-v5-5 |
| audio_id | Yes | ID of the uploaded audio to add accompaniment to. Must be uploaded via suno_upload_audio. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. | |
| underpainting_end | No | End time in seconds for adding accompaniment. Must be less than total song duration. | |
| underpainting_start | No | Start time in seconds for adding accompaniment. Default is 0. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool returns a 'Task ID and the audio with accompaniment added,' implying asynchronous operation, and requires prior upload via suno_upload_audio. However, it does not explain side effects (whether the original is modified), how to poll for completion using the Task ID, or any rate limits/auth requirements. The description adds some value but is not rich in behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively concise but contains redundancy: the three 'Use this when' bullets essentially restate the same idea (adding instrumental backing to vocals). The Returns section adds useful info but could be merged. It's not excessively long, but the redundancy detracts from conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters, an async return (Task ID), and an output schema (not shown here). The description explains the core purpose and return shape, but omits practical details like how to retrieve the result using the Task ID, or when callback_url should be used. Given the complexity and reliance on output schema, the description is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters are fully documented in the schema. The description adds minimal extra meaning beyond the schema—it implicitly explains audio_id's role ('uploaded vocal track') and the underpainting concept, but does not elaborate on underpainting_start/end or callback_url beyond their schema descriptions. At 100% coverage, the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb and resource: 'Add AI-generated accompaniment/instrumental background to uploaded audio.' It distinguishes the operation from the sibling suno_overpainting by explicitly defining underpainting as 'adding music under vocals,' which disambiguates what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear 'Use this when' list with three concrete scenarios (vocal recording needs backing, acapella needs arrangement, instrumental backing needed). However, it lacks any when-not-to-use guidance or explicit mention of alternatives like suno_overpainting or suno_extend_music. It gives clear context but no exclusions, earning a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_upload_audioAInspect
Upload external audio for use in subsequent operations.
Use standard mode for normal uploads. Use enhanced mode only when standard
upload cannot process authorized audio; it returns a task_id for suno_get_task.
Enhanced audio IDs support Cover, Samples, and Mashup.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Upload mode. standard preserves normal upload behavior; enhanced handles some authorized audio that standard mode cannot process, costs 1.87 Credits on success, and runs asynchronously. | standard |
| name | No | Audio name, required for enhanced mode and limited to 100 characters. | |
| audio_url | Yes | Public URL of the audio file. Enhanced mode requires HTTPS and audio you own or are authorized to use. | |
| persona_id | No | Optional voice Persona ID, standard mode only. Associates the source audio with this voice for suno_upload_cover. Create the voice, upload and cover on the same service channel. | |
| callback_url | No | Optional HTTPS webhook URL for the enhanced upload result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden, and it does cover the async task_id handoff to suno_get_task and the post-upload capabilities of enhanced IDs (Cover, Samples, Mashup). However, credit cost and HTTPS/ownership requirements live only in the schema, not the description, and nothing is said about failure behavior or whether an upload can be undone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action, then mode guidance, then the enhanced-mode consequence. No filler; the only blemish is the stray line breaks that split a single sentence across lines.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-shape explanation is unnecessary, and the description adequately covers the async flow and what enhanced IDs unlock. The one meaningful omission is the absence of any comparison to sibling upload tools, which matters given five-plus similarly named tools in the set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including mode, persona_id and callback_url is already documented in structured data; baseline is 3. The description reinforces the standard-vs-enhanced split but adds no syntax, size or format detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Upload external audio') and adds the purpose ('for use in subsequent operations'), so an agent knows this is an ingest step feeding later tools. It stops short of differentiating from the similarly named siblings suno_upload_cover and suno_upload_extend, which is exactly where an agent is most likely to pick the wrong tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mode selection is handled explicitly: 'Use standard mode for normal uploads. Use enhanced mode only when standard upload cannot process authorized audio.' That is a real when/when-not rule plus a downstream pointer to suno_get_task. What is missing is tool-level routing — nothing says whether to use this versus suno_upload_cover or suno_upload_extend for source audio.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_upload_coverAInspect
Create an AI cover of an uploaded audio (your own music).
Similar to suno_cover_music but works with audio you uploaded via
suno_upload_audio. Re-arranges your music in a different style.
Use this when:
- You uploaded your own music and want a cover in a different style
- You want to hear your song re-interpreted by AI
Returns:
Task ID and the cover audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Model version to use. | chirp-v5-5 |
| style | No | Target music style for the cover. | |
| audio_id | Yes | ID of the uploaded audio to create a cover of. Must be an audio uploaded via suno_upload_audio. | |
| persona_id | No | Persona ID for a specified-voice cover. Private voices require the audio_id returned by suno_upload_audio with this same persona_id in standard mode. Keep voice creation, upload and cover on the same service channel. No extra vocal_gender is needed; gender cannot replace the voice ID. | |
| audio_weight | No | Advanced parameter for cover operations. Controls how much the original audio influences the cover generation. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses that the tool returns a Task ID and cover audio information, implying asynchronous generation, but does not cover permissions, cost, latency, or what happens to the source audio; that is minimally adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and sibling distinction are front-loaded, and the 'Use this when' bullets make the guidance easy to scan. There is minor repetition of the ownership idea ('your own music' and 'uploaded your own music'), but the description is otherwise efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so the description need not explain return structure in depth; it still briefly mentions the Task ID and cover audio info. Combined with complete parameter schema coverage, the description gives enough context for correct invocation, though it could add a note about async task polling for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all six parameters, including audio_id, style, model, persona_id, audio_weight, and callback_url. The description only reinforces the audio_id origin requirement and adds no new parameter detail beyond the schema, which is the expected baseline when schema coverage is complete.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create an AI cover of an uploaded audio (your own music).' It also explicitly distinguishes itself from the sibling suno_cover_music by explaining that it works with audio uploaded via suno_upload_audio, so an agent can select it without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'Use this when' bullets give clear conditions: uploaded your own music, want a different style, or want an AI re-interpretation. It names suno_cover_music as the similar alternative but does not explicitly state when not to use this tool, leaving the inverse selection rule implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suno_upload_extendAInspect
Extend an uploaded audio (your own music) with new AI-generated content.
Similar to suno_extend_music but works with audio you uploaded via
suno_upload_audio. Allows you to add new sections to your own music.
Use this when:
- You uploaded your own music and want to extend it
- You want to add AI-generated sections to your existing recordings
Returns:
Task ID and the extended audio information.
| Name | Required | Description | Default |
|---|---|---|---|
| lyric | Yes | Lyrics for the extension section. | |
| model | No | Model version to use. | chirp-v5-5 |
| style | No | Music style for the extension. | |
| audio_id | Yes | ID of the uploaded audio to extend. Must be an audio uploaded via suno_upload_audio. | |
| continue_at | Yes | Positive continuation boundary in seconds; fractional seconds are preserved. | |
| callback_url | No | Webhook callback URL for asynchronous notifications. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose the key behavioral traits: this is an asynchronous task (returns a Task ID) and it operates only on previously uploaded audio, which prevents misuse on generated tracks. It does not say whether the source audio is preserved or what happens on invalid audio_id, so a small gap remains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and appropriately short. The two 'Use this when' bullets largely restate the preceding sentences, and the 'Returns' line duplicates the output schema, but neither is enough to hurt readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists and 100% parameter coverage, the description needn't explain return values. It supplies purpose, prerequisite, alternative, and async behavior — enough to call correctly, though side-effect/safety details for this generation operation are thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter (including the model enum, continue_at boundary semantics, and callback_url) is already documented in the schema. The description adds no parameter-level meaning beyond the audio_id prerequisite, which is the baseline-3 case.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — extend an uploaded audio with AI-generated content — and explicitly contrasts it with the sibling suno_extend_music, noting the difference is the source material (uploaded audio vs. generated). An agent can route between the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'Use this when' conditions plus the hard prerequisite that the audio must have been uploaded via suno_upload_audio, and names the alternative tool it is similar to. This is a textbook when-to-use / which-alternative disclosure.
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.
13 tool updates
v0.1.25- Added
suno_add_stem - Added
suno_adjust_speed - Changed
suno_extend_music2 fields changed- changed
Input schema / properties / continue_at / descriptionPrevious value: -"Timestamp in seconds where to start the extension. For example, 120.5 means continue from 2 minutes and 0.5 seconds into the song."New value: +"Positive continuation boundary in seconds; fractional seconds are preserved. Lyrics only affect new content after this boundary, not the source before it." - added
Input schema / properties / continue_at / exclusiveMinimumAdded value: +0
- Added
suno_extract_stem - Changed
suno_generate_custom_music5 fields changed- added
Input schema / properties / audio_weightAdded value: +{ + "anyOf": [ + { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Audio influence; 0 is a valid explicit value.", + "title": "Audio Weight" +} - changed
Input schema / properties / duration / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "maximum": 360, + "minimum": 10, + "type": "integer" + }, + { + "type": "null" + } +] - changed
Input schema / properties / duration / descriptionPrevious value: -"Target length of the generated track in seconds, an integer between 10 and 360. Only takes effect for the 'generate' action in custom mode with model 'chirp-v5-5'; other combinations return a 400 error. The finished track lands near this value but is not guaranteed to match it exactly."New value: +"Target length in whole seconds (10-360). Only generate uses duration; the model may ignore this target. Actual length comes from the result." - added
Input schema / properties / max_modeAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Enable enhanced generation with a higher API price. Omitted/false keeps normal pricing.", + "title": "Max Mode" +} - added
Input schema / properties / varietyAdded value: +{ + "anyOf": [ + { + "enum": [ + "off", + "normal", + "high", + "extra", + "max" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Result diversity: off, normal, high, extra, or max.", + "title": "Variety" +}
- Changed
suno_generate_inspo7 fields changed- added
Input schema / properties / audio_urls / maxItemsAdded value: +4 - added
Input schema / properties / audio_urls / minItemsAdded value: +1 - added
Input schema / properties / customAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Enable custom mode; use lyric or lyric_prompt for lyrics.", + "title": "Custom" +} - added
Input schema / properties / instrumentalAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Generate instrumental music without lyrics.", + "title": "Instrumental" +} - added
Input schema / properties / lyricAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Lyrics in custom mode; ignored for instrumental generation.", + "title": "Lyric" +} - added
Input schema / properties / lyric_promptAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Auto-lyric prompt, only when custom=true and lyric is empty.", + "title": "Lyric Prompt" +} - added
Input schema / properties / persona_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Voice ID, not an audio ID. Availability with Inspo depends on the service channel.", + "title": "Persona Id" +}
- Changed
suno_generate_music1 field changed- added
Input schema / properties / varietyAdded value: +{ + "anyOf": [ + { + "enum": [ + "off", + "normal", + "high", + "extra", + "max" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Result diversity: off, normal, high, extra, or max.", + "title": "Variety" +}
- Added
suno_generate_sound - Changed
suno_generate_with_custom_model15 fields changed- added
Input schema / properties / callback_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "HTTPS webhook for the completed task.", + "title": "Callback Url" +} - added
Input schema / properties / durationAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Requested duration in seconds; availability depends on the custom model.", + "title": "Duration" +} - added
Input schema / properties / instrumentalAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Generate without vocals. Default false.", + "title": "Instrumental" +} - added
Input schema / properties / lyric / defaultAdded value: +"" - changed
Input schema / properties / lyric / descriptionPrevious value: -"Lyrics for the generated song."New value: +"Lyrics; required unless instrumental or lyric_prompt is supplied." - added
Input schema / properties / lyric_promptAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Generate lyrics from this description.", + "title": "Lyric Prompt" +} - added
Input schema / properties / negative_tagsAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Styles to exclude.", + "title": "Negative Tags" +} - added
Input schema / properties / style / defaultAdded value: +"" - changed
Input schema / properties / style / descriptionPrevious value: -"Music style for the generated song."New value: +"Optional music style." - added
Input schema / properties / style_influenceAdded value: +{ + "anyOf": [ + { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Style Influence" +} - added
Input schema / properties / title / defaultAdded value: +"" - changed
Input schema / properties / title / descriptionPrevious value: -"Title for the generated song."New value: +"Optional song title." - added
Input schema / properties / vocal_genderAdded value: +{ + "anyOf": [ + { + "enum": [ + "", + "f", + "m" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Vocal preference: f or m.", + "title": "Vocal Gender" +} - added
Input schema / properties / weirdnessAdded value: +{ + "anyOf": [ + { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Weirdness" +} - changed
Input schema / requiredPrevious value: -[ - "id", - "title", - "lyric", - "style" -]New value: +[ + "id" +]
- Added
suno_manage_project - Changed
suno_replace_section4 fields changed- added
Input schema / properties / negative_tagsAdded value: +{ + "default": "", + "description": "Styles or genres to exclude from the replacement; keep concise. No fixed API character limit.", + "title": "Negative Tags", + "type": "string" +} - changed
Input schema / properties / replace_section_end / descriptionPrevious value: -"End time in seconds of the section to replace."New value: +"Required end time in seconds, greater than start and no later than source duration." - changed
Input schema / properties / replace_section_start / descriptionPrevious value: -"Start time in seconds of the section to replace."New value: +"Required start time in seconds, at least 0; fractions are preserved." - added
Input schema / properties / replace_section_start / minimumAdded value: +0
- Changed
suno_samples_music3 fields changed- changed
Input schema / properties / samples_end / descriptionPrevious value: -"End time in seconds for adding samples. Must be less than total song duration."New value: +"Required sample interval end in seconds, greater than start and no later than source duration." - changed
Input schema / properties / samples_start / descriptionPrevious value: -"Start time in seconds for adding samples. Default is 0."New value: +"Sample interval start in seconds, at least 0. Default is 0." - added
Input schema / properties / samples_start / minimumAdded value: +0
- Changed
suno_upload_extend2 fields changed- changed
Input schema / properties / continue_at / descriptionPrevious value: -"Timestamp in seconds where to start the extension."New value: +"Positive continuation boundary in seconds; fractional seconds are preserved." - added
Input schema / properties / continue_at / exclusiveMinimumAdded value: +0
3 tool updates
v0.1.24- Changed
suno_cover_music1 field changed- added
Input schema / properties / persona_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Persona ID for a specified-voice cover. For private voices from suno_create_voice, first upload the source with the same persona_id in suno_upload_audio, then use suno_upload_cover with its returned audio_id. Keep all steps on the same service channel; vocal_gender is not required and cannot replace the voice ID.", + "title": "Persona Id" +}
- Changed
suno_upload_audio1 field changed- added
Input schema / properties / persona_idAdded value: +{ + "anyOf": [ + { + "minLength": 1, + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional voice Persona ID, standard mode only. Associates the source audio with this voice for suno_upload_cover. Create the voice, upload and cover on the same service channel.", + "title": "Persona Id" +}
- Changed
suno_upload_cover1 field changed- added
Input schema / properties / persona_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Persona ID for a specified-voice cover. Private voices require the audio_id returned by suno_upload_audio with this same persona_id in standard mode. Keep voice creation, upload and cover on the same service channel. No extra vocal_gender is needed; gender cannot replace the voice ID.", + "title": "Persona Id" +}
1 tool update
v0.1.23- Added
suno_check_audio_availability
1 tool update
v0.1.22- Changed
suno_generate_custom_music1 field changed- changed
Input schema / properties / negative_tags / descriptionPrevious value: -"Styles or genres to explicitly exclude from custom generation. Examples: 'heavy metal, screaming', 'autotune, electronic'"New value: +"Styles or genres to exclude in custom mode (custom=true). The API currently sets no fixed character limit, but overly long content may still fail; keep it concise. Examples: 'heavy metal, screaming', 'autotune, electronic'"
15 tool updates
v0.1.18- Changed
suno_cover_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_extend_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_generate_custom_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_generate_inspo1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_generate_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_generate_with_persona1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_generate_with_persona_vox1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_mashup_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_overpainting1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_remaster_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_replace_section1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_samples_music1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_underpainting1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_upload_cover1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
- Changed
suno_upload_extend1 field changed- changed
Input schema / properties / model / enumPrevious value: -[ - "chirp-v3-0", - "chirp-v3-5", - "chirp-v4", - "chirp-v4-5", - "chirp-v4-5-plus", - "chirp-v5", - "chirp-v5-5" -]New value: +[ + "chirp-v6", + "chirp-v6-wild", + "chirp-v6-mini", + "chirp-v3-0", + "chirp-v3-5", + "chirp-v4", + "chirp-v4-5", + "chirp-v4-5-plus", + "chirp-v5", + "chirp-v5-5" +]
3 tool updates
v0.1.16- Added
suno_archive_custom_model - Removed
suno_delete_custom_model - Changed
suno_list_custom_models1 field changed- changed
Input schema / properties / status / anyOfPrevious value: -[ - { - "enum": [ - "pending", - "processing", - "ready", - "failed", - "archived" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "queued", + "uploading", + "training", + "ready", + "failed", + "archived" + ], + "type": "string" + }, + { + "type": "null" + } +]
6 tool updates
v0.1.15- Added
suno_create_custom_model - Added
suno_delete_custom_model - Added
suno_generate_with_custom_model - Added
suno_get_custom_model - Added
suno_list_custom_models - Changed
suno_upload_audio4 fields changed- changed
Input schema / properties / audio_url / descriptionPrevious value: -"Public URL of the audio file to upload. The URL must be directly accessible (CDN link, cloud storage URL, etc.)."New value: +"Public URL of the audio file. Enhanced mode requires HTTPS and audio you own or are authorized to use." - added
Input schema / properties / callback_urlAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Optional HTTPS webhook URL for the enhanced upload result.", + "title": "Callback Url" +} - added
Input schema / properties / modeAdded value: +{ + "default": "standard", + "description": "Upload mode. standard preserves normal upload behavior; enhanced handles some authorized audio that standard mode cannot process, costs 1.87 Credits on success, and runs asynchronously.", + "enum": [ + "standard", + "enhanced" + ], + "title": "Mode", + "type": "string" +} - added
Input schema / properties / nameAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Audio name, required for enhanced mode and limited to 100 characters.", + "title": "Name" +}
2 tool updates
v0.1.14- Added
suno_get_mp3 - Changed
suno_replace_section1 field changed- added
Input schema / properties / replace_section_result_modeAdded value: +{ + "default": "full_song", + "description": "Result shape: full_song returns two complete songs, one from each replacement candidate; candidates returns the two unmerged replacement clips.", + "enum": [ + "candidates", + "full_song" + ], + "title": "Replace Section Result Mode", + "type": "string" +}
1 tool update
v0.1.13- Changed
suno_generate_custom_music2 fields changed- changed
Input schema / properties / lyric_prompt / anyOfPrevious value: -[ - { - "additionalProperties": true, - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / lyric_prompt / descriptionPrevious value: -"Prompt for auto-generating lyrics. Only used when custom is true and lyric is empty. Provide a dict with the lyric generation parameters (e.g. {'prompt': 'A song about winter'})."New value: +"Prompt text for auto-generating lyrics. Only used when custom is true and lyric is empty."
4 tool updates
v0.1.11- Changed
suno_create_voice5 fields changed- added
Input schema / properties / name / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - added
Input schema / properties / name / defaultAdded value: +null - changed
Input schema / properties / name / descriptionPrevious value: -"Name for the custom voice persona."New value: +"Optional name for the custom voice persona." - removed
Input schema / properties / name / typeRemoved value: -"string" - changed
Input schema / requiredPrevious value: -[ - "audio_url", - "name" -]New value: +[ + "audio_url" +]
- Changed
suno_extract_vocals11 fields changed- removed
Input schema / properties / vocal_end / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / vocal_end / defaultRemoved value: -null - changed
Input schema / properties / vocal_end / descriptionPrevious value: -"End time in seconds for the vocal extraction range."New value: +"Required extraction end time in seconds. It must be greater than vocal_start, with a range shorter than 30 seconds." - added
Input schema / properties / vocal_end / exclusiveMinimumAdded value: +0 - added
Input schema / properties / vocal_end / typeAdded value: +"number" - removed
Input schema / properties / vocal_start / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - removed
Input schema / properties / vocal_start / defaultRemoved value: -null - changed
Input schema / properties / vocal_start / descriptionPrevious value: -"Start time in seconds for the vocal extraction range."New value: +"Required extraction start time in seconds. The selected range must be shorter than 30 seconds." - added
Input schema / properties / vocal_start / minimumAdded value: +0 - added
Input schema / properties / vocal_start / typeAdded value: +"number" - changed
Input schema / requiredPrevious value: -[ - "audio_id" -]New value: +[ + "audio_id", + "vocal_start", + "vocal_end" +]
- Changed
suno_mashup_music8 fields changed- added
Input schema / properties / instrumentalAdded value: +{ + "default": false, + "description": "If true, generate an instrumental mashup without vocals.", + "title": "Instrumental", + "type": "boolean" +} - changed
Input schema / properties / mashup_audio_ids / descriptionPrevious value: -"List of audio IDs to mashup together. Provide 2 or more song IDs."New value: +"Exactly two audio IDs to mash up together." - added
Input schema / properties / mashup_audio_ids / maxItemsAdded value: +2 - added
Input schema / properties / mashup_audio_ids / minItemsAdded value: +2 - added
Input schema / properties / promptAdded value: +{ + "description": "Required creative direction for blending the tracks, such as the desired arrangement, mood, and balance between sources.", + "title": "Prompt", + "type": "string" +} - added
Input schema / properties / styleAdded value: +{ + "default": "", + "description": "Optional target music style for the mashup.", + "title": "Style", + "type": "string" +} - added
Input schema / properties / titleAdded value: +{ + "default": "", + "description": "Optional title for the mashup.", + "title": "Title", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "mashup_audio_ids" -]New value: +[ + "mashup_audio_ids", + "prompt" +]
- Changed
suno_remaster_music3 fields changed- changed
Input schema / properties / model / descriptionPrevious value: -"Model version to use for remastering. Newer models produce better results."New value: +"Model version to use for remastering. Supported choices are chirp-v4-5-plus, chirp-v5, and chirp-v5-5." - added
Input schema / properties / variation_categoryAdded value: +{ + "description": "Required remaster variation intensity. Use 'high' for maximum variation, 'normal' for balanced, or 'subtle' for minimal changes.", + "enum": [ + "high", + "normal", + "subtle" + ], + "title": "Variation Category", + "type": "string" +} - changed
Input schema / requiredPrevious value: -[ - "audio_id" -]New value: +[ + "audio_id", + "variation_category" +]
1 tool update
v0.1.10- Changed
suno_generate_custom_music3 fields changed- added
Input schema / properties / durationAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "description": "Target length of the generated track in seconds, an integer between 10 and 360. Only takes effect for the 'generate' action in custom mode with model 'chirp-v5-5'; other combinations return a 400 error. The finished track lands near this value but is not guaranteed to match it exactly.", + "title": "Duration" +} - added
Input schema / properties / negative_tagsAdded value: +{ + "default": "", + "description": "Styles or genres to explicitly exclude from custom generation. Examples: 'heavy metal, screaming', 'autotune, electronic'", + "title": "Negative Tags", + "type": "string" +} - removed
Input schema / properties / style_negativeRemoved value: -{ - "default": "", - "description": "Styles to explicitly exclude from the generation. Examples: 'heavy metal, screaming', 'autotune, electronic'", - "title": "Style Negative", - "type": "string" -}
1 tool update
v0.1.7- Added
suno_generate_inspo
TDQS
Scored across 48 tools
The set has many distinct music operations, but several tools overlap heavily: multiple generation entry points (suno_generate_music, suno_generate_custom_music, suno_generate_inspo, persona variants), multiple stem tools, and upload-specific variants of extend/cover. suno_manage_project also overlaps with many individual track operations, so an agent may struggle to choose the right tool despite detailed descriptions.
Tools consistently use the suno_ prefix and snake_case, with mostly predictable verb_noun naming such as suno_generate_music, suno_get_task, and suno_create_persona. There are minor deviations like noun-first names (suno_underpainting, suno_stems_music) and the broad suno_manage_project, but the overall pattern is clear.
At 48 tools, the surface is very heavy for an MCP server and includes many operations that could be consolidated, such as separate MP3/WAV/MP4/MIDI getters, multiple stem variants, persona variants, and several generation modes. The domain is broad, but the tool count still feels excessive and difficult to navigate.
Coverage is strong across generation, extension, replacement, covers, mashups, stems, uploads, format conversion, personas, custom models, projects, lyrics, and task polling. Minor gaps remain around generated-song library management, deletion/history, and account or credit information, but the core music lifecycle is well covered.
Maintenance
Related MCP Connectors
AI music studio: song generation with vocals, covers, stems, voice conversion, mastering, editing.
Make songs, change one part's lyrics in the same voice, and reimagine songs in new styles.
Generate full songs with vocals, instrumentals and sound effects from text. One server for Suno, Google Lyria, Mureka, MiniMax, ACE-Step, YuE and ElevenLabs. Your agent can quote the credit cost before generating, start a song, wait for it to finish and return download links. Sign in with OAuth; optional daily credit caps; retries never charge twice.
AI songwriting studio: lyrics, Suno prompts, cover art, lyric and music videos, release planning.
1
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI-powered music generation through natural language commands, supporting both inspiration mode (AI-generated lyrics and style) and custom mode (user-provided lyrics and parameters) to create songs with direct download links.43MIT
- AlicenseBqualityDmaintenanceEnables AI music generation through Suno, allowing users to create songs with custom lyrics or AI-generated content, wait for completion, and download MP3 files.7ISC
- AlicenseAqualityAmaintenanceAI music production with text-to-music generation, audio extension, remixing, and cover creation via AceDataCloud API.18472 PyPI2MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI music generation via Suno AI, allowing users to generate tracks with prompts and styles, and download them as MP3.1MIT