MCPSchema

Schema

Here’s the data contract for submitting a release. The MVP fields below remain the hard runtime requirements for backwards compatibility. New REST/MCP clients should also provide DSP selection, label, C/P copyright credits, track type, and role credits when collecting metadata.

You can fetch the schema in two ways (after MCP authentication):

  • get_release_schema tool
  • resources/read for mcp://schemas/release-required

Before building payloads, agents should also read mcp://docs/metadata-rules-hitlist (or call get_metadata_rules) for policy rules that are not all expressed in the JSON schema: generic artist names, UPC, AI disclosure, cover songs, and more.

Most clients load resources automatically after resources/list, but you can always call them directly if you need a fresh copy.

Release Fields

FieldRequiredNotes
titleYesRelease title
primary_artist_nameYesMain artist
genreYesMusic genre
release_dateYesFormat: YYYY-MM-DD
cover_art_file_urlYesFrom upload endpoint
distribution_store_idsNew clientsNon-empty supported DSP store IDs, or null for all supported stores
labelNew clientsRecord label name
sub_genreNoOptional second genre
audio_languageNoRelease audio language ISO code, e.g. en
metadata_languageNoRelease metadata language ISO code, e.g. en
pline_year / pline_ownerNew clientsP-line copyright credit
cline_year / cline_ownerNew clientsC-line copyright credit
contributorsNew clientsRole credits such as Producer and Engineer
artist_localsNoLocalized artist names using Revelator languageId

Track Fields

FieldRequiredNotes
titleYesNo placeholders
audio_file_urlYesFrom upload endpoint
explicit_flagYesBoolean
writersYesArray, at least one
track_typeNew clientsoriginal, cover, or public_domain
isrcNoOptional valid ISRC
languageNoTrack language ISO code, e.g. en
lyricsNoPlain text lyrics
pline_year / pline_ownerNew clientsTrack-level P-line copyright credit
cline_year / cline_ownerNew clientsTrack-level C-line copyright credit
contributorsNew clientsRole credits such as Producer and Engineer
artist_localsNoLocalized artist names using Revelator languageId

Validation Rules

  • Single tracks: track.title must match release.title, and track.title_version must match release.title_version
  • Writers: Each writer.name must be a full legal name (first + last)
  • Explicit flag: Must be boolean true or false
  • Primary artist: Must be a real artist/band name, not generic labels like “Christmas Music” or “Yoga Music” (see Agent Setup / mcp://docs/metadata-rules-hitlist)
  • UPC: Never user-supplied, ONCE generates at distribution
  • DSP selection: New clients should set release.distribution_store_ids from get_distribution_stores; use null for all supported stores and never send an empty array
  • Remix: Do not send remix as track_type; use title_version: "Remix" and a Remixer contributor
  • Localization: artist_locals is supported for artist names; localized release/track title and version fields are not persisted yet

AI Content & Billing

Every audio upload is run through the Vobile/Pex AI Song Detector. You can also declare AI content explicitly on a track:

FieldTypeNotes
contains_aibooleanSet to true if the track contains AI-generated content. Maps to Revelator track property 8 (Includes AI).

Use the detect_audio_ai tool to read the cached detection result (predicted model + confidence) before submission.

Billing is 1 credit per human song and 2 credits per AI-detected song on every surface (regular MCP, AIMD, in-app upload, OMG generation). Provenance is recorded for analytics but does not change the rate.

Example Payload

{
  "release": {
    "title": "My Release",
    "primary_artist_name": "Artist Name",
    "genre": "Pop",
    "sub_genre": "Dance Pop",
    "release_date": "2026-02-01",
    "label": "Artist Name Records",
    "audio_language": "en",
    "metadata_language": "en",
    "distribution_store_ids": [1, 9, 13, 319],
    "pline_year": "2026",
    "pline_owner": "Artist Name Records",
    "cline_year": "2026",
    "cline_owner": "Artist Name Records",
    "cover_art_file_url": "/api/files/cover-art/USER_ID/cover.jpg",
    "contributors": [
      { "name": "First Producer", "role": "Producer" },
      { "name": "First Engineer", "role": "Engineer" }
    ]
  },
  "tracks": [
    {
      "title": "My Release",
      "primary_artist_name": "Artist Name",
      "audio_file_url": "/api/files/audio/USER_ID/track.wav",
      "explicit_flag": false,
      "track_type": "original",
      "language": "en",
      "pline_year": "2026",
      "pline_owner": "Artist Name Records",
      "cline_year": "2026",
      "cline_owner": "Artist Name Records",
      "writers": [{ "name": "First Last" }],
      "contributors": [
        { "name": "First Producer", "role": "Producer" },
        { "name": "First Engineer", "role": "Engineer" }
      ]
    }
  ]
}