Skip to content

Vital MCP by usefulapi

by usefulapi.io · remote · no sign-in to list tools · v1.16.3 · published by io.usefulapi

Read wearables and lab health data — sleep, activity, workouts, timeseries, lab tests and orders.

Deletes · 2

21 tools: 2 can delete or cancel things and 19 only read.

Scanned Oct 21, 2026

No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http vital https://vital.usefulapi.io/mcp

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

21 tools

Deletes or cancels 2Claude Code: deny
  • vital_create_userCreates a Vital user record (additive).No findings

    Why it is in this group

    • The name "vital_create_user" says "create": a word for a change.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Creates a Vital user record (additive). Returns the Vital user_id. Vital API: POST /v2/user.

    Annotations the server declares

    • title: Create user
    • destructiveHint: true
Only reads 19Claude Code: allow
  • vital_get_activityGet activity summaries for a user over a date range.No findings

    Why it is in this group

    • The name "vital_get_activity" says "get": a word for reading.
    Description, as the server wrote it
    Get activity summaries for a user over a date range. Vital API: GET /v2/summary/activity/{user_id}.

    Annotations the server declares

    • title: Activity
    • readOnlyHint: true
  • vital_get_bodyGet body summaries for a user over a date range.No findings

    Why it is in this group

    • The name "vital_get_body" says "get": a word for reading.
    Description, as the server wrote it
    Get body summaries for a user over a date range. Vital API: GET /v2/summary/body/{user_id}.

    Annotations the server declares

    • title: Body
    • readOnlyHint: true
  • vital_get_lab_testGet a single lab test by id.No findings

    Why it is in this group

    • The name "vital_get_lab_test" says "get": a word for reading.
    Description, as the server wrote it
    Get a single lab test by id. Vital API: GET /v3/lab_tests/{lab_test_id}.

    Annotations the server declares

    • title: Get lab test
    • readOnlyHint: true
  • vital_get_mealGet meal summaries for a user over a date range.No findings

    Why it is in this group

    • The name "vital_get_meal" says "get": a word for reading.
    Description, as the server wrote it
    Get meal summaries for a user over a date range. Vital API: GET /v2/summary/meal/{user_id}.

    Annotations the server declares

    • title: Meal
    • readOnlyHint: true
  • vital_get_menstrual_cycleGet menstrual cycle summaries for a user over a date range.No findings

    Why it is in this group

    • The name "vital_get_menstrual_cycle" says "get": a word for reading.
    Description, as the server wrote it
    Get menstrual cycle summaries for a user over a date range. Vital API: GET /v2/summary/menstrual_cycle/{user_id}.

    Annotations the server declares

    • title: Menstrual cycle
    • readOnlyHint: true
  • vital_get_orderGet a single lab-test order by id.No findings

    Why it is in this group

    • The name "vital_get_order" says "get": a word for reading.
    Description, as the server wrote it
    Get a single lab-test order by id. Vital API: GET /v3/order/{order_id}.

    Annotations the server declares

    • title: Get order
    • readOnlyHint: true
  • vital_get_order_resultsGet the lab-test results for an order.No findings

    Why it is in this group

    • The name "vital_get_order_results" says "get": a word for reading.
    Description, as the server wrote it
    Get the lab-test results for an order. Vital API: GET /v3/order/{order_id}/result.

    Annotations the server declares

    • title: Get order results
    • readOnlyHint: true
  • vital_get_profileGet a user's profile summary (height, and other static attributes).No findings

    Why it is in this group

    • The name "vital_get_profile" says "get": a word for reading.
    Description, as the server wrote it
    Get a user's profile summary (height, and other static attributes). Vital API: GET /v2/summary/profile/{user_id}.

    Annotations the server declares

    • title: Profile
    • readOnlyHint: true
  • vital_get_sleepGet sleep summaries for a user over a date range.No findings

    Why it is in this group

    • The name "vital_get_sleep" says "get": a word for reading.
    Description, as the server wrote it
    Get sleep summaries for a user over a date range. Vital API: GET /v2/summary/sleep/{user_id}.

    Annotations the server declares

    • title: Sleep
    • readOnlyHint: true
  • vital_get_timeseriesGet timeseries data points for a user and resource over a date range.No findings

    Why it is in this group

    • The name "vital_get_timeseries" says "get": a word for reading.
    Description, as the server wrote it
    Get timeseries data points for a user and resource over a date range. Supported resources: heartrate, hrv, glucose, blood_pressure, blood_oxygen, steps, respiratory_rate, body_weight, body_fat, distance, water, vo2_max, stress_level, mindfulness_minutes, calories_active, calories_basal, floors_climbed, caffeine, cholesterol. Vital API: GET /v2/timeseries/{user_id}/{resource}.

    Annotations the server declares

    • title: Get timeseries data
    • readOnlyHint: true
  • vital_get_userGet a single Vital user by their Vital user_id.No findings

    Why it is in this group

    • The name "vital_get_user" says "get": a word for reading.
    Description, as the server wrote it
    Get a single Vital user by their Vital user_id. Vital API: GET /v2/user/{user_id}.

    Annotations the server declares

    • title: Get user
    • readOnlyHint: true
  • vital_get_user_connected_providersList the wearables/data sources (providers) a user has connected.No findings

    Why it is in this group

    • The name "vital_get_user_connected_providers" says "get": a word for reading.
    Description, as the server wrote it
    List the wearables/data sources (providers) a user has connected. Vital API: GET /v2/user/providers/{user_id}.

    Annotations the server declares

    • title: Get user's connected providers
    • readOnlyHint: true
  • vital_get_user_latest_infoGet the latest device/app info reported for a user.No findings

    Why it is in this group

    • The name "vital_get_user_latest_info" says "get": a word for reading.
    Description, as the server wrote it
    Get the latest device/app info reported for a user. Vital API: GET /v2/user/{user_id}/info/latest.

    Annotations the server declares

    • title: Get user's latest info
    • readOnlyHint: true
  • vital_get_workoutsGet workouts summaries for a user over a date range.No findings

    Why it is in this group

    • The name "vital_get_workouts" says "get": a word for reading.
    Description, as the server wrote it
    Get workouts summaries for a user over a date range. Vital API: GET /v2/summary/workouts/{user_id}.

    Annotations the server declares

    • title: Workouts
    • readOnlyHint: true
  • vital_list_lab_testsList the lab tests available/configured for your team.No findings

    Why it is in this group

    • The name "vital_list_lab_tests" says "list": a word for reading.
    Description, as the server wrote it
    List the lab tests available/configured for your team. Vital API: GET /v3/lab_tests.

    Annotations the server declares

    • title: List lab tests
    • readOnlyHint: true
  • vital_list_ordersList lab-test orders with filters, paginated.No findings

    Why it is in this group

    • The name "vital_list_orders" says "list": a word for reading.
    Description, as the server wrote it
    List lab-test orders with filters, paginated. Vital API: GET /v3/orders.

    Annotations the server declares

    • title: List orders
    • readOnlyHint: true
  • vital_list_providersList all providers (wearables/data sources) Vital supports.No findings

    Why it is in this group

    • The name "vital_list_providers" says "list": a word for reading.
    Description, as the server wrote it
    List all providers (wearables/data sources) Vital supports. Vital API: GET /v2/providers.

    Annotations the server declares

    • title: List supported providers
    • readOnlyHint: true
  • vital_list_usersList all Vital users in your team, paginated.No findings

    Why it is in this group

    • The name "vital_list_users" says "list": a word for reading.
    Description, as the server wrote it
    List all Vital users in your team, paginated. Vital API: GET /v2/user.

    Annotations the server declares

    • title: List users
    • readOnlyHint: true
  • vital_resolve_userLook up a Vital user by your own client_user_id (the stable id you assigned).No findings

    Why it is in this group

    • The name "vital_resolve_user" says "resolve": a word for reading.
    Description, as the server wrote it
    Look up a Vital user by your own client_user_id (the stable id you assigned). Vital API: GET /v2/user/resolve/{client_user_id}.

    Annotations the server declares

    • title: Resolve user by client_user_id
    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.16.3. Values in angle brackets are yours to fill in.

claude mcp add --transport http vital https://vital.usefulapi.io/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__vital__vital_list_users",
      "mcp__vital__vital_get_user",
      "mcp__vital__vital_resolve_user",
      "mcp__vital__vital_get_user_connected_providers",
      "mcp__vital__vital_get_user_latest_info",
      "mcp__vital__vital_list_providers",
      "mcp__vital__vital_get_sleep",
      "mcp__vital__vital_get_activity",
      "mcp__vital__vital_get_workouts",
      "mcp__vital__vital_get_body",
      "mcp__vital__vital_get_meal",
      "mcp__vital__vital_get_menstrual_cycle",
      "mcp__vital__vital_get_profile",
      "mcp__vital__vital_get_timeseries",
      "mcp__vital__vital_list_lab_tests",
      "mcp__vital__vital_get_lab_test",
      "mcp__vital__vital_list_orders",
      "mcp__vital__vital_get_order",
      "mcp__vital__vital_get_order_results"
    ],
    "ask": [],
    "deny": [
      "mcp__vital__vital_create_user",
      "mcp__vital__vital_create_link_token"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as vital. Review it before you use it.