MusicBrainz — Tool Reference
Resolve canonical MusicBrainz identifiers and read metadata from Toolforest's replicated MusicBrainz mirror
Your AI assistant discovers and invokes these tools through the
MCP Server's meta tools —
it calls execute_tool with the tool name and arguments below.
# get_artist read
Get MusicBrainz artist metadata and tags by artist MBID.
Full description
Get artist metadata from the replicated MusicBrainz mirror.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
}
},
"required": [
"mbid"
],
"title": "MbidParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"artist": {
"additionalProperties": true,
"title": "Artist",
"type": "object"
}
},
"required": [
"success",
"artist"
],
"title": "GetArtistResult",
"type": "object"
} # get_artist_credited_recordings read
Find recordings where an artist is credited as producer, engineer, performer, vocalist, or another relationship role.
Full description
Get the inverse view of recording credits for an artist.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
credit_type | string | array<string> | null | No | Optional single MusicBrainz recording relationship type filter for this artist, such as 'producer', 'engineer', 'instrument', 'vocal', 'performer', or 'mix'. |
credit_types | array<string> | No | Optional MusicBrainz recording relationship type filters, e.g. ['producer', 'mix', 'engineer']. |
limit | integer | No | Maximum credited recordings to return. Default: 100 |
offset | integer | No | Pagination offset. Default: 0 |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
},
"credit_type": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional single MusicBrainz recording relationship type filter for this artist, such as 'producer', 'engineer', 'instrument', 'vocal', 'performer', or 'mix'.",
"title": "Credit Type"
},
"credit_types": {
"description": "Optional MusicBrainz recording relationship type filters, e.g. ['producer', 'mix', 'engineer'].",
"items": {
"type": "string"
},
"title": "Credit Types",
"type": "array"
},
"limit": {
"default": 100,
"description": "Maximum credited recordings to return.",
"maximum": 200,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Pagination offset.",
"minimum": 0,
"title": "Offset",
"type": "integer"
}
},
"required": [
"mbid"
],
"title": "GetArtistCreditedRecordingsParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"artist_mbid": {
"title": "Artist Mbid",
"type": "string"
},
"recordings": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Recordings",
"type": "array"
}
},
"required": [
"success",
"artist_mbid",
"recordings"
],
"title": "GetArtistCreditedRecordingsResult",
"type": "object"
} # get_artist_recordings read
Get an artist's primary-credit MusicBrainz recordings, sorted by ListenBrainz popularity by default.
Full description
Get recordings where the artist is the primary credited artist.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
sort | "listen_count" | "first_release_date" | No | Sort recordings by replicated ListenBrainz listen count or, when available in the mirror, release-group first release date. Default: "listen_count" |
limit | integer | No | Maximum recordings to return. Default: 50 |
offset | integer | No | Pagination offset. Default: 0 |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
},
"sort": {
"default": "listen_count",
"description": "Sort recordings by replicated ListenBrainz listen count or, when available in the mirror, release-group first release date.",
"enum": [
"listen_count",
"first_release_date"
],
"title": "Sort",
"type": "string"
},
"limit": {
"default": 50,
"description": "Maximum recordings to return.",
"maximum": 200,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Pagination offset.",
"minimum": 0,
"title": "Offset",
"type": "integer"
}
},
"required": [
"mbid"
],
"title": "GetArtistRecordingsParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"artist_mbid": {
"title": "Artist Mbid",
"type": "string"
},
"recordings": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Recordings",
"type": "array"
}
},
"required": [
"success",
"artist_mbid",
"recordings"
],
"title": "GetArtistRecordingsResult",
"type": "object"
} # get_artist_relationships read
Get MusicBrainz artist-to-artist relationships such as band membership and collaborations.
Full description
Get artist relationships from Toolforest's replicated MusicBrainz relationship tables.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
relationship_type | string | null | No | Optional MusicBrainz relationship type filter, such as 'member of band', 'collaboration', 'founder', or 'teacher'. |
limit | integer | No | Maximum relationships to return. Default: 50 |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
},
"relationship_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional MusicBrainz relationship type filter, such as 'member of band', 'collaboration', 'founder', or 'teacher'.",
"title": "Relationship Type"
},
"limit": {
"default": 50,
"description": "Maximum relationships to return.",
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"mbid"
],
"title": "GetArtistRelationshipsParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"artist_mbid": {
"title": "Artist Mbid",
"type": "string"
},
"relationships": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Relationships",
"type": "array"
}
},
"required": [
"success",
"artist_mbid",
"relationships"
],
"title": "GetArtistRelationshipsResult",
"type": "object"
} # get_artist_release_groups read
List an artist's MusicBrainz release groups such as albums, EPs, and singles.
Full description
Get release groups where the artist is the primary credited artist.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
release_type | "album" | "ep" | "single" | "broadcast" | "other" | null | No | Optional release-group primary type filter. |
limit | integer | No | Maximum release groups to return. Default: 50 |
offset | integer | No | Pagination offset. Default: 0 |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
},
"release_type": {
"anyOf": [
{
"enum": [
"album",
"ep",
"single",
"broadcast",
"other"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional release-group primary type filter.",
"title": "Release Type"
},
"limit": {
"default": 50,
"description": "Maximum release groups to return.",
"maximum": 200,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Pagination offset.",
"minimum": 0,
"title": "Offset",
"type": "integer"
}
},
"required": [
"mbid"
],
"title": "GetArtistReleaseGroupsParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"artist_mbid": {
"title": "Artist Mbid",
"type": "string"
},
"release_groups": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Release Groups",
"type": "array"
}
},
"required": [
"success",
"artist_mbid",
"release_groups"
],
"title": "GetArtistReleaseGroupsResult",
"type": "object"
} # get_external_links read
Get normalized external links for a MusicBrainz artist or recording.
Full description
Get Phase 1 external links for artists or recordings.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
entity_type | "artist" | "recording" | Yes | Phase 1 supports artist and recording links. |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
},
"entity_type": {
"description": "Phase 1 supports artist and recording links.",
"enum": [
"artist",
"recording"
],
"title": "Entity Type",
"type": "string"
}
},
"required": [
"mbid",
"entity_type"
],
"title": "GetExternalLinksParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"entity_type": {
"title": "Entity Type",
"type": "string"
},
"mbid": {
"title": "Mbid",
"type": "string"
},
"links": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Links",
"type": "array"
}
},
"required": [
"success",
"entity_type",
"mbid",
"links"
],
"title": "GetExternalLinksResult",
"type": "object"
} # get_genres_and_tags read
Get MusicBrainz tags and genre-like labels for an artist or recording.
Full description
Get tags for artists or recordings. Genres are returned as the same mirror tag set for now.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
entity_type | "artist" | "recording" | Yes | Phase 1 supports artist and recording tags. |
limit | integer | No | Maximum tags/genres to return. Default: 25 |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
},
"entity_type": {
"description": "Phase 1 supports artist and recording tags.",
"enum": [
"artist",
"recording"
],
"title": "Entity Type",
"type": "string"
},
"limit": {
"default": 25,
"description": "Maximum tags/genres to return.",
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"mbid",
"entity_type"
],
"title": "GetGenresAndTagsParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"entity_type": {
"title": "Entity Type",
"type": "string"
},
"mbid": {
"title": "Mbid",
"type": "string"
},
"tags": {
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"genres": {
"items": {
"type": "string"
},
"title": "Genres",
"type": "array"
}
},
"required": [
"success",
"entity_type",
"mbid",
"tags",
"genres"
],
"title": "GetGenresAndTagsResult",
"type": "object"
} # get_recording_credits read
Get MusicBrainz recording credits such as producers, engineers, vocalists, and instrumentalists.
Full description
Get credits for one recording. For multiple recording MBIDs, use get_recording_credits_batch. By default this returns relationships attached directly to the recording. Set include_release_level=true to also inspect releases containing the recording; those rows include source_level='release' plus release metadata.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
credit_type | string | array<string> | null | No | Optional single MusicBrainz recording credit type filter, such as 'producer', 'engineer', 'instrument', 'vocal', 'performer', or 'mix'. |
credit_types | array<string> | No | Optional MusicBrainz recording credit type filters, e.g. ['producer', 'mix', 'engineer']. |
include_release_level | boolean | No | Also include release-level artist relationships for releases that contain this recording. Use when recording-level credits are empty or incomplete; returned rows include source_level='release' and release provenance. Default: false |
limit | integer | No | Maximum recording credits to return. For multiple recording MBIDs, use get_recording_credits_batch. Default: 100 |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
},
"credit_type": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional single MusicBrainz recording credit type filter, such as 'producer', 'engineer', 'instrument', 'vocal', 'performer', or 'mix'.",
"title": "Credit Type"
},
"credit_types": {
"description": "Optional MusicBrainz recording credit type filters, e.g. ['producer', 'mix', 'engineer'].",
"items": {
"type": "string"
},
"title": "Credit Types",
"type": "array"
},
"include_release_level": {
"default": false,
"description": "Also include release-level artist relationships for releases that contain this recording. Use when recording-level credits are empty or incomplete; returned rows include source_level='release' and release provenance.",
"title": "Include Release Level",
"type": "boolean"
},
"limit": {
"default": 100,
"description": "Maximum recording credits to return. For multiple recording MBIDs, use get_recording_credits_batch.",
"maximum": 200,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"mbid"
],
"title": "GetRecordingCreditsParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"recording_mbid": {
"title": "Recording Mbid",
"type": "string"
},
"credits": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Credits",
"type": "array"
}
},
"required": [
"success",
"recording_mbid",
"credits"
],
"title": "GetRecordingCreditsResult",
"type": "object"
} # get_recording_credits_batch read
Batch get MusicBrainz recording credits for up to 50 recording MBIDs.
Full description
Get recording credits for multiple recordings in one Brainz API call. By default this returns relationships attached directly to each recording. Set include_release_level=true to also inspect releases containing each recording; release-level rows include source_level='release' plus release metadata.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbids | array<string> | Yes | Recording MBIDs to fetch credits for. |
credit_type | string | array<string> | null | No | Optional single MusicBrainz recording credit type filter. |
credit_types | array<string> | No | Optional MusicBrainz recording credit type filters, e.g. ['producer', 'mix', 'engineer']. |
include_release_level | boolean | No | Also include release-level artist relationships for releases that contain each recording. Returned rows include source_level='release' and release provenance. Default: false |
limit_per_recording | integer | No | Maximum credits to return per recording. Default: 100 |
Parameter schema (JSON)
{
"properties": {
"mbids": {
"description": "Recording MBIDs to fetch credits for.",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"title": "Mbids",
"type": "array"
},
"credit_type": {
"anyOf": [
{
"type": "string"
},
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional single MusicBrainz recording credit type filter.",
"title": "Credit Type"
},
"credit_types": {
"description": "Optional MusicBrainz recording credit type filters, e.g. ['producer', 'mix', 'engineer'].",
"items": {
"type": "string"
},
"title": "Credit Types",
"type": "array"
},
"include_release_level": {
"default": false,
"description": "Also include release-level artist relationships for releases that contain each recording. Returned rows include source_level='release' and release provenance.",
"title": "Include Release Level",
"type": "boolean"
},
"limit_per_recording": {
"default": 100,
"description": "Maximum credits to return per recording.",
"maximum": 200,
"minimum": 1,
"title": "Limit Per Recording",
"type": "integer"
}
},
"required": [
"mbids"
],
"title": "GetRecordingCreditsBatchParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"recordings": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Recordings",
"type": "array"
}
},
"required": [
"success",
"recordings"
],
"title": "GetRecordingCreditsBatchResult",
"type": "object"
} # get_recordings read
Fetch MusicBrainz recording metadata for up to 50 recording MBIDs.
Full description
Fetch recording metadata, optionally enriched with release-group metadata and tags.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbids | array<string> | Yes | Recording MBIDs to fetch. |
include | array<"tags" | "release_group"> | No | Optional enrichment fields. |
Parameter schema (JSON)
{
"properties": {
"mbids": {
"description": "Recording MBIDs to fetch.",
"items": {
"type": "string"
},
"maxItems": 50,
"minItems": 1,
"title": "Mbids",
"type": "array"
},
"include": {
"description": "Optional enrichment fields.",
"items": {
"enum": [
"tags",
"release_group"
],
"type": "string"
},
"title": "Include",
"type": "array"
}
},
"required": [
"mbids"
],
"title": "GetRecordingsParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"recordings": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Recordings",
"type": "array"
},
"missing_mbids": {
"items": {
"type": "string"
},
"title": "Missing Mbids",
"type": "array"
}
},
"required": [
"success",
"recordings",
"missing_mbids"
],
"title": "GetRecordingsResult",
"type": "object"
} # get_release_group read
Get release-group metadata by MusicBrainz release-group MBID.
Full description
Get release-group metadata only; editions and tracklists are out of scope for Phase 1.
| Parameter | Type | Required | Description |
|---|---|---|---|
mbid | string | Yes | MusicBrainz UUID. |
Parameter schema (JSON)
{
"properties": {
"mbid": {
"description": "MusicBrainz UUID.",
"minLength": 1,
"title": "Mbid",
"type": "string"
}
},
"required": [
"mbid"
],
"title": "MbidParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"release_group": {
"additionalProperties": true,
"title": "Release Group",
"type": "object"
}
},
"required": [
"success",
"release_group"
],
"title": "GetReleaseGroupResult",
"type": "object"
} # resolve_to_mbid read
Resolve an artist or recording query to MusicBrainz MBID candidates.
Full description
Resolve an artist name or recording title to MBID candidates.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Artist name, recording title, or free-text track query to resolve. |
entity_type | "artist" | "recording" | No | Entity type to resolve. Default: "recording" |
artist_hint | string | null | No | Optional artist name to improve recording resolution. |
isrc | string | null | No | Optional ISRC for exact recording resolution. |
mbid | string | null | No | Optional recording MBID for exact lookup. |
limit | integer | No | Maximum candidates to return. Default: 1 |
Parameter schema (JSON)
{
"properties": {
"query": {
"description": "Artist name, recording title, or free-text track query to resolve.",
"minLength": 1,
"title": "Query",
"type": "string"
},
"entity_type": {
"default": "recording",
"description": "Entity type to resolve.",
"enum": [
"artist",
"recording"
],
"title": "Entity Type",
"type": "string"
},
"artist_hint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional artist name to improve recording resolution.",
"title": "Artist Hint"
},
"isrc": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional ISRC for exact recording resolution.",
"title": "Isrc"
},
"mbid": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional recording MBID for exact lookup.",
"title": "Mbid"
},
"limit": {
"default": 1,
"description": "Maximum candidates to return.",
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"query"
],
"title": "ResolveToMbidParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"entity_type": {
"title": "Entity Type",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"tier_used": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Tier Used"
},
"candidates": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Candidates",
"type": "array"
}
},
"required": [
"success",
"entity_type",
"query",
"candidates"
],
"title": "ResolveToMbidResult",
"type": "object"
} # search_artist read
Look up the best MusicBrainz artist candidate by name using exact/trigram matching.
Full description
Look up an artist name. Current backend returns one best candidate, not a full ranked list.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Artist name to look up. |
limit | integer | No | Current backend returns one best exact/trigram candidate. Default: 5 |
Parameter schema (JSON)
{
"properties": {
"query": {
"description": "Artist name to look up.",
"minLength": 1,
"title": "Query",
"type": "string"
},
"limit": {
"default": 5,
"description": "Current backend returns one best exact/trigram candidate.",
"maximum": 5,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"query"
],
"title": "SearchArtistParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"query": {
"title": "Query",
"type": "string"
},
"artists": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Artists",
"type": "array"
},
"note": {
"title": "Note",
"type": "string"
}
},
"required": [
"success",
"query",
"artists",
"note"
],
"title": "SearchArtistResult",
"type": "object"
} # search_recording read
Search MusicBrainz recordings using the replicated mirror and Typesense ranking.
Full description
Search recordings. With an artist hint, use the resolver's artist+recording ranking.
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | Recording title or text query. |
artist | string | null | No | Optional artist hint. When present, the resolver is used for artist+recording ranking. |
limit | integer | No | Default: 5 |
Parameter schema (JSON)
{
"properties": {
"query": {
"description": "Recording title or text query.",
"minLength": 2,
"title": "Query",
"type": "string"
},
"artist": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional artist hint. When present, the resolver is used for artist+recording ranking.",
"title": "Artist"
},
"limit": {
"default": 5,
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
}
},
"required": [
"query"
],
"title": "SearchRecordingParams",
"type": "object",
"additionalProperties": false
} Result schema (JSON)
{
"properties": {
"success": {
"title": "Success",
"type": "boolean"
},
"query": {
"title": "Query",
"type": "string"
},
"artist": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Artist"
},
"recordings": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Recordings",
"type": "array"
},
"source": {
"title": "Source",
"type": "string"
}
},
"required": [
"success",
"query",
"recordings",
"source"
],
"title": "SearchRecordingResult",
"type": "object"
}