MCP Server for extracting Time Doctor time tracking data via AI assistants
This server has 4 tools with mixed quality. All tools have names starting with action verbs (get_, export_), which is correct. Descriptions are present for all tools and most are reasonable length (72-234 chars). However, parameter schemas show inconsistent depth: some parameters lack descriptions entirely (e.g., 'parallel' in export_weekly_csv has description but 'format' enum values are not individually described), and output schemas are completely undocumented, the tool definitions do not state what fields are returned or their types. Error handling is minimal, no recovery guidance, no actionable error messages visible in the source. The code visible in mcp_server.py only shows imports and helper functions; the actual tool registration is cut off mid-function at @app.list_tools(). This means I cannot fully assess tool registration completeness, which caps overall confidence. Based on visible parameter schemas in the tool definitions provided, schemas are partially defined (type object, properties, required fields present) but lack response documentation entirely.
Get today's time tracking data in CSV format. Returns CSV data as text.
Get time tracking data for a date range in CSV or JSON format. Maximum 7 days per request (one week). For longer periods, split into multiple requests (e.g., 30 days = 5 weekly requests). Returns data as text that you can save or analyze. Supports parallel scraping for faster retrieval.
Get time tracking report for a specific date from Time Doctor
Get a quick breakdown of hours by project for a specific date
Output schemas completely undocumented. Tools return data but no schema definition states what fields are returned, their types, or structure. LLMs cannot plan downstream operations or extract structured data without knowing response format.
No error handling or recovery guidance visible in tool definitions. If a tool fails (invalid date format, API timeout, authentication error), there is no description of what could go wrong or how the LLM should recover.
export_today_csv has empty required array and no parameters, making it unclear what it depends on (presumably current user context via environment). Tool should document how it determines 'today' and which user's data is returned.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Parameter 'parallel' in export_weekly_csv has enum values ['auto', 'true', 'false'] but values are strings, not booleans. This is confusing, should be enum with actual boolean values or with string descriptions like 'auto', 'enabled', 'disabled'. LLMs may pass incorrect type.
Parameter descriptions in export_weekly_csv mention 'parallel is 2x faster for recent dates', this is a performance hint, not a functional description. Descriptions should explain WHAT the parameter does (how it changes behavior), not performance characteristics.
Credentials (TD_EMAIL, TD_PASSWORD) are passed via environment variables in Dockerfile, which is correct. However, no documentation in tool descriptions mentions authentication requirements or what happens if credentials are missing/expired.