Skip to main content
Glama

WHOOP Recovery Trend

whoop_recovery_trend
Read-onlyIdempotent

Determine if your recovery is trending up or down by aggregating WHOOP recovery metrics over the last N days into trend statistics: average, min, max, slope, direction.

Instructions

Aggregate WHOOP recovery over the last N days (default 30) into a per-metric trend for recovery score, HRV (hrv_rmssd_milli) and resting heart rate.

Each metric returns { avg, min, max, slope, direction, n_valid } where slope is a least-squares fit over the chronologically ordered scored records (oldest to newest) and direction is rising, falling, stable or insufficient_data. Use this to answer "is my recovery trending up or down?" without paging the raw collection yourself. Read-only; fetches recent WHOOP v2 records, computes statistics, stores nothing. Not medical advice.

Input Schema

NameRequiredDescriptionDefault
daysNoNumber of days to aggregate into the trend. Minimum 2 (slope needs two points), maximum 30. Defaults to 30.
timezoneNoIANA timezone reserved for display, e.g. America/New_York.UTC
response_formatNomarkdown

Output Schema

NameRequiredDescriptionDefault
kindYes
metricsYes
diagnosticYes
data_qualityYes
generated_atYes
lookback_daysYes

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. Addedv0.6.1
  3. Removedv0.5.4
  4. First observedv0.5.3

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds genuinely non-redundant behavior: it fetches WHOOP v2 records, computes least-squares slopes over chronologically ordered records, stores nothing, and carries a 'not medical advice' caveat. The return-field enumeration overlaps the output schema, keeping it just short of a 5.

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?

Front-loaded with purpose and scope, then a structured paragraph on return shape. Every sentence carries information, though the { avg, min, max, slope, direction, n_valid } enumeration partially duplicates the output schema and could be trimmed.

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?

For a read-only aggregation tool with an output schema, no required params, and full annotation coverage, this description is complete: it states the computation method, the record ordering, the no-storage behavior, and the intended question it answers. Nothing an agent needs to invoke or interpret it correctly is missing.

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 67%: the days parameter (min 2, max 30, default 30) and timezone are well documented in the schema, while response_format's enum is documented only by the schema itself. The description's mention of 'last N days (default 30)' repeats what the schema already says, adding little. Baseline 3 for moderate-to-high coverage is appropriate.

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?

States a specific verb (aggregate) and resource (WHOOP recovery) with explicit scope (last N days, default 30) and names the exact metrics produced (recovery score, HRV, resting heart rate). This clearly distinguishes it from raw-listing siblings like whoop_list_recoveries and from whoop_sleep_trend, which covers a different resource.

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?

Provides a concrete use case ('answer "is my recovery trending up or down?"') and contrasts with the alternative approach of paging the raw collection yourself. It lacks an explicit when-not condition or a named sibling, but the context for choosing this over whoop_list_recoveries is clear.

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