Zeltor Music Tools
Check if two songs mix (Camelot key, BPM), read shared song DNA reports, tempo and nightcore math.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- MEDIUMin song_report
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": {
"music-tools": {
"url": "https://zeltorlabs.com/mcp"
}
}
}Remote endpoints
https://zeltorlabs.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (6)
🟢check_mix(key_a, bpm_a, key_b, bpm_b)
Decides whether two songs will mix well, from their keys and BPMs, using the Camelot wheel and DJ tempo limits (about 3% sounds natural, up to about 16% is usable, half and double time count). Returns a verdict, the tempo change in percent and the target BPM for track B, the smallest key shift in semitones if the keys clash, and a link to make the matched audio.
Input Schema
{
"type": "object",
"properties": {
"key_a": {
"type": "string",
"description": "Track A key. Musical key: a name like \"A minor\", \"Am\", \"F#m\", \"Bb major\", \"C\", or a Camelot code like \"8A\"."
},
"bpm_a": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Track A tempo in BPM."
},
"key_b": {
"type": "string",
"description": "Track B key (the one that would be changed). Musical key: a name like \"A minor\", \"Am\", \"F#m\", \"Bb major\", \"C\", or a Camelot code like \"8A\"."
},
"bpm_b": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Track B tempo in BPM."
}
},
"required": [
"key_a",
"bpm_a",
"key_b",
"bpm_b"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢camelot(key)
Gives the Camelot wheel code for a key and the three other keys that mix cleanly with it (one step either way with the same letter, and the relative major or minor).
Input Schema
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Musical key: a name like \"A minor\", \"Am\", \"F#m\", \"Bb major\", \"C\", or a Camelot code like \"8A\"."
}
},
"required": [
"key"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢tempo_change(from_bpm, to_bpm)
Percent change and playback rate to go from one BPM to another, how noticeable it will sound, the pitch change if it is not time-stretched, and the half and double time of the target.
Input Schema
{
"type": "object",
"properties": {
"from_bpm": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Current tempo in BPM."
},
"to_bpm": {
"type": "number",
"minimum": 20,
"maximum": 400,
"description": "Target tempo in BPM."
}
},
"required": [
"from_bpm",
"to_bpm"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢speed_pitch(style, speed, bpm)
For a nightcore (faster and higher) or slowed (slower and lower) version: the pitch change in semitones for a speed, the new BPM if given, and typical settings. Defaults: nightcore 1.25x, slowed 0.80x.
Input Schema
{
"type": "object",
"properties": {
"style": {
"description": "Which effect; sets the default speed.",
"type": "string",
"enum": [
"nightcore",
"slowed"
]
},
"speed": {
"description": "Playback speed, e.g. 1.25 for 25% faster or 0.8 for 20% slower.",
"type": "number",
"minimum": 0.5,
"maximum": 2
},
"bpm": {
"description": "Original tempo, to report the new BPM.",
"type": "number",
"minimum": 20,
"maximum": 400
}
},
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢transpose(key, semitones)
Moves a key up or down by semitones and gives the new key name and Camelot code, with a note on how natural the shift will sound.
Input Schema
{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Musical key: a name like \"A minor\", \"Am\", \"F#m\", \"Bb major\", \"C\", or a Camelot code like \"8A\"."
},
"semitones": {
"type": "integer",
"minimum": -12,
"maximum": 12,
"description": "Semitones to move, negative is down."
}
},
"required": [
"key",
"semitones"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢song_report(link)
Reads the song DNA from a MusicMind report the person made on zeltorlabs.com and shared: key and Camelot code with the keys that mix with it, BPM, genre mix, section structure with energy, and production DNA (energy profile, mood, arrangement density, compression, biggest moments). Takes the share link (https://zeltorlabs.com/report/r/<code>) or its code. Use the key and BPM with check_mix to compare it with another song. If the person has no report yet, they can make one free at https://zeltorlabs.com/analyze (the audio is analyzed in their browser).
Input Schema
{
"type": "object",
"properties": {
"link": {
"type": "string",
"description": "The report share link, e.g. https://zeltorlabs.com/report/r/abc123def456, or its code."
}
},
"required": [
"link"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence