Skip to main content
Glama
josuhr

oura-mcp-server-enhanced

by josuhr

Oura MCP Server (Enhanced)

An MCP (Model Context Protocol) server that provides comprehensive access to the Oura Ring API v2. Exposes 17 tools covering sleep, activity, heart rate, stress, SpO2, workouts, and more.

Built with FastMCP and httpx.

Tools

Sleep & Recovery

Tool

Description

get_sleep_data

Detailed sleep sessions -- stages, heart rate, HRV, breathing rate

get_daily_sleep

Daily sleep scores and contributor breakdown

get_sleep_time

Recommended and actual sleep timing windows

get_daily_readiness

Readiness scores and contributors (HRV balance, body temp, etc.)

get_daily_resilience

Recovery capacity and stress tolerance indicators

Activity & Fitness

Tool

Description

get_daily_activity

Steps, calories, active time breakdown, MET levels

get_workouts

Workout sessions with type, calories, distance, duration

get_sessions

Guided sessions (meditation, breathing) with biometrics

get_vo2_max

VO2 max cardiovascular fitness estimates

Health Vitals

Tool

Description

get_heart_rate

Heart rate at 5-minute intervals (uses datetime params)

get_daily_spo2

Daily blood oxygen saturation

get_daily_stress

Daily stress levels and recovery summary

get_daily_cardiovascular_age

Estimated cardiovascular age

User & Device

Tool

Description

get_personal_info

User profile (age, weight, height)

get_ring_configuration

Ring model, color, firmware, setup date

get_rest_mode

Rest mode periods and schedules

get_tags

User-created lifestyle tags and annotations

All tools with date parameters accept optional start_date and end_date in YYYY-MM-DD format. When omitted, the Oura API defaults to recent data.

Related MCP server: oura-mcp-server

Setup

  1. Download the latest oura-mcp-server-enhanced.mcpb from Releases

  2. In Claude Desktop, go to Settings > Extensions > Advanced Settings and enable Install from file

  3. Back on the Extensions page, click Add from file and select the downloaded .mcpb file

  4. Enter your Oura API Token when prompted

Option B: Manual Setup

1. Get an Oura API Token

Go to Oura Personal Access Tokens and create a new token.

2. Install

Requires Python 3.12+ and uv.

git clone https://github.com/josuhr/oura-mcp-server-enhanced.git
cd oura-mcp-server-enhanced
uv venv && uv pip install -e .

3. Configure Claude Desktop

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "oura": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/oura-mcp-server-enhanced", "oura-mcp-server"],
      "env": {
        "OURA_API_TOKEN": "your_token_here"
      }
    }
  }
}

Replace /path/to/oura-mcp-server-enhanced with the actual path and your_token_here with your Oura API token.

4. Run Standalone (optional)

export OURA_API_TOKEN="your_token_here"
oura-mcp-server

Building the Extension

To build the .mcpb extension bundle from source:

zip -r oura-mcp-server-enhanced.mcpb manifest.json pyproject.toml uv.lock src/ .python-version -x "src/**/__pycache__/*"

Project Structure

src/oura_mcp_server/
├── __init__.py       # Package entry point
├── server.py         # FastMCP tool definitions and main()
├── client.py         # Async HTTP client for Oura API v2
└── transforms.py     # Human-readable data formatting

Credits

Inspired by tomekkorbak/oura-mcp-server, extended to cover the full Oura API v2.

Available Tools

17 tools
get_daily_activityA

Get daily activity data including steps, calories, active time breakdown, and MET levels.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations. Description states return types but lacks details like read-only behavior, error handling, or rate limits.

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?

Three efficient sentences with no unnecessary words. Args section is clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Two optional parameters with defaults, output schema exists. Missing details like date inclusivity but adequate for a simple tool.

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 has 0% coverage; description adds date format YYYY-MM-DD and default values, which is helpful.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clear verb 'Get' with specific resource 'daily activity data' listed types. Distinguishes from siblings as other daily health metrics are separate tools.

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

Usage Guidelines3/5

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

Provides start/end date parameters but no guidance on when to use this vs alternative daily tools or when not to use it.

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

get_daily_cardiovascular_ageB

Get estimated cardiovascular age based on resting heart rate and HRV trends.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; description carries full burden. It implies a read operation (get) but does not explicitly state readOnlyHint, authentication needs, or any side effects. Lacks disclosure of what data dependencies exist (e.g., resting heart rate and HRV must be available).

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?

Purpose stated in one sentence, then parameter details separated; no wasted words. However, the parameter layout is plaintext with line breaks, not markdown or structured, which slightly hurts readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple parameterless tool with output schema (not shown), the description covers purpose and parameter defaults. But lacks behavioral transparency and usage guidance, which are expected given no annotations and many siblings. Adequate but incomplete.

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 description coverage is 0%, so description must compensate. It provides format (YYYY-MM-DD) and defaults (yesterday/today) for both parameters. This adds meaningful guidance beyond the bare schema, though no additional constraints (like max range) are given.

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?

Verb get plus resource estimated cardiovascular age is specific. Mentions basis on resting heart rate and HRV trends, which distinguishes from sibling tools like get_daily_activity or get_daily_readiness. No confusion about what it retrieves.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. Does not provide context for prerequisites, data freshness assumptions, or whether user needs to wear the ring for data to exist. No exclusions or when-not-to-use.

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

get_daily_readinessA

Get readiness scores and contributors (activity balance, body temperature, HRV balance, resting heart rate, sleep balance).

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the disclosure relies on the description. It mentions default dates (yesterday/today) which is helpful, but lacks details on authentication, rate limits, or side effects. As a read-only tool, minimal disclosure is acceptable, but more context would improve transparency.

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?

The description is concise with only two sentences plus the arguments list, front-loading the purpose and then providing parameter details. Every sentence is informative without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two optional params) and presence of an output schema, the description sufficiently explains the return value (readiness scores and contributors). It does not cover edge cases or interpretation, but is complete for basic usage.

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?

The schema has no descriptions (0% coverage), so the description compensates by specifying format (YYYY-MM-DD) and defaults for both parameters. This adds significant value beyond the bare schema, making parameter usage clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns readiness scores and lists specific contributors (activity balance, body temperature, etc.), which effectively conveys the purpose. It distinguishes from sibling tools that focus on individual metrics, though it could explicitly contrast itself.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like get_daily_activity or get_daily_sleep. The description relies on the user to infer from context, missing an opportunity to clarify tool selection.

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

get_daily_resilienceA

Get resilience data indicating recovery capacity and stress tolerance.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or rate limits. It only states what the tool returns, lacking transparency beyond the basic function.

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?

The description is extremely concise with one sentence for purpose and a clean args list. No superfluous text, and the purpose is front-loaded, allowing quick understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple getter with only two optional parameters and an output schema, the description is sufficient. It explains the return type ('resilience data indicating recovery capacity and stress tolerance') and parameter behavior. However, it could mention that the output schema details the data structure.

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?

Despite 0% schema description coverage, the description adds valuable context: it specifies the date format ('YYYY-MM-DD') and default values ('yesterday' and 'today'), which are not present in the schema (which has defaults of null). This compensates for the lack of schema documentation.

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?

The description clearly states the tool's function: 'Get resilience data indicating recovery capacity and stress tolerance.' It uses a specific verb ('Get') and resource ('resilience data'), and the purpose distinguishes it from sibling tools like 'get_daily_activity' or 'get_daily_sleep'.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives (e.g., 'get_daily_readiness' or 'get_daily_stress'). No when-to-use, when-not-to-use, or prerequisite information is given.

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

get_daily_sleepB

Get daily sleep scores and contributor breakdown (deep sleep, efficiency, latency, REM, restfulness, timing).

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden for behavioral disclosure. It describes the operation and parameters adequately, but does not mention any limitations, authentication, or side effects, which is minimal but acceptable for a simple read operation.

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?

The description is extremely concise, front-loading the purpose in the first sentence followed by clear parameter documentation. Every sentence adds value, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to explain return values. It covers input parameters well but lacks broader context about data interpretation or how to use the scores, leaving some gaps for an agent.

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?

Since schema description coverage is 0%, the description provides essential details: format (YYYY-MM-DD) and defaults for both parameters, adding significant meaning beyond the schema. However, it could include allowable ranges or examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves daily sleep scores and contributor breakdown, listing specific contributors. However, it does not explicitly differentiate from sibling tools like get_sleep_data, but the purpose is still specific and unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives is provided. There is no discussion of prerequisites or conditions, only default parameter values are mentioned, leaving the agent without decision support.

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

get_daily_spo2A

Get daily blood oxygen (SpO2) saturation readings.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden. It only states the basic purpose and parameters. It does not disclose what the output looks like, whether permissions are needed, what happens if no data exists, or any side effects. Minimal behavioral context.

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?

