Skip to main content
Glama

whoop-mcp

Lokaler MCP-Server für die WHOOP API v2. Läuft vollständig auf dem eigenen Rechner: Recovery, Schlaf, Strain und Workouts stehen in Claude als Tools zur Verfügung, ein täglicher Sync legt eine lokale Historie an und schreibt einen JSON-Export fürs eigene Dashboard.

Was es kann

Tool

Zweck

whoop_summary

Kombinierter Tagesüberblick aus Recovery, Schlaf und Strain

whoop_recovery

Recovery Score, HRV, Ruhepuls, SpO2, Hauttemperatur

whoop_sleep

Dauer, Schlafphasen, Performance, Konsistenz, Atemfrequenz

whoop_cycles

Tages-Strain, Kalorien, Ø- und Maximalpuls

whoop_workouts

Trainings mit Strain, HF-Zonen, Distanz, Kalorien

whoop_body

Größe, Gewicht, maximale Herzfrequenz

whoop_history

Langzeitauswertung aus der lokalen Datenbank, mit Trendvergleich

whoop_sync

Daten abrufen, lokal speichern, Export schreiben

Einheiten werden alltagstauglich umgerechnet: Millisekunden zu Stunden, Kilojoule zu Kilokalorien, Meter zu Kilometern. Die Rohantworten bleiben in der Datenbank erhalten.

Related MCP server: whoop-mcp

Voraussetzungen

Eine App im WHOOP Developer Dashboard mit dieser Redirect URL:

http://localhost:8765/callback

und diesen Scopes:

offline  read:recovery  read:cycles  read:sleep  read:workout
read:body_measurement  read:profile

offline ist zwingend erforderlich — ohne diesen Scope gibt WHOOP keinen Refresh Token heraus und die Verbindung müsste stündlich erneuert werden.

Installation

git clone https://github.com/d00ennis/whoop-mcp.git
cd whoop-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .

Einrichtung

whoop-mcp setup     # Client ID und Secret hinterlegen (landen im Schlüsselbund)
whoop-mcp auth      # Browser öffnet sich, Zugriff einmal bestätigen
whoop-mcp sync      # erster Abruf, standardmäßig 90 Tage rückwirkend
whoop-mcp status    # Konfiguration und Datenbestand prüfen

In Claude einbinden

In ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "whoop": {
      "command": "/PFAD/ZU/whoop-mcp/.venv/bin/whoop-mcp",
      "args": ["serve"]
    }
  }
}

Danach Claude neu starten.

Täglicher Sync

Per launchd oder Cron, zum Beispiel jeden Morgen um 6:30 Uhr:

30 6 * * * /PFAD/ZU/whoop-mcp/.venv/bin/whoop-mcp sync >> ~/.whoop-mcp/sync.log 2>&1

Wo die Daten liegen

Was

Wo

Client ID, Secret, Tokens

macOS-Schlüsselbund (Dienst whoop-mcp)

Historie

~/.whoop-mcp/whoop.db (SQLite)

Export fürs Dashboard

~/.whoop-mcp/whoop.json

Über WHOOP_MCP_DATA_DIR und WHOOP_MCP_EXPORT_PATH lassen sich Verzeichnis und Exportpfad verlegen.

Aufbau

config.py      Pfade, Scopes, Secret-Speicher (Schlüsselbund mit Datei-Fallback)
auth.py        OAuth-Flow, lokaler Callback-Server, Token-Rotation
client.py      HTTP-Client: Pagination, 401-Refresh, 429-Backoff
normalize.py   Rohantworten zu flachen Datensätzen mit sinnvollen Einheiten
aggregate.py   Tageszusammenführung, Durchschnitte, Trends
store.py       SQLite-Historie, idempotente Upserts
sync.py        Abgleich und JSON-Export
server.py      MCP-Tools

Tests

pip install -e ".[dev]"
pytest

Lizenz und Datenschutz

Private Nutzung. Es werden keine Daten an Dritte übertragen — siehe PRIVACY.md.

Available Tools

9 tools
whoop_bodyA

Koerpermasse aus WHOOP: Groesse, Gewicht und maximale Herzfrequenz.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so the description bears full burden. It only lists the returned fields (height, weight, max HR) but discloses no behavioral traits such as read-only nature, authentication requirements, rate limits, or side effects.

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?

