Skip to main content
Glama
royreznik

Oura Ring MCP Server

List daily sleep scores

list_daily_sleep
Read-onlyIdempotent

Retrieve daily sleep scores and contributor metrics—total sleep, efficiency, restfulness, REM, deep sleep, latency, and timing—for a chosen date range to assess how well you slept.

Instructions

List daily sleep scores (0-100, with Oura's zone) and the contributors behind them: total sleep, efficiency, restfulness, REM, deep sleep, latency and timing. Use it for 'how well did I sleep' over a range; for hours, stages, HRV and heart rate use list_sleep_periods, and for one night's hypnogram use get_sleep_period. Range: the last 7 days by default; set start and end (inclusive, YYYY-MM-DD) or days (up to 400, ignored when start is set). Returns { records, next_token }, oldest first. Days without data are absent, and today's data appears only after the ring syncs. If next_token is not null, call again with it for the rest. raw: true returns Oura's original objects.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
endNoLast day to include (YYYY-MM-DD). Defaults to today.
rawNoReturn Oura's raw API objects instead of compact summaries with friendly units.
daysNoShortcut for start: the last N days up to end. Ignored when start is set.
startNoFirst day to include (YYYY-MM-DD).
next_tokenNoPass the next_token from a previous call to get the following records.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.7/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial context beyond them: default 7-day range, inclusive date semantics, days capped at 400 and ignored when start is set, oldest-first ordering, absent days, sync delay for today, and pagination via next_token. This is well beyond what annotations and schema alone convey, though a few operational details (unit of the score contributors, rate limits) remain unstated.

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?

A single dense but well-ordered passage: purpose first, then sibling routing, then range semantics, then return/pagination behavior, then the raw flag. Every sentence carries load and nothing is redundant.

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?

With no output schema, the description compensates by describing the return shape ({records, next_token}), ordering, pagination loop, and edge cases (missing days, unsynced today). It is complete enough for an agent to call and page through results correctly.

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?

Schema coverage is 100% so the baseline is 3, and the description exceeds it by clarifying the interplay between parameters (days is 'ignored when start is set', start/end are inclusive YYYY-MM-DD, raw returns Oura's original objects rather than friendly units). It reinforces and contextualizes the schema rather than merely restating it.

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 and resource ('List daily sleep scores') and immediately distinguishes itself from siblings by naming list_sleep_periods and get_sleep_period with their respective scopes (hours/stages/HRV vs one night's hypnogram). An agent can route correctly without opening any schema.

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

Usage Guidelines5/5

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

Explicitly names the use case ('how well did I sleep' over a range) and then names the two alternative tools with the exact conditions that select each one. Nothing is left to inference.

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