The description is very concise: two sentences for purpose and a compact arg definition. No unnecessary words. Ideal length for a simple two-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema (not shown), the description does not need to explain return values. However, it lacks any context about data granularity (daily average? per hour?), which would be helpful for a health data tool. It is minimally complete but not rich.

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 0% (no parameter descriptions in schema). The description adds meaning by specifying date format (YYYY-MM-DD) and defaults (yesterday/today). This is helpful beyond the bare schema which only shows type and default null. However, it does not clarify inclusivity or return granularity.

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?

The description clearly states 'Get daily blood oxygen (SpO2) saturation readings.' The verb 'Get' and the specific resource 'daily blood oxygen saturation readings' make the purpose unambiguous. It distinguishes itself from siblings like get_daily_sleep or get_vo2_max by focusing on SpO2.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. The description does not mention when not to use it, or under what circumstances this tool is appropriate compared to other daily metric tools like get_daily_activity or get_heart_rate.

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

get_daily_stressA

Get daily stress levels including stress high, recovery high, and day summary.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits. It does not mention that this is a read-only operation, any authentication needs, rate limits, or potential side effects. The description only indicates retrieval of data but lacks explicit safety or behavior details.

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?

The description is extremely concise, consisting of one purpose sentence and two parameter lines. No extraneous information. Front-loaded with the most important information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two optional date parameters, no nested objects) and the presence of an output schema, the description adequately covers the retrieval purpose. It lacks broader context like data scope or use cases, but is reasonably complete for a straightforward getter.

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 description coverage is 0%, so the description must compensate. It adds value by specifying the YYYY-MM-DD format and default values for both start_date and end_date, which is not present in the schema. However, it could include more detail such as allowed date ranges or timezone handling.

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?

The description clearly states the tool gets 'daily stress levels' and specifies the exact sub-components ('stress high, recovery high, day summary'), providing a specific verb-resource pair that distinguishes it from sibling tools like get_daily_activity or get_daily_sleep.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives, no prerequisites, and no mention of when not to use it. Only defaults for date parameters are provided.

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

get_heart_rateA

Get heart rate data at 5-minute intervals throughout the day and night.

Args:
    start_datetime: Start datetime in YYYY-MM-DDTHH:MM:SS format. Defaults to ~24 hours ago.
    end_datetime: End datetime in YYYY-MM-DDTHH:MM:SS format. Defaults to now.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_datetimeNo
start_datetimeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Mentions '5-minute intervals' but does not disclose read-only nature, authentication, rate limits, or behavior for empty data. Adequate for a simple read tool.

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?

One-line purpose followed by structured Args section. Every sentence adds value; no fluff or repetition. Front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values not needed. Covers time range and interval. Missing timezone handling and units (e.g., bpm), but minor. Sufficient for a simple data retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 0% with only types and null defaults. Description adds datetime format 'YYYY-MM-DDTHH:MM:SS' and default values (start ~24h ago, end now). Fully compensates for missing schema descriptions.

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?

Description clearly states verb 'Get', resource 'heart rate data', and specificity '5-minute intervals throughout the day and night.' Differentiates from siblings like get_daily_activity which are daily summaries.

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

Usage Guidelines3/5

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

Provides parameter defaults and format for start/end datetimes but does not explicitly state when to use this tool over alternatives (e.g., get_daily_activity). No when-not or alternative mentions; implied by granularity.

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

get_personal_infoA

Get user profile information including age, weight, height, and biological sex.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It describes a read operation without side effects, but adds no additional behavioral context beyond the obvious, such as authentication or data freshness.

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?

The description is a single, clear sentence with no wasted words. Every part is necessary and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists the returned fields, which is helpful given that an output schema exists. However, it could mention that this is a read-only operation to provide completeness, though the sibling context implies it.

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?

There are no parameters in the input schema, so the description does not need to add parameter details. Baseline for zero parameters is 4, and the description is adequate.

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?

The description clearly states it retrieves user profile information and lists specific data fields (age, weight, height, biological sex). This distinguishes it from sibling tools that focus on daily metrics like activity or sleep.

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

Usage Guidelines3/5

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

While the description implies use when static user profile is needed, it does not provide explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives among the many sibling tools.

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

get_rest_modeA

Get rest mode periods and their scheduled episodes.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided. The description only says 'Get', which implies a read operation but does not explicitly state safety, idempotency, or other behavioral traits. The agent must assume default behavior.

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?

Extremely concise with no wasted words. The main sentence and two bullet-style parameter descriptions are efficiently structured for quick parsing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, the description does not need to detail return values. The tool and parameters are well-covered, though a brief explanation of what constitutes a 'rest mode period' could enhance completeness.

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 0%, but the description adds format (YYYY-MM-DD) and default values for both parameters, which significantly aids correct usage. This compensates for the lack of schema descriptions.

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?

The description clearly states 'Get rest mode periods and their scheduled episodes', using a specific verb and resource. It distinguishes from sibling tools that cover different data types (e.g., sleep, activity, readiness).

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. The description does not provide context or exclusions, leaving the agent to infer usage solely from the tool name and siblings.

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

get_ring_configurationA

Get ring hardware details including model, color, firmware version, and setup date.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only states the tool gets hardware details, offering no information about side effects, authentication needs, or error conditions (e.g., if ring is unavailable).

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?

The description is efficient and well-structured: a clear one-sentence purpose followed by an Args section. No unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While an output schema exists and the description names returned fields, it omits details about date range behavior (filtering vs. absolute), error handling, and required user context. This is adequate but not thorough.

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?

Despite 0% schema coverage, the description adds format (YYYY-MM-DD) and default values (yesterday/today) for both optional parameters, which meaningfully supplements the schema.

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?

The description clearly states the tool retrieves ring hardware details including specific fields (model, color, firmware version, setup date), which distinguishes it from sibling tools focused on activity, sleep, and personal info.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description lacks context about prerequisites, appropriate scenarios, or comparisons with sibling tools.

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

get_sessionsA

Get guided and unguided session data (meditation, breathing, etc.) with heart rate and HRV biometrics.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, and the description only states it 'gets' data, implying a read operation but not explicitly. No disclosure of side effects, authorization needs, or rate limits.

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?

Very concise: two sentences plus minimal Args. No fluff, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Has output schema, so return values don't need description. Missing context on pagination or behavior when no sessions exist, but sufficient for a simple retrieval tool.

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?

The description includes an 'Args' section that adds format (YYYY-MM-DD) and defaults (yesterday/today) beyond the schema, which only has type and null default. Covers both parameters adequately.

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?

The description clearly states the tool retrieves session data (meditation, breathing, etc.) with heart rate and HRV biometrics. This distinguishes it from sibling tools like get_workouts or get_daily_activity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. Does not mention when to use get_sessions over get_workouts or other siblings.

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

get_sleep_dataA

Get detailed sleep session data including sleep stages, heart rate, HRV, and breathing rate.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

No annotations provided, so the description must carry the burden. It discloses the types of data included (sleep stages, heart rate, HRV, breathing rate) but does not mention behavioral aspects like timezone handling, date range limits, pagination, or whether it returns multiple sessions. The output schema exists but is not shown.

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?

The description is concise: one sentence for the purpose and two lines for parameters. No redundant information. Front-loaded with the core function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 2 parameters and an output schema, the description is mostly adequate but lacks clarity on whether the tool returns a single session or multiple, and how date ranges affect the result. Given the output schema exists, the description could be more precise about what the output contains.

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 description coverage is 0%, but the description adds meaning for both parameters: start_date and end_date with formats (YYYY-MM-DD) and defaults. This compensates for the missing schema descriptions.

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?

The description clearly states the verb 'Get' and the resource 'detailed sleep session data', listing specific data types (sleep stages, heart rate, HRV, breathing rate). It distinguishes itself from siblings like get_daily_sleep (likely less detailed) and get_sleep_time (only time).

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as get_daily_sleep or get_sleep_time. The description only explains what it does, not the context for choosing it over siblings.

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

get_sleep_timeB

Get recommended and actual sleep timing windows.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits but only gives parameter format and defaults. It does not explain what 'recommended' means, whether data is read-only, or any side effects.

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?

The description is concise with a clear summary line followed by parameter documentation. No extra words, but the summary could be slightly more descriptive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having an output schema, the description does not describe the return structure beyond 'sleep timing windows.' This is incomplete for a tool expected to return complex data.

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 description coverage is 0%, but the description's docstring explains both parameters with format and defaults, adding meaning beyond the schema's property definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves recommended and actual sleep timing windows. It distinguishes from siblings by focus on timing windows, though it doesn't explicitly contrast with similar sleep tools.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives like get_daily_sleep or get_sleep_data. The description only explains function, not context or exclusions.

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

get_tagsA

Get user-created tags and lifestyle annotations (e.g. caffeine, alcohol, exercise notes).

Returns enhanced tags when available, falling back to standard tags.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description must carry behavioral disclosure. The description explains that the tool returns enhanced tags when available, falling back to standard tags, which is helpful. However, it does not mention any potential side effects, authentication requirements, or rate limits. For a simple read operation, the fallback behavior is a positive addition, earning a 3.

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?

