Skip to main content
Glama
davehenke

rekordbox-mcp

search_history_sessions

Search DJ history sessions in rekordbox using filters like date, track count, and keywords to find specific performances.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryNo
yearNo
monthNo
min_tracksNo
limitNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Implementation Reference

  • The handler function decorated with @mcp.tool() that implements the search_history_sessions tool. It connects to the database if needed, retrieves all history sessions, applies filtering logic for query, year, month, and minimum track count, sorts by date descending, and returns the top limited results as dictionaries.
    @mcp.tool()
    async def search_history_sessions(
        query: str = "",
        year: Optional[str] = None,
        month: Optional[str] = None,
        min_tracks: Optional[int] = None,
        limit: int = 50
    ) -> List[Dict[str, Any]]:
        """
        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
        """
        await ensure_database_connected()
        
        sessions = await db.get_history_sessions(include_folders=False)
        
        # Apply filters
        filtered_sessions = []
        for session in sessions:
            # Text search
            if query and query.lower() not in session.name.lower():
                continue
                
            # Date filters
            if session.date_created:
                if year and not session.date_created.startswith(year):
                    continue
                if month and year:
                    month_str = f"{year}-{month.zfill(2)}"
                    if not session.date_created.startswith(month_str):
                        continue
            elif year or month:
                # Skip if date filters specified but no date available
                continue
                
            # Track count filter
            if min_tracks and session.track_count < min_tracks:
                continue
                
            filtered_sessions.append(session)
        
        # Sort by date, most recent first
        filtered_sessions.sort(key=lambda x: x.date_created or "", reverse=True)
        return [session.model_dump() for session in filtered_sessions[:limit]]
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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

The description clearly states the tool's purpose 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.

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives 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.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

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

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

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