Skip to main content
Glama

suno_cover_music

Transform existing songs into new genres and styles. Create acoustic, jazz, or electronic covers and remixes while preserving original melodies and lyrics.

Instructions

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
audio_idYesID of the audio to create a cover of. This is the 'id' field from a previous generation.
promptNoDescription of how you want the cover to sound. Examples: 'acoustic unplugged version', 'jazz lounge style', '80s synthwave remix'
styleNoTarget music style for the cover. Examples: 'jazz, smooth, saxophone', 'acoustic folk, gentle guitar', 'electronic dance, high energy'
modelNoModel version to use for the cover.chirp-v5-5
callback_urlNoWebhook callback URL for asynchronous notifications. When provided, the API will call this URL when the cover is complete.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • Main handler function for suno_cover_music tool. Creates a cover or remix version of an existing song in a different style. Uses the @mcp.tool() decorator for registration. Accepts parameters: audio_id, prompt, style, model, and callback_url. Calls client.generate_audio() with action='cover' and returns formatted result.
    @mcp.tool()
    async def suno_cover_music(
        audio_id: Annotated[
            str,
            Field(
                description="ID of the audio to create a cover of. This is the 'id' field from a previous generation."
            ),
        ],
        prompt: Annotated[
            str,
            Field(
                description="Description of how you want the cover to sound. Examples: 'acoustic unplugged version', 'jazz lounge style', '80s synthwave remix'"
            ),
        ] = "",
        style: Annotated[
            str,
            Field(
                description="Target music style for the cover. Examples: 'jazz, smooth, saxophone', 'acoustic folk, gentle guitar', 'electronic dance, high energy'"
            ),
        ] = "",
        model: Annotated[
            SunoModel,
            Field(description="Model version to use for the cover."),
        ] = DEFAULT_MODEL,
        callback_url: Annotated[
            str | None,
            Field(
                description="Webhook callback URL for asynchronous notifications. When provided, the API will call this URL when the cover is complete."
            ),
        ] = None,
    ) -> str:
        """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.
        """
        payload = {
            "action": "cover",
            "audio_id": audio_id,
            "model": model,
            "callback_url": callback_url,
        }
    
        if prompt:
            payload["prompt"] = prompt
        if style:
            payload["style"] = style
    
        result = await client.generate_audio(**payload)
        return format_audio_result(result)
  • Schema type definition for SunoModel - a Literal type defining all valid Suno model versions (chirp-v3-0 through chirp-v5-5). Used as the type annotation for the model parameter in suno_cover_music.
    SunoModel = Literal[
        "chirp-v3-0",
        "chirp-v3-5",
        "chirp-v4",
        "chirp-v4-5",
        "chirp-v4-5-plus",
        "chirp-v5",
        "chirp-v5-5",
    ]
  • Helper function format_audio_result used by suno_cover_music to format the API response. Converts the dictionary result to a JSON string with submission guidance for polling.
    def format_audio_result(data: dict[str, Any]) -> str:
        """Format audio generation result as JSON.
    
        Args:
            data: API response dictionary
    
        Returns:
            JSON string representation of the result
        """
        return json.dumps(
            _with_submission_guidance(data, "suno_get_task", "suno_get_tasks_batch"),
            ensure_ascii=False,
            indent=2,
        )
  • tools/__init__.py:1-13 (registration)
    Registration point where audio_tools module (containing suno_cover_music) is imported, triggering the @mcp.tool() decorator to register the tool with the MCP server.
    """Tools module for MCP Suno server."""
    
    # Import all tools to register them with the MCP server
    from tools import (
        audio_tools,
        info_tools,
        lyrics_tools,
        media_tools,
        persona_tools,
        style_tools,
        task_tools,
    )
  • main.py:183-185 (registration)
    Reference listing for suno_cover_music in the server's tool listing output. Part of the startup banner that displays available tools.
        "name": "suno_cover_music",
        "description": "Create a cover/remix in a different style",
    },
Behavior3/5

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

With no annotations provided, the description carries the full disclosure burden. It adds valuable behavioral context that the core melody and lyrics are preserved while arrangement changes, and mentions the Task ID return indicating async behavior. However, it omits explicit confirmation that the original audio_id remains unmodified or details about processing time expectations.

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

Conciseness5/5

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

The description is efficiently structured with clear sections (purpose, explanation, usage conditions, returns). Every sentence conveys distinct information; there is no redundancy or filler content. The bullet points are appropriately specific and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 100% schema coverage and existence of an output schema (which handles return value documentation), the description provides sufficient context for a 5-parameter creative tool. It adequately covers the transformation concept and usage scenarios, though it could briefly acknowledge the asynchronous task-based pattern implied by the Task ID return.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, establishing a baseline of 3. The description conceptually maps to the 'style' and 'prompt' parameters by discussing genres and moods, but does not add syntax guidance, parameter relationships, or formatting details beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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

The description opens with a specific verb-resource pair ('Create a cover or remix version of an existing song') and clearly distinguishes this tool's function—transforming existing audio while keeping core melody and lyrics—from generic generation tools in the sibling list.

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

Usage Guidelines4/5

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

The 'Use this when:' section provides three concrete scenarios (different genre, acoustic/unplugged, remix vibe) that clearly signal when to select this tool. However, it lacks explicit exclusions or named alternatives (e.g., 'use suno_generate_music for original compositions instead').

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/AceDataCloud/MCPSuno'

If you have feedback or need assistance with the MCP directory API, please join our Discord server