Oura MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.39.2Updated Nov 14, 2026

Read sleep, readiness, activity, stress, heart rate and workouts from the Oura Ring.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableLocation & LifestyleData & Analytics

Overview

AI-generated overview

Hosted Oura Ring server that lets an assistant read sleep, readiness, activity, stress, heart rate and workout data, plus manage webhook subscriptions.

What you can do
  • Read profile details such as age, weight, height and sex
  • List and fetch Oura collection documents over a date range: sleep, readiness, activity, stress, resilience, workouts and sessions
  • Retrieve heart-rate samples and ring battery readings over a datetime window or the latest value
  • List, inspect, create, renew and delete webhook subscriptions
  • Check monthly usage, request a feature, and upgrade or cancel a paid plan
When to use it
Useful when you want an assistant to summarize or compare your Oura Ring metrics, such as sleep scores over recent nights, average readiness for a month, or lowest overnight heart rate, and to keep a webhook integration alive.
Requirements
Remote MCP endpoint reached by URL only; no local install. Sign-in uses OAuth, and on first connect you paste your Oura credentials, which are stored per user. No API key or Authorization header goes in the client config. A free tier allows 50 tool calls per month; paid plans raise the limit.
Before you install
The server asks for your Oura account credentials during OAuth sign-in, and health data is read through a third-party host. Webhook tools create, renew and delete subscriptions, which change data and stop notifications when deleted. Paid plans cost money: Pro is $9/month or $90/year and Pro+ is $39/month or $390/year, billed through a Stripe checkout link; upgrades charge the price difference immediately and cancellations give no refund for the current period.

Installation

In SourceWeft

  1. Open Oura MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Foura/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "oura-by-usefulapi": {
      "type": "http",
      "url": "https://oura.usefulapi.io/mcp"
    }
  }
}

README

Oura MCP by usefulapi

Read sleep, readiness, activity, stress, heart rate and workouts from the Oura Ring. Hosted, no local install.

Live endpoint: https://oura.usefulapi.io/mcp · Homepage: https://usefulapi.io

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://oura.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http oura https://oura.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "oura": {      "url": "https://oura.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your Oura credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/oura/

On first connect you'll paste your Oura credentials. They are validated, stored per-user, and scoped to you — no keys in config files.

Tools

ToolTypeWhat it does
oura_get_personal_inforeadGet personal info
oura_list_documentsreadList documents from a collection
oura_get_documentreadGet one document
oura_get_heartratereadGet heart-rate samples
oura_get_ring_battery_levelreadGet ring battery level
oura_list_webhook_subscriptionsreadList webhook subscriptions
oura_get_webhook_subscriptionreadGet one webhook subscription
oura_create_webhook_subscriptionwriteCreate a webhook subscription
oura_renew_webhook_subscriptionwriteRenew a webhook subscription
oura_delete_webhook_subscriptionwriteDelete a webhook subscription
oura_usage_statusmetaUsage status (free-tier meter)
oura_request_featuremetaRequest a missing feature
oura_upgrademetaUpgrade to Pro or Pro+
oura_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro$9/mo or $90/yr (2 months free)10,000 tool calls / month
Pro+$39/mo or $390/yr (2 months free)100,000 tool calls / month

Each paid plan covers this server only. Ask your AI to run oura_upgrade and choose Pro or Pro+, billed monthly or yearly (it returns a Stripe Checkout link). If you already have Pro, ask to change it to Pro+. The change requires your confirmation, keeps your billing interval and charges the price difference for the rest of the period immediately. Cancel any time with oura_cancel_subscription: your paid plan continues to the end of the paid period, with no refund for the current period, and asking to resume the same plan with oura_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT

Source: servers/oura/README.md at commit f22f848

Tools

10

oura_get_personal_info

Get personal info

Fetch the wearer's profile — age, weight, height, biological sex and email. Oura: GET /v2/usercollection/personal_info.

Parameterssandbox

oura_list_documents

