Server has 8 tools with basic naming and descriptions, but significant gaps in schema completeness, parameter documentation, and error handling. Tool names follow verb_noun convention (get_*, add_*, edit_*, delete_*, store_*), which is good. However, descriptions are minimal (10-50 chars for most tools), parameter descriptions lack detail about formats/constraints, and output schemas are not documented. Error handling is present but generic. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. The store_output tool is a security concern, accepts arbitrary file paths without validation.
Add a timesheet entry for a specific project, activity, and date. The date format is YYYY-MM-DD.
Delete a timesheet entry by its ID.
Edit a timesheet entry for a specific project, activity, and date. The date format is YYYY-MM-DD.
Get all activities available to be filled in the timesheet for a specific project
Get all issues available to be filled in the timesheet for a specific project
Get all projects available to be filled in the timesheet
Parameter descriptions lack format/constraint details. 'date' params say 'YYYY-MM-DD' in tool description but not in parameter schema. 'hours' has no min/max bounds. LLMs cannot infer valid ranges.
store_output accepts arbitrary file_name without path validation. LLM could write to parent directories (../../../etc/passwd) or overwrite critical files. No sanitization visible in code.
Output schemas not documented. Tools return Pydantic models (Project, Activity, TimesheetEntry) but LLM has no schema reference. Cannot plan downstream tool calls or extract fields reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Get all timesheet entries for a specific date range. The date format is YYYY-MM-DD.
Store text output into a file.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools have clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE) but MCP spec annotations are absent. LLM cannot reason about safety.
Error handling is generic. delete_timesheet catches all exceptions and returns string. No guidance on retryability, user-fixable vs fatal errors, or recovery steps.