Skip to main content
Glama

lautfm-mcp

An MCP server that provides access to the laut.fm Radioadmin API.

Requirements

  • Node.js 18 or later

  • A valid laut.fm Radioadmin API token

Related MCP server: ukraine.com.ua MCP

Setup

1. Install dependencies

npm install

2. Build

npm run build

3. Configure your MCP client

Add the server to your MCP client configuration (e.g. Claude Desktop claude_desktop_config.json):

{
  "mcpServers": {
    "lautfm": {
      "command": "node",
      "args": ["/absolute/path/to/lautfm-mcp/dist/index.js"],
      "env": {
        "LAUTFM_TOKEN": "your-radioadmin-api-token-here"
      }
    }
  }
}

Generate a token by calling https://radioadmin.laut.fm/login?callback_url=LautfmMCP

Environment Variables

Variable

Required

Description

LAUTFM_TOKEN

✅ Yes

Your laut.fm Radioadmin API bearer token. The server will exit immediately if this is not set.

Authentication & Origin

Every request to the Radioadmin API is sent with:

  • Authorization: Bearer <LAUTFM_TOKEN>

  • Origin: LautfmMCP

Available Tools

General

Tool

Description

get_server_status

Check the laut.fm Radioadmin API server status

Station

Tool

Description

list_stations

List all stations accessible with the current token

get_station

Get detailed information about a specific station

update_station

Update station information (description, format, djs, location, website, social links, genres)

get_station_state

Check if a station is active and playing on a streaming server

activate_station

Activate a station — triggers a playlist export and starts streaming

get_current_playlist

Get the currently playing playlist and its tracks

get_listener_stats

Get listener statistics (current listeners, position, switchons log, TLH log)

Users

Tool

Description

get_station_users

List all users of a station

add_station_user

Add a user with a given role to a station (sends an invitation)

update_station_user_role

Change the role of a user on a station

remove_station_user

Remove a user from a station

Playlists

Tool

Description

get_playlists

List all playlists for a station

add_playlist

Add a new playlist to a station

get_playlist

Get information for a single playlist including its entries

update_playlist

Modify an existing playlist

delete_playlist

Delete a playlist (the rotation playlist cannot be deleted)

add_track_to_playlist

Append a single track to a playlist

get_playlist_tracks

Get all tracks for a playlist

delete_track_from_playlist

Delete all occurrences of a track from a playlist

Schedule

Tool

Description

get_schedule

Get the schedule for a station

update_schedule

Modify the schedule for a station

Tracks

Tool

Description

search_tracks

Search tracks using various filters (deprecated endpoint)

get_tracks_by_ids

Get track information for one or more track IDs

update_track

Update metadata for a track

delete_track

Delete an own track from a station

get_track_stats

Get current day track statistics

get_track_stats_period

Get track statistics for a specific period (24h or yyyy-mm-dd)

get_track_tags_for_ids

Get tags for one or more specific tracks

add_track_tags

Add tags to one or more tracks

remove_track_tags

Remove tags from one or more tracks

get_all_track_tags

Get all tags used across all tracks for a station

get_incomplete_tracks

Get tracks with incomplete uploads

get_queued_tracks

Get tracks queued for processing

Live

Tool

Description

get_live_connection_info

Get live streaming connection information (server, port, mountpoint, bitrate, etc.)

get_live_password

Get the live streaming password for a station

Automation Algorithms

Tool

Description

get_automation_algorithm

View the definition of a specific automation algorithm

create_automation_algorithm

Create a new automation algorithm for shuffling tracks

update_automation_algorithm

Update the function used by an existing automation algorithm

delete_automation_algorithm

Delete an automation algorithm

Excluded Endpoints

The following API endpoints are not exposed as MCP tools because they involve binary data transfer which is not suitable for the MCP text protocol:

  • POST /stations/{station_id}/tracks — MP3 file upload

  • PUT /stations/{station_id}/images/{image_type} — Image upload (logo, website, background)

  • GET /stations/{station_id}/tracks/{track_id}/prelisten — Returns audio/mpeg binary stream

Additionally, all App-tagged endpoints (which use Firebase JWT authentication) are excluded as they serve a different use case.

Development

# Watch mode (recompiles on change)
npm run dev

# Build once
npm run build

# Run directly (requires LAUTFM_TOKEN to be set)
LAUTFM_TOKEN=your-token node dist/index.js

Project Structure

src/
├── index.ts          # MCP server entry point
├── client.ts         # HTTP client with auth + Origin header
└── tools/
    ├── general.ts    # General tools (server status)
    ├── stations.ts   # Station tools
    ├── users.ts      # User management tools
    ├── playlists.ts  # Playlist tools
    ├── schedule.ts   # Schedule tools
    ├── tracks.ts     # Track tools
    ├── live.ts       # Live streaming tools
    └── automation.ts # Automation algorithm tools

Available Tools

40 tools
activate_stationA

Activate a station — triggers a playlist export and starts the station on a streaming server if assigned and not running

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does disclose the operation's side effects: it triggers a playlist export and starts the station on a streaming server. It does not cover permissions/auth requirements, idempotency, or behavior when the station is already running beyond the 'not running' qualifier.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the core action and immediately followed by the side effects. Zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, no-output-schema mutation tool, the description is nearly complete: it explains what activation does and the conditions under which it starts the stream. Only failure/return behavior and permission requirements are left unspecified.

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

Parameters3/5

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

Schema coverage is 100% for the single station_id parameter, so the schema already documents the input fully. The description adds no format, constraint, or semantic detail about the parameter, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (activate) and resource (station), and goes further by explaining the mechanism: it triggers a playlist export and starts the stream. An agent can clearly distinguish it from read/inspection siblings like get_station or get_station_state, though no sibling is explicitly named or contrasted.

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

Usage Guidelines3/5

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

The conditional 'if assigned and not running' implies the preconditions under which the tool acts, which is useful implicit guidance. However, it never states when to prefer activation over other station operations, nor what to do if preconditions are unmet — usage is implied rather than spelled out.

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

add_playlistC

