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
| Name | Required | Description | Default |
|---|---|---|---|
| date_str | No | today | |
| limit | No |
Implementation Reference
- src/rescuetime_mcp/server.py:139-189 (handler)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}"
- src/rescuetime_mcp/server.py:36-43 (helper)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
- src/rescuetime_mcp/server.py:25-27 (helper)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)