Scoring was not performed
Tool descriptions are too brief (10-55 chars) and lack WHEN-to-use context. Rubric baseline: 194 chars average. Examples: 'List all muscle groups' (23 chars), 'Delete a muscle group' (21 chars), 'List all workouts' (17 chars). LLMs cannot discriminate between similar tools (e.g., list_exercises vs list_workout_exercises) without richer context.
Output schemas are not documented in source code. The evaluation can see input parameter schemas (name, vn_name, muscle_group_id, etc.) but cannot find documentation of what these tools return. Rubric states: 'Document the output schema. LLMs need to know what fields to expect.' Without output docs, agents cannot chain tools effectively.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 16 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
Parameter descriptions lack detail on constraints, formats, and validation rules. Example: 'date' parameter in create_workout is described only as 'ISO 8601 date of the workout (e.g. 2026-03-07)'. No mention of required format, range, or invalid value handling. Rubric: 'Describe the expected format, range, and allowed values directly in the parameter description.'
No error handling or recovery guidance documented. Rubric states: 'Error responses must tell the LLM what to do next.' No evidence of try-catch, validation errors, or actionable error messages in tool implementations visible in source. Agents cannot recover from failures (e.g., invalid muscle_group_id, duplicate entries, constraint violations).
Destructive tools (delete_*) lack confirmation/dry-run support. Rubric: 'Irreversible operations should support a dry-run or confirmation step.' Agents can call delete_muscle_group, delete_exercise, delete_workout, delete_workout_exercise, delete_set without warning or undo capability. No idempotent guarantees documented.
No documented result limits or pagination. Tools like list_exercises, list_workouts, list_sets may return unbounded lists. Rubric: 'Even if the API allows returning thousands of items, cap results at a reasonable limit (e.g. 20-50).' No limit parameter visible, no total_count or next_cursor in output schema, risk of context explosion.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) detected. Per MCP protocol and rubric, tools should declare their risk profile to guide agent behavior. delete_* tools should be marked destructive, list_* should be marked read-only.
Bilingual parameter names (name/vn_name for English/Vietnamese) lack guidance on when/how to use each. LLMs may pass both, one, or the wrong one. Rubric: 'When one parameter's valid values depend on another, document this in both parameter descriptions.'
No audit logging or user attribution visible in source. Rubric: 'Log who called what tool, with which parameters, at what time, and what happened. Agent-initiated actions must be traceable for compliance.' Auth is implemented for REST API but no indication tools log agent actions.