Last.fm MCP Server
Provides comprehensive access to Last.fm's music database and user data, enabling music discovery, scrobbling, user profile management, and interaction with charts, tags, and music recommendations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Last.fm MCP Serverwhat are my recent tracks?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Last.fm MCP Server
A Model Context Protocol (MCP) server that provides access to Last.fm music data and discovery capabilities.
Available Tools
Artist Tools
search_artists- Search for artists by nameget_artist_info- Get detailed artist information and biographyget_artist_top_albums- Get an artist's most popular albumsget_artist_top_tracks- Get an artist's most popular tracks
Album Tools
search_albums- Search for albums by nameget_album_info- Get detailed album information and tracklistget_album_top_tags- Get tags associated with an album
Track Tools
search_tracks- Search for tracks by nameget_track_info- Get detailed track informationget_similar_tracks- Find tracks similar to a given trackget_track_top_tags- Get tags associated with a track
User Tools
get_user_info- Get user profile informationget_user_recent_tracks- Get a user's recently played tracksget_user_top_artists- Get a user's most played artistsget_user_top_albums- Get a user's most played albumsget_user_top_tracks- Get a user's most played tracksget_user_loved_tracks- Get tracks a user has marked as loved
Chart Tools
get_top_artists- Get global top artistsget_top_tracks- Get global top tracksget_top_tags- Get popular music tags
Tag Tools
get_tag_info- Get information about a music tagget_tag_top_artists- Get top artists for a tagget_tag_top_albums- Get top albums for a tagget_tag_top_tracks- Get top tracks for a tagget_tag_weekly_charts- Get weekly chart data for a tag
Write Operations (Authentication Required)
scrobble_track- Scrobble a track to user's profilelove_track- Mark a track as lovedunlove_track- Remove love from a trackupdate_now_playing- Update what's currently playingadd_track_tags- Add tags to a trackremove_track_tag- Remove a tag from a track
Authentication Tools
get_auth_token- Get authentication token for user loginget_auth_session- Convert token to session for API access
Related MCP server: lastfm-mcp
Setup
Prerequisites
Get Last.fm API credentials at Last.fm API
Copy
.env.exampleto.envand add your credentials:LASTFM_API_KEY=your_actual_api_key_here LASTFM_SHARED_SECRET=your_actual_shared_secret_here
VS Code/Cursor Setup
Option 1: Docker (Recommended)
First build the image:
docker build -t lastfm-mcp .Then add to your VS Code/Cursor MCP configuration:
{
"mcpServers": {
"lastfm-mcp": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"--env-file",
"/path/to/your/.env",
"lastfm-mcp"
]
}
}
}Important: Replace /path/to/your/.env with the actual path to your .env file.
Option 2: UV
Add to your VS Code/Cursor MCP configuration:
{
"mcpServers": {
"lastfm-mcp": {
"command": "/path/to/uv",
"args": [
"--directory",
"/path/to/your/project",
"run",
"--env-file",
".env",
"mcp_server.py"
]
}
}
}Important:
Replace
/path/to/uvwith the actual path to your UV installation. Runwhich uvin your terminal to find the path (e.g.,/usr/local/bin/uv,/home/user/.local/bin/uv, or justuvif it's in your PATH)Replace
/path/to/your/projectwith the actual absolute path to your project directory
Available Tools
34 toolsadd_tagsA
Add tags to a track on your Last.fm profile. Requires authentication - use authenticate_user() and get_session() first.
Args: artist: Artist name track: Track name tags: Comma-separated list of tags (max 10)
Returns: Confirmation of tag addition
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes | ||
| tags | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by mentioning authentication requirements, which is crucial behavioral context. However, it doesn't disclose other important traits like rate limits, error conditions, whether this is a write operation (implied but not stated), or what happens with duplicate tags. The confirmation statement is helpful but vague about format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and economical. The first sentence states the core purpose, the second provides crucial behavioral context (authentication), and the Args/Returns sections are cleanly formatted. Every sentence earns its place with no wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with no annotations but with an output schema, the description provides good coverage. It explains authentication requirements, documents all parameters meaningfully, and mentions the return value. The main gap is lack of explicit confirmation that this is a write operation and missing details about error handling or rate limits, but the output schema will handle return format details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, and it does so effectively by explaining all three parameters: 'artist: Artist name', 'track: Track name', and 'tags: Comma-separated list of tags (max 10)'. The tags parameter gets particularly valuable semantic context with the comma-separated format and maximum limit. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add tags') and target resource ('to a track on your Last.fm profile'), making the purpose immediately understandable. It distinguishes itself from siblings like 'remove_tag' by specifying addition rather than removal. However, it doesn't explicitly differentiate from other tagging-related tools like 'get_track_top_tags' beyond the verb difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance by stating 'Requires authentication - use authenticate_user() and get_session() first.' This clearly indicates prerequisites and references specific sibling tools to use beforehand. It establishes a clear sequence of operations for proper tool invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
authenticate_userB
Starts the authentication process - sets the token in the environment variable and returns an auth URL for the user to visit.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behaviors: initiating authentication, setting an environment variable token, and returning a URL. However, it lacks details on permissions, rate limits, error handling, or what happens after the user visits the URL, which are critical for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action ('starts the authentication process') and adds necessary details without waste. Every word contributes to understanding the tool's function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a mutation with no annotations) and the presence of an output schema (which likely covers the returned URL), the description is minimally adequate. It explains the action and output but misses behavioral context like side effects or error cases, leaving gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing on the tool's action instead, which aligns with the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('starts the authentication process', 'sets the token', 'returns an auth URL') and identifies the resource (authentication). However, it doesn't explicitly differentiate from its sibling 'check_auth_status', which might handle authentication status verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'check_auth_status' or 'get_session', nor does it mention prerequisites or exclusions. It implies usage at the start of authentication but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_auth_statusA
Check if the user is authenticated. Authentication is required to use the following tools:
scrobble_track
update_now_playing
love_track
unlove_track
add_tags
remove_tag
Args: None
Returns: "Authenticated" if the user is authenticated, "Not authenticated" otherwise
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing the tool's read-only nature (it only checks status, doesn't modify anything) and its binary return behavior. However, it doesn't mention potential error conditions, rate limits, or authentication persistence details that could be relevant for an agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured: first sentence states purpose, second provides crucial usage context with specific tool list, then clearly documents parameters and return values. Every sentence earns its place with zero wasted words, and the most important information (purpose and usage) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema (implied by the return documentation), the description is complete: it explains purpose, provides essential usage guidelines, documents the parameter situation, and specifies return values. No additional information is needed for an agent to use this tool effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0 parameters with 100% coverage, so the baseline would be 3. The description explicitly states 'Args: None', which adds value by confirming no parameters are needed beyond what the empty schema indicates. This clarity about parameter absence justifies a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Check') and resource ('if the user is authenticated'), distinguishing it from sibling tools that perform actions requiring authentication rather than checking status. It goes beyond the name by specifying what authentication status means in this context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists six tools that require authentication, providing clear guidance on when this tool should be used (before invoking those tools) and alternatives (the authenticate_user tool for obtaining authentication). This directly addresses when-to-use vs. alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_album_infoB
Get detailed information about an album
Args: artist: Artist name album: Album name mbid: Optional MBID (MusicBrainz ID) of the album autocorrect: Whether to use autocorrection for the names username: Username for personalized info (playcount, etc.) lang: Language code for wiki content
Returns: Formatted detailed album information
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| album | Yes | ||
| mbid | No | ||
| autocorrect | No | ||
| username | No | ||
| lang | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the basic action ('Get detailed information') without covering critical aspects like authentication requirements, rate limits, error handling, or data freshness. This is inadequate for a tool with multiple parameters and potential external dependencies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, Args, Returns) and uses bullet-like formatting for parameters. It's front-loaded with the core purpose and avoids unnecessary verbosity, though the parameter explanations are somewhat terse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, no annotations) and the presence of an output schema, the description is partially complete. It covers parameters well but lacks behavioral context and usage guidelines. The output schema handles return values, so the description's brief 'Returns' statement is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an 'Args' section that lists all six parameters with brief explanations, adding significant value beyond the input schema (which has 0% description coverage). It clarifies purposes like 'mbid' for MusicBrainz ID and 'username for personalized info,' though it could provide more detail on formats or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed information about an album.' It specifies the verb ('Get') and resource ('album'), making the intent unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_album_top_tags' or 'search_albums,' which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_album_top_tags' for tag-specific data or 'search_albums' for discovery, leaving the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_album_top_tagsB
Get tags associated with an album
Args: artist: Artist name album: Album name mbid: Optional MBID (MusicBrainz ID) of the album autocorrect: Whether to use autocorrection for the names
Returns: Formatted list of top tags for the album
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| album | Yes | ||
| mbid | No | ||
| autocorrect | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions 'formatted list' in returns but doesn't specify format, pagination, rate limits, authentication needs, or error conditions. 'Get' implies read-only, but this isn't explicitly stated. For a tool with zero annotation coverage, this is inadequate disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (purpose, Args, Returns). The core purpose is stated upfront. The Args section efficiently documents parameters. No redundant information. Could be slightly more concise by integrating parameter explanations into a single paragraph, but the current structure is readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters with 0% schema coverage and an output schema (which handles return values), the description does the minimum: explains parameters and states the return type. However, for a tool with no annotations, it should provide more behavioral context (authentication, rate limits, error cases). The existence of an output schema means it doesn't need to detail return structure, but other gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate - and it does by explaining all 4 parameters in the Args section. It clarifies that 'artist' and 'album' are required names, 'mbid' is an optional MusicBrainz ID, and 'autocorrect' enables name correction. This adds meaningful context beyond the bare schema, though it doesn't explain parameter interactions (e.g., MBID vs name matching).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get tags associated with an album' - a specific verb (get) and resource (tags for an album). It distinguishes from siblings like 'get_tag_info' (about tags themselves) and 'get_album_info' (general album metadata). However, it doesn't explicitly contrast with 'get_track_top_tags' or 'get_artist_top_tags' (which don't exist but would be similar).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. It doesn't mention when to prefer this over 'get_album_info' (which might include tags), 'get_tag_top_albums' (reverse relationship), or 'get_top_tags' (general top tags). The description provides basic parameter info but no contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artist_infoA
Get detailed information about an artist by name or MBID. You can get a user's playcount, etc. by providing a username.
Args: artist: Artist name to search for (optional if mbid is provided) mbid: Optional MBID (MusicBrainz ID) of the artist (optional if artist is provided) lang: Language code for the artist info (as an ISO 639 alpha-2 code) autocorrect: Whether to use autocorrection for the artist name username: If the username is provided, the artist info will be personalized with the user's playcount, etc.
Returns: Formatted detailed artist information
| Name | Required | Description | Default |
|---|---|---|---|
| artist | No | ||
| mbid | No | ||
| lang | No | ||
| autocorrect | No | ||
| username | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the tool can personalize data with a username and mentions autocorrection behavior. However, it doesn't cover important aspects like rate limits, authentication requirements (though sibling tools suggest an auth system), error conditions, or response format details. The description adds some behavioral context but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence followed by organized parameter explanations. It's appropriately sized for a 5-parameter tool. Minor improvements could include bolding parameter names or removing the vague 'etc.' but overall it's efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, no annotations, but with output schema), the description does a good job. It explains all parameters thoroughly and mentions the return value. The output schema existence means it doesn't need to detail return format. However, it could better address authentication context given sibling auth tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining all 5 parameters in detail. It clarifies that artist and mbid are mutually optional, describes lang as an ISO 639 alpha-2 code, explains autocorrect's purpose, and specifies how username personalizes results. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed information about an artist by name or MBID.' It specifies the resource (artist) and action (get detailed information), though it doesn't explicitly differentiate from siblings like 'search_artists' or 'get_top_artists.' The mention of personalization with username adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides some usage context: it mentions that either artist name or MBID can be used, and that username provides personalized data. However, it doesn't explicitly state when to use this tool versus alternatives like 'search_artists' or 'get_top_artists,' nor does it mention prerequisites (e.g., authentication needs). The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artist_top_albumsB
Get an artist's most popular albums
Args: artist: Artist name mbid: Optional MBID (MusicBrainz ID) of the artist autocorrect: Whether to use autocorrection for the artist name limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of the artist's top albums
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| mbid | No | ||
| autocorrect | No | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'Returns: Formatted list of the artist's top albums' but doesn't disclose behavioral traits like rate limits, authentication requirements (though sibling tools suggest an auth system), error conditions, or what 'popular' means (e.g., based on plays, ratings). The description is minimal beyond basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with a clear purpose statement followed by Args/Returns sections. However, the 'Args' and 'Returns' labels are redundant with the schema/context, and some sentences could be more front-loaded (e.g., key constraints like 'limit: 1-50' are buried). It's efficient but not optimally structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 5 parameters with 0% schema coverage, and an output schema exists (so return values needn't be explained), the description is moderately complete. It covers parameter semantics well but lacks behavioral context (e.g., auth, errors) and usage guidelines relative to siblings. For a read-only query tool, it's adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for all 5 parameters: explains 'artist' as name, 'mbid' as optional MusicBrainz ID, 'autocorrect' for name correction, 'limit' range and default, and 'page' for pagination. This goes well beyond the bare schema, though it doesn't detail format constraints (e.g., MBID format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get an artist's most popular albums' with a specific verb ('Get') and resource ('artist's most popular albums'). It distinguishes from siblings like 'get_artist_info' (general info) and 'get_artist_top_tracks' (tracks vs albums), but doesn't explicitly mention these distinctions in the description text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_artist_info' or 'search_artists'. It mentions parameters but doesn't explain context for choosing between 'artist' name and 'mbid', or when 'autocorrect' should be enabled. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_artist_top_tracksA
Get an artist's most popular tracks
Args: artist: Artist name mbid: Optional MBID (MusicBrainz ID) of the artist autocorrect: Whether to use autocorrection for the artist name limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of the artist's top tracks
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| mbid | No | ||
| autocorrect | No | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns a 'formatted list' but does not specify what 'most popular' means (e.g., based on plays, charts, user ratings), whether authentication is required, rate limits, error conditions, or pagination details beyond the page parameter. The description adds minimal behavioral context beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a brief purpose statement followed by categorized parameter and return explanations. It is appropriately sized and front-loaded, though the 'Args' and 'Returns' sections could be integrated more seamlessly into prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, no annotations, but with an output schema), the description is fairly complete. It covers all parameters and states the return type, though it lacks details on authentication, rate limits, and the definition of 'most popular.' The output schema existence reduces the need to explain return values in depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It provides clear semantics for all 5 parameters: artist name, optional MBID for disambiguation, autocorrection behavior, result limit with range and default, and pagination with default. This adds significant value beyond the bare schema, though it could explain the autocorrect algorithm or MBID format more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('artist's most popular tracks'), distinguishing it from sibling tools like get_artist_info, get_artist_top_albums, or get_top_tracks which serve different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the parameter explanations (e.g., MBID for disambiguation, autocorrect for name variations), but does not explicitly state when to use this tool versus alternatives like get_artist_info or get_top_tracks. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sessionA
Complete the authentication process by getting a session key from the authorized token. This should be called after the user has visited the authorization URL from authenticate_user().
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the tool's role in authentication (obtaining a session key after user authorization) but lacks details about error conditions (e.g., invalid token, expired authorization), rate limits, or what the session key enables. The description adds basic behavioral context but misses important operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with two sentences that each earn their place: the first states the purpose, the second provides crucial usage guidance. There is zero wasted text, and the information is front-loaded with the core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (authentication step), lack of annotations, and presence of an output schema, the description is reasonably complete. It explains the tool's role in the workflow and prerequisite, though it could benefit from mentioning what the session key enables or common failure modes. The output schema will handle return values, so that gap is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage. The description appropriately doesn't discuss parameters since none exist, and it correctly focuses on the tool's purpose and usage context. This meets the baseline expectation for parameterless tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Complete the authentication process by getting a session key') and resource ('from the authorized token'), distinguishing it from siblings like authenticate_user (which provides the authorization URL) and check_auth_status (which likely checks authentication state). It explicitly defines the tool's role in the authentication workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'after the user has visited the authorization URL from authenticate_user()'. It names the prerequisite tool (authenticate_user) and specifies the exact sequence in the authentication flow, clearly differentiating it from alternatives like check_auth_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_similar_tracksB
Find tracks similar to a given track
Args: artist: Artist name track: Track name mbid: Optional MBID (MusicBrainz ID) of the track autocorrect: Whether to use autocorrection for the names limit: Maximum number of similar tracks to return (1-30, default: 10)
Returns: Formatted list of similar tracks
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes | ||
| mbid | No | ||
| autocorrect | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool 'Returns: Formatted list of similar tracks' but lacks critical behavioral details: what 'similar' means (e.g., based on audio features, user listening patterns), whether it requires authentication (unclear from context), rate limits, or error handling. The description is minimal beyond basic input-output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and concise: a one-sentence purpose statement followed by clearly labeled 'Args' and 'Returns' sections. Every sentence earns its place by providing essential information without redundancy. It's front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and an output schema (implied by 'Returns'), the description is moderately complete. It covers parameters well but lacks behavioral context (e.g., how similarity is determined, authentication needs). The output schema existence means the description needn't detail return values, but for a recommendation tool with no annotations, more operational guidance would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all 5 parameters in the 'Args' section, explaining what each parameter represents (e.g., 'mbid: Optional MBID (MusicBrainz ID) of the track', 'limit: Maximum number of similar tracks to return (1-30, default: 10)'). This adds significant value beyond the bare schema, though it doesn't detail format constraints (e.g., MBID format).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find tracks similar to a given track' - a specific verb ('Find') and resource ('tracks similar to a given track'). It distinguishes from siblings like get_track_info (which retrieves info about a single track) or search_tracks (which searches by query). However, it doesn't explicitly contrast with all similar siblings (e.g., get_artist_top_tracks might also yield related tracks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate (e.g., for music recommendation based on a specific track) or when other tools might be better (e.g., get_artist_top_tracks for artist-based recommendations). There's only implicit usage context from the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tag_infoC
Get information about a music tag
Args: tag: Tag name lang: Language code for wiki content (optional)
Returns: Formatted tag information
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | ||
| lang | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns 'Formatted tag information' but doesn't specify what that includes (e.g., description, usage stats, related tags), whether it's a read-only operation, potential rate limits, or error conditions. For a tool with zero annotation coverage, this leaves significant behavioral gaps unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args/Returns sections are structured but could be more integrated. There's no wasted text, though it could be slightly more fluent by combining elements into a cohesive paragraph.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, no nested objects) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and 0% schema coverage, it lacks details on authentication needs, error handling, or example usage, leaving room for improvement in guiding the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds minimal value: it names the parameters ('tag' and 'lang') and notes 'lang' is optional for wiki content, but doesn't explain what a 'tag' is (e.g., genre, mood), valid formats, or examples. For two parameters with no schema descriptions, this is insufficient to guide proper usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Get information about a music tag' with a specific verb ('Get') and resource ('music tag'). It distinguishes itself from siblings like 'get_top_tags' (which lists popular tags) and 'get_tag_top_albums' (which gets albums for a tag) by focusing on detailed information about a specific tag. However, it doesn't explicitly contrast with all similar siblings like 'get_tag_weekly_charts'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'get_top_tags' (for listing tags) or 'get_tag_top_albums/artists/tracks' (for tag-specific rankings), nor does it specify prerequisites like authentication. The only implied usage is needing a tag name, but no explicit context or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tag_top_albumsB
Get top albums for a tag
Args: tag: Tag name limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of top albums for the tag
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns a 'formatted list' but doesn't specify format details (e.g., JSON structure), pagination behavior beyond the 'page' parameter, rate limits, authentication requirements, or error handling. This leaves significant gaps for a tool with no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first followed by parameter and return details in a structured format. Every sentence adds value, though the 'Returns' section could be slightly more informative (e.g., hinting at the list structure).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, no annotations, but with an output schema), the description is partially complete. It covers parameter semantics well but lacks behavioral context like authentication needs or rate limits. The presence of an output schema reduces the need to detail return values, but overall completeness is adequate with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the input schema, which has 0% description coverage. It explains that 'tag' is a tag name, 'limit' is the maximum number of results (with a range of 1-50 and default 10), and 'page' is for pagination (default 1). This compensates well for the schema's lack of descriptions, though it doesn't detail constraints like tag format or pagination limits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Get top albums for a tag,' which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_tag_top_artists' or 'get_tag_top_tracks,' which have similar structures but target different resources (artists/tracks vs. albums).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_tag_top_artists' for artists or 'get_album_info' for album details, nor does it specify prerequisites (e.g., authentication needs) or exclusions. Usage is implied only by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tag_top_artistsB
Get top artists for a tag
Args: tag: Tag name limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of top artists for the tag
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions pagination (page parameter) and a limit range (1-50), which adds some behavioral context. However, it lacks details on authentication needs, rate limits, error handling, or what 'formatted list' entails (e.g., structure, fields). For a tool with no annotations, this is insufficient for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by organized sections for Args and Returns. Every sentence adds value: the first states the tool's function, and the parameter/return details are essential for understanding. No redundant or verbose language is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, 3 parameters with 0% schema coverage, and an output schema exists (so return values needn't be detailed), the description is moderately complete. It covers parameters well but lacks behavioral context like auth or error handling. For a read-only tool (implied by 'get'), it's adequate but has clear gaps in safety and operational guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all three parameters: 'tag' as the tag name, 'limit' with range and default, and 'page' with default. This fully documents parameter purposes beyond the schema's minimal titles. However, it doesn't specify tag format constraints (e.g., case sensitivity, allowed characters).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Get top artists for a tag' specifies the action (get) and resource (top artists for a tag). It distinguishes from siblings like 'get_top_artists' (which lacks tag filtering) and 'get_tag_top_albums/tracks' (different resource types). However, it doesn't explicitly mention what 'top' means (e.g., by popularity, plays, or another metric), leaving some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing top artists for a specific tag, but provides no explicit guidance on when to use this versus alternatives like 'get_top_artists' (general top artists) or 'get_tag_top_albums/tracks' (other tag-based resources). The context is clear from the name and description, but no exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tag_top_tracksB
Get top tracks for a tag
Args: tag: Tag name limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of top tracks for the tag
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions pagination and result limits but doesn't cover important aspects like rate limits, authentication requirements, error conditions, or whether this is a read-only operation. The description is minimal and lacks behavioral context beyond basic parameter explanations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely efficient with zero wasted words. It uses a clear heading format with Args and Returns sections, making it easy to parse. Every sentence serves a specific purpose: stating the tool's purpose, documenting parameters, and describing the return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which handles return value documentation) and the description covers all parameter semantics, the description is reasonably complete for a read operation. However, with no annotations and a sibling-rich environment, it should provide more usage guidance and behavioral context to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides meaningful semantic context for all three parameters that goes beyond the schema's 0% coverage. It explains that 'tag' is a tag name, 'limit' controls maximum results with a 1-50 range and default of 10, and 'page' is for pagination with default 1. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Get top tracks for a tag', which is a specific verb+resource combination. It distinguishes itself from siblings like 'get_top_tracks' (general top tracks) and 'get_tag_top_albums' (albums instead of tracks), though it doesn't explicitly mention these distinctions in the description text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_top_tracks' (general top tracks) or 'get_tag_top_artists' (top artists for a tag), nor does it specify prerequisites such as authentication status or tag availability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tag_weekly_chartsB
Get weekly chart data for a tag
Args: tag: Tag name
Returns: Formatted list of available weekly chart periods
| Name | Required | Description | Default |
|---|---|---|---|
| tag | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool retrieves data ('Get'), implying a read-only operation, but doesn't disclose behavioral traits such as authentication needs, rate limits, error handling, or what 'Formatted list' entails. The description is minimal and lacks critical operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the main purpose. The 'Args' and 'Returns' sections add structure, but the 'Returns' section is somewhat vague ('Formatted list'), and overall it's concise without unnecessary fluff, though it could be more informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema, the description doesn't need to detail return values, but it lacks context for a tool with no annotations and minimal parameter guidance. It's adequate for a simple read operation but incomplete in explaining usage scenarios, behavioral aspects, or integration with sibling tools, leaving gaps in overall understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by explaining the single parameter 'tag' as 'Tag name', adding meaning beyond the schema's basic type. However, it doesn't provide details like format, constraints, or examples, leaving some ambiguity. With 0 parameters documented in schema, baseline is 4, and this meets that with basic clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get weekly chart data for a tag' - a specific verb ('Get') and resource ('weekly chart data for a tag'). It distinguishes from siblings like 'get_tag_info' or 'get_tag_top_tracks' by focusing on weekly charts, though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. It doesn't mention when to choose it over similar tools like 'get_tag_top_tracks' or 'get_tag_info', nor does it specify prerequisites or context for usage beyond the basic parameter requirement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_artistsB
Get global top artists chart
Args: limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of global top artists
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool returns a 'formatted list' but doesn't specify format details, pagination behavior, rate limits, authentication requirements, or error handling. For a tool with no annotations, this is insufficient transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the purpose, followed by clear sections for Args and Returns. Every sentence earns its place, with no wasted words. It's appropriately sized for a simple tool with two parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 simple parameters) and the presence of an output schema (which handles return values), the description is mostly adequate. However, it lacks behavioral context (e.g., authentication needs, rate limits) and usage guidelines, which are important gaps despite the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully. It does this excellently by explaining both parameters: 'limit' with its range and default, and 'page' with its default. This adds crucial meaning beyond the bare schema, making parameter usage clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get global top artists chart'. It specifies the verb ('Get') and resource ('global top artists chart'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_top_tags' or 'get_top_tracks', which would require a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_user_top_artists' or 'get_tag_top_artists', nor does it specify prerequisites or exclusions. This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_tagsB
Get global top tags chart
Args: limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of global top tags
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'Returns: Formatted list of global top tags' which gives basic output information, but lacks critical behavioral details: authentication requirements (unlike 'authenticate_user'), rate limits, data freshness, whether this is a read-only operation, or any side effects. For a tool with no annotation coverage, this is insufficient disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise: a clear purpose statement followed by organized Args and Returns sections. Every sentence earns its place - the purpose is front-loaded, parameter documentation is efficient, and return information is straightforward. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with good description coverage and an output schema exists (so return values needn't be detailed), the description is adequate but has gaps. It covers parameters well but lacks authentication context (critical among siblings like 'authenticate_user'), rate limiting, or data source information. For a charting tool in an API context, these omissions are notable though not catastrophic.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by documenting both parameters in the Args section with meaningful semantics: 'limit' specifies range (1-50) and default (10), 'page' explains pagination with default (1). This adds substantial value beyond the bare schema. However, it doesn't explain what 'page' means in context of 'global top tags' or how results are ordered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with 'Get global top tags chart' - a specific verb ('Get') and resource ('global top tags chart'). It distinguishes from siblings like 'get_tag_info' or 'get_tag_top_artists' by specifying 'global' scope and 'top tags' ranking. However, it doesn't explicitly contrast with all similar siblings (e.g., 'get_tag_weekly_charts'), keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_tag_info', 'get_tag_top_artists', and 'get_tag_weekly_charts', there's no indication of when this global chart is appropriate versus tag-specific or time-bound charts. The description simply states what it does without contextual usage advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_tracksB
Get global top tracks chart
Args: limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of global top tracks
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns a 'Formatted list of global top tracks', which gives some insight into output format, but lacks details on permissions, rate limits, data freshness, or error handling. For a read operation with no annotations, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the purpose stated first, followed by clear sections for 'Args' and 'Returns'. Every sentence earns its place by providing essential information without redundancy, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is an output schema (which handles return values), no annotations, and low schema coverage, the description is moderately complete. It covers the purpose and parameters well but lacks behavioral details like authentication needs or rate limits. For a simple read tool, it's adequate but could be more comprehensive to fully guide an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'limit' is the 'Maximum number of results to return (1-50, default: 10)' and 'page' is the 'Page number to retrieve (default: 1)', including valid ranges and defaults. This compensates well for the schema's lack of descriptions, though it doesn't fully detail all possible behaviors (e.g., pagination limits).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get global top tracks chart'. It specifies the verb 'Get' and the resource 'global top tracks chart', making it distinct from siblings like 'get_artist_top_tracks' or 'get_user_top_tracks' by emphasizing the global scope. However, it doesn't explicitly differentiate from all siblings, such as 'get_top_artists', which might be similar in structure but for different data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over siblings like 'get_artist_top_tracks' (for artist-specific data) or 'get_user_top_tracks' (for user-specific data), nor does it specify any prerequisites or exclusions. The usage is implied by the name and description but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_infoB
Get detailed information about a track
Args: artist: Artist name track: Track name mbid: Optional MBID (MusicBrainz ID) of the track autocorrect: Whether to use autocorrection for the names username: Username for personalized info (playcount, etc.)
Returns: Formatted detailed track information
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes | ||
| mbid | No | ||
| autocorrect | No | ||
| username | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions 'personalized info (playcount, etc.)' for the username parameter, hinting at authentication needs, but doesn't clarify rate limits, error conditions, or what 'formatted detailed track information' entails. The description doesn't contradict any annotations since none exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, Args, Returns) and uses minimal sentences. The Args section efficiently explains each parameter without redundancy. However, the 'Returns' section is vague ('Formatted detailed track information') and could be more specific about output format.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (5 parameters, 2 required) and the presence of an output schema, the description is partially complete. It adequately explains parameters but lacks behavioral context (authentication needs, error handling) and doesn't leverage the output schema to clarify return values. The description should do more to compensate for the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining all 5 parameters in the Args section. It clarifies that 'artist' and 'track' are required, 'mbid' is optional and refers to MusicBrainz ID, 'autocorrect' enables name correction, and 'username' enables personalized data. This adds substantial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed information about a track' - a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_similar_tracks' or 'get_track_top_tags', which also retrieve track-related information but with different scopes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention sibling tools like 'get_similar_tracks' for related tracks or 'get_track_top_tags' for tag information, nor does it specify prerequisites like authentication requirements for personalized data when using the username parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_top_tagsC
Get tags associated with a track
Args: artist: Artist name track: Track name mbid: Optional MBID (MusicBrainz ID) of the track autocorrect: Whether to use autocorrection for the names
Returns: Formatted list of top tags for the track
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes | ||
| mbid | No | ||
| autocorrect | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral disclosure. It mentions 'formatted list' in returns but doesn't describe format details, pagination, rate limits, error conditions, or whether this is a read-only operation. The description doesn't contradict annotations (none exist), but fails to provide essential context for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the core purpose is stated first, followed by parameter explanations and return information. The structure (Args/Returns sections) is clear, though some sentences could be more efficient (e.g., 'Optional MBID (MusicBrainz ID) of the track' is slightly redundant).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no annotations, but has output schema), the description is minimally complete. The output schema existence reduces need to detail return values, but gaps remain: no authentication context, no error handling, and insufficient parameter semantics. It covers basics but lacks depth for reliable agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate but only partially succeeds. It lists parameters (artist, track, mbid, autocorrect) with brief explanations, adding meaning beyond schema titles. However, it doesn't explain parameter interactions (e.g., mbid overriding artist/track), autocorrect behavior details, or format expectations. With 4 parameters and low schema coverage, this is baseline adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get tags associated with a track' specifies the verb ('Get') and resource ('tags associated with a track'). It distinguishes from siblings like 'get_tag_info' (about tags themselves) and 'get_track_info' (general track info), but doesn't explicitly contrast with similar tools like 'get_artist_top_tags' or 'get_album_top_tags'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_artist_top_tags' or 'get_album_top_tags' for related tag queries, nor does it specify prerequisites (e.g., authentication needs) or exclusions. The only implied context is needing artist and track names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_infoC
Get user profile information
Args: user: Username to get info for
Returns: Formatted user profile information
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, it doesn't specify whether this requires authentication, rate limits, error conditions, or what 'formatted' output entails. For a user data tool with zero annotation coverage, this leaves significant behavioral gaps about permissions, privacy, and response structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with three brief sections (purpose, args, returns). Each sentence earns its place by covering essential aspects. However, the structure could be more front-loaded by integrating the parameter explanation into the main description rather than a separate 'Args' block.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter, no annotations, but an output schema exists, the description is moderately complete. The output schema will document return values, so the description needn't detail them. However, for a user data tool, it lacks context about authentication needs, data sensitivity, or error handling, which are important for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds minimal value: the Args section clarifies 'user' is a 'Username to get info for', but doesn't specify format constraints (e.g., case sensitivity, special characters) or provide examples. With only one parameter, the baseline is 4, but the description's limited semantic detail reduces this to 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get user profile information' - a specific verb ('Get') and resource ('user profile information'). It distinguishes from siblings like 'get_user_loved_tracks' or 'get_user_top_artists' by focusing on general profile data rather than specific user activity metrics. However, it doesn't explicitly contrast with authentication-related tools like 'authenticate_user' or 'get_session'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether authentication is required), nor does it differentiate from sibling tools that also retrieve user-related data like 'get_user_recent_tracks' or 'get_user_top_albums'. The agent must infer usage context solely from the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_loved_tracksB
Get tracks a user has marked as loved
Args: user: Username limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of user's loved tracks
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool retrieves data ('Get tracks'), implying it's read-only, but doesn't disclose behavioral traits like rate limits, authentication requirements, error conditions, or pagination details beyond basic parameter defaults. The description adds minimal context beyond the obvious read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It front-loads the purpose in a clear sentence, followed by organized sections for Args and Returns. Each sentence earns its place, with no redundant information. Minor improvement could be integrating the purpose more seamlessly with parameter details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters, 0% schema coverage, no annotations, but an output schema exists, the description is moderately complete. It covers parameter semantics adequately and states the return value ('Formatted list'), but lacks behavioral context (e.g., authentication, errors). The output schema likely handles return structure, so the description doesn't need to detail it further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all three parameters: 'user' as 'Username', 'limit' with range and default, and 'page' with default. This adds meaningful context beyond the bare schema, though it doesn't explain format constraints (e.g., username requirements) or pagination behavior beyond page numbers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get tracks a user has marked as loved' - a specific verb ('Get') and resource ('tracks marked as loved'). It distinguishes from siblings like 'get_user_recent_tracks' or 'get_user_top_tracks' by specifying the 'loved' status. However, it doesn't explicitly contrast with 'unlove_track' or 'love_track' which are related but different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives is provided. The description doesn't mention when this is appropriate compared to other user-related tools like 'get_user_info' or 'get_user_recent_tracks', nor does it specify prerequisites (e.g., whether authentication is needed). The agent must infer usage from the tool name and context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_recent_tracksB
Get a user's recently played tracks
Args: user: Username limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1) from_timestamp: Unix timestamp to start from (optional) to_timestamp: Unix timestamp to end at (optional) extended: Include extended data (optional)
Returns: Formatted list of user's recent tracks
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| limit | No | ||
| page | No | ||
| from_timestamp | No | ||
| to_timestamp | No | ||
| extended | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool returns 'formatted list of user's recent tracks,' it doesn't describe important behavioral aspects: authentication requirements (though sibling tools suggest this is part of an authenticated API), rate limits, whether data is cached, error conditions, or what 'extended data' includes. The description provides basic functional information but lacks operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement followed by organized parameter documentation. Every sentence serves a purpose: the first states the tool's function, and subsequent lines document parameters and return value. It's appropriately sized for a tool with 6 parameters, though the 'Returns' section is somewhat vague ('formatted list' could be more specific).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, 1 required) and the presence of an output schema, the description is minimally adequate. It covers all parameters and the basic return type, but lacks important context: authentication requirements (implied by sibling tools like 'authenticate_user'), rate limiting, error handling, and what 'extended data' entails. The output schema existence reduces the need to detail return format, but operational context is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value beyond the input schema, which has 0% description coverage. It explains all 6 parameters with clear semantics: 'user' as username, 'limit' with range and default, 'page' for pagination, timestamp parameters for filtering, and 'extended' for additional data. This fully compensates for the schema's lack of descriptions, though it doesn't explain timestamp format beyond 'Unix timestamp' or what 'extended data' specifically includes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Get a user's recently played tracks' which is a specific verb+resource combination. It distinguishes this from sibling tools like 'get_user_loved_tracks' or 'get_user_top_tracks' by focusing on recency rather than popularity or affection. However, it doesn't explicitly contrast with all similar siblings like 'get_user_info' which might also return track data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when this tool is appropriate compared to siblings like 'get_user_top_tracks' (for most-played tracks) or 'get_user_loved_tracks' (for favorited tracks). There's no discussion of prerequisites, authentication requirements, or limitations beyond what's in the parameter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_top_albumsA
Get a user's most played albums
Args: user: Username period: Time period (7day, 1month, 3month, 6month, 12month, overall) limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of user's top albums
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| period | No | overall | |
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool retrieves data ('Get') but lacks details on permissions, rate limits, or response format beyond 'Formatted list'. This leaves gaps for a tool with four parameters and no 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by clear sections for Args and Returns. Every sentence earns its place by providing essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no annotations, but with an output schema), the description is largely complete. It covers parameters thoroughly and notes the return type, though behavioral aspects like authentication or error handling are omitted, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides detailed semantics for all four parameters: user (Username), period (Time period with specific values), limit (range and default), and page (default). This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('user's most played albums'), distinguishing it from siblings like get_user_top_artists and get_user_top_tracks by focusing on albums rather than artists or tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like get_user_top_artists or get_user_top_tracks is provided. The description only states what the tool does without context about use cases or comparisons to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_top_artistsB
Get a user's most played artists
Args: user: Username period: Time period (7day, 1month, 3month, 6month, 12month, overall) limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of user's top artists
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| period | No | overall | |
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool returns a 'formatted list' but doesn't specify format details, pagination behavior beyond the 'page' parameter, rate limits, authentication requirements, or error handling. For a read operation with no annotations, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It starts with a clear purpose statement, followed by a bullet-point list of parameters and returns. Every sentence earns its place by providing essential information without redundancy. Minor improvements could include integrating the purpose more seamlessly, but it's highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no annotations, but with an output schema), the description is fairly complete. It covers all parameters in detail and notes the return type. The output schema likely handles return value specifics, so the description doesn't need to explain those. However, it lacks context on authentication or error cases, which could be important for usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial meaning beyond the input schema, which has 0% description coverage. It explains each parameter's purpose: 'user' as the username, 'period' with specific time options, 'limit' with range and default, and 'page' with default. This fully compensates for the schema's lack of descriptions, making parameters clear and actionable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get a user's most played artists.' It specifies the verb ('Get') and resource ('user's most played artists'), making the function unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'get_top_artists' (which might be global vs. user-specific), leaving room for minor ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_user_top_tracks' or 'get_user_top_albums' for similar user-specific queries, or 'get_top_artists' for global top artists. Usage is implied by the tool name and parameters but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_top_tracksA
Get a user's most played tracks
Args: user: Username period: Time period (7day, 1month, 3month, 6month, 12month, overall) limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of user's top tracks
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes | ||
| period | No | overall | |
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool returns a 'formatted list' but lacks details on behavioral traits such as rate limits, authentication requirements, error handling, or pagination behavior beyond parameter hints. The description does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with a clear purpose statement, followed by organized parameter and return sections. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no annotations, but has output schema), the description is fairly complete. It covers purpose and parameters adequately, and the output schema handles return values, though it lacks context on authentication, errors, or rate limits which would be helpful for a user-focused tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics for all parameters: clarifies 'user' as a username, lists valid 'period' values with defaults, specifies 'limit' range and default, and explains 'page' for pagination. This goes beyond the bare schema, though some details like exact formatting are still missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('user's most played tracks'), distinguishing it from sibling tools like get_user_recent_tracks or get_top_tracks by focusing on personal top tracks based on play history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a user's top tracks but does not explicitly state when to use this tool versus alternatives like get_user_top_artists or get_user_top_albums. No guidance on prerequisites (e.g., authentication) or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
love_trackA
Love a track on your Last.fm profile. Requires authentication - use authenticate_user() and get_session() first.
Args: artist: Artist name track: Track name
Returns: Confirmation of love action
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: it's a mutation tool (implied by 'Love a track'), requires authentication (explicitly stated), and returns a confirmation. However, it lacks details on error handling, rate limits, or side effects (e.g., impact on Last.fm recommendations), leaving some gaps in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose, the second provides critical usage guidelines, and the args/returns sections are structured clearly. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (mutation with authentication), no annotations, and an output schema (which handles return values), the description is mostly complete. It covers purpose, prerequisites, and parameters at a high level, but lacks details on error cases or behavioral nuances, leaving minor gaps for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter details. The description adds minimal semantics by listing 'artist' and 'track' as args and briefly describing them, but it doesn't explain format (e.g., case sensitivity), constraints, or examples. This partially compensates for the schema gap but is insufficient for full clarity, aligning with the baseline for moderate coverage issues.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Love a track') and the target resource ('on your Last.fm profile'), using a specific verb. It distinguishes this tool from sibling tools like 'unlove_track' (which reverses the action) and 'get_user_loved_tracks' (which reads rather than modifies loved tracks), making the purpose explicit and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool by specifying prerequisites: 'Requires authentication - use authenticate_user() and get_session() first.' It also implies usage context (modifying loved tracks) and distinguishes it from alternatives like 'unlove_track' for unloving or 'get_user_loved_tracks' for viewing, providing clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_tagA
Remove a tag from a track on your Last.fm profile. Requires authentication - use authenticate_user() and get_session() first.
Args: artist: Artist name track: Track name tag: Tag to remove
Returns: Confirmation of tag removal
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes | ||
| tag | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It helpfully mentions the authentication requirement, which is crucial context. However, it doesn't describe other behavioral traits like whether this is a destructive operation, rate limits, error conditions, or what happens if the tag doesn't exist on the track. The description adds some value but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well-structured with clear sections (purpose, authentication requirement, Args, Returns). Every sentence earns its place, though the 'Returns' section could be slightly more informative. It's front-loaded with the core purpose and critical authentication note.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there's an output schema (which handles return values), no annotations, and 3 parameters with 0% schema coverage, the description does an adequate job. It covers the purpose, authentication requirement, and parameters, but lacks details about behavioral aspects like error handling, side effects, or usage constraints. For a mutation tool with no annotation coverage, this leaves room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the schema provides no parameter documentation. The description lists all three parameters (artist, track, tag) in the Args section, which adds meaningful semantics beyond the bare schema. However, it doesn't provide format details, examples, or constraints (like character limits), so it only partially compensates for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove a tag') and target ('from a track on your Last.fm profile'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'add_tags' or 'unlove_track' beyond the obvious action difference, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Requires authentication - use authenticate_user() and get_session() first'), which is helpful guidance. However, it doesn't explicitly mention when NOT to use it or name specific alternatives (like 'add_tags' for the opposite operation), keeping it from a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scrobble_trackA
Scrobble a track to your Last.fm profile. It can be used for a specific timestamp or current time. Requires authentication - use authenticate_user() and get_session() first.
Args: artist: Artist name track: Track name timestamp: Unix timestamp when track was played (optional, defaults to current time) album: Album name (optional) duration: Track duration in seconds (optional) mbid: MusicBrainz Track ID (optional, more accurate than name)
Returns: Confirmation of scrobble action
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes | ||
| timestamp | No | ||
| album | No | ||
| duration | No | ||
| mbid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the authentication requirement and the optional timestamp behavior (defaults to current time). However, it doesn't mention potential rate limits, error conditions, or what happens if the track isn't found, leaving some behavioral aspects uncovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement, usage prerequisites, parameter explanations, and return value description in just a few sentences. Every sentence adds value without redundancy, and information is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write operation with no annotations and 6 parameters, the description does well by covering authentication needs, parameter semantics, and basic behavior. However, it lacks details about error handling, rate limits, or validation rules. The presence of an output schema means return values don't need explanation, but some behavioral context remains missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by explaining all 6 parameters in detail. It clarifies that 'artist' and 'track' are required, 'timestamp' defaults to current time, 'album' and 'duration' are optional, and 'mbid' provides more accuracy than name. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('scrobble a track') and resource ('to your Last.fm profile'), distinguishing it from siblings like 'update_now_playing' (which updates current playback) or 'love_track' (which marks a track as loved). It specifies the exact operation rather than being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('for a specific timestamp or current time') and provides clear prerequisites ('Requires authentication - use authenticate_user() and get_session() first'). It also implicitly distinguishes from 'update_now_playing' by handling past timestamps, offering explicit guidance on context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_albumsB
Search for albums on Last.fm by name
Args: query: Album name or search query limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of matching albums with their stats
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'Formatted list of matching albums with their stats' in the Returns section, which adds some behavioral context about output format. However, it lacks critical details: whether this is a read-only operation, rate limits, authentication requirements, error handling, or pagination behavior beyond the 'page' parameter. For a search tool with no annotations, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose. It uses sections (Args, Returns) efficiently, with no redundant sentences. Every part earns its place by clarifying parameters and output, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (search with pagination), no annotations, and an output schema (implied by 'Has output schema: true'), the description is minimally adequate. It covers parameters and output format but lacks behavioral context (e.g., safety, limits) and usage guidance. The output schema reduces the need to detail return values, but gaps in other areas keep it from being complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all three parameters: 'query' as 'Album name or search query', 'limit' with range and default, and 'page' with default. This adds meaningful context beyond the bare schema (which only has titles and types). However, it doesn't explain parameter interactions or validation rules, preventing a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for albums on Last.fm by name'. It specifies the verb ('Search'), resource ('albums on Last.fm'), and scope ('by name'). However, it doesn't explicitly differentiate from sibling tools like 'search_artists' or 'search_tracks' beyond the resource type, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_album_info' (for detailed info on a known album) or 'search_artists/tracks', nor does it specify prerequisites (e.g., authentication needs) or contextual constraints. Usage is implied only by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_artistsA
Search for artists on Last.fm by name
Args: query: Artist name or search query limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1) Returns: Formatted list of matching artists with their stats
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the return format ('Formatted list of matching artists with their stats'), which adds some behavioral context, but lacks details on authentication needs, rate limits, error handling, or pagination behavior beyond the 'page' parameter. For a search tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement followed by Args and Returns sections. It is appropriately sized with no redundant information, though the formatting could be slightly more streamlined (e.g., integrating defaults into the purpose).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (search with pagination), no annotations, and an output schema present, the description is fairly complete. It covers purpose, parameters, and return format, but could benefit from more behavioral details like authentication or error handling to fully compensate for the lack of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides clear semantics for all three parameters: 'query' as 'Artist name or search query', 'limit' with range and default, and 'page' with default. This adds significant meaning beyond the bare schema, though it could specify data types or constraints more explicitly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Search for artists on Last.fm by name'), identifies the resource ('artists'), and distinguishes it from sibling tools like 'search_albums' and 'search_tracks' by specifying the artist focus. The verb 'search' is precise and matches the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when searching for artists by name, but does not explicitly state when to use this tool versus alternatives like 'get_artist_info' or 'get_top_artists'. No guidance is provided on exclusions or prerequisites, leaving the context somewhat vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_tracksB
Search for tracks on Last.fm by name
Args: query: Track name or search query artist: Optional artist name to narrow search limit: Maximum number of results to return (1-50, default: 10) page: Page number to retrieve (default: 1)
Returns: Formatted list of matching tracks with their stats
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| artist | No | ||
| limit | No | ||
| page | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the return format ('Formatted list of matching tracks with their stats'), which adds some value, but fails to cover critical aspects like rate limits, authentication requirements (implied by sibling tools like 'authenticate_user'), pagination behavior beyond the 'page' parameter, or error handling. This is a significant gap for a search tool in an API context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured: a clear purpose statement followed by bullet-point-style sections for 'Args' and 'Returns'. Every sentence adds value without redundancy, such as specifying defaults and ranges directly. It's front-loaded with the core functionality, making it easy to scan and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (4 parameters, no annotations, but with an output schema), the description is partially complete. It covers parameter semantics well and mentions the return format, but lacks behavioral details like authentication, rate limits, or error handling. The output schema likely handles return values, so that gap is acceptable, but overall it's adequate with clear room for improvement in usage and transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context beyond the input schema, which has 0% description coverage. It explains that 'query' is for 'Track name or search query', 'artist' is 'Optional artist name to narrow search', and provides ranges and defaults for 'limit' (1-50, default: 10) and 'page' (default: 1). This compensates well for the schema's lack of descriptions, though it doesn't detail the 'stats' in returns or advanced query syntax.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search for tracks on Last.fm by name.' It specifies the verb ('search'), resource ('tracks'), and platform ('Last.fm'), making the action clear. However, it doesn't explicitly differentiate from sibling tools like 'search_albums' or 'search_artists' beyond the resource type, which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_track_info' for detailed info on a known track or 'get_similar_tracks' for recommendations, nor does it specify use cases like finding tracks by partial names versus exact matches. This lack of context leaves the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unlove_trackA
Remove love from a track on your Last.fm profile. Requires authentication - use authenticate_user() and get_session() first.
Args: artist: Artist name track: Track name
Returns: Confirmation of unlove action
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that authentication is required, which is a critical behavioral trait. However, it doesn't mention potential side effects (e.g., permanent removal from loved list), rate limits, or error conditions, leaving some behavioral aspects unspecified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by authentication requirements, then parameter and return details in a structured format. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with authentication), no annotations, and an output schema (which covers return values), the description is mostly complete. It covers purpose, prerequisites, and parameters, but lacks details on error handling or behavioral nuances, which could be beneficial for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It lists both parameters ('artist' and 'track') and explains their purpose ('Artist name', 'Track name'), adding essential meaning beyond the bare schema. However, it doesn't provide format details (e.g., case sensitivity) or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove love from a track') and the resource ('on your Last.fm profile'), distinguishing it from sibling tools like 'love_track' (which adds love) and 'get_user_loved_tracks' (which reads loved tracks). It specifies the exact operation without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Requires authentication - use authenticate_user() and get_session() first.' This provides clear prerequisites and distinguishes it from tools that don't require authentication, such as 'get_track_info' or search tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_now_playingA
Update your "now playing" status on Last.fm. Requires authentication - use authenticate_user() and get_session() first.
Args: artist: Artist name track: Track name album: Album name (optional) duration: Track duration in seconds (optional) mbid: MusicBrainz Track ID (optional)
Returns: Confirmation of now playing update
| Name | Required | Description | Default |
|---|---|---|---|
| artist | Yes | ||
| track | Yes | ||
| album | No | ||
| duration | No | ||
| mbid | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates the authentication requirement, which is a critical behavioral trait. However, it doesn't mention potential rate limits, error conditions, or what happens if the update fails, leaving some behavioral aspects uncovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise: a clear purpose statement, essential usage guidance, and well-organized parameter documentation. Every sentence earns its place with no wasted words, and the information is front-loaded appropriately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of an authenticated write operation with 5 parameters and no annotations, the description provides excellent coverage: clear purpose, authentication requirements, parameter semantics, and return value indication. With an output schema present, the description appropriately doesn't need to detail return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by clearly documenting all 5 parameters, their purposes, and which are required vs. optional. The parameter documentation in the description adds complete semantic meaning beyond what the bare schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Update your "now playing" status') and resource ('on Last.fm'), distinguishing it from sibling tools like 'scrobble_track' or 'love_track' which perform different actions. The verb 'update' is precise and the scope is well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool by providing prerequisites ('Requires authentication - use authenticate_user() and get_session() first'), which is crucial guidance. It also implicitly distinguishes it from other status-related tools by focusing on real-time 'now playing' updates rather than historical data like 'get_user_recent_tracks'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have distinct purposes targeting specific resources (e.g., get_artist_info vs. get_album_info), but some overlap exists in 'top' retrieval tools (e.g., get_top_artists vs. get_tag_top_artists) which could cause minor confusion. Descriptions help clarify the scope, but the high number of similar-sounding tools increases cognitive load.
All tools follow a consistent verb_noun pattern with snake_case (e.g., get_artist_info, search_tracks, love_track). The naming is predictable and readable, making it easy to understand each tool's function at a glance.
With 34 tools, this server feels overloaded for a music scrobbling and discovery service. While Last.fm has a broad API, many tools are variations of the same pattern (e.g., get_X_top_Y for different X and Y), creating redundancy that could overwhelm agents and increase selection errors.
The tool set comprehensively covers the Last.fm domain, including user actions (scrobble, love, tag), information retrieval (artist, album, track, tag, user), search, and charts. There are no obvious gaps; all major API endpoints appear to be represented with full lifecycle coverage.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Last.fm artist/album/track metadata (free API key required)
Search MusicBrainz artists, releases, works, labels; resolve ISRC/ISWC/barcode; fetch cover art.
The media memory layer for AI agents and their humans. Your AI client gets 29 tools to search your collection, add items, update ratings, preview music, and find patterns across everything you've read, watched, and listened to.
Deezer public music catalog (search/tracks/albums/artists/charts)
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Spotify through natural language for music discovery, playback control, library management, and playlist creation. Supports searching for music, controlling playback, managing saved tracks, and getting personalized recommendations based on mood and preferences.1095MIT
- AlicenseAqualityCmaintenanceAn MCP server for the Last.fm API that enables LLM agents to access music data including user profiles, listening history, top charts, search, and artist/album/track metadata.16MIT
- AlicenseBqualityBmaintenanceProvides 41 read-only tools to search and browse Last.fm data, including artists, albums, tracks, user scrobble history, and charts.4116MIT
- FlicenseNot gradedqualityCmaintenanceEnables music search, metadata retrieval, local audio analysis (tempo, key, energy), recommendations, song recognition, and classical work resolution via Spotify, Last.fm, AudD, MusicBrainz, and Songkick APIs.
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/elcachorrohumano/lastfm-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server