Skip to main content
Glama

get_activity_data

Retrieve your top applications and websites by time spent from RescueTime, including productivity classifications for each activity.

Instructions

Get top activities/applications by time spent.

Args: date_str: Date to query - 'today', 'yesterday', or 'YYYY-MM-DD' limit: Maximum number of activities to show (default: 10)

Shows which specific applications and websites you spent time on, ranked by duration. Includes productivity classification for each.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
date_strNotoday
limitNo

Implementation Reference

  • The primary handler function for the 'get_activity_data' MCP tool. It is decorated with @mcp.tool() for automatic registration, fetches top activity data from the RescueTime API using RescueTimeClient, processes and formats the results with productivity indicators and durations, handles errors, and returns a formatted string summary of top activities.
    @mcp.tool()
    async def get_activity_data(date_str: str = "today", limit: int = 10) -> str:
        """Get top activities/applications by time spent.
    
        Args:
            date_str: Date to query - 'today', 'yesterday', or 'YYYY-MM-DD'
            limit: Maximum number of activities to show (default: 10)
    
        Shows which specific applications and websites you spent time on,
        ranked by duration. Includes productivity classification for each.
        """
        try:
            client = RescueTimeClient()
            resolved_date = resolve_date(date_str)
    
            activities = await client.get_analytic_data(
                restrict_kind="activity",
                perspective="rank",
                restrict_begin=resolved_date,
                restrict_end=resolved_date,
            )
    
            if not activities:
                return f"No activity data for {resolved_date}."
    
            lines = [f"Top Activities ({resolved_date}):", ""]
    
            for i, act in enumerate(activities[:limit], 1):
                prod_indicator = {
                    2: "[++]",
                    1: "[+ ]",
                    0: "[  ]",
                    -1: "[ -]",
                    -2: "[--]",
                }.get(act.productivity, "[??]")
    
                duration = format_duration(act.time_seconds)
                lines.append(f"{i:2}. {prod_indicator} {act.name}")
                lines.append(f"      {duration} | {act.category or 'Uncategorized'}")
    
            # Show totals
            total_seconds = sum(a.time_seconds for a in activities)
            lines.append("")
            lines.append(f"Total: {format_duration(total_seconds)} across {len(activities)} activities")
    
            return "\n".join(lines)
    
        except RescueTimeAuthError as e:
            return f"Authentication error: {e}"
        except RescueTimeAPIError as e:
            return f"API error: {e}"
  • Helper function used by get_activity_data to resolve date strings like 'today' or 'yesterday' into ISO date format for API queries.
    def resolve_date(date_str: str) -> str:
        """Resolve 'today', 'yesterday', or return as-is."""
        if date_str.lower() == "today":
            return date.today().isoformat()
        elif date_str.lower() == "yesterday":
            return (date.today() - timedelta(days=1)).isoformat()
        return date_str
  • Helper function used by get_activity_data to format time durations from seconds into human-readable 'Xh Ym' format.
    def format_duration(seconds: int) -> str:
        """Format seconds as 'Xh Ym'."""
        return format_hours_minutes(seconds / 3600)

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/JasonBates/rescuetime-mcp'

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