Oura MCP by usefulapi

io.usefulapi/oura

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

Yes, your AI can use this right now.Answered a live MCP handshake in 176 ms with no sign-in needed and exposes 10 tools.

Connect it

Settings → Connectors → Add custom connector
URL: https://oura.usefulapi.io/mcp

10 tools, verified live

Pulled straight from the server with tools/list on 2026-10-18.
oura_get_personal_inforead-only

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

oura_list_documentsread-only

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 wea

oura_get_documentread-only

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

oura_get_heartrateread-only

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.

oura_get_ring_battery_levelread-only

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

oura_list_webhook_subscriptionsread-only

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

oura_get_webhook_subscriptionread-only

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

oura_create_webhook_subscriptioncan modify

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.

oura_renew_webhook_subscriptioncan modify

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}.

oura_delete_webhook_subscriptioncan modify

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

Alternatives in Other

Compare →
Try “Notion”, “Stripe”, “create invoice”, “browser”