Features Integrations AI & API Pricing Blog Docs
Overview WHOOP Oura Withings Apple Health Glucose Hevy Lab Tests Training Data Weekly Recap REST API AI & Claude MCP Server

Connect WHOOP, Apple Health & Your Health Data to Claude

Use the hosted VitalTrends MCP connector to let Claude read your WHOOP, Apple Health, Oura, Withings and Hevy data. Nothing to install and no config files to edit: add one custom connector in Claude and sign in with your VitalTrends API key.

Result: Ask Claude "Summarize my sleep and recovery over the last 7 days" and it fetches your data from VitalTrends before answering.
Old setup no longer supported. Earlier guides told you to install an npm package and edit claude_desktop_config.json. Please don't do that anymore; use the hosted connector below.

Supported AI clients

Prerequisites

The hosted server URL is https://mcp.vitaltrends.net/mcp.


Setup: Claude

1
Create a VitalTrends API key

Sign in to VitalTrends, open Settings → Developer and find API access. Create or copy your personal API key and keep it private; anyone with the key can read your data. Leave Allow workout write access off for read-only use. Enable it to grant workout:write when you want the AI to create, edit, import, or delete workouts and manage exercise names.

VitalTrends API access page with the token redacted. Keep workout write access off for read-only use.
2
Add the VitalTrends custom connector in Claude

In Claude, open Settings → Connectors and choose Add (or Add custom connector). Enter VitalTrends as the name and https://mcp.vitaltrends.net/mcp as the server URL, then continue.

Claude Settings with the Add control highlighted in the Connectors section.
Claude Add custom connector form with the VitalTrends name, server URL and Continue button highlighted.

Claude then shows the detected authentication settings (Sign in now and Register automatically). Keep the detected defaults and add the connector. Don't enter a made-up OAuth client or header.

Claude custom connector authentication settings for VitalTrends.
3
Authenticate with your API key

If Claude asks you to confirm, select Continue connecting. On the VitalTrends Connect VitalTrends page, paste your API key and select Connect. When you see the success page, return to Claude.

Claude confirmation page before continuing the connector setup.
VitalTrends API-key entry page with the key field and Connect button highlighted.
VitalTrends confirmation that the connector is connected.
4
Enable it and ask a question

Start a new Claude conversation, open Search and tools and make sure VitalTrends is enabled. Then try one of the questions below.


Example questions


Available tools

CategoryToolAPI routeDescription
WHOOP get_whoop_daily /whoop/daily Recovery score, HRV, resting heart rate, sleep performance, sleep duration, and strain, one row per day
WHOOP get_whoop_recovery_status /whoop/recovery-status Advisory recovery freshness, sync, and upstream update timestamps
WHOOP get_whoop_workouts /whoop/workouts Workout history with sport name, duration, strain, average and max heart rate, and distance
WHOOP get_whoop_sleep /whoop/sleep Sleep sessions with stages, score, duration, and performance metrics
Workouts get_unified_workouts /workouts/unified Cross-source workout feed deduplicated into sessions, with session_id, canonical provider fields, source_records, field_sources, and optional include=heart_rate_series overlays
Workouts get_hevy_workouts /workouts/hevy Hevy workout records with nested exercises and sets
Oura get_oura_daily_sleep /oura/daily-sleep Daily sleep scores and sleep score contributors
Oura get_oura_sleep /oura/sleep Sleep sessions with stages, duration, HRV, heart rate, and respiratory rate
Oura get_oura_daily_readiness /oura/daily-readiness Daily readiness scores, temperature deviation, and readiness contributors
Oura get_oura_daily_activity /oura/daily-activity Activity scores, calories, steps, distance, active minutes, and activity contributors
Oura get_oura_workouts /oura/workouts Workout sessions with activity, intensity, source, calories, distance, and timestamps
Oura get_oura_daily_spo2 /oura/daily-spo2 Daily SpO2 averages and breathing disturbance index
Oura get_oura_daily_stress /oura/daily-stress Daily stress, recovery, and Oura day summary
Oura get_oura_daily_resilience /oura/daily-resilience Daily resilience level and resilience contributors
Oura get_oura_vo2_max /oura/vo2-max VO2 max estimates by day
Withings get_withings_measurements /withings/measurements Weight and body composition: weight, body fat, muscle mass, and bone mass readings
Apple Health get_apple_health_daily_summary /apple-health/daily-summary Everything for a single day in one call: activity, heart and vitals including wrist temperature, sleep stages, body, and workouts
Apple Health get_apple_health_daily /apple-health/daily Daily Apple Health aggregates: steps, active and basal energy (kcal), distance (km), heart rate, HRV, resting heart rate, SpO2, wrist temperature, and sleep duration
Apple Health get_apple_health_samples /apple-health?type=<type> Per-type Apple Health time series, including type=sleeping_wrist_temp for wrist temperature, with optional metadata for sleep stages and workout details
Summary get_summary /summary Cross-source aggregate: avg/min/max recovery, HRV, resting heart rate, sleep performance, avg strain, workout count, current weight, and body composition
WHOOPget_whoop_cyclesGET /cyclesWHOOP cycles, strain, and timing
WHOOPget_whoop_bodyGET /bodyWHOOP body measurements
Withingsget_withings_sleepGET /withings/sleepsSleep Analyzer sessions
Glucoseget_glucoseGET /glucoseCGM analytics, time in range, AGP, and daily context
Glucoseget_glucose_readingsGET /glucose/readingsPaginated raw glucose readings
Trainingget_workout_logsGET /workout-logsCanonical Training Log sessions
Trainingget_workout_logGET /workout-logs/{id}One session with exercises, sets, and media
Trainingget_muscle_group_usageGET /training/muscle-groups/usageLifted volume and workout count by muscle group
Trainingget_exercise_catalogGET /training/exercisesNames, duplicate suggestions, safe matches, and merge history
Trainingget_exercise_historyGET /training/exercises/{exerciseKey}Exercise progression and session history
Workout writescreate_workout_logPOST /workout-logsCreate a structured workout or preview deduplication
Workout writesimport_workout_logsPOST /workout-logs/importImport agent rows, MacroFactor CSV, or a base64 XLSX workbook
Workout writesupdate_workout_logPATCH /workout-logs/{id}Edit session title, notes, date, and timing
Workout writesreplace_workout_log_exercisesPUT /workout-logs/{id}/exercisesReplace the entire exercise and set tree
Workout writesdelete_workout_logDELETE /workout-logs/{id}Delete an editable session
Workout writesupload_workout_mediaPOST /workout-mediaUpload a base64 image to attach using its returned media ID
Exercise writesrename_exercisePATCH /training/exercises/renameRename matching history and preserve the old name as an alias
Exercise writesmerge_exercisesPOST /training/exercises/mergeCombine selected exercise names with an audit record
Exercise writesmerge_safe_exercisesPOST /training/exercises/merge-safeApply selected safe matches from the catalog
Exercise writesmark_exercises_differentPOST /training/exercises/differentDismiss incorrect duplicate suggestions
Exercise writesadd_exercise_aliasPOST /training/exercises/{exerciseKey}/aliasesMatch a personal alias on future imports
Exercise writesdetach_exercise_aliasDELETE /training/exercises/merges/{mergeRecord}/aliases/{sourceKey}Detach a name from an audited merge
Exercise writesundo_exercise_mergePOST /training/exercises/merges/{mergeRecord}/undoUndo an eligible merge within 30 days
Exercise writesset_exercise_muscle_groupPATCH /training/muscle-groups/{exerciseKey}Correct personal muscle-group classification

Most list tools accept optional start and end parameters as YYYY-MM-DD dates or ISO 8601 datetimes, plus per_page (1-200, default 50) and page (1-indexed).

get_whoop_recovery_status takes no arguments and is advisory freshness metadata only; use get_whoop_daily to decide whether today's WHOOP recovery plus sleep row is available. get_apple_health_daily_summary accepts date and optional comma-separated types such as activity,heart,sleep,body,workouts. get_apple_health_samples requires a type value.


Read tool parameters

ToolParameters and behavior
get_glucoseChoose one range mode: range="24h", days (integer 1-365), or both start and end as YYYY-MM-DD dates. Omit all three modes for the default 30 days. Optional selected_date selects a Day Explorer date. No pagination.
get_glucose_readingsAccepts the usual date and pagination parameters. Optional include is a comma-separated string: metadata, hk_device, or metadata,hk_device. Device details may be null on the v2 pipeline.
get_workout_logsAccepts date and pagination parameters, source (hevy, macrofactor, agent, or manual), and exercise_key. Set include="exercises" for exercises, sets, media, and sources. A date-only end is midnight at the start of that date; use an explicit end-of-day datetime with a timezone offset to include the whole final day.
get_workout_logRequires id, the Training Log UUID returned by get_workout_logs. Returns one session with exercises, sets, media, and sources.
get_muscle_group_usagePass all_time=true without dates, or provide both start_date and end_date as inclusive YYYY-MM-DD dates in your profile timezone. No pagination.
get_exercise_catalogTakes no arguments. Returns personal exercise keys, merge suggestions, safe-match IDs, and merge history.
get_exercise_historyRequires exercise_key from get_exercise_catalog; do not substitute an exercise display name or workout UUID.

Workout writes and coverage

The connector exposes 44 tools: 30 reads and 14 writes. Read tools work with a read-only API key. All workout and exercise writes require Allow workout write access (workout:write); otherwise the API returns 403. Ask the AI to review proposed changes before modifying or deleting data.

Example requests: "Preview importing this workout, then show me what would change", "Correct the end time of yesterday's imported workout", or "Show likely duplicate exercise names and let me choose which to merge".

This is not complete website parity. Lab reports, weekly recaps, Control Center, provider connection management, billing, account settings, CSV export jobs, and share-link management remain website workflows without corresponding public MCP tools. The API exposes synced data, not provider write-back or workout-program planning.

Troubleshooting

The API-key page says the key is invalid

Check that you copied the complete key without spaces. Regenerate it in Settings → Developer if needed.

Claude cannot find any data

Confirm a source is connected and synced in Settings → Connections, and that the API key belongs to the same account.

A new sync is missing from an existing chat

Start a new Claude conversation. Claude can cache tool results within a chat.

The connector does not appear or connect

Confirm your Claude plan supports remote custom connectors, remove any incomplete duplicate connector, and add the URL again. On Team or Enterprise, an organization owner may need to enable it first.

Claude shows different menu labels

Open Settings → Connectors and use the current Add or Add custom connector action. Labels may change while the feature is in beta.

Slow responses

Narrow the date range in your prompt (e.g. "last 30 days" instead of "all time").

More: Anthropic: custom connectors using remote MCP.