Skip to main content
Glama

musicbrainz-mcp-server: get release

musicbrainz_get_release
Read-onlyIdempotent

One edition by MBID: ordered media with tracks, track-specific artist credits when supplied, lengths and recording MBIDs, label + catalog number, barcode, country, release date, packaging, text representation, external links, and a cover-art availability stub. media_offset (default 0) and media_limit (default 20, no maximum) select whole media after normalization; mediaTotal and trackTotal describe the full release. Follow the notice to retrieve remaining media. The release resource retains the complete raw tracklist. Track lengths are m:ss. For image URLs, call musicbrainz_get_cover_art.

Input Schema

NameRequiredDescriptionDefault
mbidYesRelease MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted).
media_limitNoMaximum whole media returned (default 20; no upper bound).
media_offsetNoZero-based medium offset in release order (default 0).

Output Schema

NameRequiredDescriptionDefault
capNoRequested media limit when more remain.
dateNoRelease date. Omitted when absent.
mbidNoRelease MBID.
errorNoPresent when the call failed. Absent on success.
mediaNoSelected media in release order, with complete tracklists for each medium (may be empty).
shownNoNumber of media returned when more remain.
titleNoRelease title.
noticeNoNext media_offset, exhaustion, or no-media guidance.
scriptNoText-representation script code. Omitted when absent.
statusNoRelease status (Official, Promotion, Bootleg, …). Omitted when absent.
barcodeNoBarcode (UPC/EAN). Omitted when absent; empty string upstream means "known to have none".
countryNoRelease country code. Omitted when absent.
coverArtNoWhether cover art exists (availability stub from WS/2).
languageNoText-representation language code. Omitted when absent.
labelInfoNoLabel / catalog-number pairings (may be empty).
packagingNoPackaging type (Jewel Case, Digipak, …). Omitted when absent.
truncatedNoTrue when media remain after this nonempty page.
mediaTotalNoExact number of media in the whole normalized release.
trackTotalNoExact number of track occurrences in the whole normalized release, independent of upstream trackCount.
mediaOffsetNoEffective zero-based medium offset.
artistCreditNoCredited artists (may be empty).
externalLinksNoExternal links for this edition, such as Discogs release pages (may be empty).
disambiguationNoShort qualifier. Omitted when absent.
releaseGroupIdNoParent release-group MBID — chain to musicbrainz_get_release_group. Omitted when absent.
artistCreditStringNoDisplay string of the artist credit with join phrases.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "mbid",
      -      "title",
      -      "artistCredit",
      -      "artistCreditString",
      -      "labelInfo",
      -      "mediaOffset",
      -      "mediaTotal",
      -      "trackTotal",
      -      "media",
      -      "coverArt"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "mbid",
      +      "title",
      +      "artistCredit",
      +      "artistCreditString",
      +      "labelInfo",
      +      "externalLinks",
      +      "mediaOffset",
      +      "mediaTotal",
      +      "trackTotal",
      +      "media",
      +      "coverArt"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / externalLinks
      Added value: +{
      +  "description": "External links for this edition, such as Discogs release pages (may be empty).",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "An external resource link (url-rel). Where cross-service IDs like Wikidata QID are surfaced.",
      +    "properties": {
      +      "resource": {
      +        "description": "The external URL. Wikidata/Discogs IDs live in the URL path — chain to those servers.",
      +        "type": "string"
      +      },
      +      "type": {
      +        "description": "Link type (e.g. \"wikidata\", \"discogs\", \"official homepage\", \"streaming\").",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "type",
      +      "resource"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / media / items / properties / tracks / items / properties / artistCredit
      Added value: +{
      +  "description": "Track-specific artist credit. Omitted when not supplied; may be empty.",
      +  "items": {
      +    "additionalProperties": false,
      +    "description": "One credited artist within an artist credit.",
      +    "properties": {
      +      "artistId": {
      +        "description": "MBID of the credited artist — chain to musicbrainz_get_artist.",
      +        "type": "string"
      +      },
      +      "artistName": {
      +        "description": "Canonical artist name.",
      +        "type": "string"
      +      },
      +      "joinPhrase": {
      +        "description": "Text that joins this credit to the next (e.g. \" feat. \", \" & \"). Omitted when empty.",
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "Credited name as it appears on the release (may be an alias).",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "artistId",
      +      "artistName"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / media / items / properties / tracks / items / properties / artistCreditString
      Added value: +{
      +  "description": "Track-specific display credit with verbatim join phrases. Omitted without credited artists.",
      +  "type": "string"
      +}
  2. Changed11 schema fields changed
    • addedInput schema / properties / media_limit
      Added value: +{
      +  "default": 20,
      +  "description": "Maximum whole media returned (default 20; no upper bound).",
      +  "maximum": 9007199254740991,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / media_offset
      Added value: +{
      +  "default": 0,
      +  "description": "Zero-based medium offset in release order (default 0).",
      +  "maximum": 9007199254740991,
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "not": {
      -      "required": [
      -        "error"
      -      ]
      -    },
      -    "required": [
      -      "mbid",
      -      "title",
      -      "artistCredit",
      -      "artistCreditString",
      -      "labelInfo",
      -      "media",
      -      "coverArt"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "error"
      -    ]
      -  }
      -]New value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "mbid",
      +      "title",
      +      "artistCredit",
      +      "artistCreditString",
      +      "labelInfo",
      +      "mediaOffset",
      +      "mediaTotal",
      +      "trackTotal",
      +      "media",
      +      "coverArt"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / cap
      Added value: +{
      +  "description": "Requested media limit when more remain.",
      +  "type": "number"
      +}
    • changedOutput schema / properties / media / description
      Previous value: -"Media (discs) with their tracklists (may be empty)."New value: +"Selected media in release order, with complete tracklists for each medium (may be empty)."
    • addedOutput schema / properties / mediaOffset
      Added value: +{
      +  "description": "Effective zero-based medium offset.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / mediaTotal
      Added value: +{
      +  "description": "Exact number of media in the whole normalized release.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / notice
      Added value: +{
      +  "description": "Next media_offset, exhaustion, or no-media guidance.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / shown
      Added value: +{
      +  "description": "Number of media returned when more remain.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / trackTotal
      Added value: +{
      +  "description": "Exact number of track occurrences in the whole normalized release, independent of upstream trackCount.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / truncated
      Added value: +{
      +  "description": "True when media remain after this nonempty page.",
      +  "type": "boolean"
      +}
  3. Changed3 schema fields changed
    • changedInput schema / properties / mbid / description
      Previous value: -"Release MBID (36-character UUID)."New value: +"Release MBID (hyphenated hexadecimal UUID; surrounding whitespace and uppercase accepted)."
    • addedInput schema / properties / mbid / pattern
      Added value: +"^\\s*[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{4}-[0-9A-Fa-f]{12}\\s*$"
    • changedOutput schema / properties / error / properties / data / properties / reason / description
      Previous value: -"Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (MusicBrainz returns HTTP 400). `entity_not_found`: The MBID is well-formed but no release exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (rejected before fetch), or MusicBrainz rejects it with HTTP 400. `entity_not_found`: The MBID is well-formed but no release exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler."
  4. Changed6 schema fields changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedInput schema / additionalProperties
      Added value: +false
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • addedOutput schema / anyOf
      Added value: +[
      +  {
      +    "not": {
      +      "required": [
      +        "error"
      +      ]
      +    },
      +    "required": [
      +      "mbid",
      +      "title",
      +      "artistCredit",
      +      "artistCreditString",
      +      "labelInfo",
      +      "media",
      +      "coverArt"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "error"
      +    ]
      +  }
      +]
    • addedOutput schema / properties / error
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Present when the call failed. Absent on success.",
      +  "properties": {
      +    "code": {
      +      "description": "JSON-RPC error code for this failure.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "data": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "reason": {
      +          "description": "Machine-readable failure mode. Declared by this tool: `invalid_mbid`: The MBID is malformed or the all-zeros sentinel (MusicBrainz returns HTTP 400). `entity_not_found`: The MBID is well-formed but no release exists with it (MusicBrainz returns HTTP 404). Other values are possible when a failure originates below the handler.",
      +          "examples": [
      +            "invalid_mbid",
      +            "entity_not_found"
      +          ],
      +          "type": "string"
      +        },
      +        "recovery": {
      +          "additionalProperties": {},
      +          "description": "Actionable next step for the caller.",
      +          "properties": {
      +            "hint": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "hint"
      +          ],
      +          "type": "object"
      +        },
      +        "retryable": {
      +          "description": "Whether retrying may succeed.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable description of what went wrong.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "code",
      +    "message"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / required
      Removed value: -[
      -  "mbid",
      -  "title",
      -  "artistCredit",
      -  "artistCreditString",
      -  "labelInfo",
      -  "media",
      -  "coverArt"
      -]
  5. First observed

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld, so the safety profile is covered; the description goes further by disclosing that media are paginated as whole units after normalization, that mediaTotal/trackTotal describe the full release, that truncation is signalled via a notice, and that cover art is only a stub. Those are the non-obvious traits an agent needs and they exceed annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and information-dense, but the long field enumeration (packaging, barcode, country, text representation, external links) largely restates what the output schema already declares. That clause could be cut without losing anything an agent needs to decide or call correctly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers pagination, units, truncation recovery, and the cover-art hand-off, which is what matters for a paginated read tool. With an output schema present, the extra return-value catalogue is redundant rather than harmful, and no critical behavior is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning: offset/limit select whole media after normalization rather than individual tracks, and the counters describe the full release rather than the page. That normalization detail is not derivable from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb/resource pair ("One edition by MBID") and enumerates the returned content, which distinguishes it from generic lookups. However, it never addresses the potentially confusing boundary with musicbrainz_get_release_group or musicbrainz_get_recording, so an agent must already know what a 'release edition' is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives one explicit alternative ("For image URLs, call musicbrainz_get_cover_art") and operational guidance ("Follow the notice to retrieve remaining media"), which is real routing value. But there is no guidance on when to prefer this over search_entities or browse_entities to find a release, leaving the main selection decision implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.