Skip to main content
Glama

WHOOP Recoveries

whoop_list_recoveries
Read-onlyIdempotent

List WHOOP recoveries by sleep start time descending, returning recovery score, HRV, RHR, SpO2, and skin temperature; requires read:recovery scope.

Instructions

List WHOOP recoveries sorted by related sleep start time descending. Returns recovery score, HRV, RHR, SpO2 and skin temperature when scored. Requires read:recovery scope. Not medical advice.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endNoISO 8601 date-time with timezone, e.g. 2026-04-30T00:00:00Z
limitNoWHOOP page size. WHOOP allows a maximum of 25.
startNoISO 8601 date-time with timezone, e.g. 2026-04-30T00:00:00Z
all_pagesNoFetch multiple pages up to max_pages.
max_pagesNoMaximum pages to fetch when all_pages is true.
next_tokenNoWHOOP pagination token returned by a previous call.
privacy_modeNoOptional per-call payload privacy override. Defaults to WHOOP_PRIVACY_MODE or structured. raw returns full WHOOP API payloads, not raw device sensor streams.
response_formatNomarkdown
explicit_user_intentNoRequired true when privacy_mode=raw (agent escalation of redaction).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYes
recordsYes
endpointYes
has_moreYes
next_tokenNo
privacy_modeYes
pages_fetchedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.6.6
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. Changed2 schema fields changedv0.6.5
    • changedInput schema / properties / end / pattern
      Previous value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
    • changedInput schema / properties / start / pattern
      Previous value: -"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
  3. Addedv0.6.1
  4. Removedv0.5.4
  5. First observedv0.5.3

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare a safe read-only, idempotent, non-destructive operation, so the bar is lower. The description adds useful behavior beyond that: descending sort by related sleep start time and the specific fields returned (score, HRV, RHR, SpO2, skin temperature) only 'when scored', which flags nullable output. It omits pagination behavior despite dedicated page parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, all front-loaded: ordering first, then returned data, then access requirement and disclaimer. Every clause carries information and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema and rich annotations already cover return shape and safety, so the description need not explain them. It correctly covers ordering, field availability, and the scope requirement; only pagination semantics across all_pages/max_pages/next_token are left entirely to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 89%, so the schema already documents the date range, limit, pagination and privacy parameters thoroughly. The description adds no parameter-level meaning (e.g. how start/end bound recoveries, or the interaction of all_pages with next_token), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource (list WHOOP recoveries) with the sort order and the fields returned, so it is immediately distinguishable from the singular whoop_get_cycle_recovery. It stops short of naming the trend sibling or explicitly contrasting with it, so it is clear but not fully sibling-differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the prerequisite scope ('Requires read:recovery scope'), which is real context, but gives no guidance on when to prefer this list over whoop_get_cycle_recovery, whoop_recovery_trend, or whoop_daily_summary. Usage is implied rather than explained.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.