Skip to main content
Glama

Oura MCP Server

npm version MCP Registry CI

An MCP server that connects your Oura Ring to Claude and other AI assistants. Get human-readable insights about your sleep, readiness, and activity—not just raw JSON.

Features

  • Smart formatting - Durations in hours/minutes, scores with context ("85 - Optimal")

  • Sleep analysis - Sleep stages, efficiency, HRV, and biometrics

  • Readiness tracking - Recovery scores and contributor breakdown

  • Activity data - Steps, calories, and intensity breakdown

  • Health metrics - Heart rate, SpO2, stress, cardiovascular age

  • Smart analysis - Anomaly detection, correlations, trend analysis

  • Tags support - Compare metrics with/without conditions

See example outputs — what Claude returns for sleep, readiness, weekly summaries, and smart analysis

Related MCP server: Oura MCP Server

Quick Start

1. Install

npm install -g oura-ring-mcp

Or use directly with npx (no install needed):

npx oura-ring-mcp

2. Authenticate with Oura

Option A: Personal Access Token (simpler)

  1. Go to cloud.ouraring.com/personal-access-tokens

  2. Create a new token

  3. Set OURA_ACCESS_TOKEN in your Claude Desktop config (see below)

Option B: OAuth CLI Flow

  1. Create an OAuth app at developer.ouraring.com

    • Set Redirect URI to http://localhost:3000/callback

  2. Run the auth flow:

    export OURA_CLIENT_ID=your_client_id
    export OURA_CLIENT_SECRET=your_client_secret
    npx oura-ring-mcp auth
  3. Credentials are saved to ~/.oura-mcp/credentials.json

3. Configure Claude Desktop

Add to claude_desktop_config.json:

With Personal Access Token:

{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["oura-ring-mcp"],
      "env": {
        "OURA_ACCESS_TOKEN": "your_token_here"
      }
    }
  }
}

With OAuth (after running npx oura-ring-mcp auth):

{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["oura-ring-mcp"]
    }
  }
}

The server reads credentials from ~/.oura-mcp/credentials.json. To enable automatic token refresh, add your OAuth credentials:

