Five tools with consistent naming (get_* verbs), comprehensive descriptions (150-250 chars each), and well-structured input schemas. All parameters have type and description. Output schemas are documented in descriptions but not formally in JSON Schema. Error handling is present but generic. Tool composition is clean, each tool has one responsibility. Descriptions are LLM-optimized and include use-case guidance ('Use this when...'). No critical gaps, but output schema documentation could be more formal.
Fetch Oura Ring daily activity metrics. Returns steps, total and active calories, equivalent walking distance (meters), high/medium/low activity minutes, inactivity alerts count, activity score, target calories and target distance. Use this when the user asks about their daily movement, steps, calories, or exercise levels. Defaults to yesterday if no date is provided.
Fetch a combined daily health summary from Oura Ring including sleep, readiness, and activity highlights. Returns readiness score with top contributing factor, sleep score with duration and HRV, steps and active calories, plus notable flags (low readiness, poor sleep efficiency, high body temp deviation). This is the primary tool for morning briefing use cases — one call gives the full picture. Defaults to yesterday if no date is provided.
Fetch Oura Ring heart rate data including resting HR and HRV metrics. Returns average resting HR, minimum resting HR, and HRV average (RMSSD). For multi-day date ranges (2+ days), also includes HRV trend direction (improving/stable/declining). Single-day queries omit trend since intraday variation is not meaningful. Use this when the user asks about heart rate, HRV, or cardiovascular trends. Defaults to yesterday if no date is provided.
Fetch Oura Ring daily readiness score and all contributing factors. Returns overall readiness score plus individual scores for: HRV balance, body temperature deviation, resting heart rate, recovery index, sleep balance, activity balance, previous day activity, and previous night. Use this when the user asks how ready they are for the day, recovery status, or body readiness. Defaults to yesterday if no date is provided.
Output schemas not formally documented in JSON Schema format. Descriptions mention returned fields but no structured schema definition visible in code.
Error handling is generic. OuraApiError class exists but tool implementations do not provide recovery guidance (e.g., 'Try again later' for 429, 'Check token' for 401).
Date parameter descriptions lack format constraints. 'YYYY-MM-DD' is mentioned but no regex pattern or formal constraint is visible in schema.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | A | 83 | <=2025-11-25 | v2 |
Fetch Oura Ring sleep data for a specific date or date range. Returns sleep score, duration, sleep stages (REM/deep/light/awake in minutes), HRV average, breath rate, lowest resting HR, and bedtime start/end. Use this when the user asks about their sleep quality, sleep stages, or overnight HRV. Defaults to yesterday if no date is provided.
No pagination support. Tools return all results for date ranges without limit or offset parameters. Large date ranges could return hundreds of records.
No idempotency hints or destructive operation markers. Tools are read-only but lack explicit toolAnnotations (readOnlyHint) to signal this to clients.