Skip to main content
Glama

Read a record drawn at random

get_random_song
Read-only

Draw a random record from the Bide & Musique collection to browse French songs; optionally include the published lyrics transcription for the selected record.

Instructions

Read one record drawn at random from the Bide & Musique collection: same answer as get_song, on a record nobody chose. Use it to browse the collection. For a question about a particular song, use get_song. The draw runs over the ids the site serves, from the first to the newest one its feed of new entries names, and an id the collection does not serve is drawn again. Records whose page carries a transcription come back with the words themselves, as published. When you show a record to a user, credit Bide & Musique and link the page.

Input Schema

NameRequiredDescriptionDefault
include_lyricsNoWhether to return the transcription the drawn record's page carries. Browsing chains many calls, and a record with one runs to a few thousand characters.

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. Changed1 schema field changedv1.0.0
    • addedInput schema / properties / include_lyrics
      Added value: +{
      +  "default": true,
      +  "description": "Whether to return the transcription the drawn record's page carries. Browsing chains many calls, and a record with one runs to a few thousand characters.",
      +  "type": "boolean"
      +}
  3. First observedv0.3.0

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly, non-destructive, non-idempotent and open-world, but the description adds real context on top: the draw runs over the ids the site serves, up to the newest entry in the new-entries feed, and a non-served id is drawn again. It also explains that transcriptions are returned as published and imposes an attribution/link obligation when surfacing a record to a user. It stops short of describing what the response envelope looks like, but the output schema covers that.

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 core definition and the alternative routing up front, followed by sampling mechanics and the attribution rule. Slightly redundant to say 'same answer as get_song' and then again to defer particular-song questions to get_song, but the repetition serves clarity rather than padding.

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?

For a single optional-parameter read tool with an output schema and full annotation coverage, the description supplies everything an agent needs: what is drawn, over what domain, what happens on a miss, how lyrics behave, and the credit/link requirement. Return-value shape is legitimately left to the output schema.

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% and the single parameter already carries a description, so the baseline is 3. The description adds meaning beyond it by clarifying that only records whose page carries a transcription return words, as published, which tells the agent what include_lyrics actually varies. It adds no default or format detail beyond the schema.

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?

States a specific verb and resource (read one record drawn at random from the Bide & Musique collection) and immediately distinguishes it from the sibling get_song: same answer, on a record nobody chose. An agent can tell it apart from search_songs and get_song without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('Use it to browse the collection') and when-not ('For a question about a particular song, use get_song'), naming the alternative directly. No inference is required to route between this tool and get_song.

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