rekordbox-mcp
Servidor MCP de Rekordbox
Un servidor completo de Protocolo de Contexto de Modelo (MCP) para la gestión de bases de datos de rekordbox con acceso a la base de datos en tiempo real.
Construido usando pyrekordbox - Este proyecto no está afiliado al proyecto pyrekordbox ni a sus mantenedores.
Características
🗄️ Acceso a la base de datos
Conexión directa a la base de datos SQLite: Acceda a la base de datos cifrada de rekordbox directamente usando pyrekordbox
Consultas en tiempo real: Busque y filtre pistas con criterios exhaustivos
Operaciones de mutación seguras: Gestión de listas de reproducción con copias de seguridad automáticas y anotaciones de seguridad
🔍 Búsqueda y descubrimiento
Búsqueda avanzada: Búsqueda en múltiples campos a través de artista, título, género, tonalidad, BPM y más
Filtrado por tonalidad musical: Encuentre pistas en tonalidades compatibles para mezclas armónicas
Consultas de rango de BPM: Busque por rangos de tempo para el beatmatching
Filtros de valoración y recuento de reproducciones: Descubra sus pistas más queridas y más reproducidas
📊 Analítica e información
Estadísticas de la biblioteca: Estadísticas completas que incluyen distribución de géneros, BPM promedio, tiempo total de reproducción
Analítica de recuento de reproducciones: Rastree patrones y hábitos de escucha
Información de la colección: Comprenda la composición de su biblioteca musical
Acceso al historial de DJ: Acceso completo a su historial de sesiones de DJ y datos de rendimiento
⚙️ Operaciones de base de datos
Gestión de listas de reproducción: Cree, modifique y elimine listas de reproducción con protecciones de seguridad
Operaciones por lotes: Añada múltiples pistas a listas de reproducción de manera eficiente
Análisis de historial: Acceda al historial completo de sesiones de DJ y datos de rendimiento
Estadísticas de la biblioteca: Analítica e información exhaustiva
Related MCP server: AbletonMCP
Arquitectura
Framework FastMCP: Servidor MCP de Python moderno usando FastMCP 2.0
Integración con pyrekordbox: Biblioteca madura para acceso a bases de datos cifradas
Consultas de base de datos en tiempo real: Operaciones directas de SQLite con soporte para SQLCipher
Listo para producción: Registro, manejo de errores y características de seguridad integradas
⚠️ Aviso de seguridad importante
HAGA UNA COPIA DE SEGURIDAD DE SU BIBLIOTECA DE REKORDBOX ANTES DE USAR
Este software accede directamente a su base de datos de rekordbox. Cree siempre una copia de seguridad de toda su biblioteca de rekordbox antes de usar esta herramienta como medida de precaución.
Requisitos de copia de seguridad
Debe crear una copia de seguridad completa de su biblioteca de rekordbox antes de usar este software. Consulte la documentación de rekordbox o los recursos de soporte para conocer los procedimientos de copia de seguridad adecuados para su configuración específica y versión de rekordbox.
Reconocimiento de riesgos
⚠️ Este proyecto accede directamente a su base de datos de rekordbox
⚠️ Úselo bajo su propia responsabilidad - no se ofrece garantía
⚠️ Pruebe exhaustivamente con copias de seguridad antes de usarlo en su biblioteca principal
⚠️ Los desarrolladores no son responsables de ninguna pérdida de datos o daño
Si no se siente cómodo con estos riesgos, utilice la funcionalidad de exportación XML de solo lectura en su lugar.
Inicio rápido
Requisitos previos
Python 3.12+
rekordbox 6 o 7 instalado con una biblioteca existente
COPIA DE SEGURIDAD COMPLETA de su biblioteca de rekordbox (vea el aviso de seguridad arriba)
Herramientas de solo lectura (búsqueda, estadísticas, historial) funcionan mientras rekordbox está abierto
Herramientas de escritura (crear lista de reproducción, añadir pistas, limpieza) requieren que rekordbox esté cerrado — pyrekordbox bloquea las confirmaciones cuando rekordbox está ejecutándose
Acceso a su base de datos de rekordbox (se admite la detección automática)
Instalación
# Install dependencies with uv
uv sync
# Run the server
uv run rekordbox-mcpConfiguración
El servidor admite tanto la detección automática de la base de datos como la configuración manual:
# Auto-detect rekordbox database (recommended)
uv run rekordbox-mcp
# Specify custom database path
uv run rekordbox-mcp --database-path /path/to/rekordbox/PioneerConfiguración del cliente MCP
Añada a su configuración de Claude Desktop:
{
"mcpServers": {
"rekordbox-database": {
"command": "uv",
"args": ["run", "rekordbox-mcp"],
"cwd": "/path/to/rekordbox-mcp"
}
}
}Herramientas disponibles (29 herramientas + 1 recurso)
Búsqueda y descubrimiento
search_tracks- Búsqueda avanzada de pistas en múltiples campos con filtrado (género, tonalidad, BPM, artista, título, valoración, etc.)get_track_details- Obtenga metadatos completos para una pista específica por IDget_tracks_by_key- Encuentre pistas en una tonalidad musical específica (ej. "5A", "12B")get_tracks_by_bpm_range- Encuentre pistas dentro de un rango de BPMget_genre_filepaths- Obtenga rutas de archivo para pistas que coincidan con un género (eficiente en tokens, devuelve solo rutas)get_most_played_tracks- Obtenga pistas clasificadas por recuento de reproduccionesget_top_rated_tracks- Obtenga pistas clasificadas por valoraciónget_unplayed_tracks- Obtenga pistas con cero recuento de reproduccionesget_track_file_path- Obtenga la ruta del sistema de archivos para una pista específicasearch_tracks_by_filename- Busque pistas por coincidencia parcial de nombre de archivo
Analítica de la biblioteca
get_library_stats- Estadísticas completas de la biblioteca (recuento de pistas, tiempo de reproducción, BPM, géneros)analyze_library- Agrupación y agregación personalizada (por género, tonalidad, año, artista o valoración)validate_track_ids- Verifique una lista de IDs de pistas e informe cuáles son válidos/inválidos
Operaciones de listas de reproducción
get_playlists- Liste todas las listas de reproducción, incluidas las listas de reproducción inteligentesget_playlist_tracks- Obtenga todas las pistas en una lista de reproducción específicacreate_playlist- Cree una nueva lista de reproducción o carpeta ⚠️ (Mutación)add_track_to_playlist- Añada una sola pista a una lista de reproducción ⚠️ (Mutación)add_tracks_to_playlist- Añada múltiples pistas a una lista de reproducción en una sola operación ⚠️ (Mutación)remove_track_from_playlist- Elimine una pista de una lista de reproducción ⚠️ (Mutación)delete_playlist- Elimine una lista de reproducción permanentemente ⚠️ (Destructiva)
Historial y analítica de DJ
get_history_sessions- Obtenga todas las sesiones del historial de DJ con metadatosget_session_tracks- Obtenga todas las pistas reproducidas en una sesión específicaget_recent_sessions- Obtenga sesiones dentro de un número especificado de díassearch_history_sessions- Busque sesiones por nombre, año, mes o recuento mínimo de pistasget_history_stats- Estadísticas completas de rendimiento de DJ e información
Limpieza de la biblioteca
find_broken_tracks- Escanee en busca de archivos faltantes, transmisiones de Apple Music, rutas vacías y referencias de listas de reproducción huérfanascleanup_orphaned_playlist_entries- Elimine entradas de listas de reproducción obsoletas que hacen referencia a pistas eliminadas ⚠️ (Mutación)remove_broken_tracks- Elimine suavemente pistas por ID y elimínelas de todas las listas de reproducción ⚠️ (Destructiva)
Gestión de bases de datos
connect_database- Conéctese explícitamente con una ruta de base de datos personalizada opcional
Recursos
database-status- Estado actual de la conexión y estadísticas básicas
⚠️ Las operaciones de mutación modifican su base de datos de rekordbox y crean copias de seguridad automáticas ⚠️ Las operaciones destructivas eliminan datos permanentemente y requieren confirmación adicional
Ejemplos
Buscar pistas por tonalidad y BPM
# Find tracks in 5A key with BPM between 120-130
search_tracks(key="5A", bpm_min=120, bpm_max=130, limit=20)Acceder al historial de DJ
# Get recent DJ sessions
get_recent_sessions(days=30)
# Get tracks from a specific session
get_session_tracks(session_id="12345")Obtener información de la biblioteca
# Comprehensive library statistics
get_library_stats()
# DJ performance statistics
get_history_stats()Gestión de listas de reproducción
# 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")Características de seguridad
Copias de seguridad automáticas: Todas las operaciones de mutación crean copias de seguridad automáticas de la base de datos antes de realizar cambios
Anotaciones de seguridad de FastMCP: Sugerencias de seguridad adecuadas para operaciones de mutación y destructivas
Protección de listas de reproducción inteligentes: Evita la eliminación de listas de reproducción inteligentes
Validación de conexión: Valida las conexiones y el acceso a la base de datos
Manejo de errores: Manejo integral de errores con registro detallado y reversión
Validación de entrada: Validación de entrada para todas las operaciones de base de datos
Seguridad en operaciones por lotes: Informes detallados sobre el éxito/fracaso de las operaciones por lotes
⚠️ Importante: Estas características de seguridad son protecciones complementarias. Mantenga siempre sus propias copias de seguridad y utilice este software bajo su propia responsabilidad.
Desarrollo
Estructura del proyecto
rekordbox_mcp/
__init__.py # Package initialization
server.py # FastMCP server and tool definitions
database.py # Database connection and operations
models.py # Pydantic data modelsEjecución de pruebas
uv run pytestCalidad del código
# Format code
uv run black rekordbox_mcp/
# Lint code
uv run ruff rekordbox_mcp/
# Type checking
uv run mypy rekordbox_mcp/Licencia
Licencia MIT
Descargo de responsabilidad
⚠️ ÚSELO BAJO SU PROPIA RESPONSABILIDAD ⚠️
Este proyecto no está afiliado a AlphaTheta (Pioneer DJ) ni al proyecto pyrekordbox
Este software accede directamente a su base de datos de rekordbox
No se proporciona garantía ni aval
Los desarrolladores no son responsables de ningún daño a su biblioteca de rekordbox
Usted asume todo el riesgo al usar este software
SIEMPRE haga una copia de seguridad de su biblioteca de rekordbox antes de usarlo. Pruebe exhaustivamente con copias de seguridad antes de usarlo en su biblioteca principal.
Al usar este software, usted reconoce que comprende estos riesgos y acepta usarlo bajo su propia responsabilidad.
Available Tools
25 toolsadd_tracks_to_playlistAIdempotent
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
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes | ||
| track_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds significant behavioral context beyond annotations: the ⚠️ CAUTION warning about database modification provides crucial safety information, and 'Detailed results of the batch operation' describes output behavior. Annotations indicate mutability (readOnlyHint=false) and idempotency, but the description enhances this with practical implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured: purpose statement first, critical warning next, then parameter explanations, and finally return behavior. Every sentence earns its place with no redundancy, making it highly scannable and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a mutation tool with 2 parameters, 0% schema coverage, but with output schema present, the description provides excellent completeness. It covers purpose, safety warning, parameter meanings, and output behavior—everything needed beyond the structured fields for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining both parameters: 'playlist_id: ID of the playlist to modify' and 'track_ids: List of track IDs to add'. This adds essential semantic meaning missing from the bare schema. However, it doesn't specify format requirements or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Add multiple tracks'), target resource ('existing playlist'), and scope ('in one operation'). It distinguishes from sibling 'add_track_to_playlist' by emphasizing batch/multiple capability, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (batch adding to existing playlists) and implicitly distinguishes from 'create_playlist' (requires existing playlist) and 'add_track_to_playlist' (single vs multiple). However, it doesn't explicitly state when NOT to use it or mention all relevant alternatives like 'remove_track_from_playlist'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_track_to_playlistAIdempotent
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
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes | ||
| track_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: the CAUTION warning about database modification provides important safety context that annotations don't explicitly cover. Annotations indicate readOnlyHint=false (mutation), idempotentHint=true (safe to retry), and destructiveHint=false (non-destructive), but the description's warning about database modification adds practical implementation awareness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (description, caution, args, returns) and uses only essential sentences. The warning is appropriately placed and formatted. However, the 'Returns' section is redundant given the presence of an output schema, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with good annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false) and an output schema, the description provides adequate context. The caution warning addresses the key behavioral risk, and parameter documentation covers basics. The main gap is lack of sibling differentiation, but overall it's reasonably complete for this complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description provides basic parameter documentation in the Args section, explaining what playlist_id and track_id represent. However, it doesn't provide format details, validation rules, or examples that would compensate for the complete lack of schema descriptions. The baseline is 3 since it covers the basic semantics but minimally.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Add a track') and target resource ('to an existing playlist'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from its sibling 'add_tracks_to_playlist' (singular vs. plural), which could cause confusion about when to use each tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'add_tracks_to_playlist' or 'create_playlist'. It mentions the tool modifies 'an existing playlist' but doesn't specify prerequisites, constraints, or when other tools might be more appropriate.
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
| Name | Required | Description | Default |
|---|---|---|---|
| group_by | No | genre | |
| aggregate_by | No | count | |
| top_n | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It mentions grouping/aggregation but doesn't specify whether this is a read-only operation (likely, but not stated), what permissions are required, whether it's resource-intensive, or how results are formatted beyond 'Analysis results.' The description lacks crucial behavioral context for a tool with three parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and well-structured. The first sentence states the core purpose, followed by clear sections for Args and Returns. Each section is concise and informative without unnecessary elaboration. Every sentence earns its place, though the Returns section could be slightly more specific.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, grouping/aggregation logic) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and incomplete behavioral context, it leaves gaps about operation characteristics. The parameter explanations help, but overall completeness is limited.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant value beyond the input schema, which has 0% description coverage. It explains the meaning of all three parameters: 'group_by' (with specific field examples), 'aggregate_by' (with method examples), and 'top_n' (purpose). This compensates well for the schema's lack of descriptions, though it doesn't provide format details or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Analyze library with grouping and aggregation.' This specifies the verb ('analyze'), resource ('library'), and core functionality. It distinguishes from siblings like 'get_library_stats' or 'get_most_played_tracks' by emphasizing grouping/aggregation analysis rather than basic retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention when this analysis is appropriate compared to sibling tools like 'get_library_stats' (which might provide summary statistics) or 'get_most_played_tracks' (which might focus on specific metrics). There's no context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_databaseB
Connect to the rekordbox database.
Args: database_path: Optional path to database directory. If not provided, auto-detection is used.
Returns: Connection status message
| Name | Required | Description | Default |
|---|---|---|---|
| database_path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool connects to a database and returns a status message, but lacks details on permissions needed, whether it's idempotent, error conditions, or side effects (e.g., if it establishes a persistent connection). This is inadequate for a connection tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by clear Arg and Return sections. Every sentence adds value: the first states the action, the second explains the parameter's optionality and fallback, and the third specifies the return type. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (connecting to a database), no annotations, and an output schema present (which covers return values), the description is minimally adequate. It explains the purpose and parameter but lacks behavioral details like error handling or connection lifecycle, leaving gaps for the agent to navigate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter: it explains that 'database_path' is optional and that auto-detection occurs if not provided. With 0% schema description coverage and only one parameter, this adequately compensates by clarifying the parameter's role and default behavior beyond the schema's basic type information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Connect to the rekordbox database' with a specific verb ('Connect') and resource ('rekordbox database'). It distinguishes itself from sibling tools by focusing on database connection rather than data manipulation or querying. However, it doesn't explicitly contrast with specific alternatives among siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether this must be called before other tools), exclusions, or contextual cues. The agent must infer usage from the purpose alone.
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 in rekordbox.
⚠️ CAUTION: This modifies your rekordbox database!
Args: name: Name for the new playlist parent_id: Optional parent folder ID (omit for root level)
Returns: Information about the created playlist
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| parent_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations by including a caution note ('⚠️ CAUTION: This modifies your rekordbox database!'), which highlights the mutation aspect and potential impact. Annotations already indicate it's not read-only, not idempotent, and not destructive, so the description complements this by emphasizing the database modification, though it doesn't detail rate limits or auth needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the purpose and caution, followed by structured sections for args and returns. Every sentence earns its place, with no redundant information, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with 2 parameters), no schema descriptions, and the presence of an output schema (which handles return values), the description is mostly complete. It covers purpose, caution, parameters, and return info, but could improve by mentioning sibling tools or specific usage scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining both parameters: 'name' as 'Name for the new playlist' and 'parent_id' as 'Optional parent folder ID (omit for root level)'. This adds clear meaning beyond the schema, though it doesn't specify format details like ID structure or name constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Create a new playlist') and resource ('in rekordbox'), distinguishing it from sibling tools like 'delete_playlist' or 'get_playlists'. It explicitly identifies what the tool does without being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the caution note about database modification, suggesting it's for write operations, but does not explicitly state when to use this tool versus alternatives like 'get_playlists' for reading or 'delete_playlist' for removal. No specific exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_playlistADestructiveIdempotent
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
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate destructiveHint=true and readOnlyHint=false, but the description adds critical context: 'permanently deletes' and 'cannot be undone', emphasizing irreversible consequences. It doesn't fully cover aspects like error handling or permissions, but provides valuable behavioral insight beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and danger warning, followed by structured Args and Returns sections. Every sentence adds value: the warning highlights risk, and the parameter/return explanations are necessary for clarity without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive operation with 1 parameter) and annotations/output schema coverage, the description is mostly complete. It covers the irreversible nature and parameter purpose, though it could benefit from more on error cases or confirmation steps, but the output schema likely handles return values.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by explaining the 'playlist_id' parameter as 'ID of the playlist to delete', adding meaning not in the schema. It doesn't detail format or constraints, but clarifies the parameter's role effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete a playlist') and resource ('from rekordbox'), distinguishing it from sibling tools like 'create_playlist' or 'remove_track_from_playlist'. It explicitly identifies the tool's function without ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the danger warning about permanent deletion, suggesting it should be used cautiously. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., 'remove_track_from_playlist' for partial removal) or prerequisites like playlist existence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_history_sessionsB
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
| Name | Required | Description | Default |
|---|---|---|---|
| include_folders | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the return type ('List of history sessions with metadata') but doesn't disclose behavioral traits like pagination, rate limits, authentication needs, or what 'history sessions' entail (e.g., time range, sorting). This leaves gaps for safe and effective use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by clear sections for args and returns. Every sentence adds value without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage and an output schema present, the description compensates well for parameters but lacks behavioral context. The output schema likely covers return values, so completeness is adequate but could be improved with more usage or behavioral details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for both parameters: 'include_folders: Whether to include folder entries (years/months)' and 'limit: Maximum number of sessions to return.' This clarifies their purposes beyond the schema's titles, though it could provide more context on default values or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get DJ history sessions from rekordbox.' It specifies the resource (history sessions) and source (rekordbox), but doesn't explicitly differentiate from sibling tools like 'get_recent_sessions' or 'search_history_sessions', which would require more specific scope or method details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. With siblings like 'get_recent_sessions' and 'search_history_sessions', the description lacks context on differences in scope, filtering, or use cases, leaving the agent to infer based on tool names alone.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of 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.
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.
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.
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.
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.
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_tracksC
Get the most played tracks in the library.
Args: limit: Maximum number of tracks to return
Returns: List of most played tracks
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool retrieves data ('Get'), implying it's a read operation, but doesn't disclose behavioral traits such as whether it requires authentication, how it handles empty libraries, if it's cached or real-time, or potential rate limits. The description adds minimal context beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The 'Args' and 'Returns' sections are structured clearly, with no wasted words. However, the lack of usage guidelines or additional context slightly reduces efficiency, but it remains concise overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is somewhat complete. It covers the basic purpose and parameter semantics adequately. However, without annotations and with minimal behavioral transparency, it leaves gaps in understanding how the tool behaves in practice, making it just viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning for the 'limit' parameter by explaining it's the 'Maximum number of tracks to return,' which clarifies its purpose beyond the schema's basic type and default. However, schema description coverage is 0%, and the description doesn't cover other potential implicit parameters (e.g., sorting order or time range), so it partially compensates but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the most played tracks in the library.' It specifies the verb ('Get') and resource ('most played tracks'), distinguishing it from siblings like 'get_top_rated_tracks' or 'get_unplayed_tracks' by focusing on play count. However, it doesn't explicitly differentiate from all siblings (e.g., 'get_history_stats' might overlap), so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether a library must be loaded), exclusions, or comparisons to siblings like 'get_history_stats' or 'get_library_stats', which might offer similar data. This leaves the agent to infer usage from the purpose alone.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are 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.
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.
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.
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.
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.
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_tracksC
Get all tracks in a specific playlist.
Args: playlist_id: The unique playlist identifier
Returns: List of tracks in the playlist
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states it 'Get[s] all tracks' but doesn't disclose behavioral traits like whether this is a read-only operation, if it requires authentication, rate limits, pagination behavior, or error handling. The description is minimal and lacks critical operational context for a tool that likely interacts with a playlist system.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with three sentences: purpose, args, and returns. It's front-loaded with the core function. However, the 'Args' and 'Returns' sections could be integrated more smoothly, and some redundancy exists (e.g., 'playlist' repeated). Overall efficient but with minor structural improvements possible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 parameter), no annotations, and an output schema exists (so return values are documented elsewhere), the description is somewhat complete but has gaps. It covers the basic purpose and parameter semantics but lacks usage guidelines and behavioral transparency, making it inadequate for optimal agent operation without external context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining 'playlist_id' as 'The unique playlist identifier', which clarifies beyond the schema's generic 'Playlist Id' title. However, it doesn't cover format (e.g., string pattern), validation, or examples, leaving gaps. With one parameter, the baseline is 4, but incomplete compensation reduces it to 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'tracks in a specific playlist', making the purpose explicit. It distinguishes from siblings like 'get_playlists' (which lists playlists) and 'get_track_details' (which gets metadata for individual tracks). However, it doesn't specify if this returns all tracks at once or uses pagination, which slightly limits differentiation from other track-fetching tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention siblings like 'get_playlists' (to first find playlist IDs) or 'search_tracks' (for broader searches), nor does it specify prerequisites (e.g., needing a valid playlist_id from elsewhere). The context is implied but not explicit.
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
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns a list of recent history sessions, which is basic output information, but lacks details on permissions, rate limits, pagination, or error handling. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by structured 'Args' and 'Returns' sections. There's no wasted text, but the structure could be slightly more integrated (e.g., merging the first sentence with the Args section) for optimal flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and incomplete behavioral details, it doesn't fully prepare an agent for safe and effective use, especially compared to siblings with similar functions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter 'days': it explains it as 'Number of days to look back' with a default of 30. Since schema description coverage is 0% (the schema only provides type and title), the description compensates well by clarifying the parameter's purpose and default value, though it could add more on constraints or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get recent DJ history sessions within the specified number of days.' It specifies the verb ('Get'), resource ('DJ history sessions'), and scope ('recent... within specified number of days'). However, it doesn't explicitly differentiate from sibling tools like 'get_history_sessions' or 'search_history_sessions', which prevents a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_history_sessions' or 'search_history_sessions' for comparison, nor does it specify prerequisites or exclusions. The only implied usage is for retrieving recent sessions, but this is too vague for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_session_tracksB
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
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it 'Get[s] all tracks' and returns a 'List of tracks in the session with performance context,' which hints at read-only behavior and output format. However, it lacks details on permissions, rate limits, pagination, error handling, or what 'performance context' entails (e.g., timestamps, ratings). For a tool with no annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by structured 'Args' and 'Returns' sections. It's efficient with no redundant information. However, the 'Args' and 'Returns' formatting, while clear, could be slightly more integrated into a single narrative flow, preventing a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which likely defines the return structure), the description doesn't need to detail return values extensively. However, with no annotations and only basic parameter documentation, it lacks completeness for behavioral aspects like error cases or usage constraints. It's adequate but has clear gaps, making it a minimum viable description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter: 'session_id: The session's unique identifier.' Since schema description coverage is 0% (the schema only has a title 'Session Id'), this compensates well by explaining the parameter's purpose. With 0 parameters, the baseline would be 4, but here it effectively documents the one parameter, earning a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get') and resource ('all tracks from a specific DJ history session'), making the purpose unambiguous. It distinguishes from siblings like 'get_history_sessions' (which lists sessions) and 'get_track_details' (which gets details for individual tracks). However, it doesn't explicitly differentiate from 'get_playlist_tracks' (which also gets tracks from a collection), so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'from a specific DJ history session,' suggesting this is for retrieving tracks associated with a historical session rather than a playlist or other collection. However, it doesn't explicitly state when to use this versus alternatives like 'get_playlist_tracks' or 'get_recent_sessions,' nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_rated_tracksB
Get the highest rated tracks in the library.
Args: limit: Maximum number of tracks to return
Returns: List of top rated tracks
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions returning a list of tracks but lacks details on what 'highest rated' entails (e.g., rating criteria, sorting order), whether results are paginated, or if there are rate limits. For a read operation with zero annotation coverage, this leaves significant gaps in understanding the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first, followed by brief sections for args and returns. Every sentence adds value, and there's no redundant information. A slight improvement could be integrating the args/returns more seamlessly, but it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, read-only operation), the description is adequate but incomplete. It lacks details on rating criteria, sorting, or output format, though the presence of an output schema mitigates the need to explain return values. Without annotations, it should do more to clarify behavioral aspects, making it minimally viable but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter 'limit' by explaining it as 'Maximum number of tracks to return,' which clarifies its purpose beyond the schema's basic type and default. With 0% schema description coverage, this compensates well, though it doesn't specify constraints like minimum/maximum values or how ties in ratings are handled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Get the highest rated tracks in the library,' which is a specific verb+resource combination. It distinguishes itself from siblings like 'get_most_played_tracks' or 'get_unplayed_tracks' by focusing on rating rather than play count or other metrics. However, it doesn't explicitly mention what 'highest rated' means (e.g., based on user ratings, internal scores), which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios where this is preferred over 'get_racks_by_key' or 'search_tracks,' nor does it specify prerequisites like requiring a connected database or existing library. Without such context, users must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_track_detailsB
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
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions returning 'detailed track information including metadata, cue points, and play history,' which hints at read-only behavior, but doesn't clarify permissions, rate limits, error handling, or data freshness. This is a significant gap for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, starting with a clear purpose statement followed by structured sections for Args and Returns. Every sentence adds value, with no redundant information, though the formatting could be slightly more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the core purpose and parameter semantics adequately, though it lacks behavioral details like error cases or usage context, which would be beneficial for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful context for the single parameter 'track_id' by explaining it as 'The unique track identifier,' which clarifies its purpose beyond the schema's minimal title 'Track Id.' With 0% schema description coverage, this compensates well, though it doesn't specify format or constraints like length or pattern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('detailed information about a specific track'), making it easy to understand what it does. However, it doesn't explicitly differentiate from sibling tools like 'get_track_file_path' or 'search_tracks', which also retrieve track-related information but with different scopes or filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_track_file_path' (for file paths) and 'search_tracks' (for broader searches), there's no indication that this tool is for detailed metadata of a single track identified by ID, 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_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
| Name | Required | Description | Default |
|---|---|---|---|
| track_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves a file path but doesn't disclose critical traits: whether it's read-only (implied by 'Get' but not explicit), what happens if the track_id is invalid (e.g., errors or null returns), or any permissions/rate limits. The description adds minimal context beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by structured 'Args' and 'Returns' sections. Every sentence earns its place by providing essential information without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, simple retrieval) and the presence of an output schema (implied by 'Returns' note), the description is minimally complete. It covers the basic operation and parameter meaning but lacks behavioral details (e.g., error handling) and usage guidelines, which are gaps for a tool with no annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the input schema. The schema has 0% description coverage (only 'Track Id' as a title), but the description explains that 'track_id' is 'The unique track identifier,' clarifying its purpose. With 1 parameter and no schema descriptions, this compensation is adequate, though it could detail format (e.g., numeric vs. string).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get the file system path for a specific track.' It uses a specific verb ('Get') and resource ('file system path'), and distinguishes itself from siblings like 'get_track_details' by focusing on file paths rather than track metadata. However, it doesn't explicitly differentiate from 'search_tracks_by_filename', which might also involve file paths.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'get_track_details' (which might include path info) or 'search_tracks_by_filename', nor does it specify prerequisites like requiring a valid track ID from another tool. Usage is implied only by the tool name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tracks_by_bpm_rangeB
Get tracks within a specific BPM range.
Args: bpm_min: Minimum BPM bpm_max: Maximum BPM
Returns: List of tracks within the BPM range
| Name | Required | Description | Default |
|---|---|---|---|
| bpm_min | Yes | ||
| bpm_max | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool retrieves tracks but doesn't disclose behavioral traits such as whether it's read-only, requires authentication, has rate limits, returns paginated results, or handles edge cases like invalid BPM values. The description is minimal and lacks critical operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose, followed by structured 'Args' and 'Returns' sections. There's no wasted text, but the structure could be more integrated (e.g., merging the first sentence with the sections) for better flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters) and the presence of an output schema (implied by 'Returns: List of tracks'), the description is somewhat complete but lacks depth. It covers basic purpose and parameters but misses behavioral details and usage guidelines, which are important for a tool with no annotations and multiple siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'bpm_min' is the 'Minimum BPM' and 'bpm_max' is the 'Maximum BPM', clarifying the parameters' roles in defining a range. However, it doesn't specify units, valid ranges, or whether values are inclusive/exclusive, leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get tracks within a specific BPM range.' It specifies the verb ('Get') and resource ('tracks'), and the BPM range adds specificity. However, it doesn't explicitly differentiate from sibling tools like 'get_tracks_by_key' or 'search_tracks', which could also filter tracks by different criteria.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_tracks_by_key' or 'search_tracks', nor does it specify prerequisites, exclusions, or optimal contexts for BPM-based filtering. Usage is implied but not articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tracks_by_keyC
Get all tracks in a specific musical key.
Args: key: Musical key (e.g., "5A", "12B")
Returns: List of tracks in the specified key
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns a list of tracks, but doesn't describe key behaviors such as whether this is a read-only operation, if it requires authentication, how it handles invalid keys, or if there are rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operational traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the core purpose stated first, followed by structured 'Args' and 'Returns' sections. Every sentence adds value, and there's no redundant information. It could be slightly more concise by integrating the sections into a single paragraph, but it's efficient overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which likely defines the return structure), the description doesn't need to explain return values in detail. However, with no annotations and low schema coverage, it lacks context on behavioral aspects like error handling or performance. It's adequate for a simple query tool but misses opportunities to clarify usage and constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the input schema by explaining that 'key' is a 'Musical key' with examples like '5A', '12B', and clarifying it returns a list of tracks. However, with 0% schema description coverage, the schema only defines 'key' as a string without context. The description compensates somewhat but doesn't fully detail parameter constraints or formats, keeping it at a baseline level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get all tracks in a specific musical key.' It specifies the verb ('Get') and resource ('tracks'), and distinguishes it from siblings like 'get_tracks_by_bpm_range' by focusing on musical key. However, it doesn't explicitly differentiate from 'search_tracks' or 'get_track_details', which could also involve track retrieval, so it's not fully sibling-distinctive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose this over 'search_tracks' (which might allow broader queries) or 'get_track_details' (for individual tracks), nor does it specify prerequisites like needing a connected database. Usage is implied only by the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unplayed_tracksB
Get tracks that have never been played.
Args: limit: Maximum number of tracks to return
Returns: List of unplayed tracks
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns a list of unplayed tracks but doesn't cover aspects like whether this is a read-only operation, how it handles large datasets, pagination, or potential performance impacts. The description is minimal and lacks critical behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with the purpose stated first, followed by clear sections for args and returns. It avoids unnecessary details, though the structure could be slightly more integrated. Every sentence adds value, making it efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is somewhat complete but lacks depth. It covers the basic purpose and parameter semantics but misses behavioral context and usage guidelines, leaving gaps for an AI agent to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the input schema by explaining that 'limit' is the 'Maximum number of tracks to return,' which clarifies its purpose. Since schema description coverage is 0% and there's only one parameter, this compensates well. However, it doesn't detail default behavior or constraints beyond the basic explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get tracks that have never been played.' It specifies the verb ('Get') and resource ('tracks that have never been played'), making the action distinct. However, it doesn't explicitly differentiate from siblings like 'get_most_played_tracks' or 'get_top_rated_tracks', which are related but not identical in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention scenarios where this is preferred over other tools like 'search_tracks' or 'get_racks_by_key', nor does it specify prerequisites or exclusions. Usage is implied by the purpose but lacks explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_track_from_playlistAIdempotent
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
| Name | Required | Description | Default |
|---|---|---|---|
| playlist_id | Yes | ||
| track_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond annotations: the '⚠️ CAUTION: This modifies your rekordbox database!' warning emphasizes the mutation impact, which annotations only partially cover (readOnlyHint=false, destructiveHint=false). It also mentions the return value ('Result of the operation'), though output schema exists. However, it doesn't detail idempotency (implied by annotation) or specific error behaviors, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: the core purpose is stated first, followed by a caution note, then parameter and return sections. Every sentence earns its place—no redundancy or fluff. The bullet-point format for Args/Returns enhances readability without wasting space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with database impact), annotations cover safety aspects (readOnlyHint=false, idempotentHint=true, destructiveHint=false), and an output schema exists, the description is reasonably complete. It adds crucial behavioral warnings and parameter context. However, it lacks explicit usage prerequisites or error handling details, slightly reducing completeness for a mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description compensates by listing both parameters (playlist_id, track_id) with brief explanations ('ID of the playlist to modify', 'ID of the track to remove'). This adds meaning beyond the bare schema, clarifying what each ID represents. However, it doesn't provide format details, validation rules, or examples, keeping it at baseline adequacy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Remove a track from a playlist') with specific verb and resource, making the purpose immediately understandable. It distinguishes from siblings like 'add_track_to_playlist' by specifying removal rather than addition. However, it doesn't explicitly differentiate from 'delete_playlist' (which removes entire playlists) or other playlist-modifying tools, keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing valid playlist and track IDs), compare with similar tools like 'delete_playlist' for entire playlist removal, or specify error conditions. The caution note about database modification is behavioral, not usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_history_sessionsB
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| year | No | ||
| month | No | ||
| min_tracks | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns a list of matching sessions but doesn't mention important behavioral aspects like whether this is a read-only operation, pagination behavior, error conditions, rate limits, or authentication requirements. The description is minimal and lacks behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It starts with a clear purpose statement, then provides a parameter section with concise explanations, and ends with a return value statement. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters with 0% schema description coverage but an output schema exists, the description provides adequate parameter semantics but lacks behavioral context. The description compensates for the schema gap with parameter explanations but doesn't address behavioral aspects that would be important for a search operation (like result ordering, pagination, or error handling).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explicitly lists all 5 parameters with brief explanations, providing meaningful semantic context beyond the schema's 0% description coverage. It clarifies what each parameter filters (e.g., 'year: Filter by year'), though it could provide more detail about format expectations (e.g., month as '08' for August is helpful but could mention two-digit format requirement).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Search DJ history sessions with various filters,' which is a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'get_history_sessions' or 'get_recent_sessions,' which appear to be related read operations on the same resource type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_history_sessions' or 'get_recent_sessions.' It mentions 'various filters' but doesn't specify what makes this tool distinct from other history-related tools in the sibling list.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| artist | No | ||
| title | No | ||
| genre | No | ||
| key | No | ||
| bpm_min | No | ||
| bpm_max | No | ||
| rating_min | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, 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.
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.
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.
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.
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.
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_filenameB
Search for tracks by filename.
Args: filename: Filename to search for (partial match)
Returns: List of tracks matching the filename
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the search uses partial matching, which is useful context beyond basic functionality. However, it lacks details on permissions, rate limits, pagination, or error handling, leaving gaps for a search operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by structured sections for args and returns. It avoids unnecessary words, but the 'Args' and 'Returns' labels could be more integrated into the flow. Overall, it's efficient with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one parameter) and the presence of an output schema (which handles return values), the description is reasonably complete. It covers the purpose, parameter semantics, and return type. However, it could benefit from more behavioral context, such as search scope or limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'filename' is for partial matching, which clarifies the parameter's behavior beyond the schema's basic type definition. Since there's only one parameter, this is sufficient to elevate the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'Search for tracks by filename' with a specific verb ('search') and resource ('tracks'), and it distinguishes from generic 'search_tracks' by specifying the search criterion. However, it doesn't explicitly differentiate from other filename-related tools like 'get_track_file_path' beyond the search action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search_tracks' (which likely searches by other criteria) or 'get_track_file_path' (which retrieves a specific file path). The description only states what it does, not when it's appropriate compared to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_track_idsC
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
| Name | Required | Description | Default |
|---|---|---|---|
| track_ids | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the tool validates IDs and returns results, but lacks details on behavioral traits like what constitutes a 'valid' ID (e.g., format, existence in a database), error handling for invalid inputs, or performance aspects like rate limits. The description is minimal and does not compensate for the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by structured sections for Args and Returns. It is concise with no wasted words, though the lack of detailed guidance or behavioral context means it could be more informative without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (single parameter, validation function) and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and low schema coverage, it lacks completeness in explaining validation criteria, error cases, or integration with sibling tools, leaving room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds basic semantics by explaining that 'track_ids' is a 'List of track IDs to validate', which clarifies the parameter's purpose beyond the schema's array of strings. However, it does not provide details on ID format, constraints, or examples, leaving gaps in understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Validate a list of track IDs and show which are valid/invalid.' It specifies the verb (validate) and resource (track IDs), but does not explicitly differentiate it from sibling tools like 'get_track_details' or 'search_tracks', which might also involve track ID validation indirectly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing track IDs from other tools, or compare it to siblings like 'get_track_details' that might validate IDs as part of their operation. Usage is implied only by the purpose statement.
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.
5 tool updates
v1.0.0- Added
add_track_to_playlist - Added
add_tracks_to_playlist - Added
create_playlist - Added
delete_playlist - Added
remove_track_from_playlist
20 tool updates
- First observed
analyze_library - First observed
connect_database - First observed
get_history_sessions - First observed
get_history_stats - First observed
get_library_stats - First observed
get_most_played_tracks - First observed
get_playlist_tracks - First observed
get_playlists - First observed
get_recent_sessions - First observed
get_session_tracks - First observed
get_top_rated_tracks - First observed
get_track_details - First observed
get_track_file_path - First observed
get_tracks_by_bpm_range - First observed
get_tracks_by_key - First observed
get_unplayed_tracks - First observed
search_history_sessions - First observed
search_tracks - First observed
search_tracks_by_filename - First observed
validate_track_ids
TDQS
Scored across 25 tools
Most tools have distinct purposes with clear boundaries, such as playlist management vs. track retrieval vs. analysis. However, some overlap exists between 'add_tracks_to_playlist' and 'add_track_to_playlist', which could cause confusion about when to use the batch vs. single operation, and between 'get_history_sessions' and 'get_recent_sessions', which differ only in time scope. Descriptions help clarify these distinctions, but the overlap is noticeable.
Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly. Examples include 'create_playlist', 'delete_playlist', 'get_track_details', and 'search_tracks'. This predictability makes it easy for agents to understand and navigate the toolset without confusion from mixed conventions.
With 25 tools, the count is borderline high for a rekordbox management server, potentially feeling heavy. While many tools are justified for comprehensive library and playlist operations, some could be consolidated (e.g., the two add-to-playlist tools) to reduce complexity. It's not extreme, but it approaches the upper limit of what's manageable.
The toolset provides complete coverage for rekordbox management, including CRUD for playlists (create, get, delete, add/remove tracks), extensive track retrieval (by BPM, key, rating, etc.), history session analysis, library statistics, and search capabilities. There are no obvious gaps; agents can perform all core workflows from database connection to detailed track manipulation and analysis.
Maintenance
Related MCP Connectors
Remote MCP server for full read/write access to a Zotero library
MCP server for Yoto: manage cards, tracks, icons and family devices from any MCP client.
The official Planning Center MCP server for interacting with your ministry's data.
Related MCP Servers
- MIT
- AlicenseBqualityBmaintenanceConnects Ableton Live to Claude AI through the Model Context Protocol, enabling AI-assisted music production by allowing Claude to directly interact with and control Ableton Live sessions.162,201 PyPI3,048MIT
- AlicenseNot gradedqualityAmaintenanceThis MCP server provides access to DEVONthink functionality via the Model Context Protocol (MCP). It enables listing, searching, creating, modifying, and managing records and databases in DEVONthink Pro on macOS.33 npm105GPL 3.0
- AlicenseAqualityDmaintenanceA comprehensive MCP server for rekordbox database management with real-time database access, enabling track search, playlist operations, library analytics, and DJ history retrieval.31MIT