Skip to main content
Glama

Rekordbox MCP Server

A comprehensive Model Context Protocol (MCP) server for rekordbox database management with real-time database access.

Built using pyrekordbox - This project is not affiliated with the pyrekordbox project or its maintainers.

Features

đŸ—„ī¸ Database Access

  • Direct SQLite Database Connection: Access the encrypted rekordbox database directly using pyrekordbox

  • Real-time Queries: Search and filter tracks with comprehensive criteria

  • Safe Mutation Operations: Playlist management with automatic backups and safety annotations

🔍 Search & Discovery

  • Advanced Search: Multi-field search across artist, title, genre, key, BPM, and more

  • Musical Key Filtering: Find tracks in compatible keys for harmonic mixing

  • BPM Range Queries: Search by tempo ranges for beatmatching

  • Rating and Play Count Filters: Discover your most loved and most played tracks

📊 Analytics & Insights

  • Library Statistics: Comprehensive stats including genre distribution, average BPM, total playtime

  • Play Count Analytics: Track listening patterns and habits

  • Collection Insights: Understand your music library composition

  • DJ History Access: Full access to your DJ session history and performance data

âš™ī¸ Database Operations

  • Playlist Management: Create, modify, and delete playlists with safety protections

  • Batch Operations: Add multiple tracks to playlists efficiently

  • History Analysis: Access complete DJ session history and performance data

  • Library Statistics: Comprehensive analytics and insights

Related MCP server: Tempo

Architecture

  • FastMCP Framework: Modern Python MCP server using FastMCP 2.0

  • pyrekordbox Integration: Mature library for encrypted database access

  • Real-time Database Queries: Direct SQLite operations with SQLCipher support

  • Production Ready: Built-in logging, error handling, and safety features

âš ī¸ Important Safety Notice

BACKUP YOUR REKORDBOX LIBRARY BEFORE USE

This software directly accesses your rekordbox database. Always create a backup of your entire rekordbox library before using this tool as a precautionary measure.

Backup Requirements

You should create a complete backup of your rekordbox library before using this software. Consult rekordbox documentation or support resources for proper backup procedures for your specific setup and rekordbox version.

Risk Acknowledgment

  • âš ī¸ This project accesses your rekordbox database directly

  • âš ī¸ Use at your own risk - no warranty provided

  • âš ī¸ Test thoroughly with backups before using on your main library

  • âš ī¸ The developers are not responsible for any data loss or damage

If you are not comfortable with these risks, use the read-only XML export functionality instead.

Quick Start

Prerequisites

  • Python 3.12+

  • rekordbox 6 or 7 installed with an existing library

  • COMPLETE BACKUP of your rekordbox library (see safety notice above)

  • Read-only tools (search, stats, history) work while rekordbox is open

  • Write tools (create playlist, add tracks, cleanup) require rekordbox to be closed — pyrekordbox blocks commits when rekordbox is running

  • Access to your rekordbox database (automatic detection supported)

Installation

# Install dependencies with uv
uv sync

# Run the server
uv run rekordbox-mcp

Configuration

The server supports both automatic database detection and manual configuration:

# Auto-detect rekordbox database (recommended)
uv run rekordbox-mcp

# Specify custom database path
uv run rekordbox-mcp --database-path /path/to/rekordbox/Pioneer

MCP Client Setup

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "rekordbox-database": {
      "command": "uv",
      "args": ["run", "rekordbox-mcp"],
      "cwd": "/path/to/rekordbox-mcp"
    }
  }
}

Available Tools (31 tools + 1 resource)

Search & Discovery

  • search_tracks - Advanced multi-field track search with filtering (genre, key, BPM, artist, title, rating, etc.)

  • get_track_details - Get full metadata for a specific track by ID

  • get_tracks_by_key - Find tracks in a specific musical key (e.g., "5A", "12B")

  • get_tracks_by_bpm_range - Find tracks within a BPM range

  • get_genre_filepaths - Get filepaths for tracks matching a genre (token-efficient, returns only paths)

  • get_most_played_tracks - Get tracks ranked by play count

  • get_top_rated_tracks - Get tracks ranked by rating

  • get_unplayed_tracks - Get tracks with zero play count

  • get_track_file_path - Get the file system path for a specific track

  • search_tracks_by_filename - Search tracks by partial filename match

Library Analytics

  • get_library_stats - Comprehensive library statistics (track count, playtime, BPM, genres)

  • analyze_library - Custom grouping and aggregation (by genre, key, year, artist, or rating)

  • validate_track_ids - Verify a list of track IDs and report which are valid/invalid

Playlist Operations

  • get_playlists - List all playlists including smart playlists

  • get_playlist_tracks - Get all tracks in a specific playlist

  • create_playlist - Create new playlist or folder âš ī¸ (Mutation)

  • add_track_to_playlist - Add single track to playlist âš ī¸ (Mutation)

  • add_tracks_to_playlist - Add multiple tracks to playlist in one operation âš ī¸ (Mutation)

  • remove_track_from_playlist - Remove track from playlist âš ī¸ (Mutation)

  • delete_playlist - Delete playlist permanently âš ī¸ (Destructive)

DJ History & Analytics

  • get_history_sessions - Get all DJ history sessions with metadata

  • get_session_tracks - Get all tracks played in a specific session

  • get_recent_sessions - Get sessions within a specified number of days

  • search_history_sessions - Search sessions by name, year, month, or minimum track count

  • get_history_stats - Comprehensive DJ performance statistics and insights

Track Import

  • import_track - Import a single audio file into the library; reads ID3 tags via mutagen by default, accepts metadata overrides âš ī¸ (Mutation)

  • import_tracks - Batch-import files and/or directories (recursive, extension filter); returns track IDs for follow-up playlist actions âš ī¸ (Mutation)

â„šī¸ Imported tracks are unanalyzed — waveforms, beatgrids, and hot cues are generated by rekordbox itself. After import, open rekordbox and run Analyze Tracks on the new imports. Supported formats: mp3, m4a, flac, wav, aiff.

Library Cleanup

  • find_broken_tracks - Scan for missing files, Apple Music streams, empty paths, and orphaned playlist refs

  • cleanup_orphaned_playlist_entries - Remove stale playlist entries referencing deleted tracks âš ī¸ (Mutation)

  • remove_broken_tracks - Soft-delete tracks by ID and remove from all playlists âš ī¸ (Destructive)

Database Management

  • connect_database - Explicitly connect with optional custom database path

Resources

  • database-status - Current connection status and basic stats

âš ī¸ Mutation operations modify your rekordbox database and create automatic backups
âš ī¸ Destructive operations permanently delete data and require extra confirmation

Examples

Search for tracks by key and BPM

# Find tracks in 5A key with BPM between 120-130
search_tracks(key="5A", bpm_min=120, bpm_max=130, limit=20)

Access DJ History

# Get recent DJ sessions
get_recent_sessions(days=30)

# Get tracks from a specific session
get_session_tracks(session_id="12345")

Get library insights

# Comprehensive library statistics
get_library_stats()

# DJ performance statistics
get_history_stats()

Playlist Management

# Create a new playlist
create_playlist(name="Hidden Bangers", parent_id="root")

# Add single track to playlist
add_track_to_playlist(playlist_id="136766232", track_id="218048716")

# Add multiple tracks efficiently (recommended for batch operations)
add_tracks_to_playlist(
    playlist_id="136766232", 
    track_ids=["218048716", "253968855", "148359536", "76341043"]
)

# Remove track from playlist
remove_track_from_playlist(playlist_id="136766232", track_id="218048716")

# Delete playlist (with safety confirmation)
delete_playlist(playlist_id="136766232")

Importing New Tracks

# Import a single file — auto-reads ID3 tags, allows overrides
import_track(
    path="/Users/me/Downloads/new_banger.mp3",
    rating=5,
    genre="Deep House",
)