Add a new playlist to a station. Requires at minimum a title and color (full 6-digit hex, e.g. #ff0000)

ParametersJSON Schema
NameRequiredDescriptionDefault
colorYesColor in full hex format, e.g. #ff0000
titleYesPlaylist title
shuffledNoWhether the playlist is shuffled
station_idYesThe station ID
descriptionNoPlaylist description
shuffle_optsNoShuffle options object

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations at all, the description carries the full burden yet only states the input requirements. It does not disclose side effects (is the playlist created empty?), permission needs, whether the station must exist, or error behavior 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, purpose front-loaded followed by the prerequisite. Nothing is padded, though the color-format clause duplicates the schema's own pattern and description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation tool with 6 parameters, a nested shuffle_opts object, no annotations, and no output schema. The description omits any explanation of the shuffled/shuffle_opts relationship, the optional description field, or what the call returns, leaving meaningful gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all six parameters, including the color pattern. The description's mention of title and hex color merely repeats what the schema states, adding no new semantic meaning. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Add a new playlist to a station'), which cleanly separates it from the sibling read/update/delete playlist tools. It stops short of explicitly naming alternatives, but the action is unambiguous.

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

Usage Guidelines2/5

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

No when-to-use context is given: nothing says when a playlist should be added versus updated, or what state the station must be in. The only guidance is a restatement of the required fields.

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

add_station_userA

Add a user with a given role to a station (sends an invitation)

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesUser role: owner, editor, or dj
emailYesEmail address of the user to invite
station_idYesThe station ID

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries some burden. It discloses that an invitation is sent, which is non-obvious behavioral context beyond the mechanics. However, it does not explain what happens if the user already exists, permission requirements, or whether the action is reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, zero waste, front-loaded with the core action and resource. The parenthetical adds crucial behavioral context without verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that this is a mutation tool with no annotations and no output schema, the description is minimal. It covers the what and mechanism but omits critical behavioral details like error conditions, permission needs, and side effects beyond the invitation. Adequate but with clear gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters thoroughly, including the role enum. The description adds no additional parameter semantics beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Add a user... to a station') and distinguishes itself from siblings like remove_station_user and update_station_user_role by describing the add operation. The parenthetical clarifies the mechanism (invitation) rather than direct addition.

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

Usage Guidelines3/5

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

The description implies the tool is for adding a user, and the sibling names make the alternative operations clear (remove, update role). However, it does not explicitly state when to use this tool vs update_station_user_role or other user management tools.

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

add_track_tagsC

Add tags to one or more tracks

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsYesArray of tag strings to add
track_idsYesArray of track IDs
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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 implies a mutation and supports bulk operation via "one or more tracks," but it does not describe permissions, idempotency, duplicate-tag handling, reversibility, rate limits, or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no wasted wording. It is appropriately concise, though its brevity also reflects the lack of behavioral and usage detail assessed elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

All three required parameters are fully documented in the schema, so an agent can invoke the tool correctly from the structured fields. However, with no annotations and no output schema, the description still omits useful context about station scoping, mutation effects, and return values.

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

Parameters3/5

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

The schema has 100% description coverage, so the baseline is 3. The description adds only the bulk implication of "one or more tracks," which is already captured by the track_ids minItems constraint, and it adds no semantics for station_id or tags beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource: "Add tags" to "one or more tracks." It clearly distinguishes an additive tag operation from sibling tools like remove_track_tags and get_track_tags_for_ids, though it does not explicitly name those alternatives or mention the station scope.

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

Usage Guidelines2/5

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

The description states what the tool does but provides no when-to-use guidance, prerequisites, or alternatives. Sibling tools such as remove_track_tags and get_track_tags_for_ids exist, but there is no routing guidance telling the agent when to choose this tool over them.

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

add_track_to_playlistB

Append a single track to a playlist. The track must not already be in the playlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idYesThe track ID to add
station_idYesThe station ID
playlist_idYesThe playlist ID

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It discloses the duplicate-track precondition, which is useful, but omits mutation side effects, permission requirements, error behavior, and whether the operation is reversible.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with zero waste. The core action is front-loaded and the precondition follows efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter mutation with no annotations and no output schema, the description is minimally adequate but incomplete. It does not explain permissions, failure cases, or what the append operation returns, which leaves notable gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add syntax, format, or relational meaning beyond what the schema provides, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Append a single track to a playlist.' It is clear enough to distinguish from read/delete siblings by name and action, though it does not explicitly name or 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.

Usage Guidelines2/5

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

It provides the precondition that the track must not already be in the playlist, but gives no explicit when-to-use guidance, no alternatives, and no exclusions beyond that single constraint.

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

create_automation_algorithmC

Create a new automation algorithm for shuffling tracks

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesJavaScript function body, e.g. (function(tracks){return tracks.reverse()})
nameYesThe automation algorithm name

TDQS

C2.9/5.0
Behavior2/5

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 and delivers almost nothing: it does not state that this is a mutating operation, what permissions or scope are needed, whether names must be unique, or what side effects creation has. A one-line create tool with zero annotation coverage leaves the agent guessing about behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is a single front-loaded sentence with no filler, which is efficient. The trade-off is that the extreme brevity comes from under-specification rather than disciplined editing, so it falls short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description omits everything an agent would want beyond the two schema-documented parameters: scope, permissions, duplicate handling, and result shape. The schema covers the inputs, but the definition as a whole is incomplete for a create operation.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema itself explains both `name` and `body` (including a JavaScript example), so the baseline of 3 applies. The description adds no parameter meaning beyond that, and "for shuffling tracks" actually conflicts slightly with the schema's generic JavaScript body guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Create a new automation algorithm"), which cleanly separates it from the get/update/delete_automation_algorithm siblings. However, the trailing qualifier "for shuffling tracks" narrows the stated purpose in a way that may mislead, since the schema's body example (reversing a track array) suggests arbitrary algorithms are permitted.

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

Usage Guidelines2/5

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

No guidance on when to create an algorithm versus updating an existing one, no mention of prerequisites (e.g., station/scoping requirements), and no named alternatives. The agent must infer usage entirely from the verb.

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

delete_automation_algorithmC

Delete an automation algorithm

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe automation algorithm name

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not disclose that deletion is irreversible, whether it requires confirmation or elevated permissions, what happens to automations referencing the algorithm, or the error behavior if the name does not exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short sentence with zero padding, and the destructive verb is front-loaded. It is efficient, though the brevity reflects under-specification rather than tight editing of rich content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation tool with no annotations and no output schema, the description is too thin. It omits irreversibility, permission requirements, side effects on dependent automations, and failure modes that an agent needs before invoking a delete.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'name' parameter ('The automation algorithm name'), so the schema already documents it fully. The description adds no format, naming-convention, or lookup detail beyond that, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete') and resource ('automation algorithm'), so an agent knows exactly what the tool does. It does not, however, differentiate itself from sibling CRUD tools such as create_automation_algorithm, update_automation_algorithm, or get_automation_algorithm beyond the verb.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no mention of prerequisites (e.g. algorithm must exist), and no routing to alternatives. The single sentence offers no context for choosing this tool over the other automation-algorithm siblings.

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

delete_playlistA

Delete a single playlist for a station. The rotation playlist cannot be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID
playlist_idYesThe playlist ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the rotation-playlist restriction, but a delete tool should also flag irreversibility, required permissions, and what happens to tracks inside the playlist. One important constraint is present; the destructive profile is not.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the core action stated first and the exception immediately after. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter destructive tool with no annotations and no output schema, the description covers the minimum plus one constraint, but leaves side effects on contained tracks and failure modes unexplained.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (station_id, playlist_id) are documented in the schema itself. The description adds no format, range, or lookup guidance beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete a single playlist') and scopes it to a station, which separates it from delete_track and delete_automation_algorithm. It does not explicitly name a sibling alternative, but the resource noun is unambiguous.

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

Usage Guidelines3/5

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

Gives one concrete guardrail ('The rotation playlist cannot be deleted'), which is real usage guidance, but never states when to use this versus delete_track_from_playlist or removal of an empty playlist. Usage is implied rather than laid out.

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

delete_trackC

Delete an own track from a station

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idYesThe track ID to delete
station_idYesThe station ID

TDQS

C2.6/5.0
Behavior2/5

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. 'Delete' signals a destructive operation, but the description does not state whether it is irreversible, what permissions/ownership are required (the 'own' qualifier hints at an ownership rule but leaves it undefined), what happens to playlist references, or anything about failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short, front-loaded sentence with a clear verb-resource structure and no filler. It is efficient, though its brevity is partly due to under-specification rather than discipline.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no annotations and no output schema, the description should at minimum clarify irreversibility, ownership rules, and how it differs from delete_track_from_playlist. None of that is present, leaving the agent under-informed about a consequential operation.

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

Parameters3/5

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

Schema description coverage is 100% (both track_id and station_id are documented in the schema), so the baseline of 3 applies. The description adds no further meaning about parameter format, valid ranges, or the relationship between station and track beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (delete) and resource (track) with a scoping constraint ('own', 'from a station'), so the agent knows the general action. However, the sibling set contains a highly similar tool, delete_track_from_playlist, and the description does nothing to distinguish deleting a station-owned track from removing a track from a playlist. The ambiguous word 'own' is not clarified.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance and no mention of alternatives. Given the presence of delete_track_from_playlist, remove_track_tags, and update_track as nearby siblings, the lack of any disambiguation is a meaningful gap.

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

delete_track_from_playlistB

Delete all occurrences of a track from a playlist

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idYesThe track ID to remove
station_idYesThe station ID
playlist_idYesThe playlist ID

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses that ALL occurrences (duplicates included) are removed, going beyond the schema, but says nothing about permissions, idempotency, reversibility, or error behavior for missing track/playlist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no waste. The discriminating detail ('all occurrences') is included in minimal space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter mutation with a fully documented schema and no output schema, the description covers the essential semantics. Minor gaps remain around failure behavior and whether the deletion is permanent, which a mutation tool with no annotations ideally would state.

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

Parameters3/5

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

Schema description coverage is 100% with three clearly documented integer IDs, so the schema already does the work. The description adds the 'all occurrences' nuance but no per-parameter detail beyond the schema, matching the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource (delete a track from a playlist) with the key scope qualifier 'all occurrences', which separates it from delete_track and add_track_to_playlist. It does not name a sibling explicitly, but the resource and scope are unambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of when to prefer an alternative such as delete_track (deleting the track itself) or remove_track_tags. Usage is only implied by the name.

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

get_all_track_tagsA

Get all tags used across all tracks for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral context. It discloses a read operation ('Get') and its scope, but omits details such as permissions, pagination, rate limits, or return format. For a simple read, this partial disclosure is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no wasted words. It directly conveys the tool's purpose and scope without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one documented parameter, the description covers the essential purpose. However, the lack of an output schema and absence of annotations means the agent lacks information about return structure, permissions, or edge cases, leaving some gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the single parameter (station_id) is already documented in the schema. The description adds no further parameter meaning, making the baseline score of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('tags') with a clear scope ('across all tracks for a station'). It implicitly distinguishes itself from sibling tools like get_track_tags_for_ids and add_track_tags by focusing on station-wide aggregation, though it does not name alternatives explicitly.

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

Usage Guidelines3/5

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

The scope implies the tool is used when you need all tags across a station's tracks, but it offers no explicit when-to-use guidance or exclusions relative to siblings. An agent can infer usage from the description, but no direct alternatives or prerequisites are stated.

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

get_automation_algorithmB

View the definition of a specific automation algorithm

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe automation algorithm name

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, but 'View' does signal a non-mutating read operation. It says nothing about what the returned 'definition' contains, error behavior, or permissions, so the disclosure is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with zero filler. It is efficient, though it stops short of adding any routing or scoping value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with full schema coverage and no output schema, the definition is minimally viable. It leaves unclear what a 'definition' includes, which a reader-call agent might want to know.

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

Parameters3/5

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

Schema description coverage is 100% with a single 'name' parameter, so the schema already documents the argument. The description only restates that a specific algorithm is targeted, adding no format or naming detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb ('View') plus resource ('automation algorithm') with a 'specific' scoping qualifier. It is implicitly distinguishable from its create/update/delete siblings, though it never names them explicitly.

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

Usage Guidelines2/5

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

No when-to-use context, no alternatives named, and no prerequisite stated beyond the implied need for a name. The agent must infer usage purely from the name.

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

get_current_playlistA

Get the currently playing playlist and its tracks for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It usefully discloses that the tool returns both a playlist and its tracks, and the verb 'Get' implies a read-only operation, but it omits conditions such as required permissions, behavior when nothing is playing, and error modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It communicates the core action and return scope efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with full schema coverage, the description identifies what is retrieved, but with no output schema it does not describe the return structure or edge cases. It is minimally adequate but leaves meaningful gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the single station_id parameter is fully documented in the schema itself. The description only says 'for a station' and adds no syntax, constraints, or examples beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get'), resource ('currently playing playlist and its tracks'), and scope ('for a station'). It clearly distinguishes this tool from siblings like get_playlist or get_playlist_tracks by specifying current playback and station context.

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

Usage Guidelines2/5

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

It gives no explicit when-to-use guidance or alternatives. An agent must infer that this is the right tool when it needs the currently playing playlist for a station rather than a stored playlist by ID.

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

get_incomplete_tracksC

Get tracks with incomplete uploads for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it does not define what 'incomplete' means (failed, interrupted, pending), whether results are paginated, or what state the returned tracks are in. The read-only nature is only implied by the verb 'Get'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. It is arguably too terse given the undefined 'incomplete' concept, but structurally it is clean.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (one param, no nesting), but with no annotations and no output schema the description should at least clarify what 'incomplete uploads' signifies and what an agent gets back. It leaves the central concept undefined.

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

Parameters3/5

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

Schema coverage is 100% and the single station_id parameter is fully documented in the schema, so the description's 'for a station' adds no meaning beyond it. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource with a qualifier: tracks whose uploads are incomplete, scoped to a station. This is distinguishable from sibling read tools like search_tracks or get_tracks_by_ids by the filter, though no sibling is named explicitly.

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

Usage Guidelines2/5

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

No when-to-use, prerequisites, or alternatives are given. An agent must infer from the name alone that this is the recovery/orphan-tracking view rather than a general track listing, and there is no guidance on when to prefer it over search_tracks or get_queued_tracks.

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

get_listener_statsB

Get listener statistics for a station (current listeners, position, switchons log, TLH log)

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the returned data categories (current listeners, position, switchons log, TLH log), but says nothing about permissions, rate limits, or whether it is a pure read; a read-only implication is the only safety signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that identifies the tool and lists return contents without any filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description's enumeration of return fields is valuable and largely compensates. For a simple one-parameter read tool this is close to complete, though it could state that the operation is read-only.

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

Parameters3/5

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

Schema description coverage is 100% for the single station_id parameter, so the schema already documents it fully. The description adds no parameter syntax or format details beyond what the schema provides, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('listener statistics') scoped to a station, and enumerates the data returned. It does not explicitly differentiate from similar siblings such as get_station_state or get_server_status, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus siblings like get_station_state, get_server_status, or get_station. No prerequisites, exclusions, or alternative conditions are provided.

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

get_live_connection_infoC

Get live streaming connection information for a station (server, port, mountpoint, bitrate, samplerate, format, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. 'Get' implies a read-only operation, and the parenthetical list gives some sense of the return data, but there is no mention of permissions, rate limits, whether the station must be actively streaming, or other traits an agent might need.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence that efficiently states the purpose and summarizes returned fields. The parenthetical list is slightly verbose but remains focused and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read-only getter with no output schema, the description provides useful return-field context. However, it omits any usage guidance or behavioral details, and without annotations or an output schema, the agent lacks information about when this tool is appropriate versus alternatives.

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

Parameters3/5

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

There is a single parameter, station_id, and schema description coverage is 100%, so the schema already documents it fully. The description adds no additional meaning to the parameter itself, which matches the baseline of 3 when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'live streaming connection information for a station', and it lists several returned fields (server, port, mountpoint, bitrate, samplerate, format). It does not explicitly distinguish this tool from similar siblings like get_server_status or get_station_state, which prevents a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, no prerequisites, and no exclusions. The description is purely a statement of what it returns, leaving the agent to infer usage context.

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

get_live_passwordB

Get the live streaming password for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It signals that the result is sensitive by naming a 'live streaming password,' but it does not disclose permissions, read-only behavior, rate limits, secret exposure, or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. Its size is appropriate for a simple one-parameter retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read operation, the description gives enough information to invoke the tool with station_id. However, with no annotations and no output schema, it lacks return details, authentication/security context, and sibling relationship guidance.

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

Parameters3/5

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

There is one required parameter, station_id, and schema description coverage is 100%. The schema already documents the parameter as 'The station ID,' and the description adds no format, range, or source detail beyond that baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Get the live streaming password for a station.' This clearly identifies the operation. However, it does not differentiate the tool from related siblings such as get_live_connection_info or explain how they differ.

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

Usage Guidelines2/5

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

The description does not state when to use this tool, when not to use it, or what alternatives exist. Use is only implied by the tool name and resource, and there is no routing guidance among the many station/playlist siblings.

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

get_playlistC

Get information for a single playlist including its entries

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID
playlist_idYesThe playlist ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations supplied, the description carries the full behavioral burden and does not meet it. It implies a read via 'Get', but says nothing about required permissions, behavior when an ID does not exist, or whether 'entries' means full track objects or summaries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, which is well-sized for a simple two-parameter read tool. It loses a point only because the trailing 'including its entries' clause is vague rather than informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no output schema and no annotations, the description is minimally viable: it tells the agent what comes back in broad terms. But it leaves unresolved whether 'entries' duplicates get_playlist_tracks and gives no error or permission context.

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

Parameters3/5

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

Schema description coverage is 100%, so station_id and playlist_id are already documented in the schema; the description adds no format, range, or sourcing detail. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Get') and resource ('playlist'), and the word 'single' plus the plural sibling get_playlists distinguishes it from list-style retrieval. However, 'including its entries' overlaps ambiguously with the sibling get_playlist_tracks, so the boundary is not fully drawn.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance, no prerequisites, and no mention of alternatives such as get_playlists or get_playlist_tracks. The agent must infer from the name alone that this fetches one playlist by ID.

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

get_playlistsB

List all playlists for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'List' implies a safe read, but nothing is said about permissions, ordering, pagination, or whether private/unpublished playlists are included — meaningful gaps for a listing tool with zero annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero filler; nothing is padded and the resource plus scope come first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, the description is minimally adequate, but it does not say what a playlist entry contains, how results are ordered, or whether the list is paginated — details an agent may need when chaining into get_playlist.

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

Parameters3/5

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

Schema description coverage is 100% and the single station_id parameter is documented in the schema; the description adds only the same scoping idea. Baseline 3 is correct when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List all playlists') plus its scope ('for a station'), so it is clearly a collection read. It implicitly contrasts with the singular get_playlist sibling, but never names or distinguishes it explicitly.

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

Usage Guidelines2/5

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

No guidance on when to use this versus get_playlist, get_current_playlist, or get_playlist_tracks, all of which appear in the sibling list. The agent must infer the selection rule from names alone.

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

get_playlist_tracksB

Get all tracks for a playlist (tracks are unique and not necessarily in playlist order)

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID
playlist_idYesThe playlist ID

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that tracks are unique and unordered, which is a useful behavioral trait, but says nothing about mutation safety, whether it's read-only, error conditions, or pagination for a potentially large track list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with the key behavioral detail (uniqueness, order) included. No wasted words, though slightly terse for a tool with zero annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description should disclose more about behavior—is it read-only, can it fail, how large can results be, what's the return shape? The one useful behavioral note is insufficient for a tool with no structured safety or output metadata.

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

Parameters3/5

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

Schema description coverage is 100%—both station_id and playlist_id are documented in the schema. The description adds no parameter syntax, format, or constraints beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (tracks for a playlist), clearly distinguishable from siblings like get_playlist (metadata) and get_tracks_by_ids (tracks by ID). The parenthetical clarifies scope.

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

Usage Guidelines3/5

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

Usage is implied by the name and description—you use it when you need a playlist's tracks—but there is no explicit when-to-use vs. alternatives, no prerequisites, and no indication of when not to use it.

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

get_queued_tracksC

Get tracks that are queued for processing for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it discloses nothing beyond the read implied by 'get' — no ordering, pagination, limit behavior, or permissions. It also never clarifies how 'queued' differs from 'incomplete' tracks, which is the key ambiguity 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One short, front-loaded sentence with no filler. It is efficient, though it is thin rather than dense — brevity comes partly from omitting useful detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, one-required-parameter read tool with full schema coverage, the description is minimally sufficient to invoke the tool. But with no annotations and no output schema, the absence of any statement about return shape, ordering, or the distinction from get_incomplete_tracks leaves a real gap.

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

Parameters3/5

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

Schema description coverage is 100% for the single station_id parameter, so the schema already does the work; the description's phrase 'for a station' merely echoes it. Baseline 3 is appropriate when the schema fully documents the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope ('tracks queued for processing for a station'), which is clearer than a bare name restatement. However, it does not distinguish itself from the closely related sibling get_incomplete_tracks, leaving the agent to guess which queue-like tool applies.

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

Usage Guidelines2/5

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

No indication of when to use this tool versus siblings such as get_incomplete_tracks, get_current_playlist, or search_tracks, and no prerequisites or context for what 'queued for processing' means operationally.

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

get_scheduleC

Get the schedule for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not state whether this is read-only (though 'get' implies it), whether pagination or time-window behavior applies, what the returned schedule contains, or any auth/rate-limit constraints. For a tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence with no waste, front-loading the verb and resource immediately. It is appropriately sized for a simple one-parameter getter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a minimal single-parameter schema, the description is too sparse. It should clarify read-only nature, expected return shape, and any scope constraints to be complete for an agent.

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

Parameters3/5

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

Schema coverage is 100%, with the single parameter 'station_id' fully described in the schema as 'The station ID'. The description adds no parameter detail beyond what the schema already provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-resource pair ('Get the schedule') tied to a station, which is clear and distinguishable from siblings like update_schedule or get_playlists. However, it does not explicitly differentiate itself from the sibling update_schedule or clarify scope (e.g., time range, recurring slots), so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives like get_current_playlist or update_schedule. The description gives a bare purpose but no conditions, prerequisites, or exclusions, leaving usage entirely to inference.

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

get_server_statusA

Check the laut.fm Radioadmin API server status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

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 does not state whether the operation is read-only, what permissions are needed, what the return format looks like, or any rate limits, leaving key behavioral traits unspecified.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that directly communicates the tool's function without any unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only status tool, the description is minimally adequate. However, with no annotations and no output schema, it could have mentioned what the status check returns (e.g., operational state, version) to better prepare the agent.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline score is 4. The empty schema is fully described and the description adds no parameter information because none exists.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Check') and resource ('laut.fm Radioadmin API server status'), making the tool's purpose immediately clear. It is distinct from all sibling tools, which manage stations, playlists, tracks, and users.

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

Usage Guidelines3/5

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

The description implies usage for checking server status but does not explicitly state when to use this tool versus alternatives or any prerequisites. Since no sibling tool performs the same function, the implied context is sufficient but not rich.

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

get_stationB

Get detailed information about a specific station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a read operation ('Get detailed information') but says nothing about permissions, rate limits, side effects, or what 'detailed' encompasses, leaving the safety and behavior profile largely undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. Every word serves the core purpose and nothing is padded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter getter with no output schema, the definition is minimally sufficient, but it never says what fields 'detailed information' returns or how the station is identified beyond the schema. It leaves the agent with a gap on return content, though the low complexity keeps this from being severe.

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

Parameters3/5

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

Schema description coverage is 100%, with station_id documented as 'The station ID', so the baseline is 3. The description adds only 'a specific station', which reinforces but does not extend the schema's meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Get') and resource ('station') with scope ('a specific station'). It is clear on its own, but it does not distinguish itself from siblings such as list_stations or get_station_state, leaving the agent to infer that this is the single-station detail lookup.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus list_stations, get_station_state, or get_station_users. No prerequisites or conditions are given, so the agent must infer usage purely from the name.

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