Description is extremely concise: one sentence for purpose, one for behavior, and a succinct Args section. No extraneous information. Structure is front-loaded with the most important information first. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 optional params, no required inputs) and the presence of an output schema (not shown, but noted), the description covers key aspects: purpose, behavior (fallback logic), and parameter details. No major gaps for a basic retrieval tool. Could mention if there is a limit on results, but not critical.

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 0%, but the description adds critical meaning: it specifies the date format 'YYYY-MM-DD' and provides default values (yesterday for start_date, today for end_date). This goes beyond the schema which only declares optional strings with null defaults. The description adds practical usage guidance for the parameters.

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?

Description clearly states the tool retrieves user-created tags and lifestyle annotations (e.g., caffeine, alcohol, exercise notes). This distinguishes it from sibling tools like get_daily_activity or get_sessions which serve different data. The verb 'Get' and resource 'tags and lifestyle annotations' are specific.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives. The description does not mention when it is appropriate or inappropriate to use, nor does it reference sibling tools. An agent would have no clear direction on preferring get_tags over other getters.

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

get_vo2_maxB

Get VO2 max estimates indicating cardiovascular fitness level.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, placing full burden on the description. It discloses only parameter defaults (yesterday/today) but omits any behavioral traits like rate limits, authentication needs, or what happens if no data exists. The description is minimal.

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?

The description is extremely concise: one-sentence purpose plus two parameter definitions. No wasted words, and the purpose is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two optional parameters and an output schema, the description covers basic usage. However, it lacks explanation of return values (though output schema exists) and does not address scope or boundaries. It is minimally adequate.

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?

Despite schema description coverage being 0%, the description adds meaning to both parameters: format (YYYY-MM-DD) and defaults (yesterday/today). This compensates well for the schema gap, providing necessary usage context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves VO2 max estimates indicating cardiovascular fitness level. The verb 'Get' and resource 'VO2 max estimates' are specific. However, it does not explicitly differentiate from sibling tools like get_daily_cardiovascular_age, though the name and context make the purpose distinct.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_daily_cardiovascular_age or get_daily_readiness. The description solely states what it does, without context for selection.

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

get_workoutsB

Get workout sessions with activity type, calories burned, distance, intensity, and duration.

Args:
    start_date: Start date in YYYY-MM-DD format. Defaults to yesterday.
    end_date: End date in YYYY-MM-DD format. Defaults to today.
ParametersJSON Schema
NameRequiredDescriptionDefault
end_dateNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided. The description does not disclose any behavioral traits beyond the obvious read operation. No mention of authentication, rate limits, data freshness, or potential side effects.

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?

The description is extremely concise, with one sentence for the main purpose and a parameter section. Every sentence adds value, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description covers the basics. However, it lacks information about data scope (e.g., user-specific), pagination, or filtering capabilities, which would be helpful for a complete picture.

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 description coverage is 0%, but the description adds meaning by specifying date format (YYYY-MM-DD) and defaults (yesterday/today), which are not inferable from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves workout sessions and lists key fields (activity type, calories, distance, intensity, duration). However, it does not differentiate from the sibling tool 'get_sessions', which likely overlaps.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'get_sessions' or 'get_daily_activity'. The parameter defaults are provided but without context on typical use cases.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updatesv0.1.0
    • First observedget_daily_activity
    • First observedget_daily_cardiovascular_age
    • First observedget_daily_readiness
    • First observedget_daily_resilience
    • First observedget_daily_sleep
    • First observedget_daily_spo2
    • First observedget_daily_stress
    • First observedget_heart_rate
    • First observedget_personal_info
    • First observedget_rest_mode
    • First observedget_ring_configuration
    • First observedget_sessions
    • First observedget_sleep_data
    • First observedget_sleep_time
    • First observedget_tags
    • First observedget_vo2_max
    • First observedget_workouts

TDQS

A3.7/5.0

Scored across 17 tools

Disambiguation5/5

Each tool targets a distinct metric (e.g., activity, readiness, sleep stages, heart rate) with clear descriptions, so an agent can reliably distinguish between them even when dealing with similar domains like sleep.

Naming Consistency4/5

All tools follow a 'get_noun' pattern in snake_case, but there is minor inconsistency with the 'daily_' prefix (some tools use it, others don't) and the absence of a verb beyond 'get' makes the naming straightforward yet slightly varied.

Tool Count4/5

17 tools is slightly above the typical well-scoped range (3-15), but each tool covers a necessary Oura metric without redundancy, making the count reasonable for a comprehensive health API.

Completeness5/5

The tool set covers nearly all major Oura data types (activity, sleep, readiness, heart rate, stress, tags, sessions, workouts, etc.) with no obvious missing CRUD operations or critical gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers