Split songs into vocals, drums, bass, guitar and piano stems, in batches; manage songs and setlists
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Make a setlist from the connected account's songs: one share link that opens them in order in the browser, for a band or a class. Anyone can open the link. Free accounts make setlists of up to 3 songs, Pro up to 50.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Make a setlist from the connected account's songs: one share link that opens them in order in the browser, for a band or a class. Anyone can open the link. Free accounts make setlists of up to 3 songs, Pro up to 50.
| Argument | Type | Description |
|---|---|---|
| title* | string | |
| split_ids* | array |
{
"type": "object",
"required": [
"title",
"split_ids"
],
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"split_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[a-f0-9]{16}$",
"description": "A split id from split_songs or list_my_songs."
},
"maxItems": 50,
"minItems": 1
}
},
"additionalProperties": false
}Permanently delete one of the connected account's songs and its stems. Its share link stops working. This cannot be undone, so confirm with the user first.
| Argument | Type | Description |
|---|---|---|
| split_id* | string | A split id from split_songs or list_my_songs. |
{
"type": "object",
"required": [
"split_id"
],
"properties": {
"split_id": {
"type": "string",
"pattern": "^[a-f0-9]{16}$",
"description": "A split id from split_songs or list_my_songs."
}
},
"additionalProperties": false
}Progress of a batch from split_songs: each song's status (queued, starting, processing, done, failed) and split id.
| Argument | Type | Description |
|---|---|---|
| batch_id* | string |
{
"type": "object",
"required": [
"batch_id"
],
"properties": {
"batch_id": {
"type": "string",
"pattern": "^[a-f0-9]{16}$"
}
},
"additionalProperties": false
}Describe what StemConsole can do, the available stems, and pricing: Free, Pro (monthly or yearly), any current free trial and single-song credits. No input required.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}The connected account's plan (free or pro), splits used and left this month, credits, and the API limits (songs per hour, splits at once, batch size). Needs a connected StemConsole account.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Status of one split and, once done, each stem's MP3 and preview links (plus WAV links and a ZIP of all stems on Pro, or on a song split with a credit), and a link that opens the song in StemConsole's practice room.
| Argument | Type | Description |
|---|---|---|
| split_id* | string | A split id from split_songs or list_my_songs. |
{
"type": "object",
"required": [
"split_id"
],
"properties": {
"split_id": {
"type": "string",
"pattern": "^[a-f0-9]{16}$",
"description": "A split id from split_songs or list_my_songs."
}
},
"additionalProperties": false
}Check the status of a split started by split_audio. Returns stem download URLs when status is done.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | The job_id returned by split_audio. |
| download_key | string | The download_key returned by split_audio. Needed for the full-quality stem URLs. |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "The job_id returned by split_audio."
},
"download_key": {
"type": "string",
"description": "The download_key returned by split_audio. Needed for the full-quality stem URLs."
}
},
"additionalProperties": false
}Return the StemConsole page URL for a specific audio task so you can hand the user a direct link.
| Argument | Type | Description |
|---|---|---|
| task* | string | The task to perform. |
{
"type": "object",
"required": [
"task"
],
"properties": {
"task": {
"enum": [
"remove_vocals",
"extract_acapella",
"make_karaoke",
"get_instrumental",
"isolate_drums",
"isolate_bass",
"isolate_guitar",
"isolate_piano",
"split_all",
"find_key_bpm",
"slow_down",
"change_key",
"loop_section",
"backing_track",
"practice_guitar",
"drum_practice",
"learn_by_ear",
"transcribe_bass",
"remove_vocals_mp3",
"pricing",
"demo"
],
"type": "string",
"description": "The task to perform."
}
},
"additionalProperties": false
}The connected account's most recent songs (My songs), newest first, with split ids and practice-room links.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}The connected account's setlists, each with its songs and share link.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Rename one of the connected account's songs in its library.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| split_id* | string | A split id from split_songs or list_my_songs. |
{
"type": "object",
"required": [
"split_id",
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1
},
"split_id": {
"type": "string",
"pattern": "^[a-f0-9]{16}$",
"description": "A split id from split_songs or list_my_songs."
}
},
"additionalProperties": false
}Separate a song at a public URL into stems. This is a PAID action via x402, settled in USDC on Base Sepolia (testnet): call once WITHOUT `payment` to receive payment requirements, then call again WITH the x402 `payment` receipt to start the split. Returns a job_id; poll get_split_result for the stem URLs. If the paid endpoint is switched off, the call returns an error; people can split in the browser at https://stemconsole.ai/ instead.
| Argument | Type | Description |
|---|---|---|
| model | string | vocals = Vocal Remover (2 stems: vocals, instrumental); fast = Basic Split (4 stems: vocals, drums, bass, other); full = Full Separation (6 stems, adds guitar and piano). |
| payment | string | x402 payment payload (base64 X-PAYMENT). Omit on the first call to receive the payment requirements. |
| filename | string | Optional filename hint if the URL has no audio extension. |
| audio_url* | string | Public URL of the audio file to split. |
{
"type": "object",
"required": [
"audio_url"
],
"properties": {
"model": {
"enum": [
"vocals",
"fast",
"full"
],
"type": "string",
"default": "vocals",
"description": "vocals = Vocal Remover (2 stems: vocals, instrumental); fast = Basic Split (4 stems: vocals, drums, bass, other); full = Full Separation (6 stems, adds guitar and piano)."
},
"payment": {
"type": "string",
"description": "x402 payment payload (base64 X-PAYMENT). Omit on the first call to receive the payment requirements."
},
"filename": {
"type": "string",
"description": "Optional filename hint if the URL has no audio extension."
},
"audio_url": {
"type": "string",
"description": "Public URL of the audio file to split."
}
},
"additionalProperties": false
}Split 1 to 10 songs into stems on the connected StemConsole account, using its own plan and allowance, the same as splitting on the website. Give each song as a public audio URL (a direct file link; Dropbox and Google Drive share links work). One song starts at once and returns its split; 2 to 10 are queued as a batch that runs two at a time. Then poll get_split or get_batch until status is done. model: vocals = Vocal Remover (vocals, instrumental), fast = Basic Split (vocals, drums, bass, other), full = Full Separation (adds guitar and piano; Pro or a credit).
| Argument | Type | Description |
|---|---|---|
| model | string | |
| songs* | array |
{
"type": "object",
"required": [
"songs"
],
"properties": {
"model": {
"enum": [
"vocals",
"fast",
"full"
],
"type": "string",
"default": "vocals"
},
"songs": {
"type": "array",
"items": {
"type": "object",
"required": [
"audio_url"
],
"properties": {
"name": {
"type": "string",
"description": "Song name for the library. Defaults to the file name."
},
"audio_url": {
"type": "string",
"description": "Public URL of the audio file (MP3, WAV, FLAC, OGG, M4A, AAC or WMA, up to 200 MB)."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1
}
},
"additionalProperties": false
}