Skip to main content
Glama

Analyze a playlist

analyze_playlist
Read-only

Analyze a Spotify or Deezer playlist to get track count, artist concentration, decade spread, explicit share, genres, and tempo distribution as data for tables or charts.

Instructions

Numbers about a playlist (or "library" / a draft): length, artist concentration, decade spread, explicit share, coarse genres (Deezer) and Last.fm tags when a key is set, tempo distribution (Deezer, sampled). Returns plain data lines; render them as a table or chart. Takes up to ~20 s on a large playlist the first time; results are cached.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tempoNodefault true
genresNodefault true
refreshNo
playlistYesopen.spotify.com/playlist link, spotify:playlist: URI, playlist id, a playlist name from your own library, a deezer.com/playlist link, a draft id (d_xxxx), or "library" for your liked songs

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.6.0

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds real behavioral context beyond that: external Deezer/Last.fm dependencies, Last.fm tags only 'when a key is set', tempo being sampled, up to ~20 s first-run latency, and result caching.

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?

Three dense sentences, no filler, with the metric list and input forms up front. The opening fragment 'Numbers about a playlist' is slightly awkward and the return/latency notes are packed into a run-on clause, but nothing is wasted.

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 no output schema, the description correctly still tells the agent what comes back ('plain data lines; render them as a table or chart'), which resolves the main ambiguity for a metrics tool. Combined with the metric enumeration, supported input forms, latency, and caching behavior, an agent has everything needed to call and use it.

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 75% and the schema itself documents that 'playlist' accepts many identifier forms. The description adds meaning the schema does not: the genre source (Deezer plus Last.fm gated on a key) and that tempo is sample-based. It only weakly implies what 'refresh' does via the caching note, leaving one parameter under-explained.

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?

The description names a concrete resource (playlist, library, or draft) and enumerates the specific metrics produced: length, artist concentration, decade spread, explicit share, genres, tags, tempo distribution. An agent can tell this apart from sibling tools like compare_playlists or compare_taste, which operate on multiple inputs rather than summarizing one.

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

Usage Guidelines3/5

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

Usage is implied by the content rather than stated: the mention of cache and first-run latency hints at when a refresh is needed, but there is no explicit 'use this when...' versus 'use compare_playlists instead'. No exclusions or alternatives are named.

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