MCPUploads

Uploads

Three upload methods for cover art and audio files. Cover art is resized to 3000x3000. Audio is transcoded to WAV.

Option A: Base64 Upload

Use upload_file for small local files:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "upload_file",
    "arguments": {
      "access_token": "<token>",
      "type": "coverArt",
      "file_name": "cover.jpg",
      "file_base64": "<base64>"
    }
  }
}

Accepts raw base64 or data: URLs. Optional mime_type parameter.

Option B: URL Upload

Use upload_file_from_url for large public files:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "upload_file_from_url",
    "arguments": {
      "access_token": "<token>",
      "type": "audio",
      "file_url": "https://example.com/track.wav"
    }
  }
}

URL must be publicly accessible (no localhost).

Option C: HTTP Multipart

POST /api/mcp/upload with form-data:

FieldValue
fileBinary file
typecoverArt or audio

Option D: Chunked Upload

For large local files, use the chunked flow:

1. Initialize

POST /api/upload/init

{
  "fileName": "Track.wav",
  "fileSize": 2286757,
  "fileType": "audio/wav",
  "totalChunks": 2,
  "sessionId": "uuid-v4",
  "type": "audio"
}

2. Upload Chunks

POST /api/upload/chunk — Three formats supported:

Multipart: Form-data fields chunk, chunkIndex, sessionId, type

JSON Base64:

{
  "sessionId": "uuid-v4",
  "chunkIndex": 0,
  "type": "audio",
  "chunkBase64": "<base64>"
}

Raw Bytes: Content-Type: application/octet-stream with headers x-session-id, x-chunk-index, x-upload-type

3. Complete

POST /api/upload/complete

{
  "sessionId": "uuid-v4",
  "fileName": "Track.wav",
  "fileType": "audio/wav",
  "type": "audio"
}

Limits

TypeMax SizeNotes
Cover art50 MBMust be an image
Audio200 MBAudio formats or MP4
Chunk6 MBPer chunk