Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Splice MCP server

Vendor MCP
Open markdown

The Splice MCP connector routes your AI agent's tool calls to Splice's own MCP server through Scalekit. Each user signs in to Splice once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 6 tools.

Tools
6
What they doRead · write · destructive
1 · 3 · 21 read3 write2 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Find samples: search the Splice catalog by natural language description, with BPM and loop or one-shot filters
  • Build stacks: create a multi-track stack from a sample or generate a full arrangement from a text prompt
  • Edit stacks: add, remove, or swap layers, rename a stack, or change its BPM
  • Buy and share samples: purchase a sample to get its audio download, and create a public link for a stack

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the Splice MCP connection

    In AgentKit > Connections, create a Splice MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Splice MCP server, so you don't need to register an OAuth app.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'splicemcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Splice MCP:', link)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'splicemcp_describe_a_sound',
    toolInput: { query: 'YOUR_QUERY' },
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • splicemcp_describe_a_soundSearch the Splice catalog for samples matching a natural language description, with optional BPM and type filters.Read-only

    Describe A Sound

    Search the Splice catalog for samples matching a natural language description, with optional BPM and type filters.

    Inputs

    querystringrequired
    Natural language description of the sound you are looking for
    bpm_maxinteger
    Maximum BPM filter
    bpm_mininteger
    Minimum BPM filter
    typestring
    Sample type: loop or oneshotone of looponeshot
  • splicemcp_create_stackCreate a multi-track stack from an existing Splice sample, optionally generating a public share URL.Write

    Create Stack

    Create a multi-track stack from an existing Splice sample, optionally generating a public share URL.

    Inputs

    asset_uuidstringrequired
    The UUID of the sample to use as the seed for the stack
    bpminteger
    Target BPM for the stack (e.g. use the seed sample's BPM). Omit to let the backend decide.
    generate_public_urlboolean
    Set to true ONLY if the user explicitly asks for a shareable, public, or web link. Defaults to false.
    namestring
    An optional name for the stack
  • splicemcp_prompt_to_stackGenerate a complete multi-track arrangement of compatible samples from a text prompt describing the desired sound.Write

    Prompt To Stack

    Generate a complete multi-track arrangement of compatible samples from a text prompt describing the desired sound.

    Inputs

    promptstringrequired
    Your prompt describing the sound you want to create (e.g. "lo-fi hip hop beat at 80 bpm with a groovy bassline and jazzy piano", "an upbeat pop song in the style of Bruno Mars in the key of C major")
    bpm_maxinteger
    Maximum BPM for sample selection based on the genre. Must be provided together with bpm_min.
    bpm_mininteger
    Minimum BPM for sample selection based on the genre. Infer from genre when the user does not specify a BPM. Typical ranges: lo-fi/chill 60–100, soulful beats/R&B 70–120, pop 100–130, disco/funk 110–130, house/techno/dance 115–135, industrial/experimental 110–150, drum and bass/jungle 160–180. For genres not listed, ensure at least a 30 BPM spread between bpm_min and bpm_max.
    generate_public_urlboolean
    Set to true ONLY if the user explicitly asks for a shareable, public, or web link. Defaults to false.
  • splicemcp_share_stackGenerate a public shareable URL for an existing stack by its UUID.Write

    Share Stack

    Generate a public shareable URL for an existing stack by its UUID.

    • Idempotent

    Inputs

    stack_uuidstringrequired
    UUID of the stack to share
  • splicemcp_download_assetPurchase a Splice sample and return a presigned download URL for the audio file.Destructive

    Download Asset

    Purchase a Splice sample and return a presigned download URL for the audio file.

    Inputs

    asset_uuidstringrequired
    UUID of the asset to download
    download_pathstring
    Optional hint indicating where the client should save the downloaded file. The server returns a presigned URL; the client is responsible for fetching and saving the file. Omit when the client does not have local filesystem access (e.g. web-based clients).
  • splicemcp_update_stackModify an existing stack by adding, removing, or swapping sounds, or by renaming it or changing its BPM.Destructive

    Update Stack

    Modify an existing stack by adding, removing, or swapping sounds, or by renaming it or changing its BPM.

    Inputs

    stack_uuidstringrequired
    The UUID of the stack to modify (returned as Stack UUID by create_stack or prompt_to_stack). Use the UUID value, not a URL.
    add_asset_uuidsstring
    Asset UUIDs to add as new layers at the end of the stack. Mutually exclusive with add_compatible_layers.
    add_compatible_layersstring
    Layers to add using harmonically compatible samples. Specify the instrument type for each layer. Mutually exclusive with add_asset_uuids.
    bpminteger
    New playback BPM for the stack
    namestring
    New name for the stack (max 64 characters)
    remove_layer_uuidsstring
    Layer UUIDs to remove from the stack (use the Layer UUID values shown in the stack output)
    swap_compatible_layersstring
    Layers to swap with harmonically compatible replacements. Mutually exclusive with swap_layers.
    swap_layersstring
    Layers whose sample content should be replaced with a specific asset. Mutually exclusive with swap_compatible_layers.