# Batch-import a directory (recursive by default) and stage for analysis
result = import_tracks(
    paths=["/Users/me/Auditioned/March"],
    recursive=True,
    auto_tag=True,
)

# Park imports in a playlist so they're easy to find in rekordbox
create_playlist(name="Unanalyzed Imports")
add_tracks_to_playlist(
    playlist_id="<id from above>",
    track_ids=[t["track_id"] for t in result["imported"]],
)
# Then open rekordbox and run Analyze Tracks on that playlist.

Safety Features

  • Automatic Backups: All mutation operations create automatic database backups before changes

  • FastMCP Safety Annotations: Proper safety hints for mutation and destructive operations

  • Smart Playlist Protection: Prevents deletion of intelligent playlists

  • Connection Validation: Validates database connections and access

  • Error Handling: Comprehensive error handling with detailed logging and rollback

  • Input Validation: Input validation for all database operations

  • Batch Operation Safety: Detailed reporting on success/failure of batch operations

âš ī¸ Important: These safety features are supplementary protections. Always maintain your own backups and use this software at your own risk.

Development

Project Structure

rekordbox_mcp/
   __init__.py          # Package initialization
   server.py            # FastMCP server and tool definitions
   database.py          # Database connection and operations
   models.py            # Pydantic data models

Running Tests

uv run pytest

Code Quality

# Format code
uv run black rekordbox_mcp/

# Lint code
uv run ruff rekordbox_mcp/

# Type checking
uv run mypy rekordbox_mcp/

License

MIT License

Disclaimer

âš ī¸ USE AT YOUR OWN RISK âš ī¸

  • This project is not affiliated with AlphaTheta (Pioneer DJ) or the pyrekordbox project

  • This software directly accesses your rekordbox database

  • No warranty or guarantee is provided

  • The developers are not responsible for any damage to your rekordbox library

  • You assume all risk when using this software

ALWAYS backup your rekordbox library before use. Test thoroughly with backup copies before using on your main library.

By using this software, you acknowledge that you understand these risks and agree to use it at your own responsibility.

Available Tools

31 tools
add_tracks_to_playlistA
Idempotent

Add multiple tracks to an existing playlist in one operation.

âš ī¸ CAUTION: This modifies your rekordbox database!

Args: playlist_id: ID of the playlist to modify track_ids: List of track IDs to add

Returns: Detailed results of the batch operation

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idsYes
playlist_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint=false, idempotentHint=true), the description adds a strong caution 'This modifies your rekordbox database!' and notes it returns 'Detailed results.' This provides extra context about the mutation and outcome, going beyond the structured hints.

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

Conciseness5/5

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

The description is compact and well-structured: a clear purpose sentence, a warning, a concise Args list, and a Returns statement. Every element earns its place without redundancy.

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

Completeness4/5

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

Given the tool's moderate complexity, the description covers purpose, parameters, return results, and a safety caution. With annotations and an output schema present, it is sufficiently complete for typical use, though it omits edge-case behaviors like duplicate handling or error cases.

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

Parameters4/5

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

Schema has 0% description coverage, but the description defines both parameters: playlist_id as 'ID of the playlist to modify' and track_ids as 'List of track IDs to add.' This meaningfully explains each parameter's role, compensating for the schema's lack of detail.

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

Purpose5/5

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

The description clearly states 'Add multiple tracks to an existing playlist in one operation,' specifying the verb, resource, and batch scope. This distinguishes it from the sibling 'add_track_to_playlist' by emphasizing multiplicity and single-operation behavior.

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

Usage Guidelines3/5

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

The phrase 'in one operation' implies batch use, and 'existing playlist' sets context, but no alternate tool is mentioned or explicit when-to-use vs. when-not-to-use guidance is provided. Usage is implied rather than clearly specified.

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
Idempotent

Add a track to an existing playlist.

âš ī¸ CAUTION: This modifies your rekordbox database!

Args: playlist_id: ID of the playlist to modify track_id: ID of the track to add

Returns: Result of the operation

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idYes
playlist_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

The description adds a CAUTION about modifying the rekordbox database, which is consistent with the readOnlyHint=false annotation. However, this warning is largely redundant with the annotation, and it does not disclose other behaviors like idempotency implications or error conditions. No contradiction with annotations.

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

Conciseness4/5

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

The description is concise and well-structured with a bold warning, clear arg listing, and a returns section. It is front-loaded with the main purpose. The 'Returns: Result of the operation' line is vague but short, and the overall verbosity is appropriate.

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

Completeness3/5

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

The tool is simple, and the description covers the core action and parameters. However, it misses important context such as how this differs from the sibling add_tracks_to_playlist, and it does not mention the idempotency behavior despite the annotation. The output schema exists, so return details are not heavily required, but the lack of usage differentiation reduces completeness.

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

Parameters3/5

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

The schema has 0% description coverage, but the description provides one-line definitions for both parameters ('playlist to modify' and 'track to add'). This adds basic meaning beyond the raw schema, though it lacks any additional constraints or context (e.g., required existence, position).

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

Purpose4/5

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

The description states 'Add a track to an existing playlist' with a clear verb and resource. It is distinct from sibling tools by using singular 'track', but it does not explicitly contrast with the plural 'add_tracks_to_playlist' sibling, so it lacks direct differentiation.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like add_tracks_to_playlist. The description only explains what it does, with no mention of conditions, exclusions, or alternative scenarios.

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

analyze_libraryB

Analyze library with grouping and aggregation.

Args: group_by: Field to group by (genre, key, year, artist, rating) aggregate_by: Aggregation method (count, playCount, totalTime) top_n: Number of top results to return

Returns: Analysis results

ParametersJSON Schema
NameRequiredDescriptionDefault
top_nNo
group_byNogenre
aggregate_byNocount

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Returns: Analysis results' without detailing the output structure, side effects, read-only status, or performance implications. The listed allowed values for parameters are more about parameter semantics than behavioral traits.

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

Conciseness4/5

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

The description is concise, front-loaded with the main purpose, and clearly structured with Args and Returns sections. It contains no fluff, though 'Returns: Analysis results' is somewhat vague and could be more specific without sacrificing brevity.

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

Completeness3/5

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

The description covers the core purpose and parameters, and an output schema exists so return values are covered. However, it lacks usage context (when to pick this vs. other library tools) and behavioral details, making it only minimally complete for an agent to confidently select and invoke it.

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

Parameters4/5

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

Since the input schema has 0% description coverage, the description compensates by explaining each parameter's purpose and enumerating allowed values for group_by (genre, key, year, artist, rating) and aggregate_by (count, playCount, totalTime), plus clarifying top_n as a limit. This adds meaningful semantics beyond the bare schema.

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

Purpose4/5

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

The description clearly states the tool performs group-by and aggregation analysis on the library, using the verb 'analyze' and naming the resource. It is distinguishable from sibling getter tools by implying a computation/aggregation rather than simple retrieval, though it does not explicitly name alternatives.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as get_library_stats, get_most_played_tracks, or other analysis tools. The description lacks any conditional use cases or exclusions, leaving the agent to infer from sibling names.

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

cleanup_orphaned_playlist_entriesA
Idempotent

Remove orphaned playlist entries that reference deleted tracks.

These orphaned entries cause blank '[1] The file doesn't exist' errors when exporting to USB. This tool removes the stale PlaylistSong rows while preserving all active tracks and playlists.

âš ī¸ CAUTION: This modifies your rekordbox database! A backup is created automatically.

Returns: Count and details of removed orphaned entries

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond the annotations: it explicitly warns 'CAUTION: This modifies your rekordbox database!' and notes that 'A backup is created automatically.' It also clarifies what is preserved ('all active tracks and playlists'), which aligns with the destructiveHint=false annotation. No contradiction with annotations is present.

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

Conciseness5/5

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

The description is concise and well-structured: a clear first-sentence summary, followed by the cause/effect explanation, a prominent caution, and a return-value section. Every sentence adds necessary information without redundancy.

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

Completeness5/5

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