List documents from a collection

List documents from one Oura collection over a date range. This is the main read: pick `collection` for what you want — daily_sleep and sleep for sleep, daily_readiness for recovery, daily_activity for movement, daily_stress and daily_resilience for load, workout and session for exercise, daily_spo2, daily_cardiovascular_age and vO2_max for cardiovascular measures, tag and enhanced_tag for the wearer's own annotations, rest_mode_period and ring_configuration for device state. Oura: GET /v2/usercollection/{collection}.

Parameterssandboxend_datecollectionrequirednext_tokenstart_date

oura_get_document

Get one document

Fetch a single document by id from one collection. Ids come from oura_list_documents. Oura: GET /v2/usercollection/{collection}/{document_id}.

Parameterssandboxcollectionrequireddocument_idrequired

oura_get_heartrate

Get heart-rate samples

Fetch individual heart-rate samples over a DATETIME range. This collection is sampled continuously, so it uses start_datetime/end_datetime rather than dates, and can return a great many points — narrow the window or pass latest. Oura: GET /v2/usercollection/heartrate.

Parameterslatestsandboxnext_tokenend_datetimestart_datetime

oura_get_ring_battery_level

Get ring battery level

Fetch ring battery readings over a DATETIME range, or just the latest. Oura: GET /v2/usercollection/ring_battery_level.

Parameterslatestsandboxnext_tokenend_datetimestart_datetime

oura_list_webhook_subscriptions

List webhook subscriptions

List the webhook subscriptions registered for the application. Oura: GET /v2/webhook/subscription.

Takes no parameters.

oura_get_webhook_subscription

Get one webhook subscription

Fetch a single webhook subscription with its callback URL, event type and expiry. Oura: GET /v2/webhook/subscription/{id}.

Parameterssubscription_idrequired

oura_create_webhook_subscription

Create a webhook subscription

Register a webhook so Oura notifies your callback URL when data changes. Oura verifies the URL before activating it, and the subscription EXPIRES — renew it with oura_renew_webhook_subscription. Oura: POST /v2/webhook/subscription.

Parametersdata_typerequiredevent_typerequiredcallback_urlrequiredverification_tokenrequired

oura_renew_webhook_subscription

Renew a webhook subscription

Extend a webhook subscription's expiry. Oura subscriptions lapse if not renewed, so this is the tool that keeps a live integration alive. Oura: PUT /v2/webhook/subscription/renew/{id}.

Parameterssubscription_idrequired

oura_delete_webhook_subscription

Delete a webhook subscription

Remove a webhook subscription. Notifications stop immediately. Oura: DELETE /v2/webhook/subscription/{id}.

Parameterssubscription_idrequired

Version history

26
  1. v1.39.2LatestNov 14, 2026
  2. v1.39.1Nov 13, 2026
  3. v1.38.0Nov 12, 2026
  4. v1.37.3Nov 11, 2026
  5. v1.36.5Nov 8, 2026
  6. v1.36.4Nov 7, 2026
  7. v1.35.3Nov 5, 2026
  8. v1.35.2Nov 5, 2026
  9. v1.35.1Nov 4, 2026
  10. v1.35.0Nov 3, 2026
  11. v1.34.1Nov 3, 2026
  12. v1.33.0Nov 1, 2026
  13. v1.31.0Oct 31, 2026
  14. v1.30.0Oct 31, 2026
  15. v1.29.2Oct 30, 2026
  16. v1.29.0Oct 30, 2026
  17. v1.24.0Oct 26, 2026
  18. v1.21.3Oct 25, 2026
  19. v1.21.0Oct 25, 2026
  20. v1.20.0Oct 24, 2026
  21. v1.17.0Oct 23, 2026
  22. v1.16.4Oct 22, 2026
  23. v1.16.3Oct 21, 2026
  24. v1.11.1Oct 9, 2026
  25. v1.10.0Oct 9, 2026
  26. v1.0.0Sep 29, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations