Ask Claude or ChatGPT about your WHOOP data. Recovery, sleep, strain, and workout analysis computed from your own records.
Strong tool naming (all verb-prefixed), comprehensive descriptions (avg 180 chars, well above 10-char minimum), and complete input schemas with types and descriptions. All 17 tools are READ_ONLY annotated. Output schemas are documented in code comments. Key gaps: no explicit error recovery guidance in descriptions, no parameter constraints (enums, ranges) for date/numeric inputs, and no documented output field mappings for chaining. Date parameter descriptions accept multiple formats but lack formal validation rules. Overall solid B-grade execution with room for constraint formalization.
Compare recovery, sleep, strain, and workout metrics between two periods (e.g., "before vs after a training change"). Useful for "did X help" questions.
Initiate OAuth flow to connect a WHOOP account. Opens the user's browser for WHOOP consent, then polls for completion. Call this if get_connection_status reports no authorization.
Fetch WHOOP records by date or ID. Implements the contract ChatGPT connectors require. Accepts date ranges ("last 7 days", "2026-06-01 to 2026-06-30") or specific record IDs.
Map a legacy WHOOP v1 activity id to its v2 UUID. Useful when older exports, links, or integrations refer to an activity by v1_id.
Check whether the WHOOP account is connected and authorized. Returns connection status, user info if connected, and next steps if not.
Date parameters lack formal constraints. 'day' and 'week_of' accept multiple formats (today, yesterday, N days ago, YYYY-MM-DD, ISO datetime) but no enum or regex pattern enforces valid input. LLMs may pass invalid formats like '5 weeks ago' or 'next Monday'.
Numeric range parameters (days: 7-180, limit: 1-500) lack explicit min/max constraints in schema. Descriptions mention ranges but JSON Schema should enforce them with 'minimum' and 'maximum' keywords.
No error recovery guidance in tool descriptions. Tools do not document what to do if authorization fails, API rate limits are hit, or data is unavailable. E.g., get_connection_status says 'returns next steps if not' but does not explain what those steps are.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | <=2025-11-25 | v2 |
Behavior correlations: which daily metrics (sleep, strain, HRV, resting heart rate) correlate with recovery. Useful for "what affects my recovery" questions.
One day of WHOOP data in a single call: recovery score, sleep, day strain, and workouts, with a one-line summary. The best first tool for "how am I doing" or "how did I sleep" questions. `day` accepts: today | yesterday | N days ago | YYYY-MM-DD.
Holistic view: current recovery status + trends + training load + personal records + behavior correlations in one call. Best for "how am I doing overall" questions.
Personal records: best recovery score, longest sleep, highest strain day, most calories burned, etc. over a period.
Get the user's WHOOP profile and body measurements (name, email, height, weight, max heart rate). Set include_raw=true to also attach WHOOP's untouched profile and body-measurement records.
Daily recovery scores over a period, with trend analysis (direction, slope, confidence). Useful for "is my recovery improving" questions.
Minute-level sleep data for one night: heart rate, HRV, respiratory rate, skin temperature, and sleep stage. Useful for detailed sleep analysis.
Daily sleep metrics (hours, performance, efficiency, consistency, debt) over a period, with trend analysis.
Daily strain (cardiovascular load) over a period, with trend analysis and acute/chronic training load ratio.
Monday-to-Sunday report: a per-day grid of recovery, sleep, and strain, plus weekly averages and workout totals. `week_of` accepts: this week | last week | YYYY-MM
Workouts over a date range, with sport, duration, strain, calories, and heart rate zones. Accepts date ranges like "last 7 days", "this month", or explicit start/end dates.
Search WHOOP records by query (e.g., "recovery > 80", "sleep < 6 hours", "strain > 15", "workouts with running"). Returns matching days and workouts. Implements the contract ChatGPT connectors require.
Output schemas not formally documented in tool definitions. Code comments describe transformations (e.g., 'Outputs are compact, transformed dicts') but tool registration does not include explicit output schema declarations. LLMs cannot infer response structure.