Skip to main content
Glama
crates-music-mcp

crates-music-mcp

by guohangbk

playlist_songs

Read a playlist's songs by ID across QQ Music, NetEase, or Kugou; optionally limit results, then inspect contents or use the playlist as a seed for recommendations.

Instructions

读某个歌单的曲目(playlist_id 用 my_playlists 返回的 id)。

service: qq_music | netease | kugou limit: 0 = 全部;>0 只返回前 N 首 Returns {"ok","service","playlist_id","count","songs":[{"name","artist"}]}。 用途:把某个歌单当"种子"做推荐(先读出来,再挑歌建新单),或核对歌单内容。

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": {
      "service": "<service>",
      "playlist_id": "<playlist_id>"
    },
    "name": "playlist_songs"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNo
serviceYes
playlist_idYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden: it discloses that this is a read operation, that limit=0 means all songs, and what the response contains. It does not mention authentication requirements, behavior for private/empty/deleted playlists, or error conditions, which matters for a tool with zero annotation coverage.

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?

The structure is front-loaded and scannable: purpose first, then a compact parameter glossary, then the return shape, then use cases. The explicit return-shape line duplicates the existing output schema and could be dropped without losing information.

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 three-parameter read tool this covers purpose, all parameters, and usage context. Because an output schema exists, the description needn't restate the return object, and the remaining omission (permission/error behavior) is a minor gap for a read-only listing tool.

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 description coverage is 0%, and the description compensates by explaining all three parameters: the accepted service values, the exact semantics of limit (0 = all, >0 = first N), and the provenance of playlist_id. The only gap is that the service enum list merely restates the schema's Platform enum rather than adding guidance on choosing a platform.

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 first sentence gives a specific verb and resource (read the songs of a playlist) and immediately pins down where the identifier comes from (the id returned by my_playlists), which disambiguates it from siblings like liked_songs or recent_tracks. An agent can tell what this returns without opening the schema.

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?

The closing line states two concrete usage contexts: using a playlist as a seed for recommendations, and verifying playlist contents. It also implies the prerequisite step (call my_playlists first to get playlist_id). It stops short of naming a when-not case or an explicit alternative tool for the same job.

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