Single, short German sentence conveying the purpose without any wasted words. Information is front-loaded and efficient.

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?

Given zero parameters and the existence of an output schema (which likely defines return structure), the description adequately covers the tool's purpose and data fields. Slight improvement possible by adding units or time context, but not necessary.

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?

Input schema has no parameters and 100% coverage. With 0 parameters, baseline is 3. The description adds no parameter-level meaning but does list the returned fields, which is acceptable.

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

Purpose5/5

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

The description clearly states that the tool retrieves body measurements (height, weight, max heart rate) from WHOOP, using a specific verb (implied get) and resource. It distinguishes from sibling tools which cover different domains like recovery, sleep, workouts, etc.

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?

No explicit guidance on when to use this tool versus alternatives. The distinct resource (body measurements) implies usage when that data is needed, but there is no mention of prerequisites, when not to use, or comparisons with siblings.

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

whoop_cyclesC

Tages-Strain, Kalorienverbrauch sowie durchschnittliche und maximale Herzfrequenz.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so description must convey behavioral traits. It does not explicitly state read-only or any side effects, permissions, or limitations. It only lists output fields.

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

Conciseness3/5

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

One sentence listing three data fields. It is efficient but could be more structured. No wasted words, but also no additional context.

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

Completeness2/5

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

Though an output schema exists, the description omits what constitutes a 'cycle' and provides no usage context. The parameter 'days' is crucial but undefined.

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

Parameters1/5

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

Parameter 'days' has no description in schema (0% coverage) and the tool description does not mention it at all. The agent cannot determine its purpose or valid values.

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?

The description lists the data returned (daily strain, calories, heart rate) which implies it retrieves cycle metrics. The name 'whoop_cycles' reinforces this. However, it lacks a direct verb+resource statement like 'get cycles data'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus siblings like whoop_recovery or whoop_summary. No when-not or alternative suggestions.

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

whoop_historyB

Langfristige Auswertung aus der lokalen Datenbank statt aus der API.

Schnell und ohne Rate-Limit, benoetigt aber einen vorherigen Sync. Mit metric (etwa "hrv_ms", "recovery_score", "strain", "asleep_hours") kommt zusaetzlich ein Trendvergleich zurueck.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
metricNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It covers source (local DB), speed, rate limit, and prerequisite sync, but misses details on permission requirements, whether data is read-only, and what happens without metric. Leave room for improvement.

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?

The description is brief (three short sentences) and front-loads the primary purpose. Each sentence adds value, though the structure could be more streamlined.

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

Completeness3/5

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

Given the simple two-parameter interface and presence of an output schema, the description reasonably covers the tool's purpose and key functionality. However, it lacks explicit differentiation from sibling tools and full detail on return values, leaving some gaps.

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 coverage is 0%, so the description must compensate. It gives examples for the metric parameter and implies days via default, but does not explicitly describe the days parameter or its effect. Partial but not comprehensive.

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?

The description states it performs long-term evaluation from a local database rather than the API, and mentions returning a trend comparison when a metric is provided. While it clearly indicates the data source and distinguishes from API-based tools, the exact scope of 'history' is somewhat vague.

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?

The description mentions a prerequisite (prior sync) and performance benefits (fast, no rate limit), but does not explicitly state when to use this tool versus siblings like whoop_recovery or whoop_sleep. Usage context is implied but not fully articulated.

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

whoop_lifeos_updateA

Recovery, Schlaf und Strain ins Life-OS-Dashboard schreiben.

Aktualisiert nur die Whoop-Felder; Strava-Aktivitaeten, Gewicht und Ernaehrung bleiben unberuehrt. Vor dem Schreiben wird eine Sicherung angelegt. Mit dry_run werden die Aenderungen nur angezeigt.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided; description discloses backup creation before writing and dry_run behavior, but does not detail permissions, destructiveness, or whether updates are incremental or overwriting.

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?

Three concise sentences in German, front-loaded with the main purpose, followed by constraints and dry_run behavior. No unnecessary words.

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?

For a simple tool with one parameter and an output schema (signal present), the description covers the key actions, constraints, and safety feature (backup), making it adequately complete.

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?

With only one parameter (dry_run) and 0% schema coverage, the description effectively explains its purpose: 'Mit dry_run werden die Aenderungen nur angezeigt.' This adds value beyond the schema.

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?

The description clearly states the tool writes recovery, sleep, and strain into the Life-OS dashboard, distinguishing itself from sibling tools by specifying it only updates Whoop fields and leaves others untouched.

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?

The description mentions what the tool does not affect (Strava activities, weight, nutrition) and dry_run mode, but lacks explicit guidance on when to use this tool versus siblings or when not to use it.

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

whoop_recoveryC

Recovery Score, HRV, Ruhepuls, SpO2 und Hauttemperatur der letzten Tage.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only lists return data and does not mention that the tool is read-only, any authentication requirements, rate limits, or data freshness. The lack of behavioral context is a significant gap.

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?

The description is a single, short sentence that front-loads the key metrics. It is concise but omits important details like parameter usage and behavioral notes. Every word earns its place, but the brevity comes at the cost of completeness.

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

Completeness3/5

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

Given the tool has an output schema (not shown), the description does not need to explain return structure. However, it does not specify the time range precisely (e.g., 'last few days' is vague) or any prerequisites. For a simple data retrieval tool, it is adequate but not thorough.

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

Parameters2/5

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

The only parameter (days, default 7) has no schema description (0% coverage). The description mentions 'der letzten Tage' (recent days) but does not explain that the 'days' parameter controls how many days back to fetch. It adds minimal value beyond the schema.

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?

The description clearly lists the specific metrics (Recovery Score, HRV, resting pulse, SpO2, skin temperature) and implies a retrieval operation for recent days. It distinguishes itself from siblings like whoop_sleep (sleep data) and whoop_workouts (workout data). However, it lacks an explicit verb like 'get' or 'retrieve', which slightly reduces clarity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus its siblings (e.g., whoop_summary, whoop_sleep). The description does not mention use cases, prerequisites, or exclusions, leaving the agent to infer context.

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

whoop_sleepC

Schlafdauer, Schlafphasen, Performance, Konsistenz und Atemfrequenz.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It merely lists metrics without disclosing behavioral traits such as data granularity, time range, or response format. With an output schema present, the description fails to clarify what the tool returns or any side effects.

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

Conciseness3/5

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

The description is concise (a single line), but it lacks structure. It reads as a list rather than a coherent sentence. While not verbose, it could be improved by adding a verb and parameter context.

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

Completeness2/5

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

Given the existence of an output schema and multiple sibling tools, the description is incomplete. It does not explain what the output contains or how to distinguish from related tools. The single parameter and list of metrics are insufficient for context.

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

Parameters1/5

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

The input schema has one parameter 'days' with 0% description coverage. The description does not mention this parameter, its purpose, or how it affects results. The description adds no value beyond the schema itself.

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

Purpose3/5

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

The description lists sleep-related metrics (duration, phases, performance, consistency, respiratory rate) but lacks an explicit verb stating what the tool does (e.g., retrieves, gets). This makes it somewhat vague, though the list implies the tool provides sleep data. The purpose is clearer than a tautology but not specific enough to distinguish from siblings like whoop_summary.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as whoop_recovery, whoop_summary, or whoop_cycles. There is no mention of context, prerequisites, or exclusions.

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

whoop_summaryA

Kombinierter Tagesueberblick: Recovery, Schlaf und Strain je Tag.

Das Standard-Tool fuer Fragen wie "Wie war meine Woche?". Liefert pro Tag einen Datensatz plus Durchschnitte und Trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

The description indicates the tool is read-only (provides data) and aggregates averages and trends. With no annotations, it carries the full burden but does not detail any side effects, authorization needs, or limitations. It is adequate but not extensive.

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?

The description is two sentences, front-loading the core functionality and a use case. Every sentence adds value with no redundancy.

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?

Given one parameter and an existing output schema, the description adequately covers the tool's purpose and use. It mentions the combined metrics (recovery, sleep, strain) and usage context, though it could add more about behavioral aspects.

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?

The description explains that the output includes per-day data plus averages and trends, implying the 'days' parameter controls the range. It adds meaningful context beyond the schema, which only has a title and default.

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