{
  "mcpServers": {
    "oura": {
      "command": "npx",
      "args": ["oura-ring-mcp"],
      "env": {
        "OURA_CLIENT_ID": "your_client_id",
        "OURA_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

Restart Claude Desktop. Requires Node >=18.

What Can I Ask?

Daily check-ins:

  • "How did I sleep last night?"

  • "Am I recovered enough to work out today?"

  • "What's my body telling me right now?"

Patterns & trends:

  • "Do I sleep better on weekends?"

  • "What time should I go to bed for optimal sleep?"

  • "Is my HRV improving or declining?"

Correlations & insights:

  • "Does alcohol affect my sleep quality?"

  • "What predicts my best sleep nights?"

  • "How does exercise timing affect my recovery?"

Comparisons:

  • "Compare my sleep this week vs last week"

  • "How do I sleep after meditation vs without?"

  • "What changed when I started taking magnesium?"

Anomalies:

  • "Are there any unusual readings in my data?"

  • "Why was my readiness so low yesterday?"

  • "Find days where my metrics were off"

Available Tools

Data Retrieval

Tool

Description

get_sleep

Sleep data with stages, efficiency, HR, HRV

get_daily_sleep

Daily sleep scores with contributors

get_readiness

Readiness scores and recovery metrics

get_activity

Steps, calories, intensity breakdown

get_workouts

Workout sessions with type and intensity

get_sessions

Meditation and relaxation sessions

get_heart_rate

HR readings throughout the day

get_stress

Stress levels and recovery time

get_spo2

Blood oxygen and breathing disturbance

get_tags

User-created tags and notes

Smart Analysis

Tool

Description

detect_anomalies

Find unusual readings using outlier detection

analyze_sleep_quality

Sleep analysis with trends, patterns, debt

correlate_metrics

Find correlations between health metrics

compare_periods

Compare this week vs last week

compare_conditions

Compare metrics with/without a tag

best_sleep_conditions

What predicts your good vs poor sleep

analyze_hrv_trend

HRV trend with rolling averages

Resources

Resource

Description

oura://today

Today's health summary

oura://weekly-summary

Last 7 days with averages

oura://baseline

Your 30-day averages and normal ranges

oura://monthly-insights

30-day analysis with trends and anomalies

oura://tag-summary

Your tags and usage frequency

Prompts

Prompt

Description

weekly-review

Comprehensive weekly health review

sleep-optimization

Identify what leads to your best sleep

recovery-check

Should you train hard or rest today?

compare-weeks

This week vs last week comparison

tag-analysis

How a specific tag affects your health

Remote Deployment (Railway)

Deploy the MCP server for remote access. The server proxies OAuth through Oura, so users authenticate directly with their Oura account — no PAT needed.

1. Create an Oura OAuth App

  1. Go to Oura OAuth Applications

  2. Create a new application

  3. Set the Redirect URI to: https://your-app.railway.app/oauth/callback

  4. Note the Client ID and Client Secret

2. Deploy

# Install Railway CLI
npm install -g @railway/cli

# Login, init, and deploy
railway login
railway init
railway up

3. Set Environment Variables

In the Railway dashboard, add:

Variable

Description

OURA_CLIENT_ID

From your Oura OAuth app

OURA_CLIENT_SECRET

From your Oura OAuth app

NODE_ENV

production

MCP_SECRET

(Optional) Static bearer token for Claude Desktop (openssl rand -base64 32)

OURA_ACCESS_TOKEN

(Optional) PAT fallback if not using OAuth (MCP_SECRET required)

Railway automatically sets PORT and RAILWAY_PUBLIC_DOMAIN.

4. Connect from Claude.ai

Use the connector in Claude.ai:

  1. Go to Settings > MCP Connectors > Add

  2. Enter your server URL: https://your-app.railway.app (without /mcp)

  3. Leave OAuth Client ID and Secret empty (dynamic registration handles it)

  4. You'll be redirected to Oura to authorize access to your data

5. Connect from Claude Desktop

For Claude Desktop, use MCP_SECRET + OURA_ACCESS_TOKEN:

{
  "mcpServers": {
    "oura-remote": {
      "url": "https://your-app.railway.app/mcp",
      "headers": {
        "Authorization": "Bearer your_mcp_secret_here"
      }
    }
  }
}

Local Testing

# With Oura OAuth (full flow)
OURA_CLIENT_ID=your_id OURA_CLIENT_SECRET=your_secret pnpm start:http

# With static secret only (requires OURA_ACCESS_TOKEN)
OURA_ACCESS_TOKEN=your_pat MCP_SECRET=test-secret pnpm start:http

# Verify health endpoint
curl http://localhost:3000/health

# Check OAuth metadata (only available when OURA_CLIENT_ID is set)
curl http://localhost:3000/.well-known/oauth-authorization-server

# Test authenticated request (with static secret)
curl -X POST http://localhost:3000/mcp \
  -H "Authorization: Bearer test-secret" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{}},"id":1}'

Contributing

See CLAUDE.md for architecture details and development guidelines.

License

MIT

Available Tools

27 tools
analyze_adherenceA

Analyze how consistently you wear your Oura ring. Shows daily non-wear time, identifies gaps in data, and calculates adherence percentage. Useful for understanding data quality.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze (default: 30)

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description fully explains the tool's behavior: it calculates non-wear time, identifies data gaps, and computes adherence percentage. It adds value beyond the schema by describing the outputs, though it omits details like whether the analysis is read-only or if it requires specific permissions.

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 two sentences: the first states the action, the second lists outputs. It is front-loaded with the purpose, but could be slightly more structured by including usage context.

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 (one parameter, no output schema), the description adequately covers purpose and behavioral details. It lacks usage guidelines but is otherwise complete for an analysis tool.

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

Parameters3/5

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

Schema coverage is 100% (one parameter with description), so the description does not need to add much about parameters. However, it does not mention the 'days' parameter at all, adding no additional meaning beyond 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 verb 'Analyze' and the specific resource 'how consistently you wear your Oura ring', making the tool's purpose unambiguous. It further details what it shows (daily non-wear time, gaps, adherence percentage), which distinguishes it from sibling analysis tools that focus on other metrics like HRV 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?

The description implies usage for understanding data quality but does not explicitly state when to use this tool versus alternatives like analyze_sleep_quality or detect_anomalies. No when-to-use or when-not-to-use guidance is provided.

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

analyze_hrv_trendA

Analyze your HRV (Heart Rate Variability) trend over time. HRV is a key indicator of recovery and stress. Shows trend direction, rolling averages, and identifies recovery patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze (default: 30)

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description bears full burden. It discloses outputs (trend direction, averages, patterns) but does not explicitly state read-only behavior, side effects, or any required permissions. The behavior is inferred as non-destructive.

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 concise sentences: first states purpose, second explains context, third lists outputs. No wasted words, front-loaded with key information.

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?

Given the tool's simplicity (one optional parameter, no output schema), the description adequately covers what the tool does and what it produces. It is sufficient for an agent to understand and invoke correctly.

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

Parameters3/5

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

The only parameter 'days' is fully described in the input schema (100% coverage). The description adds no additional meaning beyond implying a time range, maintaining the baseline score of 3.

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 analyzes HRV trend over time, explaining HRV's significance and listing specific outputs (trend direction, rolling averages, recovery patterns). It distinguishes itself from sibling analyze_* tools by specifying the metric (HRV).

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?

The description implies usage for HRV trend analysis but provides no explicit guidance on when to use this tool vs alternatives like analyze_sleep_quality or analyze_adherence. No exclusions or prerequisites are mentioned.

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

analyze_sleep_qualityA

Comprehensive sleep quality analysis over a time period. Shows trends, patterns by day of week, sleep debt, regularity score, and identifies your best/worst sleep days. Great for understanding what affects your sleep.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze (default: 30)

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 carries full burden. It describes a read-only analysis but does not explicitly state it does not modify data or require special permissions. Could be improved with explicit read-only statement.

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?

Two sentences with front-loaded key action. Every word adds value; no fluff. Excellent conciseness.

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 tool with one parameter and no output schema, the description adequately covers what the tool does and what it produces. Could mention that the output is a report or summary, but not required.

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

Parameters3/5

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

Only one parameter (days) with schema description coverage at 100%. The description adds context by mentioning 'over a time period' but does not explain the default value or format. Baseline 3 is appropriate.

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?

Clearly states it performs comprehensive sleep quality analysis over a time period, listing specific metrics it provides (trends, patterns, sleep debt, regularity, best/worst days). Distinguishes from siblings that are more focused on single days or specific metrics.

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?

Says 'Great for understanding what affects your sleep,' implying exploratory usage. However, it does not explicitly state when to use vs alternatives like compare_periods or correlate_metrics, nor does it mention prerequisites or exclusions.

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

analyze_temperatureB

Analyze body temperature patterns from readiness data. Temperature deviations can indicate illness, menstrual cycle phases, or environmental factors. Shows trends and flags unusual readings.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze (default: 30)

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided. Description mentions 'Shows trends and flags unusual readings' but does not disclose data source, freshness, assumptions, or potential side effects. More detail expected for 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?

Two sentences, front-loaded with core purpose, followed by interpretive context. No wasted words.

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 tool with one parameter and no output schema, description covers purpose, output behaviors (trends, flags), and interpretive context. Could mention output format but adequate.

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

Parameters3/5

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

Single parameter 'days' has description in schema (100% coverage). Description adds no additional meaning beyond schema. Baseline score of 3 is appropriate.

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?

Clearly states it analyzes body temperature patterns from readiness data, with specific applications (illness, cycles, environmental factors). Distinguishes from sibling tools which focus on other metrics like HRV, sleep, or activity.

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?

Implies usage for temperature pattern analysis and interpretation of deviations, but lacks explicit when-to-use or when-not-to-use guidance. No mention of alternatives among sibling tools.

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

best_sleep_conditionsA

Analyze what conditions are associated with your best sleep nights. Looks at activity levels, workouts, meditation sessions, tags, and day-of-week patterns to identify what predicts good vs poor sleep.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze (default: 60)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the tool 'looks at' various data types and 'identifies what predicts good vs poor sleep,' but it does not specify read-only behavior, output format, or potential side effects. It adds moderate context but leaves gaps.

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?

Two sentences: first states purpose, second adds detail. No superfluous content, but the structure could be improved by separating purpose from details more formally.

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 tool's complexity and lack of output schema, the description adequately explains inputs and analysis scope but omits output description. It is sufficient for basic use but lacks completeness for advanced scenarios.

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

Parameters3/5

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

Schema coverage is 100% (single parameter 'days' with description). The description adds no further meaning beyond the schema, meeting the baseline for well-documented 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?

The description clearly states 'Analyze what conditions are associated with your best sleep nights,' specifying a unique verb and resource. It distinguishes from sibling tools like 'analyze_sleep_quality' by focusing on correlation with external factors.

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?

The description implies usage for exploring predictors of sleep quality by listing analyzed factors (activity, workouts, etc.), but it lacks explicit guidance on when to use this tool versus alternatives like 'compare_conditions' or 'correlate_metrics,' and no exclusion criteria are provided.

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

compare_conditionsA

Compare a health metric across different conditions. Supports manual tags (alcohol, caffeine) AND auto-tracked conditions: 'workout' (workout days vs rest days), 'high_activity' (high step days), 'meditation' (session days).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagYesCondition to compare. Manual tags: 'alcohol', 'caffeine', 'late_meal'. Auto-tracked: 'workout', 'high_activity', 'meditation'.
metricYesMetric to compare
daysNoNumber of days to analyze (default: 90)

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 must convey behavior. It describes the operation as a comparison but does not disclose whether it is read-only, how it handles missing data, or any statistical methods used. Adequate but lacks detail.

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?

Two sentences, no wasted words. Front-loaded with the core action ('compare a health metric across different conditions') immediately.

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?

Lacks output schema and does not describe return format or example results. For a comparison tool, knowing the output structure (e.g., averages, differences) would aid agent understanding. Otherwise, sufficiently covers parameters.

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%, but the description adds value by listing all condition options (manual and auto-tracked) beyond the schema's brief description. Parameter semantics are enriched.

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 it compares a health metric across conditions, listing both manual tags and auto-tracked conditions. This distinguishes it from siblings like correlate_metrics or compare_periods.

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

Usage Guidelines4/5

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

Provides clear context for when to use: comparing metrics under specified conditions. Does not explicitly exclude scenarios or mention when not to use, but the purpose is straightforward given the sibling set.

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

compare_periodsA

Compare health metrics between two time periods. Great for answering questions like 'How did I sleep this week vs last week?' or 'Was my HRV better last month?'. Returns side-by-side comparison with percentage changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
period1_startYesStart date of first period (YYYY-MM-DD)
period1_endYesEnd date of first period (YYYY-MM-DD)
period2_startYesStart date of second period (YYYY-MM-DD)
period2_endYesEnd date of second period (YYYY-MM-DD)
metricsNoWhich metrics to compare (default: all available)

TDQS

A4/5.0
Behavior3/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 states the tool returns a 'side-by-side comparison with percentage changes,' implying read-only behavior, but it does not explicitly confirm non-destructiveness or disclose any other behavioral traits like authentication needs or rate limits. The description is adequate but not explicit.

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 two sentences, front-loaded with the core purpose and followed by concrete examples. Every sentence adds value, and there is no wasted text.

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 lack of an output schema, the description adequately explains the return format ('side-by-side comparison with percentage changes'). It covers the 5 parameters implicitly through schema coverage. For a comparison tool with moderate complexity, this is fairly complete, though it could mention default behavior for the metrics parameter.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already provides clear descriptions for all parameters (date strings and metrics array). The tool description adds no additional meaning beyond the schema's parameter info, so a baseline of 3 is appropriate.

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 uses a specific verb ('Compare') and clearly identifies the resource ('health metrics between two time periods'). It provides concrete examples ('How did I sleep this week vs last week?') and distinguishes from sibling tools like 'compare_conditions' by focusing on time period comparison rather than condition comparison.

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

Usage Guidelines4/5

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

The description includes explicit usage examples that guide the agent on when to use the tool (comparisons like week-vs-week or month-vs-month). However, it does not mention when not to use it or list alternative tools for related queries, which would improve guidance.

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

correlate_metricsA

Find correlations between two health metrics. For example, see if your HRV correlates with sleep duration, or if activity affects your readiness. Returns correlation strength, direction, and statistical significance.

ParametersJSON Schema
NameRequiredDescriptionDefault
metric1YesFirst metric to correlate
metric2YesSecond metric to correlate
daysNoNumber of days to analyze (default: 30)

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions the output (strength, direction, significance) but omits details on the correlation method (e.g., Pearson vs Spearman), data handling (missing values, outliers), or error conditions (e.g., insufficient data points). Adequate but not transparent about internal mechanics.

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: two sentences that front-load the main action, provide an example, and summarize the return value. 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 tool's low complexity (two metrics plus days) and no output schema, the description offers a basic understanding. However, it lacks details on return format, pagination, or error handling. Usage guidelines and behavioral transparency gaps reduce completeness. Adequate but not fully complete.

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

Parameters3/5

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

The input schema already provides descriptions for all three parameters (metric1, metric2, days), achieving 100% coverage. The description adds no additional semantic value beyond the schema; it does not elaborate on parameter formats, units, or constraints. Baseline score of 3 applies.

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 purpose: finding correlations between two health metrics. It provides concrete examples (HRV with sleep duration, activity with readiness) and specifies the output (correlation strength, direction, statistical significance). This distinguishes it from sibling tools that focus on single-metric analysis or raw data retrieval.

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 implies usage through examples but does not explicitly state when to use this tool versus alternatives or when not to use it. No guidance on prerequisites, such as the need for sufficient data or the type of correlation used. Given the presence of sibling analysis tools, explicit usage guidelines would help an AI agent select correctly.

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

detect_anomaliesA

Detect unusual readings in your health data over a time period. Uses statistical methods (IQR and Z-score) to flag outliers in sleep, HRV, heart rate, and activity. Useful for identifying nights with unusually poor sleep, stress spikes, or other anomalies.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to analyze (default: 30)
metricsNoWhich metrics to check for anomalies (default: all)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the statistical methods (IQR and Z-score) and the types of anomalies flagged. It does not discuss auth needs, rate limits, or side effects, but for a read-only analysis tool, this is adequate.

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 two sentences, no redundant information, and the purpose is front-loaded. 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 no output schema and no annotations, the description adequately explains the tool's function, method, and scope. It covers the main purpose and usage examples, though it could mention what the output looks like (e.g., list of anomalies).

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains the parameters (days and metrics). The description adds context by mentioning 'health data' and outlier detection, but does not significantly extend beyond 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 detects unusual readings in health data over a time period, specifying the verb 'detect' and the resource 'health data'. It also mentions the statistical methods used (IQR and Z-score), which distinguishes it from sibling tools like analyze_sleep_quality or correlate_metrics that perform other types of analysis.

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

Usage Guidelines4/5

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

The description provides good context on when to use the tool, such as identifying nights with poor sleep or stress spikes. However, it does not explicitly state when NOT to use it or mention alternative tools, though the examples imply its use case.

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

get_activityA

Get daily activity data including steps, calories, and activity breakdown (high/medium/low intensity). Use this to analyze movement and exercise patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description correctly implies a safe read operation without destructive effects. However, it does not disclose any rate limits, permissions, or side effects beyond the basic retrieval.

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?

Two concise sentences with no redundant information. The core purpose and example use case are front-loaded efficiently.

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 adequately covers the returned data (steps, calories, intensity breakdown) despite no output schema. It could specify format or pagination, but is sufficient for a simple daily activity tool.

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

Parameters3/5

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

Schema coverage is 100% with clear format descriptions (YYYY-MM-DD, defaults). The description does not add significant meaning beyond the schema, maintaining the baseline.

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 daily activity data with specific metrics (steps, calories, intensity breakdown), which differentiates it from sibling tools like get_workouts or get_heart_rate.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this to analyze movement and exercise patterns,' providing clear context. It does not mention when not to use it, but the sibling list implies alternatives for other data types.

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

get_cardiovascular_ageC

Get your estimated cardiovascular (vascular) age based on heart health metrics. Compare your vascular age to your actual age to understand your cardiovascular health.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It describes the tool as retrieving an estimate based on unspecified metrics, but does not disclose data sources, computation method, accuracy, or whether it is read-only. The lack of detail leaves uncertainty about side effects and reliability.

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?

Two sentences with no wasted words. The purpose is stated in the first sentence, and the second adds the comparative context. Efficient and front-loaded.

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?

No output schema is provided, and the description fails to explain what the return value includes (e.g., a number, a range, a comparison chart). It mentions comparison but does not specify output format, making it incomplete for an agent to judge how to use the result.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions in the input schema (date format and defaults). The description does not add or clarify parameter usage further, meeting the baseline expectation for a well-documented schema.

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 estimated cardiovascular age and contrasts it with actual age. It distinguishes from sibling tools, none of which specifically target cardiovascular age. However, it vaguely references 'heart health metrics' without specifying what they are, which slightly reduces clarity.

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 implies its use for comparing ages, but does not state prerequisites, contraindications, or when another tool (e.g., get_heart_rate) might be more appropriate.

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

get_daily_sleepA

Get daily sleep scores and contributors (efficiency, deep sleep, REM sleep, latency, timing, etc.). Different from get_sleep - this provides a single daily score with breakdown of what contributed to it. Use this for understanding sleep quality scoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It mentions the output (scores and contributors) but does not explicitly state whether the tool is read-only, safe, or has side effects. The name implies a read operation, but it's not stated.

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 two sentences, each adding value. No fluff, front-loaded with core functionality and differentiation.

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?

No output schema exists, so the description should fully explain return values. It lists some contributors but does not provide a complete or structured overview. For a simple tool with 2 params, it's somewhat adequate but could be more precise.

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

Parameters3/5

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

Schema coverage is 100%, with start_date and end_date described in the schema. The description does not add any parameter details beyond what the schema provides, so baseline 3 is appropriate.

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 sleep scores with contributors (efficiency, deep sleep, etc.) and explicitly distinguishes it from get_sleep, saying this provides a single daily score with a breakdown.

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?

The description says 'Different from get_sleep - this provides a single daily score with breakdown... Use this for understanding sleep quality scoring.' This gives explicit guidance on when to use this tool versus alternatives.

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

get_enhanced_tagsA

Get enhanced tags with rich data including custom tags, timestamps, and durations. Enhanced tags include predefined categories (sleep_aid, caffeine, alcohol, etc.) and custom user-created tags with names like medications, supplements, or lifestyle factors.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A3.6/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 the full burden. It reveals that the tool returns predefined categories and custom tags with timestamps/durations, but does not disclose any behavioral details such as read-only nature, rate limits, or error handling. The description is moderately transparent but lacks completeness.

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 two sentences long, front-loaded with the main action, and includes relevant detail without unnecessary words. Every sentence contributes 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?

For a simple getter with two optional parameters, the description covers the tool's purpose and the type of data returned. It is nearly complete, but could mention how the date parameters affect results (implied by schema) and how this tool differs from 'get_tags'.

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

Parameters3/5

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

Schema coverage is 100% and includes descriptions for both parameters. The tool description adds no additional meaning beyond what is already in the schema, such as defaults or date range behavior. Baseline score of 3 is appropriate.

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 states it gets 'enhanced tags' with rich data, clearly identifying the verb and resource. It indirectly distinguishes from 'get_tags' by mentioning 'enhanced' and additional data fields, but does not explicitly differentiate itself from the sibling tool.

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?

Usage is implied: use when you need rich tag data with timestamps and durations. However, no explicit guidance is given on when to use this tool versus alternatives like 'get_tags' 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_heart_rateA

Get individual heart rate readings throughout the day with timestamps and source (awake, rest, sleep, workout, etc.). Returns detailed time-series data. Use this for analyzing heart rate patterns, variability throughout the day, or correlating HR with activities.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description bears full burden. It discloses that the tool returns detailed time-series data with timestamps and source, which sufficiently characterizes behavior for a 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?

Three concise sentences: first states action, second describes return content, third provides use cases. No wasted words and front-loaded.

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 no output schema, description adequately explains return format (individual readings, timestamps, source) and use cases. Lacks exact field names but sufficient for a simple getter with two optional parameters.

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

Parameters3/5

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

Schema already describes both parameters (start_date, end_date) with format and defaults. Description adds no additional parameter details, aligning with baseline 3 due to 100% schema coverage.

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 individual heart rate readings with timestamps and source, and provides use cases like analyzing patterns and variability. It distinguishes from sibling tools that focus on other metrics.

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

Usage Guidelines4/5

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

The description includes 'Use this for analyzing...' which implies appropriate usage. However, it does not explicitly state when not to use this tool or suggest alternatives, though the sibling tools list provides context.

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 your Oura profile information including age, weight, height, and biological sex. This data is used by Oura to personalize insights.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/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 lists the fields returned (age, weight, height, biological sex) and the intended use, but does not disclose behavioral traits such as whether it is read-only, authentication needs, or the response format. This is minimal disclosure for a tool that retrieves personal information.

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?

Two sentences with no filler. The first sentence concisely states the action and the data returned, and the second adds brief context. It is appropriately sized and front-loaded.

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 zero parameters, no output schema, and no annotations, the description covers the essential details about the data retrieved and its purpose. It could mention prerequisites (e.g., user authentication) but is mostly complete 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 input schema has zero parameters with 100% coverage. The description adds meaning beyond the schema by listing the types of information returned (age, weight, height, biological sex), helping the agent understand what to expect from the tool.

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 your Oura profile information including age, weight, height, and biological sex', specifying the verb and resource. Among sibling tools like get_activity and get_sleep, it uniquely focuses on personal profile data, distinguishing itself effectively.

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?

The description implies usage for retrieving profile data but does not explicitly state when to use this tool versus alternatives. It mentions that data is used for personalization but lacks guidance on when not to use it or potential prerequisites.

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

get_readinessA

Get daily readiness scores and contributors (HRV balance, resting heart rate, body temperature, recovery). Use this to understand recovery and readiness to perform.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A3.6/5.0
Behavior3/5

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

No annotations exist, so the description must convey behavior. It lists what data is returned but does not disclose non-obvious traits like authentication, rate limits, or that it is a read-only operation. Adequate but 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?

Two short sentences, front-loaded with the main action. No wasted words, highly efficient.

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 tool with 2 simple parameters and no output schema, the description covers the key aspects: what it retrieves (scores and contributors) and its purpose. Missing mention of return structure (e.g., daily entries) but still sufficient.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both date parameters. The description adds no extra meaning beyond listing contributor types, which relates to output rather than parameters. Baseline score applies.

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 daily readiness scores and contributions from HRV, heart rate, body temperature, and recovery. It implicitly differentiates from siblings like get_sleep or get_stress by focusing on readiness, though it does not explicitly name alternatives.

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?

It advises using it to understand recovery and readiness, providing context for use. However, it offers no guidance on when not to use it or mention of alternative tools, limiting decision support.

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

get_resilienceA

Get daily resilience scores showing your body's capacity to recover from stress. Includes sleep recovery, daytime recovery, and stress contributors. Resilience levels range from limited to exceptional.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A3.6/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 the full burden. It indicates a read operation with no destructive impact. However, it does not disclose behaviors like data availability for missing dates, defaulting behavior (though schema mentions 'defaults to today'), or any rate limits. Minimal but adequate for a simple data retrieval 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?

Two sentences with no wasted words. The first sentence states the purpose and key inclusions; the second adds value by describing the resilience level scale. Well-structured and front-loaded.

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 two simple optional parameters, no output schema, and no nested objects, the description is fairly complete. It explains what the scores include and the range. A minor gap is not specifying that results are returned as daily data, but overall sufficient for a tool of this complexity.

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

Parameters3/5

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

Schema coverage is 100%, and the description does not add extra meaning beyond what the schema provides. It mentions 'daily' and date range implicitly but does not explain parameter semantics further. Baseline score of 3 is appropriate.

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 'daily resilience scores' and explains what they measure (sleep recovery, daytime recovery, stress contributors) and the range (limited to exceptional). This verb+resource combination is specific and distinguishes it from related sibling tools like 'get_readiness' or 'get_stress'.

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. Sibling tools include 'get_readiness', 'get_stress', and other resilience-related analytics, but the description does not help the agent decide which to pick.

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 when you've enabled rest mode in the Oura app (typically during illness or recovery). Shows when rest mode was active and any notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to 30 days ago.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to today.

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 must cover behavioral traits. It states that the tool shows when rest mode was active and any notes, but it does not disclose if there are any side effects, permissions needed, or rate limits. For a simple retrieval tool, this is adequate but 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 two sentences long, front-loads the purpose, and contains no unnecessary words. Every sentence contributes 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 has no output schema and low complexity, the description adequately explains what the tool returns (rest mode periods and notes). It is complete enough for an agent to understand the output without further details.

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

Parameters3/5

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

The input schema has 100% description coverage, so the parameters are already well-documented. The description does not add additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

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 specifies the verb 'Get' and the resource 'rest mode periods', and it distinguishes itself from sibling tools like get_activity or get_sleep by focusing on a specific feature (rest mode) that is enabled during illness or recovery.

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

Usage Guidelines4/5

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

The description provides context on when to use the tool ('typically during illness or recovery'), which helps the agent decide. However, it does not explicitly state when not to use it or name alternative tools, but the context is sufficient for most cases.

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

get_ring_infoA

Get information about your Oura ring hardware including model, color, firmware version, and configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It accurately describes a read-only retrieval operation with no side effects. The listed attributes give the agent a clear expectation of what data is returned, though it does not mention any authentication or permission requirements.

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, well-formed sentence that efficiently communicates the tool's purpose and output. No unnecessary words or filler.

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 tool with no parameters and no output schema, the description adequately lists the key data fields returned. This is sufficient for the agent to understand the tool's capability without needing additional context.

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 tool has zero parameters, so baseline is 4. The description adds value by detailing the kind of information returned (model, color, firmware, configuration), which is not specified in the empty input 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 Oura ring hardware information including model, color, firmware version, and configuration. This clearly distinguishes it from sibling tools that analyze health metrics or retrieve other data.

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 usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, though the unique data type (hardware info) makes it implicitly the correct choice for such queries.

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

get_sessionsA

Get meditation, breathing, and relaxation sessions recorded with Oura. Includes session type, duration, and biometrics like heart rate and HRV during the session.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A3.5/5.0
Behavior3/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 discloses that sessions include type, duration, and biometrics like heart rate and HRV. However, it does not mention pagination, rate limits, or what happens when no data is found. It provides moderate transparency about return content but not operational behavior.

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 a single sentence that efficiently conveys the tool's purpose and key output fields. It is front-loaded and has no wasted words, but it could be slightly more structured by separating purpose and output details.

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 retrieval tool with two optional parameters and no output schema, the description covers the main purpose and return fields. It lacks explicit mention of the return format (e.g., array) or pagination, but these are relatively minor omissions given the low complexity.

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

Parameters3/5

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

Schema coverage is 100% with both parameters (start_date, end_date) described in the schema, including format and defaults. The tool description adds no additional parameter information beyond what the schema already provides. Baseline score of 3 is appropriate.

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 meditation, breathing, and relaxation sessions from Oura, listing specific included fields like type, duration, and biometrics. This is a specific verb-resource combination that distinguishes it from sibling tools like get_activity or get_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 is provided on when to use this tool versus alternatives. There is no mention of when not to use it or any comparison with sibling tools. The description assumes the agent will infer usage from the name alone.

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

get_sleepA

Get detailed sleep data for a date range. Returns sleep duration, stages (deep/REM/light), efficiency, heart rate, and HRV. Use this for analyzing sleep patterns and quality.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today if not specified.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date if not specified.

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description must cover behavioral traits. It implies a read operation and lists return fields, but does not explicitly state read-only, rate limits, or side effects. This is adequate but not fully transparent.

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?

Two sentences: first states function with scope, second lists returned data and use case. No fluff or redundancy. 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 no output schema, the description explains return values adequately (duration, stages, efficiency, heart rate, HRV). It does not cover errors, pagination, or empty data, but for a simple date-range query, it is largely complete.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for start_date and end_date (format, defaults). The description's mention of 'date range' reinforces this but adds no new parameter meaning beyond the schema. Baseline score of 3 is appropriate.

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 detailed sleep data for a date range and lists specific metrics (duration, stages, efficiency, heart rate, HRV). The verb 'Get' and resource 'sleep data' are specific, and the detail level distinguishes it from sibling tools like get_daily_sleep and get_sleep_time.

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

Usage Guidelines4/5

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

The description explicitly says 'Use this for analyzing sleep patterns and quality,' providing clear usage context. It does not mention when to avoid this tool or direct alternatives, but the sibling list implies different use cases, so it is still helpful.

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

get_sleep_timeA

Get Oura's personalized bedtime recommendations. Shows your ideal bedtime window based on your sleep patterns and circadian rhythm.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A3.8/5.0
Behavior3/5

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

Describes basic read behavior but lacks detail on permissions, rate limits, or data freshness. No annotations to supplement.

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?

Two efficient sentences, front-loaded with purpose, no waste.

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?

Sufficient for a simple tool with optional date range, no output schema. Reasonably complete given context.

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

Parameters3/5

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

Schema covers both parameters fully, description adds no extra parameter meaning. Baseline 3.

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?

Clearly states it retrieves personalized bedtime recommendations and ideal bedtime window, distinguishing it from raw sleep data tools like get_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?

Implies usage for recommendations but does not explicitly state when to use versus siblings like get_sleep or analyze_sleep_quality.

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

get_spo2B

Get daily SpO2 (blood oxygen saturation) percentage and breathing disturbance index. Use this to monitor respiratory health, detect sleep apnea patterns, or understand overnight oxygen levels.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description bears the full burden of disclosing behavioral traits. It only states what the tool retrieves but does not mention whether it is read-only, required permissions, error handling, pagination, or data completeness. This lack of detail could lead to incorrect assumptions about the tool's 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?

The description is concise, consisting of two sentences. The first sentence immediately states the tool's purpose, and the second sentence provides use cases. No extraneous words are used, and the information is front-loaded efficiently.

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 simplicity of the tool (2 optional parameters, no output schema, no annotations), the description provides the core purpose and use cases. However, it does not describe the return format or structure, which would be helpful for an agent. The lack of an output schema means the description should cover output details more thoroughly.

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

Parameters3/5

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

The input schema has 100% description coverage for both parameters (start_date and end_date), so the schema already explains their format and defaults. The tool description adds no additional meaning beyond what is in the schema, meeting the baseline expectation.

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 SpO2 percentage and breathing disturbance index, with specific use cases for respiratory health and sleep apnea. The verb 'get' combined with the resource 'daily SpO2' makes the purpose clear. However, it does not explicitly differentiate from sibling tools like get_heart_rate or get_sleep, which could lead to confusion.

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?

The description provides context for when to use the tool (monitoring respiratory health, detecting sleep apnea patterns, understanding overnight oxygen levels), but it lacks explicit exclusions or mentions of alternative tools. No guidance is given on when not to use this tool or prerequisites.

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

get_stressA

Get daily stress levels and recovery time. Shows time spent in high stress vs high recovery zones, plus overall day summary (restored/normal/stressful). Use this to understand stress patterns and recovery balance.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A4.3/5.0
Behavior4/5

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

In the absence of annotations, the description discloses the tool's read-only nature and details the output content (time in zones, day summary). However, it does not mention any potential 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?

The description is concise with two sentences. The first sentence clearly states the action and resource, and the second explains the output. No unnecessary words or repetition.

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?

Given the tool's simplicity (two optional date parameters, no output schema), the description adequately explains the output categories and general behavior. It fully addresses what an agent needs to know for basic selection and invocation.

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 input schema has 100% description coverage for both parameters. The description adds value by clarifying defaults (today for start_date, start_date for end_date) and the required date format (YYYY-MM-DD), which goes beyond the 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 tool's purpose: retrieving daily stress levels and recovery time, including specific output categories like time in high stress vs high recovery zones and a day summary. This distinguishes it from sibling tools that focus on other metrics.

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?

The description provides a general use case ('understand stress patterns and recovery balance') but lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusion criteria or sibling comparisons are mentioned.

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

get_tagsB

Get user-created tags and notes. Tags help track lifestyle factors like caffeine, alcohol, meals, or custom notes that may affect sleep and recovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

B3.1/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, data limits, or side effects. For a read operation, confirming safety would be helpful.

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?

Two concise sentences: first states the action, second provides context. No wasted words and front-loaded with the core purpose.

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?

Adequate for a simple getter tool with no output schema. Explains what tags are used for, but does not describe return format or any pagination/limitations.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The description adds context about tag usage but does not elaborate on parameter details beyond the schema.

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 'Get user-created tags and notes' and explains their purpose for tracking lifestyle factors. However, it does not distinguish from the sibling tool 'get_enhanced_tags' which likely has overlapping functionality.

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 (e.g., 'get_enhanced_tags') or any prerequisites. The description only implies general use for tracking lifestyle factors.

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

get_vo2_maxA

Get VO2 max measurements (cardiorespiratory fitness). VO2 max indicates the maximum amount of oxygen your body can use during intense exercise. Higher values indicate better cardiovascular fitness. Use this to track fitness improvements over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It correctly identifies the tool as a getter (non-destructive), but lacks details on authentication, rate limits, or side effects, which are not critical for such a simple read-only 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?

Very concise: three sentences that front-load the action ('Get VO2 max measurements') and add minimal but valuable context. 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?

With no output schema, the description should ideally describe the return format. It only says 'measurements' without detail, which is adequate for a simple numeric metric but lacks completeness.

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

Parameters3/5

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

Schema description coverage is 100% with both parameters well-documented (e.g., 'Start date in YYYY-MM-DD format'). The description adds no additional parameter meaning beyond what the schema already provides, resulting in a baseline score.

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 VO2 max measurements' with a specific verb and resource, and distinguishes it from sibling tools like get_heart_rate or get_spo2 by focusing on cardiorespiratory fitness.

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

Usage Guidelines4/5

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

The description provides a clear use case ('Use this to track fitness improvements over time') but does not explicitly exclude alternative tools or provide when-not-to-use guidance.

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, duration, intensity, calories burned, and distance. Use this to analyze exercise patterns, workout frequency, and training load.

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateNoStart date in YYYY-MM-DD format. Defaults to today.
end_dateNoEnd date in YYYY-MM-DD format. Defaults to start_date.

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It mentions retrieving workout sessions but does not disclose whether it returns all sessions, uses pagination, or is read-only. The date range behavior is implied via schema but not explicitly stated as defaulting to today's date.

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 two sentences with no redundant words. It efficiently states the purpose and use case, making it easy to read.

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?

The description lists the fields returned, which is helpful given no output schema. However, it lacks details on response format, ordering, or any filtering beyond dates. For a relatively simple tool with no output schema, it is adequate but not thorough.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters. The description does not add additional meaning beyond what the schema provides, meriting the baseline score of 3.

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 it gets workout sessions and lists specific data fields (activity type, duration, etc.), indicating the resource and verb. However, it does not explicitly differentiate from siblings like 'get_activity' or 'get_sessions', which may also return workout-like data.

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?

The description suggests using the tool to analyze exercise patterns, frequency, and training load, which implies when to use it. However, it provides no guidance on when not to use it or alternative tools for similar purposes, such as 'analyze_adherence' or 'get_activity'.

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. Dates show when Glama detected each change.

  1. 27 tool updatesv0.1.4
    • First observedanalyze_adherence
    • First observedanalyze_hrv_trend
    • First observedanalyze_sleep_quality
    • First observedanalyze_temperature
    • First observedbest_sleep_conditions
    • First observedcompare_conditions
    • First observedcompare_periods
    • First observedcorrelate_metrics
    • First observeddetect_anomalies
    • First observedget_activity
    • First observedget_cardiovascular_age
    • First observedget_daily_sleep
    • First observedget_enhanced_tags
    • First observedget_heart_rate
    • First observedget_personal_info
    • First observedget_readiness
    • First observedget_resilience
    • First observedget_rest_mode
    • First observedget_ring_info
    • First observedget_sessions
    • First observedget_sleep
    • First observedget_sleep_time
    • First observedget_spo2
    • First observedget_stress
    • First observedget_tags
    • First observedget_vo2_max
    • First observedget_workouts

TDQS

B3.4/5.0
Disambiguation4/5

Most tools have distinct purposes, with clear separation between retrieval (get_*) and analysis (analyze_*, compare_*, etc.). However, there is some potential overlap among analytical tools like analyze_sleep_quality, best_sleep_conditions, and compare_conditions, which could cause confusion for an agent without careful reading of descriptions.

Naming Consistency3/5

The naming uses multiple verb styles (get, analyze, compare, correlate, detect) and one adjective phrase (best_sleep_conditions), making the pattern inconsistent. While each verb indicates a function, the lack of a single predictable convention reduces coherence.

Tool Count3/5

With 27 tools, the server is on the high side for a single-domain MCP. While each tool seems justified by the rich Oura data model, the quantity may overwhelm agents and suggests potential over-scoping.

Completeness4/5

The tool set covers a wide range of Oura metrics (sleep, activity, HRV, temperature, tags, workouts, etc.) and provides both data retrieval and analysis. Minor gaps exist, such as no create/update operations for tags or sessions, but these are reasonable for a read-and-analyze focused server.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mitchhankins01/oura-ring-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server