Skip to main content
Glama
jorgedcb

WHOOP MCP Server

by jorgedcb

Get WHOOP sleep

get_sleep

Retrieve WHOOP sleep records including naps and stage summaries, filter by date range, and page results with next_token to review sleep performance.

Instructions

Sleep records (including naps, flagged by nap), newest first. score.stage_summary holds time in each stage in milliseconds; score.sleep_needed breaks down how much sleep was required; sleep_performance_percentage is actual vs needed. Times are UTC with timezone_offset for local conversion. Use start/end to select a date range and next_token to page. WHOOP matches the range against the activity's own start/end window.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endNoLatest record. YYYY-MM-DD is inclusive of that day; ISO datetime is exclusive (local time if no offset)
limitNoNumber of records to return (max 25)
startNoEarliest record, inclusive. YYYY-MM-DD or ISO 8601 datetime; values without an offset are local time
next_tokenNoPagination token from a previous response

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
recordsYes
next_tokenYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full load and does it well: it discloses ordering (newest first), that naps are included and flagged, timezone handling (UTC with timezone_offset), and the non-obvious matching rule that the range is compared against the activity's own start/end window. It does not touch on auth requirements or rate limits, but the core behavioral profile is well covered.

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

Conciseness4/5

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

Five dense sentences, front-loaded with what is returned and its ordering before moving into field semantics, timezone, and pagination. Every sentence carries information, though the middle field-explanation sentence is somewhat packed.

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

Completeness5/5

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

An output schema exists, so return structure needn't be re-explained, yet the description helpfully annotates key fields (stage_summary in ms, sleep_needed, sleep_performance_percentage). Combined with ordering, timezone, and range-matching semantics, an agent has everything needed to call it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description genuinely adds meaning beyond the schema: it explains that start/end select a date window and are matched against the activity's own start/end, and that next_token is for paging. This goes past the schema's terse 'earliest/latest record' wording.

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 (retrieves WHOOP sleep records) and adds distinguishing scope details: records include naps (flagged by `nap`) and are returned newest first, which signals this is a listing tool rather than a single-record fetch. It does not explicitly name siblings like get_sleep_by_id or get_sleep_for_cycle, so an agent must infer the boundary.

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 tells the agent how to drive the tool ('Use start/end to select a date range and next_token to page'), which is useful operational guidance, but never states when to prefer this over get_sleep_by_id or get_sleep_for_cycle. Usage is implied by the paginated list framing rather than declared.

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