Purpose5/5

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

The description clearly states the tool provides a combined daily overview of recovery, sleep, and strain. It explicitly labels it as the standard tool for weekly summaries, distinguishing it from sibling tools that focus on individual metrics.

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

Usage Guidelines4/5

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

The description gives a clear usage context: 'The standard tool for questions like 'How was my week?''. This guides the agent to use it for broad overviews, implying sibling tools are for more specific queries. However, it does not explicitly list when not to use it.

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

whoop_syncB

Daten von WHOOP in die lokale Datenbank holen und den Life-OS-Export schreiben.

Ohne days wird ab dem letzten Sync nachgeholt.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must convey behavioral traits. It mentions fetching and writing, but omits details on side effects like overwriting data, rate limits, or required permissions. Insufficient for safe invocation.

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?

Two concise sentences, front-loaded with the main purpose. Efficient use of words, though some behavioral details could be added without significant bloat.

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

Completeness3/5

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

Adequately covers basic functionality and default sync behavior, but lacks information on what data types are synced, prerequisites, and conflict handling. Given the output schema exists but is not visible, completeness is moderate.

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?

Describes the default behavior when 'days' is null, adding meaning beyond the schema. However, it does not explain the effect of providing an integer value (e.g., number of days to sync).

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?

The description clearly states it fetches WHOOP data and writes to local database and exports, identifying action and resource. However, it does not explicitly distinguish from sibling tools that focus on specific data types.

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?

Provides guidance on using without 'days' to catch up from last sync, but lacks comparison to sibling tools like whoop_recovery, leaving the agent guessing when to prefer this tool over alternatives.

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

whoop_workoutsA

Trainingseinheiten mit Strain, Herzfrequenzzonen, Distanz und Kalorien.

Mit sport laesst sich auf eine Sportart filtern, etwa "running".

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
sportNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool returns strain, heart rate zones, distance, and calories, but does not mention data freshness, pagination, or any constraints such as rate limits or data availability. The transparency is adequate but not thorough.

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?

The description is two sentences, front-loaded with the core purpose, and every sentence adds value. No wasted words.

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?

Given the tool has only two optional parameters and an output schema (not shown but exists), the description covers the main output fields and the filter option. Sibling tools are distinct, so the context is sufficient for an agent to understand when to use this tool.

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 0%, so the description must add meaning. It explains the 'sport' parameter (filtering by sport type like 'running') but does not explain the 'days' parameter beyond its default value of 14. One of two parameters is partially explained, which is helpful but incomplete.

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

Purpose5/5

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

The description clearly states that the tool retrieves workouts with specific metrics (Strain, heart rate zones, distance, calories) and mentions the ability to filter by sport. This distinguishes it from sibling tools that deal with recovery, sleep, cycles, etc.

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?

The description implies usage for fetching workout data and filtering by sport, but does not provide explicit guidance on when to use this tool versus siblings like whoop_summary or whoop_recovery. No when-not-to-use or alternative suggestions are given.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv0.1.0
    • First observedwhoop_body
    • First observedwhoop_cycles
    • First observedwhoop_history
    • First observedwhoop_lifeos_update
    • First observedwhoop_recovery
    • First observedwhoop_sleep
    • First observedwhoop_summary
    • First observedwhoop_sync
    • First observedwhoop_workouts

TDQS

B3.4/5.0
Disambiguation5/5

Each tool targets a distinct data category (recovery, sleep, cycles, workouts, body, history) or operation (sync, Life-OS update), with clear descriptions that eliminate ambiguity. The summary tool provides an overarching view but does not overlap with specific metric tools.

Naming Consistency5/5

All tools follow the consistent pattern 'whoop_<descriptive_noun>', with only 'whoop_lifeos_update' using a compound noun, which is still uniform and predictable.

Tool Count5/5

With 9 tools, the set is well-scoped for a health/fitness MCP server, covering essential data retrieval, history, and synchronization without unnecessary bloat.

Completeness4/5

The domain of WHOOP data is well-covered: recovery, sleep, strain, workouts, body metrics, and historical trends are all present. Minor gaps like account info or raw intraday data might be missing, but core user needs are met.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/d00ennis/whoop-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server