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
- 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
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. 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>Create the Splice MCP connection
In AgentKit > Connections, create a Splice MCP connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Scalekit credentials are available for Splice MCP server, so you don't need to register an OAuth app.
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.actionsconst connector = 'splicemcp'const identifier = 'user_123'// Generate an authorization link for the userconst { 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 callconst result = await actions.executeTool({connector,identifier,toolName: 'splicemcp_describe_a_sound',toolInput: { query: 'YOUR_QUERY' },})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "splicemcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Splice MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={"query":"YOUR_QUERY"},tool_name="splicemcp_describe_a_sound",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user signs in once. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolsplicemcp_describe_a_soundSearch the Splice catalog for samples matching a natural language description, with optional BPM and type filters.Read-onlyDescribe 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.WriteCreate 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.WritePrompt 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_download_assetPurchase a Splice sample and return a presigned download URL for the audio file.DestructiveDownload 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.DestructiveUpdate 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.
No tools match.