Bring your WHOOP data into Claude (and any MCP client). Single-file, stdio MCP server built on the WHOOP Developer API v2.
Two tools with clear, actionable descriptions (194 - 200 chars, within baseline 34 - 392 range). Both have proper input schemas with typed parameters and defaults. However, output schemas are completely undocumented, LLMs cannot plan downstream calls or extract fields. No error handling guidance, no parameter constraints (e.g., days 1 - 365), and no tool annotations. Naming is verb-first and clear (whoop_recovery, whoop_sleep), but lacks composition guidance for multi-step workflows.
Get daily WHOOP recovery scores: recovery %, HRV (RMSSD ms), resting heart rate, SpO2, and skin temperature. This is the primary signal for deciding training intensity on a given day. Returns newest first.
Get WHOOP sleep records: total sleep time, sleep performance %, efficiency %, consistency %, time in each stage (REM / slow-wave / light / awake), disturbances, respiratory rate, and sleep debt. Returns newest first.
Output schemas completely undocumented. LLMs cannot infer what fields are returned (e.g., does recovery return 'recovery_percent' or 'recovery_score'?), forcing guesswork and downstream failures.
No parameter constraints documented. 'days' and 'limit' accept any integer; no min/max bounds stated. LLMs may pass days=999 or limit=10000, causing API errors or timeouts.
No error handling guidance. If WHOOP API returns 401, 429, or 404, the tool raises RuntimeError with a message, but LLMs receive no recovery path (e.g., 'retry after 60s' or 'run setup again').
No tool annotations. Tools are read-only (risk: READ_ONLY declared in metadata), but readOnlyHint is not set in the MCP tool definition, so LLMs cannot optimize caching or retry logic.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
No pagination guidance in descriptions. Tools return 'newest first' but do not explain how to fetch older records or handle large result sets. LLMs may not understand the days/limit interaction.