Skip to main content
Glama

Get Lyrics

get_lyrics

Fetch a song's plain lyrics from LRCLIB so you can translate, explain, or interpret them; long lyrics stop at a stanza boundary and return truncated: true.

Instructions

Get a song's plain lyrics (from LRCLIB) so you can translate, explain or interpret them. Long lyrics are cut at a stanza boundary (truncated: true). Use get_track_profile instead when mood or genre context also matters.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "track": "<track>"
    },
    "name": "get_lyrics"
  }
}

Input Schema

NameRequiredDescriptionDefault
trackYesThe song: a Spotify track ID/URL/URI (best: use `id` from search_track) or free text like "Carnival of Rust Poets of the Fall".

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose real behavior: provenance from LRCLIB and that long lyrics are cut at a stanza boundary with `truncated: true`. It leaves out what happens when no lyrics exist (error vs. empty result) and any rate-limit or auth constraints, which keeps it short of a 5.

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 tight sentences with no waste; the core purpose and source lead, the truncation caveat follows, and the alternative is last. Every sentence earns its place.

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 single-parameter read tool with no output schema, this covers source, truncation semantics, and the routing alternative. Only the empty/no-lyrics case and the overall response shape are unaddressed, which is a modest gap rather than a blocking one.

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

Parameters3/5

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

Schema description coverage is 100%, so the `track` parameter's accepted forms (Spotify ID/URL/URI or free text like 'Carnival of Rust Poets of the Fall') are already fully documented in the schema. The description only says 'a song's lyrics' and adds no syntax or format meaning beyond that baseline.

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 ('Get a song's plain lyrics'), names the data source (LRCLIB), and gives the downstream purpose (translate, explain, interpret). It also differentiates from the sibling get_track_profile by naming it explicitly.

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?

Explicitly routes the agent: use this for lyrics, use `get_track_profile` instead when mood or genre context also matters. That is a concrete when-to-use and when-not-to-use pair tied to a named alternative.

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