Bandmixr
AI mixing and mastering in the chat: check a song, mix your stems, change the mix in plain words.
Should I use this
Quality & Safety
Findings (1)
- LOWin update_song
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"bandmixr": {
"url": "https://bandmixr.com/mcp"
}
}
}Remote endpoints
https://bandmixr.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (15)
🟢master_song(preset, genre)
Opens the Bandmixr studio in the chat to master or enhance a finished song (a stereo mix). The song is checked in the browser for loudness, peaks, stereo image and tonal balance, and a 30-second mastered preview plays next to the original. Mastering the full song needs a Bandmixr account.
Input Schema
{
"type": "object",
"properties": {
"preset": {
"type": "string",
"enum": [
"streaming",
"optimal",
"loud"
],
"description": "Mastering style. streaming = optimized for Spotify and Apple Music; optimal = balanced (\"Standard\"); loud = maximum punch and loudness."
},
"genre": {
"type": "string",
"enum": [
"rock_indie",
"pop",
"acoustic",
"hip_hop_grime",
"electronic",
"reggae_dub",
"orchestral",
"metal",
"jazz",
"blues",
"funk_soul",
"punk",
"other"
],
"description": "Genre of the song. rock_indie = rock / indie; pop = pop; acoustic = acoustic, singer-songwriter; hip_hop_grime = hip hop, rap, trap, grime; electronic = electronic, EDM, house, techno; reggae_dub = reggae / dub; orchestral = orchestral, film score; metal = metal; jazz = jazz; blues = blues; funk_soul = funk / soul / R&B; punk = punk; other = anything else or not sure (balanced, genre-neutral)."
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢check_mix(genre)
Opens the Bandmixr Mix Analyzer in the chat. It checks a mix or master in the browser (the file is not uploaded): loudness (LUFS), true peak, clipping, stereo image and tonal balance, with a verdict for each and a 30-second mastered preview.
Input Schema
{
"type": "object",
"properties": {
"genre": {
"type": "string",
"enum": [
"rock_indie",
"pop",
"acoustic",
"hip_hop_grime",
"electronic",
"reggae_dub",
"orchestral",
"metal",
"jazz",
"blues",
"funk_soul",
"punk",
"other"
],
"description": "Genre of the song. rock_indie = rock / indie; pop = pop; acoustic = acoustic, singer-songwriter; hip_hop_grime = hip hop, rap, trap, grime; electronic = electronic, EDM, house, techno; reggae_dub = reggae / dub; orchestral = orchestral, film score; metal = metal; jazz = jazz; blues = blues; funk_soul = funk / soul / R&B; punk = punk; other = anything else or not sure (balanced, genre-neutral)."
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_analyzer_session
Returns a 30-minute ticket and the address of the Bandmixr preview service, which the studio in the chat uses for the 30-second mastered preview. The studio calls this tool on its own; the assistant does not need to call it directly.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_account
Shows the connected Bandmixr account's plan and its limits (stems per song, song length, storage). Needs the person to connect their Bandmixr account.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢list_songs
Lists the person's Bandmixr songs, most recently changed first.
Input Schema
{
"type": "object",
"properties": {},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_song_status(songId)
One song's stems with their labels, uploads and analysis still running, whether the person has confirmed the labels, and where the mix and master stand.
Input Schema
{
"type": "object",
"properties": {
"songId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The song id from list_songs or create_song."
}
},
"required": [
"songId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡create_song(title, genre, preset, mix)
Creates a new song in Bandmixr for mixing stems and opens the studio with its upload box. The genre and the mastering style are the ones the person names (other and streaming when they name none). Mixing and mastering are part of it: they start by themselves once the stems are uploaded and the person has confirmed the labels in the studio.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The song's name, as the person calls it."
},
"genre": {
"type": "string",
"enum": [
"rock_indie",
"pop",
"acoustic",
"hip_hop_grime",
"electronic",
"reggae_dub",
"orchestral",
"metal",
"jazz",
"blues",
"funk_soul",
"punk",
"other"
],
"description": "Genre of the song. rock_indie = rock / indie; pop = pop; acoustic = acoustic, singer-songwriter; hip_hop_grime = hip hop, rap, trap, grime; electronic = electronic, EDM, house, techno; reggae_dub = reggae / dub; orchestral = orchestral, film score; metal = metal; jazz = jazz; blues = blues; funk_soul = funk / soul / R&B; punk = punk; other = anything else or not sure (balanced, genre-neutral)."
},
"preset": {
"type": "string",
"enum": [
"streaming",
"optimal",
"loud"
],
"description": "Mastering style. streaming = optimized for Spotify and Apple Music; optimal = balanced (\"Standard\"); loud = maximum punch and loudness."
},
"mix": {
"description": "false = upload now, mix later (default true: mix once the labels are confirmed).",
"type": "boolean"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴update_song(songId, title, genre)
Changes the title or the genre of a song (not while it is being mixed).
Input Schema
{
"type": "object",
"properties": {
"songId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The song id from list_songs or create_song."
},
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"description": "The song's name, as the person calls it."
},
"genre": {
"type": "string",
"enum": [
"rock_indie",
"pop",
"acoustic",
"hip_hop_grime",
"electronic",
"reggae_dub",
"orchestral",
"metal",
"jazz",
"blues",
"funk_soul",
"punk",
"other"
],
"description": "Genre of the song. rock_indie = rock / indie; pop = pop; acoustic = acoustic, singer-songwriter; hip_hop_grime = hip hop, rap, trap, grime; electronic = electronic, EDM, house, techno; reggae_dub = reggae / dub; orchestral = orchestral, film score; metal = metal; jazz = jazz; blues = blues; funk_soul = funk / soul / R&B; punk = punk; other = anything else or not sure (balanced, genre-neutral)."
}
},
"required": [
"songId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢open_song_studio(songId)
Opens the Bandmixr studio for a song in the chat. It shows what the song needs next: the upload box for stems, the label check (only the person can confirm labels there), the mix progress, or the player with the original, the mix and the master.
Input Schema
{
"type": "object",
"properties": {
"songId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The song id from list_songs or create_song."
}
},
"required": [
"songId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_song_session(songId)
Returns a 15-minute ticket for one of the person's songs, which the studio in the chat uses to upload stems, show the label check and the progress, and play the original, the mix and the master. The studio calls this tool on its own; the assistant does not need to call it directly.
Input Schema
{
"type": "object",
"properties": {
"songId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The song id from list_songs or create_song."
}
},
"required": [
"songId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡prepare_full_master(title, genre)
Creates a new song named after the file the person checked in the studio and returns a short-lived ticket for uploading it, so the studio can upload and master the full song. The studio calls this tool when the person chooses to master the full song; the assistant does not need to call it directly.
Input Schema
{
"type": "object",
"properties": {
"title": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"genre": {
"type": "string",
"enum": [
"rock_indie",
"pop",
"acoustic",
"hip_hop_grime",
"electronic",
"reggae_dub",
"orchestral",
"metal",
"jazz",
"blues",
"funk_soul",
"punk",
"other"
],
"description": "Genre of the song. rock_indie = rock / indie; pop = pop; acoustic = acoustic, singer-songwriter; hip_hop_grime = hip hop, rap, trap, grime; electronic = electronic, EDM, house, techno; reggae_dub = reggae / dub; orchestral = orchestral, film score; metal = metal; jazz = jazz; blues = blues; funk_soul = funk / soul / R&B; punk = punk; other = anything else or not sure (balanced, genre-neutral)."
}
},
"required": [
"title"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴set_stem_labels(songId, labels)
Sets what is on each stem from what the person says about their files (stem ids and file names come from get_song_status). It does not confirm the labels: the person still confirms them with "Labels are correct" in the studio before anything is mixed.
Input Schema
{
"type": "object",
"properties": {
"songId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The song id from list_songs or create_song."
},
"labels": {
"minItems": 1,
"maxItems": 64,
"type": "array",
"items": {
"type": "object",
"properties": {
"stemId": {
"type": "string",
"minLength": 1,
"maxLength": 64
},
"label": {
"type": "string",
"enum": [
"kick",
"snare",
"hihat",
"toms",
"overheads",
"room_mics",
"drum_bus",
"percussion",
"bass_electric",
"bass_acoustic",
"bass_synth",
"guitar_electric_clean",
"guitar_electric_distorted",
"guitar_acoustic",
"guitar_nylon",
"piano",
"organ",
"synth_pad",
"synth_lead",
"keys_other",
"vocal_lead",
"vocal_backing",
"vocal_rap",
"strings",
"brass",
"woodwinds",
"instrumental",
"ambient",
"other"
],
"description": "What is on the stem. kick = kick drum; snare = snare drum; hihat = hi-hat; toms = toms; overheads = drum overheads (cymbals and the whole kit from above); room_mics = drum room mics; drum_bus = all drums on one track (drum mix or drum loop); percussion = percussion (shaker, congas, claps, tambourine); bass_electric = electric bass guitar; bass_acoustic = upright or acoustic bass; bass_synth = synth bass or 808; guitar_electric_clean = clean electric guitar; guitar_electric_distorted = distorted or overdriven electric guitar; guitar_acoustic = acoustic guitar (steel strings); guitar_nylon = nylon-string or classical guitar; piano = piano; organ = organ; synth_pad = synth pad; synth_lead = synth lead; keys_other = other keys (Rhodes, e-piano, keyboard); vocal_lead = lead vocal (the main sung vocal); vocal_backing = backing vocals, harmonies or ad-libs; vocal_rap = rap vocal; strings = strings (violin, cello, string section); brass = brass (trumpet, trombone, horns); woodwinds = woodwinds (flute, sax, clarinet); instrumental = full instrumental or beat (everything but the vocals on one stereo track); ambient = ambience, effects, textures or noise; other = something else, or not sure."
}
},
"required": [
"stemId",
"label"
]
}
}
},
"required": [
"songId",
"labels"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴mix_and_master(songId, preset, master)
Mixes an existing song's stems and masters the mix in one go (draft, final mix, master), for example to mix it again with another genre or mastering style; a song made with create_song is already set up for this. It waits for the uploads, the analysis and the person's "Labels are correct" in the studio, then starts by itself. The mastering style is the one the person names (streaming when they name none). The studio shows the progress and plays the result; a new mix replaces the earlier version made in the chat (downloaded versions and mixes made on the website stay).
Input Schema
{
"type": "object",
"properties": {
"songId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The song id from list_songs or create_song."
},
"preset": {
"type": "string",
"enum": [
"streaming",
"optimal",
"loud"
],
"description": "Mastering style. streaming = optimized for Spotify and Apple Music; optimal = balanced (\"Standard\"); loud = maximum punch and loudness."
},
"master": {
"description": "false = mix only, without a master (default true).",
"type": "boolean"
}
},
"required": [
"songId"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴start_mastering(songId, preset)
Masters the song's finished mix, or masters it again in another style (for example "louder": loud). The song needs a finished mix, from mix_and_master or an uploaded mix. The studio shows the progress and plays the new master, which replaces an earlier master made in the chat (downloaded ones stay).
Input Schema
{
"type": "object",
"properties": {
"songId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The song id from list_songs or create_song."
},
"preset": {
"type": "string",
"enum": [
"streaming",
"optimal",
"loud"
],
"description": "Mastering style. streaming = optimized for Spotify and Apple Music; optimal = balanced (\"Standard\"); loud = maximum punch and loudness."
}
},
"required": [
"songId",
"preset"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴adjust_mix(songId, changes, preset)
Changes a song mixed from stems the way the person asks after listening: a stem louder or quieter, muted or back in, more or less reverb, or placed left, center or right. One call takes all the changes for a song. Bandmixr then makes the mix and the master again with the changes (about as long as the first mix); the studio shows the progress and plays the new version, which replaces the earlier version made in the chat (downloaded versions and mixes made on the website stay). Stem ids, file names and the current settings come from get_song_status.
Input Schema
{
"type": "object",
"properties": {
"songId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The song id from list_songs or create_song."
},
"changes": {
"minItems": 1,
"maxItems": 64,
"type": "array",
"items": {
"type": "object",
"properties": {
"stemId": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"description": "The stem id from get_song_status."
},
"volumeDb": {
"description": "The stem's new level against Bandmixr's own balance in dB: 0 = Bandmixr's balance, +3 = 3 dB louder, -6 = 6 dB quieter. It replaces the current value (get_song_status shows it), so \"a bit louder\" from +2 is +4. About 1 to 2 dB is \"a bit\", 3 to 4 dB \"clearly\", 6 dB \"a lot\".",
"type": "number",
"minimum": -24,
"maximum": 12
},
"muted": {
"description": "true = leave the stem out of the mix; false = bring it back.",
"type": "boolean"
},
"reverb": {
"type": "string",
"enum": [
"default",
"none",
"low",
"medium",
"high"
],
"description": "How much reverb the stem gets. default = Bandmixr's own amount; none = no reverb (dry); low = less reverb than Bandmixr's amount; medium = more reverb than Bandmixr's amount; high = a lot of reverb."
},
"pan": {
"type": "string",
"enum": [
"auto",
"left",
"center",
"right"
],
"description": "Where the stem sits from left to right. auto = Bandmixr places it; left = to the left; center = in the center; right = to the right."
}
},
"required": [
"stemId"
]
}
},
"preset": {
"description": "Mastering style for the new master; the current one if not given.",
"type": "string",
"enum": [
"streaming",
"optimal",
"loud"
]
}
},
"required": [
"songId",
"changes"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence