lautfm-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@lautfm-mcplist all my stations"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 install2. Build
npm run build3. 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 |
| ✅ 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 |
| Check the laut.fm Radioadmin API server status |
Station
Tool | Description |
| List all stations accessible with the current token |
| Get detailed information about a specific station |
| Update station information (description, format, djs, location, website, social links, genres) |
| Check if a station is active and playing on a streaming server |
| Activate a station — triggers a playlist export and starts streaming |
| Get the currently playing playlist and its tracks |
| Get listener statistics (current listeners, position, switchons log, TLH log) |
Users
Tool | Description |
| List all users of a station |
| Add a user with a given role to a station (sends an invitation) |
| Change the role of a user on a station |
| Remove a user from a station |
Playlists
Tool | Description |
| List all playlists for a station |
| Add a new playlist to a station |
| Get information for a single playlist including its entries |
| Modify an existing playlist |
| Delete a playlist (the rotation playlist cannot be deleted) |
| Append a single track to a playlist |
| Get all tracks for a playlist |
| Delete all occurrences of a track from a playlist |
Schedule
Tool | Description |
| Get the schedule for a station |
| Modify the schedule for a station |
Tracks
Tool | Description |
| Search tracks using various filters (deprecated endpoint) |
| Get track information for one or more track IDs |
| Update metadata for a track |
| Delete an own track from a station |
| Get current day track statistics |
| Get track statistics for a specific period ( |
| Get tags for one or more specific tracks |
| Add tags to one or more tracks |
| Remove tags from one or more tracks |
| Get all tags used across all tracks for a station |
| Get tracks with incomplete uploads |
| Get tracks queued for processing |
Live
Tool | Description |
| Get live streaming connection information (server, port, mountpoint, bitrate, etc.) |
| Get the live streaming password for a station |
Automation Algorithms
Tool | Description |
| View the definition of a specific automation algorithm |
| Create a new automation algorithm for shuffling tracks |
| Update the function used by an existing 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 uploadPUT /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.jsProject 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 toolsAvailable Tools
40 toolsactivate_stationA
Activate a station — triggers a playlist export and starts the station on a streaming server if assigned and not running
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| color | Yes | Color in full hex format, e.g. #ff0000 | |
| title | Yes | Playlist title | |
| shuffled | No | Whether the playlist is shuffled | |
| station_id | Yes | The station ID | |
| description | No | Playlist description | |
| shuffle_opts | No | Shuffle options object |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | User role: owner, editor, or dj | |
| Yes | Email address of the user to invite | ||
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | Array of tag strings to add | |
| track_ids | Yes | Array of track IDs | |
| station_id | Yes | The station ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes | The track ID to add | |
| station_id | Yes | The station ID | |
| playlist_id | Yes | The playlist ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | JavaScript function body, e.g. (function(tracks){return tracks.reverse()}) | |
| name | Yes | The automation algorithm name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The automation algorithm name |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID | |
| playlist_id | Yes | The playlist ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes | The track ID to delete | |
| station_id | Yes | The station ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes | The track ID to remove | |
| station_id | Yes | The station ID | |
| playlist_id | Yes | The playlist ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The automation algorithm name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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.)
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID | |
| playlist_id | Yes | The playlist ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID | |
| playlist_id | Yes | The playlist ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| track_ids | Yes | Array of track IDs to retrieve | |
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| period | Yes | Period: '24h' or a date in yyyy-mm-dd format | |
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| track_ids | Yes | Array of track IDs | |
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| user_id | Yes | The user ID | |
| station_id | Yes | The station ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| tags | Yes | Array of tag strings to remove | |
| track_ids | Yes | Array of track IDs | |
| station_id | Yes | The station ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| own | No | Filter to own tracks only | |
| type | No | Track type | |
| album | No | Album filter | |
| genre | No | Genre filter | |
| order | No | Sort order | |
| title | No | Title filter | |
| artist | No | Artist name filter | |
| private | No | Filter to private tracks | |
| duration | No | Exact duration in seconds | |
| playlist | No | Playlist filter | |
| created_at | No | Created at date filter | |
| station_id | Yes | The station ID | |
| max_duration | No | Maximum duration in seconds | |
| min_duration | No | Minimum duration in seconds | |
| release_year | No | Exact release year | |
| max_created_at | No | Maximum created at date | |
| min_created_at | No | Minimum created at date | |
| max_release_year | No | Maximum release year | |
| min_release_year | No | Minimum release year |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | JavaScript function body, e.g. (function(tracks){return tracks.reverse()}) | |
| name | Yes | The automation algorithm name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| color | No | Color in full hex format | |
| title | No | Playlist title | |
| shuffled | No | Whether the playlist is shuffled | |
| station_id | Yes | The station ID | |
| description | No | Playlist description | |
| playlist_id | Yes | The playlist ID | |
| shuffle_opts | No | Shuffle options object |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| entries | No | Array of schedule entries | |
| station_id | Yes | The station ID | |
| base_playlist_id | No | ID of the base (fallback) playlist |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| djs | No | DJs string | |
| format | No | Station format | |
| genres | No | Up to 3 genres | |
| website | No | Station website URL | |
| location | No | Station location | |
| station_id | Yes | The station ID | |
| description | No | Station description | |
| twitter_name | No | Twitter handle | |
| facebook_page | No | Facebook page | |
| instagram_name | No | Instagram handle |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | User role: owner, editor, or dj | |
| user_id | Yes | The user ID | |
| station_id | Yes | The station ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Track type | |
| album | No | Album name | |
| genre | No | Genre | |
| title | No | Track title | |
| artist | No | Artist name | |
| track_id | Yes | The track ID | |
| station_id | Yes | The station ID | |
| release_day | No | Release day | |
| release_year | No | Release year | |
| release_month | No | Release month |
TDQS
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.
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.
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.
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.
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.
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.
40 tool updates
v1.0.0- First observed
activate_station - First observed
add_playlist - First observed
add_station_user - First observed
add_track_tags - First observed
add_track_to_playlist - First observed
create_automation_algorithm - First observed
delete_automation_algorithm - First observed
delete_playlist - First observed
delete_track - First observed
delete_track_from_playlist - First observed
get_all_track_tags - First observed
get_automation_algorithm - First observed
get_current_playlist - First observed
get_incomplete_tracks - First observed
get_listener_stats - First observed
get_live_connection_info - First observed
get_live_password - First observed
get_playlist - First observed
get_playlist_tracks - First observed
get_playlists - First observed
get_queued_tracks - First observed
get_schedule - First observed
get_server_status - First observed
get_station - First observed
get_station_state - First observed
get_station_users - First observed
get_track_stats - First observed
get_track_stats_period - First observed
get_track_tags_for_ids - First observed
get_tracks_by_ids - First observed
list_stations - First observed
remove_station_user - First observed
remove_track_tags - First observed
search_tracks - First observed
update_automation_algorithm - First observed
update_playlist - First observed
update_schedule - First observed
update_station - First observed
update_station_user_role - First observed
update_track
TDQS
Scored across 40 tools
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.
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).
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.
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
Related MCP Connectors
The official MCP Server for the Mux API
MCP server exposing the AceDataCloud Fish Audio API (text-to-speech with voice conditioning)
MCP server for Producer/Riffusion AI music generation
MCP server for the Seline Analytics API
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server for the Last.fm API that enables LLM agents to access music data including user profiles, listening history, top charts, search, and artist/album/track metadata.16MIT
- AlicenseBqualityDmaintenanceMCP server for the adm.tools / ukraine.com.ua hosting API, providing tools to manage hosting services, accounts, sites, and web apps.51MIT
- FlicenseAqualityCmaintenanceMCP server for KaboomKartell radio, enabling AI assistants to query live tracks, vote for songs, and access radio stats and schedule.15-
- AlicenseNot gradedqualityCmaintenanceMCP 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 npmMIT