Skip to main content
Glama

Read a song's record

get_song
Read-onlyIdempotent

Retrieves one Bide & Musique song record by song_id from search_songs, returning title, artist, duration, credits, chart rank, favorites and optional lyrics.

Instructions

Read one song's record on Bide & Musique: the year, the writers and composers, the duration, the label and its catalogue reference, the sleeve, when the collection catalogued it, how it ranked in the station's own chart, and how many people kept it as a favourite. Takes the 'song_id' that search_songs returns. Three things are always there: the title, the artist and the duration. Everything else is absent on some records, and comes back null or empty rather than guessed; a counter the record does not print is unknown, not zero. Records whose page carries a transcription come back with the words themselves, as published, along with who typed them. A record whose page carries none says so. When you show a record to a user, credit Bide & Musique and link the page.

Input Schema

NameRequiredDescriptionDefault
song_idYesThe song id returned by search_songs, digits only, for example '1734'.
include_lyricsNoWhether to return the transcription the page carries. A record whose page has one runs to a few thousand characters, so ask for false when the question is about the record: the year, the label or the writers. 'lyrics.available' still says whether the page has one.

Output Schema

NameRequiredDescriptionDefault
urlYes
yearYes
notesYes
titleYes
top50Yes
artistYes
labelsYesOne entry per label, two when a record was co-released.
lyricsYes
sourceYes
song_idYes
writersYesWriters and composers as credited, one entry each, empty when the record credits none. A few records name the part someone took, and the entry then reads as the site prints it, for example 'Paroles : Jean-Pierre Lang'.
added_onYesThe day the collection catalogued it, as an ISO date.
commentsYes
durationYes
see_alsoYesOther artists the record links to.
image_urlYes
favouritesYesHow many people keep it as a favourite. Null when the page prints no counter.
presentationYesWhat the catalogue wrote about the record.
thumbnail_urlYes
sleeve_creditsYesWho is credited for the sleeve, when anyone is.
credited_performerYesA performer the sleeve credits apart from the artist page, when the record names one.
catalogue_referenceYesThe reference printed on the record. A reference of four digits is not a year.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed16 schema fields changedv2.1.0
    • removedOutput schema / properties / added_on / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / added_on / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / catalogue_reference / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / catalogue_reference / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / credited_performer / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / credited_performer / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / image_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / image_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / lyrics / properties / text / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / lyrics / properties / text / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / lyrics / properties / transcriber / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / lyrics / properties / transcriber / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / presentation / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / presentation / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedOutput schema / properties / thumbnail_url / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedOutput schema / properties / thumbnail_url / type
      Added value: +[
      +  "string",
      +  "null"
      +]
  2. First observedv0.3.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, open-world, but the description adds substantive behavior: null/empty means absent rather than zero, unknown counters are not zero, lyrics come back verbatim with their transcriber or an explicit 'no transcription' signal, and results require attribution and a link. None of that is in the structured fields.

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

Conciseness4/5

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

Front-loaded with the purpose, then input provenance, then null semantics and lyric behavior. It is dense but long, and the opening field enumeration partly duplicates what the output schema already declares, so a little could be trimmed.

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

Completeness5/5

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

With an output schema present the description need not document return values, yet it adds the interpretive rules an agent needs (null vs zero, lyrics availability) plus the attribution obligation. Nothing required to call it correctly is missing.

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

Parameters5/5

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

Schema coverage is 100% and the description still adds meaning: it reinforces that song_id must come from search_songs and explains why include_lyrics=false is the right choice for record-level questions, matching the schema's own rationale.

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

Purpose5/5

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

Opens with a specific verb and resource ('Read one song's record') and enumerates the fields the record carries, which lets an agent distinguish it from search_songs, get_artist, get_random_song and list_new_songs at a glance.

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?

Explicitly ties its input to a sibling ('Takes the song_id that search_songs returns') and gives a concrete condition for the include_lyrics flag ('ask for false when the question is about the record'). It never states exclusions, e.g. that it is the wrong tool for bulk or by-artist lookups, but the workflow context is clear.

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