An MCP server that integrates with the Whoop API to provide health data analysis for therapeutic insights, including recovery trends, sleep analysis, stress indicators, and activity patterns
The server defines 5 tools with reasonable structure and consistent naming patterns. All tools start with action verbs (get_, analyze_) and have descriptions ranging from 95-158 characters, which falls within the baseline range. However, several definition quality issues reduce the score: parameter descriptions lack constraint details (date format patterns are present in schema but not emphasized in descriptions), no output schemas are documented, and error handling is not visible in the tool definitions. The tools all have proper JSON Schema input definitions with type declarations and descriptions, but lack guidance on error recovery, retryability, and what outputs users should expect.
Analyze workout patterns, exercise habits, and their relationship to mental health and behavioral insights
Analyze week-over-week trends in recovery, sleep, or strain metrics to identify patterns relevant for therapy
Analyze sleep quality, patterns, and their impact on mental health for therapeutic conversations
Analyze physiological stress markers from HRV, resting heart rate, and recovery patterns to identify mental health concerns
Get a comprehensive health summary for therapy sessions including recovery trends, sleep analysis, stress indicators, and actionable insights
No output schemas documented for any tool. LLMs cannot infer what fields will be returned, limiting their ability to chain tools and extract relevant data.
Parameter descriptions lack actionable constraints. Example: 'Start date in YYYY-MM-DD format' appears in schema pattern but not emphasized in description text. Descriptions should state min/max for days, valid metric values for analyze_health_trends enum explicitly.
No error handling guidance visible in tool definitions. Descriptions do not explain failure modes (e.g., invalid date range, user_id not found, insufficient data for analysis) or recovery steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 66 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 34 | - | v1 |
analyze_health_trends metric parameter lacks enum constraint in visible schema. Description says 'recovery, sleep, or strain' but no formal constraint prevents LLM from passing invalid values like 'strength' or 'endurance'.
All tools accept optional user_id parameter but no guidance on what happens when omitted (defaults to authenticated user) or what error occurs if user_id is invalid.