For a zero-parameter maintenance tool, the description is complete: it explains the purpose, the problem it solves (USB export errors), the safety behavior (backup, preservation), and the return value (count and details). The presence of an output schema reduces the need to describe return structure in detail, but the description still includes it.

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

Parameters4/5

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

The tool takes no parameters, and the input schema is empty. According to the rubric, a zero-parameter tool gets a baseline score of 4. The description does not need to explain parameters because there are none.

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

Purpose5/5

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

The description opens with 'Remove orphaned playlist entries that reference deleted tracks,' which clearly states the action (remove), resource (playlist entries), and specific condition (orphaned, referencing deleted tracks). This distinguishes it from sibling tools like find_broken_tracks and remove_broken_tracks, which operate on tracks themselves, not playlist entries.

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

Usage Guidelines4/5

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

The description provides clear context: these orphaned entries cause blank '[1] The file doesn't exist' errors when exporting to USB, indicating when to use this tool. It does not explicitly mention alternatives or exclusion conditions, but the context strongly implies the appropriate use case.

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

connect_databaseA

Connect to the rekordbox database.

Args: database_path: Optional path to database directory. If not provided, auto-detection is used.

Returns: Connection status message

ParametersJSON Schema
NameRequiredDescriptionDefault
database_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does not mention whether the connection is read-only, if it has side effects (e.g., creating session state), or what happens on failure. The auto-detection behavior is disclosed, but other behavioral traits are missing.

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

Conciseness4/5

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

The description is concise and front-loaded with the primary action. The Args and Returns sections are standard and informative, though the first sentence and the Args section slightly overlap. There is no wasted text.

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

Completeness2/5

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

While the tool is simple, the description omits critical context such as whether the connection is persistent, whether it must be called once per session, and what constitutes a successful or failed connection. Given the lack of annotations and output schema details, more behavioral context is needed.

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

Parameters5/5

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

The description fully explains the only parameter, 'database_path', stating it is optional and that auto-detection is used if not provided. This adds meaningful context beyond the input schema, which only lists the parameter name and default.

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

Purpose5/5

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

The description clearly states the tool's action ('Connect to the rekordbox database') with a specific verb and resource. It distinguishes itself from sibling tools that focus on track management, playlists, or analysis rather than establishing a database connection.

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

Usage Guidelines3/5

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

The description implies this is the setup step for other tools, but it does not explicitly state when to use it versus alternatives or when to specify a path versus rely on auto-detection. Some guidance on prerequisites or when auto-detection might be insufficient would improve clarity.

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

create_playlistA

Create a new playlist or folder in rekordbox.

âš ī¸ CAUTION: This modifies your rekordbox database!

Args: name: Name for the new playlist or folder parent_id: Optional parent folder ID (omit for root level) is_folder: If True, create as a folder that can contain other playlists

Returns: Information about the created playlist or folder

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
is_folderNo
parent_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description adds a caution about modifying the rekordbox database, which goes beyond the annotations. It also mentions the return information. It does not contradict annotations.

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

Conciseness5/5

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

The description is concise and well-structured with a clear warning, parameter list, and return statement. Every sentence adds value.

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

Completeness4/5

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

For a create tool with three parameters and an output schema, the description covers purpose, parameters, and return. It doesn't mention edge cases or prerequisites, but it's sufficiently complete for selection and invocation.

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

Parameters5/5

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

The Args section explains each parameter (name, parent_id, is_folder) with semantics not present in the input schema, which has no descriptions. Since schema coverage is 0%, the description fully compensates.

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

Purpose5/5

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

The description states a specific action ('Create a new playlist or folder in rekordbox'), clearly distinguishing it from sibling tools like delete_playlist or add_tracks_to_playlist. The verb and resource are explicit.

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

Usage Guidelines4/5

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

It provides clear context for when this tool is appropriate (creating a playlist or folder) but doesn't explicitly exclude or reference alternatives like add_tracks_to_playlist. No prerequisites are required, making the usage context clear.

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

delete_playlistA
DestructiveIdempotent

Delete a playlist from rekordbox.

âš ī¸ DANGER: This permanently deletes a playlist and cannot be undone!

Args: playlist_id: ID of the playlist to delete

Returns: Result of the operation

ParametersJSON Schema
NameRequiredDescriptionDefault
playlist_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already include destructiveHint=true and readOnlyHint=false, and the description adds a prominent 'âš ī¸ DANGER: This permanently deletes a playlist and cannot be undone!' This goes beyond the annotation to emphasize irreversibility and permanence. It also briefly notes the return value as 'Result of the operation,' providing context about the outcome. There is no contradiction with annotations.

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

Conciseness5/5

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

The description is compact and well-structured: a single purpose statement, a high-visibility warning, then clearly labeled Args and Returns sections. Every sentence earns its place, with no redundant text or fluff. The warning is appropriately emphasized using âš ī¸, making key safety information immediately visible.

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

Completeness5/5

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

Given the tool's simplicity (one required parameter, no nested objects, and an output schema that describes the return), the description is complete: it states the action, the target, the irreversible nature, the parameter, and the return type. It does not need to elaborate further. The sibling context is accommodated because the purpose is distinct enough.

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

Parameters5/5

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

The input schema provides only a title 'Playlist Id' with 0% description coverage. The description includes an Args section: 'playlist_id: ID of the playlist to delete,' which fully explains the parameter's meaning and role. This compensates completely for the schema's lack of description, making it clear what value should be supplied.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Delete a playlist from rekordbox.' This unambiguously states the tool's function and clearly distinguishes it from siblings like remove_track_from_playlist or create_playlist. The phrase 'from rekordbox' adds context that this is a domain-specific operation.

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

Usage Guidelines3/5

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

The description clearly implies the tool is for deleting entire playlists, but it does not explicitly mention when to use it versus alternatives (e.g., remove_track_from_playlist for individual tracks). There is no exclusion clause or alternative recommendation. The danger warning implies caution, but the 'when to use' guidance is only implicit.

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

find_broken_tracksA

Scan the library for broken tracks and orphaned playlist references.

