Quickstart
End-to-end flow: authenticate, upload, submit, and monitor.
1. Authenticate
Get an access token using JSON-RPC or HTTP:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "auth_login",
"arguments": {
"username": "user@email.com",
"password": "..."
}
}
}2. Upload Assets
Choose the method that fits your file location and size:
| Method | Use case |
|---|---|
upload_file | Small local files (base64) |
upload_file_from_url | Large public URLs |
POST /api/mcp/upload | HTTP multipart upload |
| Chunked upload | Large local files (>6MB chunks) |
Each upload returns a fileUrl to use in the submission.
3. Submit Release
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "submit_release",
"arguments": {
"access_token": "<token>",
"release": {
"title": "My Release",
"primary_artist_name": "Artist Name",
"genre": "Pop",
"release_date": "2026-02-01",
"cover_art_file_url": "/api/files/cover-art/USER_ID/cover.jpg"
},
"tracks": [
{
"title": "My Release",
"primary_artist_name": "Artist Name",
"audio_file_url": "/api/files/audio/USER_ID/track.wav",
"explicit_flag": false,
"writers": [{ "name": "First Last" }]
}
]
}
}
}4. Monitor Status
Poll these tools to track processing:
get_release_status— Store delivery statusget_release_job— Processing job statusget_release_metadata— Current metadata state
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_release_status",
"arguments": {
"access_token": "<token>",
"releaseId": "<release-id>"
}
}
}