A Model Context Protocol server that provides tools for interacting with Toggl time tracking
Server has 4 tools with complete input schemas and basic descriptions. Naming follows verb_noun convention (start_tracking, stop_tracking, list_workspaces, show_current_time_entry). However, descriptions are minimal (10-50 chars), lacking context on WHEN to use each tool, prerequisites, or what the LLM should expect. Parameter descriptions exist but are sparse. No output schema documentation visible. Error handling returns text responses but lacks structured guidance for LLM recovery. start_tracking has reasonable parameter coverage (title, workspace_id, project_id, tags) with types, but descriptions don't explain constraints or defaults. Tools operating on the same resource (start/stop/show) have clear naming distinction. No evidence of pagination, batching, or result limits for list_workspaces.
List all available workspaces
Show the currently running time entry, if any
Start tracking time for a new task
Stop the currently running time entry
Tool descriptions are too brief (10-50 chars) and lack context. 'Start tracking time for a new task' does not explain when to use this vs show_current_time_entry, what happens if a task is already running, or what fields are returned. LLMs cannot reliably select the right tool without richer descriptions.
No output schema documentation. The code returns TextContent with emoji-formatted text, but the LLM has no formal schema describing what fields (entry ID, workspace, start time, duration) are in the response. This forces the LLM to parse unstructured text.
Parameter descriptions lack constraint details. 'workspace_id' is marked optional but no guidance on what happens if omitted (defaults to user's default workspace). 'tags' is an array but no limit on count or string length. 'project_id' has no explanation of valid range or how to discover valid IDs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | 2026-07-28+ | v2 |
list_workspaces has no pagination or result limit parameters. If a user has hundreds of workspaces, the response could be massive. No indication of whether results are capped or how to handle large result sets.
Error handling returns plain text with emoji but no structured guidance. When start_tracking fails with 'Error starting time tracking: <exception>', the LLM has no hint whether to retry, ask the user, or try a different tool. No error classification (retryable vs fatal).