Detects:

  • Tracks with empty file paths

  • Apple Music streaming references (can't export to USB/CDJ)

  • Tracks pointing to files that no longer exist on disk

  • Orphaned playlist entries referencing deleted tracks (causes blank USB export errors)

Returns: Report with broken tracks grouped by category and a summary with counts

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool scans and returns a report, without mentioning side effects. It explains the types of broken tracks it detects. It could explicitly state it makes no changes, but the read-only nature is strongly implied.

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

Conciseness5/5

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

The description is well-organized: a one-sentence purpose, a bulleted list of detection categories, and a returns section. Every sentence adds value, and the structure makes it easy to parse.

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

Completeness5/5

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

The tool is simple (no params), and the description fully covers its inputs, behaviors, and return format. The output schema is mentioned, and the description complements it by describing the report's structure. This is complete for a diagnostic tool.

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

Parameters4/5

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

The tool has zero parameters, and the input schema is empty, so the baseline is 4. The description thoroughly explains what the tool does without needing parameter details.

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

Purpose5/5

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

The description uses a specific verb ('Scan') and resource ('the library') and lists concrete detection categories. It clearly distinguishes from siblings like cleanup_orphaned_playlist_entries and remove_broken_tracks by focusing on detection and reporting rather than modification.

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

Usage Guidelines4/5

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

The description provides clear context on what the tool detects and returns, implying it is for diagnostics rather than cleanup. However, it does not explicitly name alternative tools or state when not to use it, so it stops short of explicit guidance.

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

get_genre_filepathsA

Get filepaths for all tracks matching a genre.

This tool is optimized for token efficiency - returns only filepaths. Useful for creating export scripts for selective library exports.

Args: genre: Genre term to search for (case-insensitive substring match)

Returns: List of absolute filepaths for matching tracks

ParametersJSON Schema
NameRequiredDescriptionDefault
genreYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses key behaviors: token-optimized return of only filepaths, case-insensitive substring matching, and absolute path output. This goes beyond schema and gives the agent actionable expectations, though it omits potential error conditions.

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

Conciseness5/5

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

The description is compact, with a clear summary line, a brief context sentence, and structured Args/Returns sections. Every sentence serves a purpose; no redundancy or filler.

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

Completeness5/5

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

Given the tool's low complexity (one parameter) and the presence of an output schema, the description is fully complete. It covers purpose, usage, parameter semantics, return format, and behavioral quirks, leaving no significant gaps for an agent to select and invoke it correctly.

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

Parameters4/5

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

Schema coverage is 0%, but the description fully compensates for the single parameter. It explains the 'genre' parameter as a case-insensitive substring match, adding meaning beyond the schema's bare 'Genre' title.

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

Purpose5/5

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

The opening line 'Get filepaths for all tracks matching a genre' clearly states the tool's function with a specific verb, resource, and scope. It distinguishes itself from siblings like get_track_details and search_tracks by emphasizing it returns only filepaths for token efficiency.

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

Usage Guidelines4/5

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

The description gives a concrete use case: 'Useful for creating export scripts for selective library exports.' This implies when to choose this tool over alternatives that return richer data, though it does not explicitly name alternatives or state 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_history_sessionsA

Get DJ history sessions from rekordbox.

Args: include_folders: Whether to include folder entries (years/months) limit: Maximum number of sessions to return

Returns: List of history sessions with metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
include_foldersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It explains the semantic effects of include_folders and limit, adding some context. However, it does not disclose default ordering, how the limit interacts with folders, or other edge-case behaviors, so transparency is partial.

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

Conciseness5/5

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

The description is concise and well-structured, with a clear purpose line, an args section, and a returns line. Every sentence earns its place with no unnecessary words.

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

Completeness4/5

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

For a simple read-only query tool with an output schema, the description covers essential aspects: what it does, its parameters, and what it returns. It lacks usage exclusions and some behavioral details, but it is generally sufficient for an agent to invoke correctly.

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

Parameters5/5

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

The input schema has no field descriptions, so the tool description is the only source for parameter meaning. It clearly explains both include_folders and limit, fully compensating for the 0% schema coverage.

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

Purpose5/5

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

The description clearly states 'Get DJ history sessions from rekordbox' with a specific verb and resource. It distinguishes itself from sibling tools by focusing on history sessions, though it could further differentiate from get_recent_sessions or search_history_sessions.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives like get_recent_sessions or search_history_sessions. It simply states what it does, 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_history_statsB

Get comprehensive statistics about DJ history sessions.

Returns: Statistics about all history sessions including totals and trends

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool returns statistics including 'totals and trends' for 'all history sessions', but it does not disclose whether the operation is read-only, any data aggregation details, or potential caveats. The behavioral transparency is minimal.

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

Conciseness5/5

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

The description is extremely concise, consisting of two short sentences. The second sentence ('Returns: Statistics about all history sessions including totals and trends') adds a bit of detail but is nearly redundant with the first. Still, it wastes no words and is well-structured.

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

Completeness3/5

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

Given that this is a no-parameter statistics tool and an output schema exists to describe the return structure, the description is minimally adequate. However, the meaning of 'totals and trends' is vague, and the lack of usage guidance or behavioral details leaves gaps. A more complete description would mention typical use cases or how this differs from 'get_library_stats'.

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

Parameters4/5

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

The tool has zero parameters and the schema coverage is 100%, so the baseline is 4. The description adds semantic value by indicating the statistics include 'totals and trends', which gives the agent a sense of what the output covers, even though there are no parameters to document.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get comprehensive statistics about DJ history sessions' with a specific resource (DJ history sessions) and action (get statistics). It differentiates from siblings like 'get_history_sessions' (listing sessions) and 'get_library_stats' (library-wide stats), though not explicitly naming these alternatives.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as 'get_library_stats' or 'search_history_sessions'. The description does not mention use cases, prerequisites, or exclusions, leaving the agent without context for tool selection.

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

get_library_statsC

Get comprehensive library statistics.

Returns: Dictionary containing various library statistics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavior disclosure. It only mentions that the tool returns a dictionary, which is redundant with the output schema, and gives no insight into side effects, permissions, or the nature of the statistics.

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

Conciseness4/5

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

The description is short and front-loaded, but the second sentence about returning a dictionary is partially redundant given the output schema. The use of 'comprehensive' and 'various' adds fluff without precision, but overall it stays concise.

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

Completeness3/5

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

Given the tool has no parameters and an output schema exists, the description does not need to explain return values in detail. However, it fails to specify what 'library statistics' entails or how this tool differs from sibling tools like analyze_library, leaving an ambiguous scope for a simple but potentially overlapping tool.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The schema is empty and the description does not need to explain parameter semantics; the lack of parameters makes this dimension non-applicable and the baseline applies.

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

Purpose3/5

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

The description states the tool 'gets' 'library statistics', which is a specific verb and resource, but 'comprehensive' and 'various' are vague qualifiers that do not clarify what statistics are included. It does not differentiate from sibling tools like analyze_library, which could overlap in purpose.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives. The description does not mention any distinguishing use cases, prerequisites, or situations where this tool is preferred over siblings like analyze_library or get_history_stats.

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

get_most_played_tracksA

Get the most played tracks in the library.

Args: limit: Maximum number of tracks to return

Returns: List of most played tracks

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. However, it only restates the tool's purpose and the limit parameter, without adding context such as how 'most played' is defined, ordering of results, or whether unplayed tracks are excluded. This is minimal additional value beyond the name.

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

Conciseness5/5

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

The description is brief and front-loaded with the purpose, followed by a clear Args section and Returns section. Every sentence provides necessary information, and there is no redundant or filler content.

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

Completeness4/5

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

Given the tool's simplicity (one optional parameter, no annotations, and presence of an output schema), the description adequately covers the core function and parameter semantics. It lacks explicit usage guidance and behavioral details, but those are less critical for a straightforward read-only list operation, and the output schema likely documents return values.

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

Parameters4/5

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

The input schema has one parameter 'limit' with zero description coverage, but the description adds crucial semantics: 'Maximum number of tracks to return.' This clarifies the parameter's role and compensates for the schema's lack of explanation.

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

Purpose5/5

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

The description uses a specific verb+resource structure ('Get the most played tracks in the library') and clearly distinguishes itself from sibling tools like get_top_rated_tracks or get_unplayed_tracks by focusing on play counts. The scope 'in the library' adds further clarity.

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

Usage Guidelines3/5

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

The description implies the tool should be used when the most played tracks are needed, but it does not explicitly mention when to use it over alternatives or provide any exclusions. Sibling tools with similar purposes (e.g., get_top_rated_tracks) are not referenced or differentiated.

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

get_playlistsA

Get all playlists from the rekordbox database.

Returns: List of playlists with metadata

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the burden of behavioral disclosure. It states the tool returns a list of playlists with metadata, but does not explicitly confirm it is read-only or mention prerequisites like an active database connection. The verb 'get' implies a read operation, and the simplicity of the tool reduces the need for extensive caveats.

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

Conciseness5/5

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

The description is two sentences and immediately communicates the core action and result. Every word contributes to understanding, with no redundant filler.

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

Completeness4/5

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

For a parameterless tool with an output schema, the description is sufficient: it specifies the scope (all playlists) and the returned data (list with metadata). It could mention ordering or inclusion criteria, but these are not essential for typical use. The absence of annotations is partially mitigated by the clear read-only nature implied by 'Get'.

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

Parameters4/5

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

There are no parameters, and the schema coverage is 100%, so the description has no obligation to explain parameters. The reference to 'rekordbox database' adds context about the data source, which partially compensates for the lack of parameter semantics.

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

Purpose5/5

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

The description uses a specific verb ('Get') and clearly identifies the resource ('all playlists from the rekordbox database'), distinguishing it from sibling tools like get_playlist_tracks. The return type is also specified.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool vs alternatives such as get_playlist_tracks. However, the name and scope ('all playlists') implicitly signal that this is the go-to tool for listing playlists, making the usage context clear to an informed agent.

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

get_playlist_tracksA

Get all tracks in a specific playlist.

Args: playlist_id: The unique playlist identifier

Returns: List of tracks in the playlist

ParametersJSON Schema
NameRequiredDescriptionDefault
playlist_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the return type (list of tracks) but does not mention error handling, ordering, or whether the operation is read-only (which is implied by 'Get'). This is adequate but not rich.

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

Conciseness5/5

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

The description is brief, front-loaded, and contains only necessary information: the purpose, the argument, and the return value. No fluff or redundancy.

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

Completeness4/5

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

For a simple getter with one parameter and an output schema, the description is sufficient. It covers what the tool does and the main input/output. Additional details like error cases or edge conditions would be nice but are not essential for this tool's complexity.

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

Parameters3/5

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

Schema coverage is 0%, but the description provides a basic argument description ('The unique playlist identifier'). This adds only minimal clarity beyond the schema, which already indicates the parameter name and type. No guidance on obtaining the ID or format is provided.

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

Purpose5/5

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

The description clearly states the tool gets all tracks in a specific playlist, which is a specific verb+resource combination. This distinguishes it from sibling tools like get_playlists (returns playlists) or search_tracks (searches across all tracks).

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

Usage Guidelines4/5

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

The description implies when to use it: whenever you need the tracks of a known playlist. No explicit alternatives or exclusions are given, but the context is clear and simple.

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

get_recent_sessionsB

Get recent DJ history sessions within the specified number of days.

Args: days: Number of days to look back (default: 30)

Returns: List of recent history sessions

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It only says 'Get' and 'Returns List', implying read-only but not confirming. It omits details about ordering, inclusivity of the days parameter, timezone handling, or any potential side effects.

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

Conciseness5/5

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

The description is exceptionally concise, leading with the main purpose, followed by separate Args and Returns sections. Every sentence is necessary and contributes to understanding, with no redundancy or fluff.

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

Completeness3/5

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

For a simple tool with one parameter and an existing output schema, the description covers the core purpose and parameter. However, it lacks behavioral details such as ordering, edge cases, and what constitutes a 'recent history session'. It is adequate but minimal, especially given the presence of overlapping sibling tools.

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

Parameters4/5

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

The schema has 0% description coverage, but the description includes 'Args: days - Number of days to look back (default: 30)', which adds essential meaning beyond the schema's bare type and default. It explains what the parameter represents, though it doesn't specify constraints like minimum value.

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

Purpose4/5

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

The description clearly states 'Get recent DJ history sessions within the specified number of days', providing a specific verb, resource, and temporal scope. It distinguishes from broader history tools by emphasizing 'recent' and 'days', but does not explicitly reference sibling tools like get_history_sessions.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_history_sessions or search_history_sessions. The description only explains what it does, not when it should be preferred or avoided.

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

get_session_tracksA

Get all tracks from a specific DJ history session.

Args: session_id: The session's unique identifier

Returns: List of tracks in the session with performance context

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. It states that it returns a list of tracks 'with performance context,' which adds some behavioral detail, but it does not discuss side effects, permissions, or pagination behavior. As a simple read operation, this is acceptable but not rich.

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

Conciseness5/5

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

The description is compact with a clear primary sentence, then structured Args and Returns sections. It contains no unnecessary words and is front-loaded with the main verb and resource.

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

Completeness5/5

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

The tool has one parameter and an output schema is present, so the description covers the essential purpose, parameter, and return type. It is complete for a simple getter tool.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate. The Args section explains session_id as 'The session's unique identifier,' which adds meaning beyond the parameter name. The first line also ties the parameter to a 'specific DJ history session,' providing clear context for its use.

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

Purpose5/5

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

The description uses a specific verb 'Get' with a clear resource 'tracks from a specific DJ history session,' distinguishing it from sibling tools like get_playlist_tracks and get_track_details. The phrase 'DJ history session' clarifies the domain and scope.

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

Usage Guidelines4/5

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

The description implies usage context: this tool is for retrieving tracks from a DJ history session using a session ID. However, it does not explicitly mention alternatives or exclusions compared to sibling tools, so it stops short of full guidance.

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

get_top_rated_tracksA

Get the highest rated tracks in the library.

Args: limit: Maximum number of tracks to return

Returns: List of top rated tracks

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. 'Get' implies a read-only operation, but the description adds no further behavioral context such as sorting order, tie-breaking, whether unrated tracks are excluded, or any permission requirements. It essentially restates the tool name without disclosing observable behavior beyond the obvious.

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

Conciseness5/5

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

The description is extremely concise: a one-sentence purpose, followed by a simple Args/Returns structure. Every line earns its place and the front-loaded purpose sentence makes the tool's function immediately obvious.

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

Completeness3/5

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

For a simple one-parameter tool with an output schema, the description covers the basic purpose, parameter, and return type. However, it lacks any mention of sorting behavior, default behavior when limit is omitted, or guidance on when to choose this over sibling tools. It is minimally viable but has clear gaps.

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

Parameters4/5

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

The input schema only provides the type and default for 'limit'. The description explicitly defines limit as 'Maximum number of tracks to return', which adds meaning beyond the schema. This compensates for the 0% schema description coverage.

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

Purpose5/5

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

The description starts with the specific verb 'Get' and resource 'highest rated tracks in the library', clearly distinguishing it from sibling tools like get_most_played_tracks (play count) or get_tracks_by_key (key). It is immediately clear what the tool does and how it differs.

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

Usage Guidelines3/5

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

The context is clear: use this when you need top tracks sorted by rating. However, there is no explicit when-not or alternative naming to distinguish it from similar listing tools, so usage is implied rather than explicitly stated.

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

get_track_detailsA

Get detailed information about a specific track.

Args: track_id: The unique track identifier

Returns: Detailed track information including metadata, cue points, and play history

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are present, so the description carries the burden. It discloses that the tool returns metadata, cue points, and play history, suggesting read-only behavior. However, it does not mention potential errors, permissions, or side effects. For a straightforward read operation, this is sufficient but not rich.

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

Conciseness5/5

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

The description is concise and well-structured with an Args/Returns format. Every sentence adds value—purpose, parameter explanation, and return summary. No fluff or repetition.

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

Completeness4/5

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

With a single required parameter and an output schema present, the description does not need to over-explain. It provides the essential context: what the tool does and what the parameter means. The mention of specific return fields (metadata, cue points, play history) adds completeness, making it fully understandable for an agent.

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

Parameters4/5

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

The description adds meaning beyond the schema by explaining that track_id is 'the unique track identifier,' whereas the schema only provides the type and name. With only one parameter, this clarification is valuable. Schema description coverage is 0%, so this description is the only source of parameter semantics.

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

Purpose4/5

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

The description clearly states the tool's function: 'Get detailed information about a specific track.' It names the specific resource (track) and the action (get details). It distinguishes itself from siblings like get_track_file_path by mentioning additional fields (metadata, cue points, play history), though it does not explicitly contrast with alternative tools.

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

Usage Guidelines3/5

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

The description implies when to use this tool: when you need detailed info for a single track. It does not explicitly state when not to use it or mention alternative tools. Sibling tools like search_tracks suggest broader retrieval, but no exclusion is provided. The guidance is adequate for a simple getter but lacks explicit direction.

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

get_track_file_pathB

Get the file system path for a specific track.

Args: track_id: The unique track identifier

Returns: Dictionary containing file path information

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns a dictionary with file path information, but it does not disclose error behavior, side effects, or any prerequisites. For a simple getter, this minimal disclosure leaves significant gaps regarding what happens if the track does not exist or whether any mutation occurs.

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

Conciseness5/5

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

The description is concise and well-structured, with a clear purpose statement followed by Args and Returns sections. Every sentence adds value, and there is no redundant information. It is appropriately sized for a simple one-parameter tool.

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

Completeness3/5

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

The tool is simple, but the description lacks important contextual information. With no annotations and zero schema description coverage, it should include more usage context or behavioral notes. The existence of an output schema mitigates the need to describe return values in detail, but the lack of usage alternatives and error handling makes it incomplete. Overall, it is adequate but not fully complete for an unannotated tool.

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

Parameters3/5

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

The input schema has 0% description coverage, so the description must compensate. The Args section describes track_id as 'The unique track identifier,' which adds some meaning beyond the schema's title. However, it lacks format details, examples, or context on how to obtain the ID, so the compensation is partial.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb and resource: 'Get the file system path for a specific track.' This distinguishes it from sibling tools like get_track_details or search_tracks, which serve different purposes. The scope is clear and unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It only states what the tool does without any context for selecting it among the many sibling tools, such as get_track_details or get_genre_filepaths. No exclusions or alternative references are mentioned.

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

get_tracks_by_bpm_rangeA

Get tracks within a specific BPM range.

Args: bpm_min: Minimum BPM bpm_max: Maximum BPM

Returns: List of tracks within the BPM range

ParametersJSON Schema
NameRequiredDescriptionDefault
bpm_maxYes
bpm_minYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the basic behavior (get tracks in a BPM range) without disclosing details like whether boundaries are inclusive, whether results are sorted, or what track fields are returned. This is insufficient for a tool with no other behavioral context.

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

Conciseness4/5

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

The description is concise and structured (Args/Returns), but there is redundancy: 'Get tracks within a specific BPM range' and 'Returns: List of tracks within the BPM range' repeat the same information. Still, it is short and front-loaded.

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

Completeness4/5

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

Given the simplicity of the tool (2 simple parameters, output schema exists), the description is mostly complete for basic usage. However, with no annotations and sparse parameter details, it leaves minor ambiguities like inclusivity and sorting, but overall is adequate.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must define the parameters. It does provide minimal meaning ('Minimum BPM', 'Maximum BPM'), but lacks additional details such as inclusivity, validation, or units. This is adequate but not enriched.

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

Purpose5/5

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

The description clearly states the tool's purpose: retrieving tracks filtered by a BPM range. The verb+resource+scope ('Get tracks within a specific BPM range') is specific and distinguishes it from sibling tools like get_tracks_by_key or search_tracks.

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

Usage Guidelines4/5

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

The description implies when to use the tool (when you need tracks by BPM range) but does not explicitly mention alternatives or exclusions. Context is clear enough, but it lacks explicit 'use when' or 'use instead' guidance.

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

get_tracks_by_keyA

Get all tracks in a specific musical key.

Args: key: Musical key (e.g., "5A", "12B")

Returns: List of tracks in the specified key

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must bear the full burden. It discloses the return type ('List of tracks') and gives the key format example, but it does not mention potential performance considerations, pagination, ordering, or behavior on invalid keys. For a simple read tool this 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.

Conciseness4/5

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

The description is short and front-loaded with the main purpose. It uses a clear Args/Returns structure. However, the Returns line largely restates the first sentence ('List of tracks in the specified key'), which is slightly redundant, so it doesn't earn a perfect 5.

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

Completeness4/5

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

Given the tool's simplicity (one parameter, no nested objects) and the presence of an output schema, the description is nearly complete. It explains the key input and the return type. Missing details like sort order or limit are minor for a simple getter tool, so this is above average.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does by explaining the 'key' parameter with a format hint and examples ('5A', '12B'), which adds meaning beyond the bare schema property type 'string'. This is valuable for a one-parameter tool.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Get all tracks in a specific musical key.' This clearly distinguishes it from sibling tools like get_tracks_by_bpm_range, search_tracks, or get_playlists by naming the exact filtering criterion (musical key).

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

Usage Guidelines3/5

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

The description implies its use case: when you need tracks filtered by a musical key. However, it does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or mention sibling tools like search_tracks for broader queries. It relies on the name and description to convey context.

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

get_unplayed_tracksA

Get tracks that have never been played.

Args: limit: Maximum number of tracks to return

Returns: List of unplayed tracks

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior2/5

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

With no annotations, the description must carry the full burden of behavioral disclosure. It does not state that the operation is read-only, does not mention side effects, permissions, or any additional behavior beyond the basic return. The only behavioral info is the effect of the limit parameter, which is more parameter semantics than transparency.

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

Conciseness5/5

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

The description is extremely concise: one line for purpose, an Args section, and a Returns section. Every sentence earns its place with no redundant content.

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

Completeness4/5

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

Given the tool's low complexity (one parameter) and the presence of an output schema, the description adequately covers the essential context. It would benefit from explicit usage guidance, but that is already scored separately.

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

Parameters4/5

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

Schema description coverage is 0%, so the description compensates by explaining 'limit: Maximum number of tracks to return'. This adds meaningful semantics to the parameter that the schema lacks.

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

Purpose5/5

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

The description 'Get tracks that have never been played' uses a specific verb and resource with a clear criterion, effectively distinguishing it from sibling tools like get_most_played_tracks and get_top_rated_tracks.

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

Usage Guidelines4/5

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

The description clearly states what the tool does and implies when to use it (when unplayed tracks are needed), but it does not mention alternatives or exclusions. This fits 'clear context, no exclusions'.

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

import_trackA

Import a single audio file into the rekordbox library.

âš ī¸ CAUTION: This modifies your rekordbox database — rekordbox must be closed.

The track is added as unanalyzed; open rekordbox and run "Analyze Tracks" to generate waveforms, beatgrids, and hot cues.

Args: path: Absolute path to the audio file (mp3/m4a/flac/wav/aiff) title: Override the title (defaults to ID3 tag if auto_tag=True) artist: Override the artist (creates artist row if new) album: Override the album genre: Override the genre label: Override the record label bpm: Override the BPM (float, e.g. 128.0) rating: Override the rating (0–5) comments: Track comments year: Release year auto_tag: Read ID3 tags via mutagen and prefill metadata (default True). Explicit arguments always win over tag values.

Returns: Result with status (success/skipped/error), track_id, and resolved metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
bpmNo
pathYes
yearNo
albumNo
genreNo
labelNo
titleNo
artistNo
ratingNo
auto_tagNo
commentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Despite annotations indicating a mutable operation, the description adds significant behavioral context: it warns about database modification, mandates closing rekordbox, explains that imported tracks start unanalyzed, and details how `auto_tag` interacts with explicit arguments. This goes well beyond the annotations and is highly informative.

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

Conciseness5/5

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

The description is efficiently organized with a clear purpose, a caution note, a parameter list, and return information. While it is longer than average, every sentence serves a purpose given the tool's complexity, and the structured format makes it easy to scan.

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

Completeness5/5

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

This tool has 11 parameters and an output schema, but the description covers all necessary context: what it does, when to use it, prerequisites, side effects, parameter semantics, and return value. The inclusion of the `Returns` section is particularly thorough and leaves no major gaps.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining every parameter: `path` includes supported formats, `artist` can create a new artist row, `auto_tag` defaults to true and explicit arguments override tag values. Each parameter's meaning and defaults are clarified, adding substantial value over the raw schema.

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

Purpose5/5

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

The description immediately states 'Import a single audio file into the rekordbox library' with a specific verb and resource. The qualifier 'single' clearly distinguishes it from the sibling `import_tracks`, making its scope unambiguous.

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

Usage Guidelines4/5

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

The description provides clear usage context: it modifies the rekordbox database, requires rekordbox to be closed, and results in an unanalyzed track that needs 'Analyze Tracks'. It does not explicitly name alternative tools for batch imports, so while the guidance is strong, it falls short of giving explicit when-not-to-use instructions.

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

import_tracksA

Batch-import audio files and/or directories into the rekordbox library.

âš ī¸ CAUTION: This modifies your rekordbox database — rekordbox must be closed.

Tracks are added as unanalyzed. Open rekordbox afterwards and run "Analyze Tracks" on the new imports to generate waveforms/beatgrids/hot cues. Tip: follow up with add_tracks_to_playlist using the returned track_ids to stage them for easy selection in rekordbox.

Args: paths: List of file paths and/or directory paths. recursive: If a directory is given, descend into subdirectories (default True). auto_tag: Read ID3 tags via mutagen for each file (default True). extensions: Restrict directory scans to these extensions (e.g. ["mp3", "flac"]). Defaults to all supported types.

Returns: Summary with counts and per-file details for imported / skipped / failed.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathsYes
auto_tagNo
recursiveNo
extensionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

The description explicitly warns 'This modifies your rekordbox database' and includes a caution marker, which adds behavioral context beyond the annotations. It also discloses that tracks are imported unanalyzed and that rekordbox must be closed—additional traits not present in the annotations. This is strong transparency.

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

Conciseness4/5

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

The description is well-structured with a clear overview, caution, process notes, tip, and documented parameters/returns. It is somewhat long but every section adds value. The front-loaded purpose and caution make it efficient, though the tip and returns could be condensed.

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

Completeness5/5

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

Given the tool's complexity (batch import, directory recursion, extensions, database modification), the description covers prerequisites (rekordbox closed), post-import behavior (unanalyzed tracks, need to analyze), return summary, and a follow-up suggestion. The output schema covers return details, so the description is complete for an agent to decide and invoke.

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

Parameters5/5

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

Despite zero schema description coverage, the description's Args section explains each parameter in plain terms: paths (file/directory paths), recursive (descend into subdirectories), auto_tag (read ID3 tags via mutagen), and extensions (restrict scans). This fully compensates for the schema's lack of descriptive text.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Batch-import audio files and/or directories into the rekordbox library.' It clearly distinguishes from the singular sibling tool import_track by emphasizing batch import, and clarifies the target system (rekordbox library).

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

Usage Guidelines4/5

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

The description provides clear context: it's a batch import with a prerequisite (rekordbox must be closed) and a follow-up action (run Analyze Tracks). It also suggests a follow-up tool. However, it does not explicitly say when to use this over import_track or when not to use it, so it lacks explicit exclusions or alternative guidance.

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

remove_broken_tracksA
DestructiveIdempotent

Soft-delete tracks by ID and remove them from all playlists.

Use find_broken_tracks first to identify which tracks to remove. Tracks are soft-deleted (marked as deleted in the database, not permanently erased).

âš ī¸ DANGER: This removes tracks from your rekordbox library!

Args: track_ids: List of track IDs to remove

Returns: Details of removed tracks and any IDs that were not found

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations (destructiveHint=true, readOnlyHint=false, idempotentHint=true), the description adds important behavioral details: 'soft-deleted (marked as deleted in the database, not permanently erased)' and 'removes them from all playlists.' It also includes a prominent danger warning: 'âš ī¸ DANGER: This removes tracks from your rekordbox library!' This fully discloses the nature of the operation without contradicting the annotations.

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

Conciseness5/5

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

The description is compact yet comprehensive, front-loaded with the main purpose, followed by a critical workflow hint and a danger warning. The Args and Returns sections are clearly formatted, and every sentence provides necessary information with zero fluff. It earns a perfect score for structure.

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

Completeness5/5

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

For a destructive tool with annotations already indicating the safety profile, the description fully covers the essential context: what it does, how to use it correctly (after find_broken_tracks), what 'soft-delete' means, and what the return value contains. The presence of an output schema means no need to detail return fields, and the description barely leaves any gaps for the agent to ask about.

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

Parameters4/5

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

With schema description coverage at 0%, the description compensates by explaining track_ids as 'List of track IDs to remove.' More valuably, it implies via the workflow that these IDs come from find_broken_tracks, giving the user a source for valid inputs. While it doesn't specify the exact ID format, the parameter is a simple string array and the context is sufficient for correct use.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Soft-delete tracks by ID and remove them from all playlists.' This clearly distinguishes it from siblings like remove_track_from_playlist (which operates on a single playlist) and delete_playlist. It also references find_broken_tracks, further clarifying the intended target.

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

Usage Guidelines4/5

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

The description explicitly instructs to 'Use find_broken_tracks first to identify which tracks to remove,' providing a clear workflow. While it doesn't explicitly exclude alternatives (e.g., 'don't use this for manual playlist cleanup'), the context is unambiguous. A minor addition about when not to use it would make it perfect, but it clearly implies the intended scenario.

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

