MCP tool

whoop_profile

Who the connected account belongs to, plus the body measurements a calculation needs when it has to normalise by mass or heart-rate reserve.

What it returns

FieldMeaning
Name and emailFrom the WHOOP account.
WHOOP user idUseful when reconciling with other exports.
HeightCentimetres.
WeightKilograms.
Max heart rateWHOOP's figure for you, not the 220-minus-age estimate.

Parameters

None. This tool takes no arguments.

Example

YouWhat heart-rate zones should I be using?
Assistant → whoop_profile()
Your WHOOP max heart rate is 187 bpm, so a five-zone split gives you: Z1 up to 112, Z2 112–131, Z3 131–150, Z4 150–168, Z5 168+. Worth noting that's measured rather than the 220-minus-age estimate, which would have put you at 181 and shifted every zone down.

Sample output

Tools return markdown, not JSON — it costs roughly a third of the tokens and models reason over tables more reliably than nested objects.

markdown returned to the model
## WHOOP profile

- **Name:** Jane Doe
- **Email:** jane@example.com
- **User ID:** 10129384
- **Height:** 174 cm
- **Weight:** 68.4 kg
- **Max heart rate:** 187 bpm

_Data by WHOOP._
Data by WHOOP

Questions this answers

  • “Which WHOOP account is connected here?”
  • “Work out my heart-rate zones from my actual max.”
  • “What was my average power-to-weight on that ride?”

Notes and gotchas

  • Body measurements need WHOOP's read:body_measurement scope. If it wasn't granted, the profile still returns and the measurements are simply omitted.
  • Takes no parameters.

Call it directly

The endpoint is plain JSON-RPC, so you can test without any client:

curl
curl -s https://fitnesspeak.app/mcp \
  -H "Authorization: Bearer fp_live_YOUR_KEY_HERE" \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "whoop_profile",
         "arguments": {}
       }
     }'

Tool description the model sees

The connected WHOOP account's basic profile (name, email, user id) and body measurements (height, weight, max heart rate). Call this to confirm which WHOOP account is connected, or when a calculation needs the user's weight or max heart rate.

Descriptions say when to call a tool, not just what it does — that trigger wording is what models actually route on.

Use whoop_profile in your assistant

14-day free trial. Card required so there's no second signup at the end; cancel before day 14 and you're charged nothing.