Skip to main content
Glama

Credit who made a track

set_track_credits

Replace a track's song credits with this list. Every track needs at least one songwriter, one performer and one producer before its release can be submitted. These are real people: ask the artist, and never invent a name to satisfy the requirement.

Input Schema

NameRequiredDescriptionDefault
artistNoOnly when you are connected as a label: the roster artist this call is for — their artist_user_id from list_roster, or their exact artist name. Required for every artist tool on a label connection. Leave it out on an artist's own connection.
creditsYesEach entry: name, role (songwriter | performer | producer | studio | compositional | label_personnel). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. "Vocals - Lead Vocals"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument. studio, compositional and label_personnel are optional credits (a mastering engineer, an arranger, an A&R coordinator): each takes credit_role, from that kind's list in get_requirements' `contributors.optional_credits` (e.g. "Mastering Engineer"), and never counts toward the three a track needs. The list replaces every credit on the track, these included.
dry_runNoTrue to check the call and see what it would replace, without writing anything.
track_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / credits / description
      Previous value: -"Each entry: name, role (songwriter | performer | producer | studio | compositional | label_personnel). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. \"Vocals - Lead Vocals\"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument. studio, compositional and label_personnel are optional credits (a mastering engineer, an arranger, an A&R coordinator): each takes credit_role, from that kind's list in get_requirements' `contributors.optional_credits` (e.g. \"Mastering Engineer\"), and never counts toward the three a track needs. The list REPLACES every credit on the track, these included."New value: +"Each entry: name, role (songwriter | performer | producer | studio | compositional | label_personnel). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. \"Vocals - Lead Vocals\"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument. studio, compositional and label_personnel are optional credits (a mastering engineer, an arranger, an A&R coordinator): each takes credit_role, from that kind's list in get_requirements' `contributors.optional_credits` (e.g. \"Mastering Engineer\"), and never counts toward the three a track needs. The list replaces every credit on the track, these included."
  2. Changed1 schema field changed
    • changedInput schema / properties / credits / description
      Previous value: -"Each entry: name, role (songwriter | performer | producer). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. \"Vocals - Lead Vocals\"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument."New value: +"Each entry: name, role (songwriter | performer | producer | studio | compositional | label_personnel). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. \"Vocals - Lead Vocals\"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument. studio, compositional and label_personnel are optional credits (a mastering engineer, an arranger, an A&R coordinator): each takes credit_role, from that kind's list in get_requirements' `contributors.optional_credits` (e.g. \"Mastering Engineer\"), and never counts toward the three a track needs. The list REPLACES every credit on the track, these included."
  3. Changed1 schema field changed
    • changedInput schema / properties / credits / description
      Previous value: -"Each entry: name, role (songwriter | performer | producer). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument, which is REQUIRED for a performer: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. \"Vocals - Lead Vocals\"). Songwriters and producers take no instrument."New value: +"Each entry: name, role (songwriter | performer | producer). A performer also takes performer_type (primary | featured | non_featured, default primary) and instrument: what they played or sang, spelled exactly as in get_requirements' `performer_roles` list (e.g. \"Vocals - Lead Vocals\"). The release cannot be submitted until every performer has one; a performer sent without one is saved and named in `warnings`. Songwriters and producers take no instrument."
  4. First observed

TDQS

A3.7/5.0
Behavior2/5

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

The description is rich on behavior: it discloses that the list replaces ALL existing credits, that missing performer instruments produce saved-but-warned state, and that optional credit kinds never count toward the three required. But that replace-everything semantics conflicts with destructiveHint=false (and idempotentHint=false for what is a set-to-value operation), so the structured hints mislead an agent that skips the prose.

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

Conciseness5/5

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

Three sentences, front-loaded with the mutation semantics, then the validation constraint, then the anti-hallucination rule. Nothing is repeated from the schema and every sentence changes how the agent would call the tool.

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?

For a mutation tool with no output schema, the description covers the essentials an agent needs: replacement semantics, hard validation rules, warning behavior, and the domain constraint that credits are real people. It could go one step further by clarifying ordering/idempotency or how it relates to set_track_artists.

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 already 75% and the properties are heavily documented, so the schema carries most of the load. The description still adds real meaning beyond it: the one-of-each-role rule, the pointer to get_requirements for performer_roles/optional_credits vocabularies, and the consequence of omitting an instrument (warning, not rejection).

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 and resource: 'Replace a track's song credits with this list.' The replace semantics are unambiguous. It does not, however, distinguish itself from the adjacent sibling set_track_artists (or update_track), so an agent must infer that 'credits' (songwriter/performer/producer) is a different concept from 'artists'.

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

Usage Guidelines4/5

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

Gives a clear trigger condition — the three required roles must exist 'before its release can be submitted' — plus an operational rule ('ask the artist, and never invent a name'). It lacks any exclusion or named alternative, so the boundary with set_track_artists and update_track remains implicit.

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.

Resources