remove_track_from_playlistA
Idempotent

Remove a track from a playlist.

âš ī¸ CAUTION: This modifies your rekordbox database!

Args: playlist_id: ID of the playlist to modify track_id: ID of the track to remove

Returns: Result of the operation

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idYes
playlist_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

The description adds a useful caution: 'This modifies your rekordbox database!' which provides context beyond the annotations. It also notes the operation is a modification (consistent with readOnlyHint false) and returns a result. This is valuable context, though it could detail side effects or prerequisites more.

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

Conciseness5/5

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

The description is concise and well-structured with sections for the action, caution, args, and returns. Every sentence provides necessary information without unnecessary verbosity.

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

Completeness4/5

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

For a simple two-parameter tool with an output schema, the description is adequately complete. It covers the action, the parameters, and the return value. It doesn't discuss edge cases (e.g., nonexistent playlist) but such details are not critical for basic usage.

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

Parameters4/5

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

The input schema provides no descriptions for parameters, but the description lists both parameters with brief explanations ('ID of the playlist to modify', 'ID of the track to remove'). This adds meaning beyond the schema, helping the agent understand what values to provide.

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

Purpose5/5

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

The description clearly states 'Remove a track from a playlist' — a specific action on a specific resource. It distinguishes itself from sibling tools like add_track_to_playlist, delete_playlist, and remove_broken_tracks.

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

Usage Guidelines3/5

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

The usage is implied by the name and description, but no explicit guidance is given about when to use this tool versus alternatives. For example, it does not mention that to add a track one would use add_track_to_playlist, or that for bulk removal one might use remove_broken_tracks.

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

search_history_sessionsA

Search DJ history sessions with various filters.

Args: query: Search query for session names year: Filter by year (e.g., "2025") month: Filter by month (e.g., "08" for August) min_tracks: Minimum number of tracks in session limit: Maximum number of results

Returns: List of matching history sessions

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo
limitNo
monthNo
queryNo
min_tracksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It states the purpose and outputs ('List of matching history sessions') and explains filter behavior in the Args section. However, it does not mention whether filters are combined with AND/OR logic, ordering, pagination, or potential side effects, though the read-only nature is implied by 'search'.

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

Conciseness5/5

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

The description is compact and well-organized, with a one-line purpose, a clear Args list, and a Returns line. Every sentence earns its place; there is no fluff or repetition.

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

Completeness4/5

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

The description covers all five parameters and the return type, which for a search/filter tool is largely sufficient. An output schema exists, so detailed return structure is not needed. However, it omits details about filter combination logic (AND/OR) and result ordering, which would be valuable for complex queries. Thus slightly short of fully complete.

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

Parameters5/5

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

The schema has 0% description coverage, so the description fully compensates by documenting every parameter with examples (e.g., year '2025', month '08' for August, min_tracks minimum number). This adds meaningful semantic detail beyond the bare schema titles and defaults.

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

Purpose5/5

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

The description opens with 'Search DJ history sessions with various filters,' which clearly states a specific action ('search'), a resource ('DJ history sessions'), and the ability to filter. This distinguishes it from sibling tools like get_history_sessions or get_recent_sessions, which imply different retrieval modes.

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

Usage Guidelines3/5

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

The description implies usage through the filter context but does not explicitly state when to use this tool versus alternatives like get_history_sessions or get_recent_sessions. No exclusions or alternative recommendations are provided, leaving the agent to infer the difference from the 'search' and 'filters' wording.

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

search_tracksB

Search tracks in the rekordbox database.

Args: query: General search query (searches across multiple fields) artist: Filter by artist name title: Filter by track title genre: Filter by genre key: Filter by musical key (e.g., "5A", "12B") bpm_min: Minimum BPM bpm_max: Maximum BPM rating_min: Minimum rating (0-5) limit: Maximum number of results to return

Returns: List of matching tracks with metadata

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNo
genreNo
limitNo
queryNo
titleNo
artistNo
bpm_maxNo
bpm_minNo
rating_minNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'Returns a list of matching tracks with metadata', which is minimal. It does not disclose whether filters combine with AND/OR, if the query searches all fields, whether matching is exact/fuzzy, or that limit defaults to 50. These behaviors are important for an agent to invoke the tool correctly.

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

Conciseness4/5

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

The description is well-structured with a one-line summary, a bulleted Args section, and a Returns note. Every line provides value, and there is no redundant bloat. It is appropriately sized for a 9-parameter tool.

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

Completeness3/5

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

The description covers parameter semantics thoroughly, but lacks critical context about query behavior (e.g., how multiple filters interact, whether query is substring or full-text). It also doesn't mention that the output schema exists or what metadata fields are returned. Given the absence of annotations and the presence of many sibling search tools, this is adequate but not fully complete.

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

Parameters5/5

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

The schema has 0% description coverage, so the description is the sole source of parameter meaning. All 9 parameters are explained with useful context: query is 'general', key has examples ('5A', '12B'), rating_min is bounded (0-5), and limit is described as max results. This significantly helps the agent select and populate parameters correctly.

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

Purpose4/5

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

The description clearly states 'Search tracks in the rekordbox database' with a specific verb and resource. The Args section further clarifies this is a general multi-field search, distinguishing it from specialized siblings like get_tracks_by_key or get_tracks_by_bpm_range. However, the summary doesn't explicitly position it as a general-purpose alternative to those specialized tools.

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

Usage Guidelines2/5

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

No explicit usage guidance is provided. The description does not state when to use this tool versus siblings such as get_tracks_by_key, search_tracks_by_filename, or get_most_played_tracks. There are no exclusion criteria or alternative references, leaving the agent to infer usage from the parameter list.

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

search_tracks_by_filenameA

Search for tracks by filename.

Args: filename: Filename to search for (partial match)

Returns: List of tracks matching the filename

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden. It discloses that the search is a partial match and returns a list of tracks, which is useful. However, it does not state any limitations like case sensitivity or whether the search covers full paths.

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

Conciseness5/5

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

The description is a compact docstring with a one-line summary, args, and returns. Every sentence adds information; no filler or redundancy.

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

Completeness4/5

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

For a simple single-parameter search tool with an output schema, the description adequately covers purpose, the partial-match behavior, and return type. It doesn't mention usage alternatives, but that is a separate dimension; given the simplicity, the tool description is reasonably complete.

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

Parameters4/5

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

The input schema for 'filename' has 0% description coverage, so the tool description must compensate. It explains that the argument is the filename to search for and clarifies 'partial match', adding value beyond the schema's bare type. The description could add more details like case sensitivity, but the basic semantics are covered.

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

Purpose5/5

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

The description uses a specific verb 'Search' and resource 'tracks' with a scoping qualifier 'by filename', clearly distinguishing from sibling tools like search_tracks. It also specifies 'partial match' which further clarifies the search behavior.

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

Usage Guidelines3/5

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

The description provides no guidance on when to choose this tool over siblings such as search_tracks or get_track_file_path. The context is implied: use when you need to find tracks by partial filename. No exclusions or alternatives are mentioned.

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

validate_track_idsB

Validate a list of track IDs and show which are valid/invalid.

Args: track_ids: List of track IDs to validate

Returns: Validation results with valid and invalid IDs

ParametersJSON Schema
NameRequiredDescriptionDefault
track_idsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states the operation (validate) and the output (valid/invalid IDs), but it does not explicitly confirm whether this is read-only, how 'valid' is determined, or whether there are any side effects. This leaves significant 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.

Conciseness5/5

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

The description is concise and well-structured, with a clear first sentence stating the purpose, followed by Args and Returns sections. No redundant information is included, and every sentence earns its place.

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

Completeness2/5

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

Despite having an output schema, the description lacks essential context. It does not define what constitutes 'valid' or 'invalid,' does not mention potential errors or edge cases, and does not clarify whether the operation is purely read-only. With no annotations, the agent may not have enough information to use the tool safely and effectively.

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

Parameters2/5

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

The schema description coverage is 0%, so the description must compensate. The Args section says 'track_ids: List of track IDs to validate,' which merely restates the parameter name and adds no additional constraints, format, or limits. It provides minimal value beyond the schema itself.

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

Purpose5/5

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

The description clearly states the tool's function: 'Validate a list of track IDs and show which are valid/invalid.' It uses a specific verb ('validate'), a resource ('track IDs'), and an outcome ('show which are valid/invalid'), making it easily distinguishable from sibling tools like find_broken_tracks or get_track_details.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when you need to check if track IDs are valid), but it does not explicitly state when not to use it or mention alternatives. No exclusions or comparisons to sibling tools are provided, leaving the usage context partially implicit.

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. Dates show when Glama detected each change.

  1. 31 tool updatesv1.0.0
    • First observedadd_track_to_playlist
    • First observedadd_tracks_to_playlist
    • First observedanalyze_library
    • First observedcleanup_orphaned_playlist_entries
    • First observedconnect_database
    • First observedcreate_playlist
    • First observeddelete_playlist
    • First observedfind_broken_tracks
    • First observedget_genre_filepaths
    • First observedget_history_sessions
    • First observedget_history_stats
    • First observedget_library_stats
    • First observedget_most_played_tracks
    • First observedget_playlist_tracks
    • First observedget_playlists
    • First observedget_recent_sessions
    • First observedget_session_tracks
    • First observedget_top_rated_tracks
    • First observedget_track_details
    • First observedget_track_file_path
    • First observedget_tracks_by_bpm_range
    • First observedget_tracks_by_key
    • First observedget_unplayed_tracks
    • First observedimport_track
    • First observedimport_tracks
    • First observedremove_broken_tracks
    • First observedremove_track_from_playlist
    • First observedsearch_history_sessions
    • First observedsearch_tracks
    • First observedsearch_tracks_by_filename
    • First observedvalidate_track_ids

TDQS

A3.5/5.0
Disambiguation4/5

Most tools target distinct resource-action pairs, but there is some overlap between general search_tracks and specialized filters like get_tracks_by_key or search_tracks_by_filename. Single vs batch variants are clearly distinguished by singular/plural naming.

Naming Consistency5/5

Tool names follow a consistent verb_noun pattern (get_, search_, create_, delete_, add_, remove_, import_, etc.). Singular and plural forms clearly differentiate single-item and batch operations.

Tool Count2/5

With 31 tools, the server exceeds the typical 3-15 range and even the 25-tool threshold. While the scope covers tracks, playlists, history, and maintenance, the sheer number may be overwhelming for agents.

Completeness3/5

Core track and playlist workflows are covered (import, search, create, add/remove), but there are notable gaps: no update track metadata, no rename playlist, and no general delete track (only broken tracks). History session coverage is thorough.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for rekordbox DJ database access. Provides read-only querying of tracks, playlists, and DJ session history from encrypted rekordbox SQLite databases using pyrekordbox.
    25
    94
    Python
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server for Spotify control and synchronized lyrics retrieval that enables playback management, queue navigation, and music search capabilities. It also features perception tools for real-time track analysis, including BPM, key detection, and timestamped lyrics.
    116
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides access to the Beatport API for music discovery and data retrieval, enabling users to search for tracks, artists, labels, releases, and charts through natural language.
    4
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Galb-collab/rekordbox-mcp-main'

If you have feedback or need assistance with the MCP directory API, please join our Discord server