Skip to main content
Glama
crates-music-mcp

crates-music-mcp

by guohangbk

recent_tracks

Lists songs recommended over the past 14 days to prevent duplicate additions when building playlists; use it for recommendation history, not user listening history.

Instructions

我们最近 14 天推荐过的歌(建单去重用),不是用户的听歌历史。

⚠️ 名字容易误会:想看"用户最近在听什么"要用 recent_played(service=...); 这个工具只回答"我们推过哪些歌",换了名字叫 recent_recommended_tracks。

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "recent_tracks"
  }
}

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden of behavioral disclosure, and it does disclose the key traits: a 14-day window and a recommendation-log source rather than per-user history. It does not explicitly say the call is read-only or relation-free of permissions, but the nature of a listing tool plus the available output schema covers the rest.

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 scope statement comes first and the misreading warning second, so the agent sees the core definition before the caveat. The closing note that the tool was renamed to recent_recommended_tracks is slightly redundant because a sibling with that name already exists, but it is short and does not bury the main point.

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 zero-parameter listing tool with an output schema and no annotations, the description covers what the agent needs: what the tool returns, its time window, and which sibling to use instead. Nothing essential is missing, though it does not state whether the listing is paginated or capped.

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?

The tool takes zero parameters, so the schema offers nothing to clarify. The description adds useful semantics where it matters: it distinguishes this tool's implicit scope (our recommendations, 14 days) from the parameterized recent_played(service=...).

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 states a specific verb and resource with a concrete scope: songs recommended in the last 14 days, for deduplication when building playlists. It explicitly rules out the most likely misreading (user listening history) and names the sibling recent_played as the tool for that need.

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?

It gives both an explicit when-to-use (deduplication when creating playlists) and a when-not-to-use, routing the agent to recent_played(service=...) for listening history. The name-confusion warning turns an ambiguous tool name into a clear routing decision.

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