get_station_stateB

Check if a station is active and playing on a streaming server

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavior. 'Check' implies a read-only operation and it states the predicate being evaluated, but it does not describe return values, permissions, error behavior, or whether the check is real-time or cached.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, well-formed sentence that front-loads the operation and resource with zero filler. Every word contributes to clarifying the tool's scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with one fully documented parameter, the description is adequate for invocation. However, since there is no output schema and no annotations, it leaves the return format and any auth or side-effect details unspecified.

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

Parameters3/5

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

Schema description coverage is 100%, so the single station_id parameter is fully documented in the schema as 'The station ID'. The description adds no additional meaning beyond the schema, which is the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Check') and resource ('station') and specifies the condition being checked ('active and playing on a streaming server'). It distinguishes itself from the generic get_station by focusing on playback state, though it never names sibling tools explicitly.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives like get_station, get_server_status, or get_listener_stats. Usage is only implied by the purpose statement, with no conditions or exclusions.

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

get_station_usersC

List all users of a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, and it discloses almost nothing: no return shape, no pagination behavior for large user lists, no permission requirements, no indication of what an empty or unknown station_id yields. 'List all users' conveys only the bare operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with zero padding or filler; the core operation leads immediately. It is efficiently sized, though so terse that nothing beyond the bare statement of purpose is communicated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema and no annotations, the description is minimally viable: an agent knows what it does and what to pass. It omits any return-value expectation or pagination note, but with the schema fully covering the input there is no critical gap.

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

Parameters3/5

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

Schema description coverage is 100% for the single station_id parameter, so the schema already documents it adequately. The description adds no format, ID-source, or validity detail beyond the schema, which is the baseline-3 case for a fully documented parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (users of a station), which is unambiguous and clearly distinct from siblings like get_station, add_station_user, or update_station_user_role. It does not explicitly name a sibling, but the scope is precise enough that an agent can select it confidently.

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

Usage Guidelines2/5

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

There is no guidance on when to use this versus alternatives such as get_station_state or add_station_user; the only hint is the implied read-only listing semantics of 'List'. No prerequisites, no exclusions, no mention of whether the station must exist or be active.

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

get_tracks_by_idsC

Get track information for one or more track IDs (comma-separated list)

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idsYesArray of track IDs to retrieve
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so the description carries the full burden. It fails to mention whether this is a read-only operation, whether it requires authentication, how many IDs can be fetched at once, or any rate limits. Only the basic retrieval is implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, efficient sentence that front-loads the purpose. However, it could be slightly more informative without sacrificing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a retrieval tool with two required parameters and no output schema, the description is minimal. It lacks details on return format, error handling, and use cases, leaving significant gaps for an agent to call it correctly in context.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters are fully documented in the schema. The description adds no extra meaning beyond noting that track_ids can be a comma-separated list, which is somewhat redundant with the array type in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (track information) with the input mechanism (by IDs). However, it doesn't differentiate itself from sibling tools like search_tracks or get_track_tags_for_ids, which might also retrieve track data.

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

Usage Guidelines2/5

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 such as search_tracks or get_track_stats. The description merely states what it does without context for selection.

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

get_track_statsC

Get current day track statistics (play time, listener count, live flag) for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It conveys that data is scoped to 'current day' but says nothing about permissions, freshness/latency, or empty/zero states, leaving an agent with only a partial behavioral picture.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence that front-loads the verb and resource. It is appropriately sized, losing perhaps a slight amount by listing fields that the return values would otherwise reveal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no output schema, the description is adequate but thin. It does not cover return format, zero-data behavior, or how it relates to sibling stats tools, leaving some gaps an agent would need to guess.

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

Parameters3/5

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

Schema description coverage is 100% and there is only one clearly named required parameter, so the schema fully documents station_id. The description adds no parameter-level detail beyond the schema, which is the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get current day track statistics') and enumerates what the stats contain (play time, listener count, live flag). It is clear but does not differentiate from the nearby sibling get_track_stats_period or get_listener_stats, which could confuse selection.

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

Usage Guidelines2/5

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

No when-to-use guidance or exclusions are provided. The agent cannot tell from the description why it would pick this over get_track_stats_period or get_listener_stats.

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

get_track_stats_periodC

Get track statistics for a specific period. Use '24h' for the last 24 hours or a date in 'yyyy-mm-dd' format.

ParametersJSON Schema
NameRequiredDescriptionDefault
periodYesPeriod: '24h' or a date in yyyy-mm-dd format
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It does not say what the statistics contain, whether results are aggregated or per-listener, what permissions are needed, or how much history is retained — all questions an agent would have for a stats read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core purpose front-loaded and no filler. It is appropriately sized for a two-parameter read tool, though the second sentence largely duplicates schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description is the only source of behavioral context, and it omits what the statistics actually include and how far back they can be queried. It is minimally adequate but leaves real gaps for an agent to fill.

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

Parameters3/5

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

Schema description coverage is 100%, with both station_id and period already documented in the schema, including the '24h' or yyyy-mm-dd values. The description repeats that same period syntax rather than adding format, timezone, or boundary semantics beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ('Get track statistics') and scopes it with 'for a specific period', which distinguishes it functionally from the sibling get_track_stats. However, it never names or contrasts with that sibling explicitly, so differentiation is left to inference.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over the closely-named sibling get_track_stats or get_listener_stats. The sentence about '24h' vs a date is parameter formatting guidance, not usage guidance, so an agent gets no when/when-not criteria.

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

get_track_tags_for_idsC

Get tags for one or more specific tracks

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idsYesArray of track IDs
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing beyond the operation itself. It does not state that this is a read-only operation, what happens when a track_id is invalid or absent, or anything about return shape or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with zero filler, and the resource and scope are front-loaded. It is efficient, though it could have used the space for the routing and behavioral detail it lacks.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no annotations and no output schema, the description is too thin: it omits the read-only nature, error behavior for unknown IDs, and what the returned tags represent. The schema covers input only, so the gaps are real.

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

Parameters3/5

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

Schema description coverage is 100%, so both station_id and track_ids are already documented in the schema; the baseline of 3 applies. The description adds only the plural-cardinality hint ('one or more'), which the schema's minItems already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('tags') scoped to 'one or more specific tracks', which distinguishes it from the sibling get_all_track_tags (all tags) and get_tracks_by_ids (tracks, not tags). It does not explicitly name those siblings, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternative is named despite siblings get_all_track_tags and add/remove_track_tags existing. 'One or more specific tracks' only faintly implies the scoping condition, leaving the agent to infer why this beats get_all_track_tags.

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

list_stationsA

List all stations accessible with the current token

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, and it does disclose one genuinely behavioral fact: results are filtered by the invoking token's permissions. It says nothing about pagination, ordering, or the shape/volume of the response, which are the traits an agent would still need for a listing operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with the scope qualifier front-loaded and no filler. Nothing could be trimmed without losing the access-scoping meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a trivial zero-parameter read tool this is close to sufficient, but with no annotations and no output schema the description is the only source of information, and it omits any indication of what a station record looks like or how results are bounded.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter meaning for the description to add. Baseline 4 applies; the description introduces no param-related confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

"List all stations accessible with the current token" pairs a specific verb (list) with a specific resource (stations) and adds a meaningful scope qualifier — only stations the token can reach. An agent can distinguish it from singular siblings like get_station and update_station by the plural, read-only framing. It stops short of naming those siblings explicitly.

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

Usage Guidelines3/5

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

The phrase "all stations accessible with the current token" implies this is the discovery/enumeration entry point, which is useful context. However, it never states when to prefer this over get_station for a single station, nor whether it is the required first call before other station-scoped tools.

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

remove_station_userC

Remove a user from a station

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYesThe user ID
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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 signals a destructive mutation via 'Remove' but says nothing about permissions required, reversibility, side effects (e.g., does it fail if the user is the last admin?), or the response. Significant gaps for a delete-style operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with zero waste, front-loading the verb and resource. It is arguably too terse to be maximally helpful, keeping it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with full schema coverage and no output schema, the minimum is arguably met, but as an unannotated mutation it should disclose permissions and failure/edge behavior. The description leaves that entirely to inference.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (user_id, station_id) are documented in the schema. The description adds no syntax, format, or constraint details beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb ('Remove') and resource ('a user from a station'), which lets an agent distinguish it from add_station_user and update_station_user_role by verb alone. It does not explicitly name those siblings, so it stops short of a 5.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus add_station_user, update_station_user_role, or get_station_users. No preconditions (e.g., who may remove users, whether the user must exist) are stated.

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

remove_track_tagsC

Remove tags from one or more tracks

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsYesArray of tag strings to remove
track_idsYesArray of track IDs
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Remove' signals a mutation, but the description does not state required permissions, whether removal is reversible, what happens to tracks lacking the specified tags, or what the response contains. This is a significant gap for a write tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with no wasted words, and the action is front-loaded. It is appropriately sized, though its brevity is partly a consequence of under-specification rather than tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the definition should disclose more: permission requirements, reversibility, and response shape are all absent. The schema documents parameters adequately, but the behavioral context an agent needs to call this safely is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all three parameters are already documented in the schema and the description need not compensate. The phrase 'one or more tracks' loosely implies a track_ids array, but adds no syntax or format detail beyond what the schema provides. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb ('Remove') and resource ('tags') with a clear scope ('one or more tracks'), so the core action is unambiguous. However, it does nothing to distinguish itself from siblings like add_track_tags or get_all_track_tags beyond the verb.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus alternatives such as add_track_tags, get_track_tags_for_ids, or get_all_track_tags. No prerequisites, no context on the scenario that calls for removing tags. Usage is only implied by the name.

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

search_tracksC

Search tracks for a station using various filters. Note: this endpoint is deprecated and will be replaced in a future version.

ParametersJSON Schema
NameRequiredDescriptionDefault
ownNoFilter to own tracks only
typeNoTrack type
albumNoAlbum filter
genreNoGenre filter
orderNoSort order
titleNoTitle filter
artistNoArtist name filter
privateNoFilter to private tracks
durationNoExact duration in seconds
playlistNoPlaylist filter
created_atNoCreated at date filter
station_idYesThe station ID
max_durationNoMaximum duration in seconds
min_durationNoMinimum duration in seconds
release_yearNoExact release year
max_created_atNoMaximum created at date
min_created_atNoMinimum created at date
max_release_yearNoMaximum release year
min_release_yearNoMinimum release year

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses the deprecation status, which is genuinely useful, but says nothing about return format, pagination, permissions, or result limits for a 19-parameter search endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core purpose and followed by the deprecation caveat; no filler. It is efficient, though it omits pagination and return details entirely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 19-parameter search tool with no annotations and no output schema, the description is thin. The deprecation warning is the only extra context; pagination, ordering behavior, and result shape are all missing.

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

Parameters3/5

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

Schema description coverage is 100%, so all 19 parameters are already documented in the schema. The description adds no syntax, format, or interaction detail beyond what the schema provides, making the baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Search tracks') and scopes it to a station, so the agent knows this is a filtered track listing. It does not name or distinguish itself from siblings like get_tracks_by_ids or get_incomplete_tracks, so it stops short of a 5.

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

Usage Guidelines2/5

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

The deprecation note implies the tool should be avoided or replaced, but it never says what to use instead or under what conditions to pick this over sibling track endpoints. Usage is only vaguely implied by 'using various filters'.

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

update_automation_algorithmC

Update the function used by an existing automation algorithm

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesJavaScript function body, e.g. (function(tracks){return tracks.reverse()})
nameYesThe automation algorithm name

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It doesn't say whether this replaces the existing function entirely, whether it requires specific permissions, whether changes take effect immediately, or whether it's reversible. These are important 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, concise sentence that front-loads the action and resource. No waste or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 and no output schema, the description is too thin. It fails to describe what happens to the existing function, any side effects, or error conditions, leaving significant gaps for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema fully documents both parameters (name and body) with examples. The description adds no parameter meaning beyond the schema, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Update') and resource ('the function used by an existing automation algorithm'), clearly distinguishing it from siblings like create_automation_algorithm, delete_automation_algorithm, and get_automation_algorithm. It's clear what the tool does, though 'function' is slightly ambiguous without more context.

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

Usage Guidelines2/5

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

The description only says it updates an existing automation algorithm's function, but gives no guidance on when to use this versus create_automation_algorithm, nor does it mention prerequisites (e.g., the algorithm must already exist). No when-to-use or alternatives are provided.

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

update_playlistC

Modify an existing playlist for a station

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoColor in full hex format
titleNoPlaylist title
shuffledNoWhether the playlist is shuffled
station_idYesThe station ID
descriptionNoPlaylist description
playlist_idYesThe playlist ID
shuffle_optsNoShuffle options object

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It says 'Modify' but never states whether this is a partial update (only supplied fields changed) or a full replacement, whether it is reversible, what permissions are needed, or what happens to omitted fields. For a mutation tool with zero annotation coverage, these are 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is front-loaded and free of filler, but its brevity reflects under-specification rather than disciplined concision. For a seven-parameter mutation tool it does not carry enough weight to be considered well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and a nested object parameter, the definition is too thin for an agent to call confidently. It omits partial-update semantics, permissions, and error behavior, leaving the description inadequate for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters, including the nested shuffle_opts object. The description adds no additional parameter meaning, but per the high-coverage baseline a 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Modify') and resource ('an existing playlist'), scoped to a station. This distinguishes it from the get_/add_/delete_playlist siblings in the toolset. It stops short of explicitly naming an alternative or clarifying how it differs from track-level operations like add_track_to_playlist.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus add_playlist or delete_playlist, nor any prerequisite such as the playlist already existing or required permissions. The agent must infer usage entirely from the name.

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

update_scheduleA

Modify the schedule for a station. You cannot add an entry for the Base Playlist into entries. If you change the base_playlist_id, any entries containing that ID will be deleted.

ParametersJSON Schema
NameRequiredDescriptionDefault
entriesNoArray of schedule entries
station_idYesThe station ID
base_playlist_idNoID of the base (fallback) playlist

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does disclose two real behavioral traits: a validation rule (the Base Playlist cannot be added as an entry) and a destructive side effect (changing base_playlist_id deletes matching entries). It does not clarify whether the entries array replaces all existing entries or merges with them, nor any permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action and followed immediately by the two constraints that could cause data loss. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the main destructive behavior and a key validation rule, which is the most important missing context. The remaining gap is the unspecified update semantics of the entries array (full replacement vs. incremental).

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning beyond the schema: the semantic constraint on the entries payload and the cascading delete triggered by base_playlist_id. It still does not explain replace-vs-append semantics for entries.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Modify the schedule for a station'), which is immediately distinguishable from the read-only sibling get_schedule. It does not explicitly name get_schedule or otherwise route the agent, but the intent is unambiguous.

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

Usage Guidelines3/5

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

Usage context is implied by the verb 'Modify' and by the constraint about entries, but there is no explicit statement of when to use this instead of get_schedule or update_station. No prerequisites or exclusions are given.

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

update_stationC

Update station information (description, format, djs, location, website, twitter_name, facebook_page, instagram_name, genres)

ParametersJSON Schema
NameRequiredDescriptionDefault
djsNoDJs string
formatNoStation format
genresNoUp to 3 genres
websiteNoStation website URL
locationNoStation location
station_idYesThe station ID
descriptionNoStation description
twitter_nameNoTwitter handle
facebook_pageNoFacebook page
instagram_nameNoInstagram handle

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden for a mutation tool. It never states that only station_id is required (i.e. partial update), whether omitted fields are preserved, what permissions are needed, or what happens on invalid station_id. The field list is all it offers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence, so it is not bloated, but the parenthetical is effectively a copy of the schema's property list and contributes little new information. Efficient in form, thin in value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter mutation tool with no annotations and no output schema, the description omits critical operational detail: which fields are optional, whether this is a partial or full replacement update, and what the response contains. The schema covers names but not semantics.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter including the genres maxItems=3 constraint and nullable social fields. The description merely repeats the field names, adding no format or constraint detail beyond the schema. Baseline 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Update) and resource (station information) and enumerates the mutable fields, which is enough to distinguish it from get_station/list_stations/activate_station. It stops short of explicitly naming a sibling or scope boundary, but the purpose is unambiguous.

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

Usage Guidelines2/5

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 update_station_user_role, update_schedule, or other mutating siblings. No mention of prerequisites such as ownership or permissions. The agent must infer all context.

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

update_station_user_roleC

Change the role of a user on a station

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesUser role: owner, editor, or dj
user_idYesThe user ID
station_idYesThe station ID

TDQS

C2.9/5.0
Behavior2/5

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 implies a mutation but says nothing about required permissions, whether the change is reversible, or whether valid transitions (e.g., demoting an owner) are restricted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no wasted words. It is appropriately terse for a simple update, though it errs toward under-specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description omits critical behavioral context such as permission requirements, role-transition rules, and success/failure semantics. The structured fields cover parameters but nothing about what the call actually does or requires.

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

Parameters3/5

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

Schema description coverage is 100%, with the role enum and both IDs documented in the schema, so the schema does the heavy lifting. The description adds no format, constraint, or transition semantics beyond what the schema already states, which is the baseline 3 case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (change) and resource scope (role of a user on a station), which an agent can distinguish from add_station_user and remove_station_user siblings. It stops short of explicit sibling differentiation, but the operation is unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of alternatives or prerequisites. The agent must infer from the name that this is the tool for modifying an existing membership versus adding or removing one.

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

update_trackC

Update metadata for a track

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoTrack type
albumNoAlbum name
genreNoGenre
titleNoTrack title
artistNoArtist name
track_idYesThe track ID
station_idYesThe station ID
release_dayNoRelease day
release_yearNoRelease year
release_monthNoRelease month

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It mentions 'Update' but fails to state whether changes are permanent, require specific permissions, or how partial updates are handled. For a mutation tool with zero annotation coverage, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that front-loads the action and resource. It is appropriately sized for the tool's purpose, though it could be slightly more informative without being verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (10 parameters, mutation operation) and the absence of annotations or an output schema, the description is incomplete. It should explain what metadata can be updated, any side effects, and how to use the required IDs, but it covers none of these.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all 10 parameters, including required station_id and track_id. The description adds no parameter meaning beyond what the schema provides, which is acceptable when the schema is rich, but it doesn't highlight optional fields or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource ('Update metadata for a track'), so the basic purpose is understandable. However, it offers no differentiation from sibling tools like update_playlist or update_station, and it doesn't specify which metadata fields are updatable.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites such as needing a valid station_id and track_id, nor does it reference related sibling tools like delete_track or search_tracks.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 40 tool updatesv1.0.0
    • First observedactivate_station
    • First observedadd_playlist
    • First observedadd_station_user
    • First observedadd_track_tags
    • First observedadd_track_to_playlist
    • First observedcreate_automation_algorithm
    • First observeddelete_automation_algorithm
    • First observeddelete_playlist
    • First observeddelete_track
    • First observeddelete_track_from_playlist
    • First observedget_all_track_tags
    • First observedget_automation_algorithm
    • First observedget_current_playlist
    • First observedget_incomplete_tracks
    • First observedget_listener_stats
    • First observedget_live_connection_info
    • First observedget_live_password
    • First observedget_playlist
    • First observedget_playlist_tracks
    • First observedget_playlists
    • First observedget_queued_tracks
    • First observedget_schedule
    • First observedget_server_status
    • First observedget_station
    • First observedget_station_state
    • First observedget_station_users
    • First observedget_track_stats
    • First observedget_track_stats_period
    • First observedget_track_tags_for_ids
    • First observedget_tracks_by_ids
    • First observedlist_stations
    • First observedremove_station_user
    • First observedremove_track_tags
    • First observedsearch_tracks
    • First observedupdate_automation_algorithm
    • First observedupdate_playlist
    • First observedupdate_schedule
    • First observedupdate_station
    • First observedupdate_station_user_role
    • First observedupdate_track

TDQS

B3.1/5.0

Scored across 40 tools

Disambiguation4/5

The tools are largely distinct, with clear resource+action separation across playlists, tracks, schedules, users, automation, and live info. A few pairs like get_track_stats/get_track_stats_period and get_all_track_tags/get_track_tags_for_ids could momentarily confuse, but descriptions disambiguate.

Naming Consistency4/5

All names use snake_case with a verb_noun structure, which is highly predictable. Minor inconsistencies exist in verb choice: creation uses both add_ (add_playlist) and create_ (create_automation_algorithm), and deletion uses both remove_ (remove_station_user) and delete_ (delete_playlist).

Tool Count2/5

With 40 tools, the surface is well beyond the recommended 3-15 range and likely increases cognitive load and misselection risk. Although the domain is broad, this count feels excessive for an MCP server.

Completeness4/5

The surface covers CRUD for playlists, tracks, automation, users, and schedules, plus live info and stats. Missing track creation/upload and station creation/deletion are notable gaps for full lifecycle coverage, though they may be outside the API scope.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    An 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.
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that wraps the Radio Browser API to search radio stations, list countries, and discover genres. Enables AI agents to find and browse radio stations without authentication.
    2 npm
    MIT