> ## 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.

# Oura

> Readiness, sleep, activity, workout, stress, SpO2 та heart rate через AI-агента – Oura API v2, Shared App OAuth.

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

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

Oura інтеграція використовує **Shared App** модель: ти просто натискаєш Connect – Brama тримає власний OAuth-застосунок на developer.ouraring.com, нічого створювати самостійно не треба. Після стандартного Oura consent твоя інтеграція переходить у статус **Active**.

Токени зберігаються **зашифрованими** (ключі поза базою), ізольовано per-tenant. Brama персистить ротовані refresh-токени автоматично – повторний consent при звичайній роботі не потрібен.

<Note>
  **Oura Membership required для Gen 3 і Ring 4.** Для Oura Ring Gen 3 та Ring 4 API доступ потребує активної [Oura Membership](https://cloud.ouraring.com/account/subscriptions) (\$5.99/міс, з 2024). Gen 2 – без обмежень. Якщо Membership неактивна – Brama зберігає токени, але статус інтеграції стане `requires_membership`, і tools покажуть friendly повідомлення замість даних. Активуй Membership і натисни **Re-check Membership** на сторінці інтеграції.
</Note>

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

### 1. Connect

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

Brama редіректить тебе на Oura consent screen – підтвердиш доступ. Після згоди ти повертаєшся у Brama; інтеграція стає `active` (або `requires_membership`, якщо Membership неактивна – див. Note вище).

### 2. Запит

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

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

Агент викличе `brama_oura_get_readiness_summary` і поверне readiness score, HRV, RHR, temperature deviation, sleep balance.

## MCP tools (live)

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

### Readiness

<Card title="brama_oura_get_readiness_summary" icon="heart-pulse">
  Останні readiness-записи tenant'а: `readiness_score` (0–100), HRV balance, average HRV (RMSSD ms), resting heart rate, body temperature deviation (°C), sleep balance, дата.

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

<Card title="brama_oura_get_readiness_by_date" icon="heart-pulse">
  Readiness-запис для конкретної дати.

  **Параметри:** `date` *(required, YYYY-MM-DD)*.
</Card>

### Sleep

<Card title="brama_oura_get_sleep_summary" icon="moon">
  Останні daily-sleep записи: `sleep_score` (0–100) + contributors (restfulness, efficiency, latency, timing, total\_sleep).

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

<Card title="brama_oura_get_sleep_by_id" icon="moon">
  Конкретний sleep-period з повним розкладом фаз (light / REM / deep), bedtime\_start/end, average heart rate, HRV, breath rate.

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

### Activity

<Card title="brama_oura_get_activity_summary" icon="footprints">
  Останні daily-activity записи: `activity_score` (0–100), steps, active\_calories, total\_calories, target\_calories, distance, MET-minutes by zone (low / medium / high).

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

<Card title="brama_oura_get_activity_by_date" icon="footprints">
  Activity-запис для конкретної дати.

  **Параметри:** `date` *(required, YYYY-MM-DD)*.
</Card>

### Workouts

<Card title="brama_oura_get_workouts" icon="dumbbell">
  Останні tracked workouts: тип активності, intensity (easy/moderate/hard), start/end datetime, calories, distance, source (manual / auto\_detected / confirmed).

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

<Card title="brama_oura_get_workout_by_id" icon="dumbbell">
  Конкретне тренування за UUID.

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

### Profile

<Card title="brama_oura_get_profile" icon="user">
  Oura personal info tenant'а: `email`, `age`, `weight_kg`, `height_m`, `biological_sex`.

  **Параметри:** немає.

  <Note>403 з цього endpoint = `requires_membership` стан інтеграції.</Note>
</Card>

### Stress

<Card title="brama_oura_get_stress_summary" icon="activity">
  Daily stress score: `stress_high_minutes`, `recovery_high_minutes`, `day_summary` ("stressful" / "normal" / "restored" / "recovered").

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

### SpO2 (Gen 3 / Ring 4)

<Card title="brama_oura_get_spo2_summary" icon="lungs">
  Daily SpO2 (blood-oxygen saturation) середнє.

  **Параметри:** `limit` *(optional – default 1, max 7)*.

  <Note>Працює тільки на Oura Ring Gen 3 і Ring 4. На старіших Gen 2 рінгах tool поверне friendly повідомлення «not available», не помилку.</Note>
</Card>

### Heart rate

<Card title="brama_oura_get_heartrate_summary" icon="heart">
  Hourly heart-rate buckets за requested window: кожен bucket має `hour` (ISO datetime), `min_bpm`, `avg_bpm`, `max_bpm`, `sample_count`.

  **Параметри:** `start_datetime`, `end_datetime` *(optional, ISO 8601)*. Default window: останні 24h.

  <Note>Oura повертає 5-min interval samples (\~288 на день). Brama агрегує до hourly buckets, щоб LLM context залишався читабельним.</Note>
</Card>

## Безпека

* **Shared App** – Brama тримає єдиний OAuth-застосунок; tenant'у НЕ потрібно створювати власний.
* Токени зашифровані at rest (envelope encryption), ключі поза базою; на диск не пишуться, у пам'яті лише на час запиту; у логи не потрапляють.
* Brama персистить ротовані refresh-токени автоматично – повторний consent при звичайній роботі не потрібен.
* Кожен tenant ізольований – твої Oura-дані недосяжні іншим tenant'ам.
* **Read-only** – tools нічого не змінюють у Oura.

## Питання

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