StemConsole

Split songs into vocals, drums, bass, guitar and piano stems, in batches; manage songs and setlists

Should I use this

Quality & Safety

B
Description quality
95%
Schema completeness
73%
Naming quality
95%
Poisoning risk
80%
Permission match
90%
Protocol compliance
100%

Findings (5)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin split_audio
  • LOWTool 'get_capabilities' description lacks action verbin get_capabilities
  • LOWTool 'get_task_url' description lacks action verbin get_task_url
  • LOWTool 'get_task_url' suggests web access but openWorldHint=falsein get_task_url

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,889Tokens (tool definitions)
~775 BTypical response size
Moderate attention impact (1.48% of 128k context)

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": {
    "stemconsole": {
      "url": "https://stemconsole.ai/mcp/account"
    }
  }
}

Remote endpoints

https://stemconsole.ai/mcp/accountstreamable-http
https://stemconsole.ai/mcpstreamable-http

What it can do

Tool inventory

Tools (13)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_capabilities

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢get_task_url(task)

Return the StemConsole page URL for a specific audio task so you can hand the user a direct link.

Input Schema

{
  "type": "object",
  "properties": {
    "task": {
      "type": "string",
      "description": "The task to perform.",
      "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"
      ]
    }
  },
  "required": [
    "task"
  ],
  "additionalProperties": false
}
🟢split_audio(audio_url, model, payment, filename)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "audio_url": {
      "type": "string",
      "description": "Public URL of the audio file to split."
    },
    "model": {
      "type": "string",
      "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).",
      "enum": [
        "vocals",
        "fast",
        "full"
      ],
      "default": "vocals"
    },
    "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."
    }
  },
  "required": [
    "audio_url"
  ],
  "additionalProperties": false
}
🟢get_split_result(job_id, download_key)

Check the status of a split started by split_audio. Returns stem download URLs when status is done.

Input Schema

{
  "type": "object",
  "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."
    }
  },
  "required": [
    "job_id"
  ],
  "additionalProperties": false
}
🟢get_my_account

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.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢split_songs(songs, model)

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).

Input Schema

{
  "type": "object",
  "properties": {
    "songs": {
      "type": "array",
      "minItems": 1,
      "maxItems": 10,
      "items": {
        "type": "object",
        "properties": {
          "audio_url": {
            "type": "string",
            "description": "Public URL of the audio file (MP3, WAV, FLAC, OGG, M4A, AAC or WMA, up to 200 MB)."
          },
          "name": {
            "type": "string",
            "description": "Song name for the library. Defaults to the file name."
          }
        },
        "required": [
          "audio_url"
        ],
        "additionalProperties": false
      }
    },
    "model": {
      "type": "string",
      "enum": [
        "vocals",
        "fast",
        "full"
      ],
      "default": "vocals"
    }
  },
  "required": [
    "songs"
  ],
  "additionalProperties": false
}
🟢get_split(split_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "split_id": {
      "type": "string",
      "description": "A split id from split_songs or list_my_songs.",
      "pattern": "^[a-f0-9]{16}$"
    }
  },
  "required": [
    "split_id"
  ],
  "additionalProperties": false
}
🟢get_batch(batch_id)

Progress of a batch from split_songs: each song's status (queued, starting, processing, done, failed) and split id.

Input Schema

{
  "type": "object",
  "properties": {
    "batch_id": {
      "type": "string",
      "pattern": "^[a-f0-9]{16}$"
    }
  },
  "required": [
    "batch_id"
  ],
  "additionalProperties": false
}
🟢list_my_songs

The connected account's most recent songs (My songs), newest first, with split ids and practice-room links.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🔴rename_song(split_id, name)

Rename one of the connected account's songs in its library.

Input Schema

{
  "type": "object",
  "properties": {
    "split_id": {
      "type": "string",
      "description": "A split id from split_songs or list_my_songs.",
      "pattern": "^[a-f0-9]{16}$"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "split_id",
    "name"
  ],
  "additionalProperties": false
}
🔴delete_song(split_id)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "split_id": {
      "type": "string",
      "description": "A split id from split_songs or list_my_songs.",
      "pattern": "^[a-f0-9]{16}$"
    }
  },
  "required": [
    "split_id"
  ],
  "additionalProperties": false
}
🟢list_setlists

The connected account's setlists, each with its songs and share link.

Input Schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟡create_setlist(title, split_ids)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "split_ids": {
      "type": "array",
      "items": {
        "type": "string",
        "description": "A split id from split_songs or list_my_songs.",
        "pattern": "^[a-f0-9]{16}$"
      },
      "minItems": 1,
      "maxItems": 50
    }
  },
  "required": [
    "title",
    "split_ids"
  ],
  "additionalProperties": false
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded13 tools
auth requiredversion not recorded—