> ## Documentation Index
> Fetch the complete documentation index at: https://docs.brama.work/llms.txt
> Use this file to discover all available pages before exploring further.

# Whoop

> Recovery, sleep, cycle та workout дані через AI-агента – Whoop API v2, Shared App OAuth.

<Note>
  **Status: live.** 10 read-only MCP tools на Whoop API v2.
</Note>

## Як це працює

Whoop інтеграція – **Shared App** OAuth. Brama тримає **один** Whoop developer app; ти просто натискаєш Connect, проходиш Whoop consent, і агент отримує read-only доступ до твоїх Whoop-даних.

Brama персистить access + refresh токени **зашифрованими** (envelope encryption, ключ поза базою). Whoop ротує refresh-токен при кожному оновленні; Brama персистить ротовані токени автоматично – повторний consent при звичайній роботі не потрібен.

<Note>
  **Раніше підключені tenant'и:** інтеграція мігрувала з Full BYO (per-tenant dev app) на Shared App 2026-05-30. Якщо ти підключав Whoop до цього – підключи знову через **Connect** (попередні токени були видані твоїм власним Whoop-app і не сумісні з новим Brama-app).
</Note>

## Підключення

### 1. Connect

[`app.brama.work`](https://app.brama.work) → **Integrations → Whoop** → натисни **Connect Whoop**.

Тебе перенаправить на Whoop consent screen – підтвердиш доступ до recovery / sleep / cycles / workout / profile / body measurements (read-only). Brama отримає токени, зашифрує їх і поверне тебе на сторінку інтеграції зі статусом **active**.

### 2. Запит

У своєму MCP клієнті (Claude Desktop, Gemini CLI – див. [Connect a client](/connect)):

> Який у мене recovery score сьогодні за Whoop?

Агент викличе `brama_whoop_get_recovery_summary` і поверне recovery score, HRV та resting heart rate.

## MCP tools (live)

Усі 10 tools – **read-only**, на Whoop API v2. Нічого не змінюють у Whoop.

### Recovery

<Card title="brama_whoop_get_recovery_summary" icon="heart-pulse">
  Останні recovery-записи tenant'а: `recovery_score` (0–100), HRV (RMSSD, ms), resting heart rate (bpm), дата.

  **Параметри:** `limit` *(optional – default 1, max 25)* – скільки останніх записів повернути.
</Card>

<Card title="brama_whoop_get_recovery_for_cycle" icon="heart-pulse">
  Recovery-запис для конкретного фізіологічного циклу.

  **Параметри:** `cycle_id` *(required, int64)* – з `brama_whoop_get_cycle_summary` чи `brama_whoop_get_recovery_summary`.
</Card>

### Sleep

<Card title="brama_whoop_get_sleep_summary" icon="moon">
  Останні sleep-записи: performance / efficiency / consistency (%), тривалість у ліжку та за стадіями (light / REM / slow-wave), respiratory rate, кількість disturbances.

  **Параметри:** `limit` *(optional – default 1, max 25)*.
</Card>

<Card title="brama_whoop_get_sleep_by_id" icon="moon">
  Конкретна sleep-активність за UUID – повний розклад стадій + `sleep_needed`.

  **Параметри:** `sleep_id` *(required, UUID)* – з `brama_whoop_get_sleep_summary`.
</Card>

### Cycles

<Card title="brama_whoop_get_cycle_summary" icon="rotate">
  Останні фізіологічні цикли (від початку сну до наступного початку сну): day strain (0–21), kilojoules, avg / max heart rate.

  **Параметри:** `limit` *(optional – default 1, max 25)*.
</Card>

<Card title="brama_whoop_get_cycle_by_id" icon="rotate">
  Конкретний цикл за int64 ID.

  **Параметри:** `cycle_id` *(required, int64)*.
</Card>

### Workouts

<Card title="brama_whoop_get_workouts" icon="dumbbell">
  Останні тренування: strain (шкала 0–21), avg / max heart rate, спалені kilojoules, дистанція, altitude.

  **Параметри:** `limit` *(optional – default 3, max 25)*.
</Card>

<Card title="brama_whoop_get_workout_by_id" icon="dumbbell">
  Конкретне тренування за UUID – з тривалістю за heart-rate зонами.

  **Параметри:** `workout_id` *(required, UUID)* – з `brama_whoop_get_workouts`.
</Card>

### Profile

<Card title="brama_whoop_get_profile" icon="user">
  Whoop user profile tenant'а: `user_id`, `email`, `first_name`, `last_name`.

  **Параметри:** немає.
</Card>

<Card title="brama_whoop_get_body_measurements" icon="ruler">
  Body measurements: height (m), weight (kg), max heart rate (bpm).

  **Параметри:** немає.
</Card>

## Безпека

* **Shared App** – Brama тримає один OAuth app; client\_id / secret лежать у env (не в твоєму tenant blob'і). Твої access + refresh токени належать тільки тобі.
* Токени зашифровані at rest, ключі поза базою; на диск не пишуться, у пам'яті лише на час запиту; у логи не потрапляють.
* Whoop ротує refresh-токен при кожному оновленні – Brama персистить ротовані токени, тому повторний consent при звичайній роботі не потрібен.
* Кожен tenant ізольований – твої Whoop-дані недосяжні іншим tenant'ам.
* **Read-only** – tools нічого не змінюють у Whoop.

## Питання

Питання? Напиши `viktor@brama.work`.
