vital

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

사용해야 할까요

품질 및 안전성

A
설명 품질
100%
스키마 완전성
95%
이름 품질
79%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'vital_get_user_connected_providers' name length outside 3-30 rangevital_get_user_connected_providers에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~3,472토큰 (도구 정의)
~1.2 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 2.71%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "vital": {
      "url": "https://vital.usefulapi.io/mcp"
    }
  }
}

원격 엔드포인트

https://vital.usefulapi.io/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (21)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢vital_list_users(offset, limit)

List all Vital users in your team, paginated. Vital API: GET /v2/user.

입력 스키마

{
  "type": "object",
  "properties": {
    "offset": {
      "description": "Pagination offset.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "limit": {
      "description": "Max users to return.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_user(user_id)

Get a single Vital user by their Vital user_id. Vital API: GET /v2/user/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_resolve_user(client_user_id)

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

입력 스키마

{
  "type": "object",
  "properties": {
    "client_user_id": {
      "type": "string",
      "description": "Your own stable id for the user."
    }
  },
  "required": [
    "client_user_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_user_connected_providers(user_id)

List the wearables/data sources (providers) a user has connected. Vital API: GET /v2/user/providers/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_user_latest_info(user_id)

Get the latest device/app info reported for a user. Vital API: GET /v2/user/{user_id}/info/latest.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_list_providers

List all providers (wearables/data sources) Vital supports. Vital API: GET /v2/providers.

입력 스키마

{
  "type": "object",
  "properties": {},
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_sleep(user_id, start_date, end_date, provider)

Get sleep summaries for a user over a date range. Vital API: GET /v2/summary/sleep/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date yyyy-mm-dd (inclusive, required)."
    },
    "end_date": {
      "description": "End date yyyy-mm-dd (inclusive). Defaults to today upstream.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "provider": {
      "description": "Filter to a single provider slug (e.g. oura, fitbit).",
      "type": "string"
    }
  },
  "required": [
    "user_id",
    "start_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_activity(user_id, start_date, end_date, provider)

Get activity summaries for a user over a date range. Vital API: GET /v2/summary/activity/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date yyyy-mm-dd (inclusive, required)."
    },
    "end_date": {
      "description": "End date yyyy-mm-dd (inclusive). Defaults to today upstream.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "provider": {
      "description": "Filter to a single provider slug (e.g. oura, fitbit).",
      "type": "string"
    }
  },
  "required": [
    "user_id",
    "start_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_workouts(user_id, start_date, end_date, provider)

Get workouts summaries for a user over a date range. Vital API: GET /v2/summary/workouts/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date yyyy-mm-dd (inclusive, required)."
    },
    "end_date": {
      "description": "End date yyyy-mm-dd (inclusive). Defaults to today upstream.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "provider": {
      "description": "Filter to a single provider slug (e.g. oura, fitbit).",
      "type": "string"
    }
  },
  "required": [
    "user_id",
    "start_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_body(user_id, start_date, end_date, provider)

Get body summaries for a user over a date range. Vital API: GET /v2/summary/body/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date yyyy-mm-dd (inclusive, required)."
    },
    "end_date": {
      "description": "End date yyyy-mm-dd (inclusive). Defaults to today upstream.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "provider": {
      "description": "Filter to a single provider slug (e.g. oura, fitbit).",
      "type": "string"
    }
  },
  "required": [
    "user_id",
    "start_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_meal(user_id, start_date, end_date, provider)

Get meal summaries for a user over a date range. Vital API: GET /v2/summary/meal/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date yyyy-mm-dd (inclusive, required)."
    },
    "end_date": {
      "description": "End date yyyy-mm-dd (inclusive). Defaults to today upstream.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "provider": {
      "description": "Filter to a single provider slug (e.g. oura, fitbit).",
      "type": "string"
    }
  },
  "required": [
    "user_id",
    "start_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_menstrual_cycle(user_id, start_date, end_date, provider)

Get menstrual cycle summaries for a user over a date range. Vital API: GET /v2/summary/menstrual_cycle/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date yyyy-mm-dd (inclusive, required)."
    },
    "end_date": {
      "description": "End date yyyy-mm-dd (inclusive). Defaults to today upstream.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "provider": {
      "description": "Filter to a single provider slug (e.g. oura, fitbit).",
      "type": "string"
    }
  },
  "required": [
    "user_id",
    "start_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_profile(user_id, provider)

Get a user's profile summary (height, and other static attributes). Vital API: GET /v2/summary/profile/{user_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    },
    "provider": {
      "description": "Filter to a single provider slug (e.g. oura, fitbit).",
      "type": "string"
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_timeseries(user_id, resource, start_date, end_date, provider)

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

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id (UUID)."
    },
    "resource": {
      "type": "string",
      "enum": [
        "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"
      ],
      "description": "Timeseries resource to fetch."
    },
    "start_date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date yyyy-mm-dd (inclusive, required)."
    },
    "end_date": {
      "description": "End date yyyy-mm-dd (inclusive). Defaults to today upstream.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "provider": {
      "description": "Filter to a single provider slug (e.g. oura, fitbit).",
      "type": "string"
    }
  },
  "required": [
    "user_id",
    "resource",
    "start_date"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_list_lab_tests(name, status, lab_slug, order_key, order_direction)

List the lab tests available/configured for your team. Vital API: GET /v3/lab_tests.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "description": "Filter by lab test name.",
      "type": "string"
    },
    "status": {
      "description": "Filter by lab test status (e.g. active).",
      "type": "string"
    },
    "lab_slug": {
      "description": "Filter by lab slug.",
      "type": "string"
    },
    "order_key": {
      "description": "Sort key.",
      "type": "string",
      "enum": [
        "price",
        "created_at",
        "updated_at"
      ]
    },
    "order_direction": {
      "description": "Sort direction.",
      "type": "string",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_lab_test(lab_test_id)

Get a single lab test by id. Vital API: GET /v3/lab_tests/{lab_test_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "lab_test_id": {
      "type": "string",
      "description": "The lab test id (UUID)."
    }
  },
  "required": [
    "lab_test_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_list_orders(page, size, user_id, status, start_date, ...)

List lab-test orders with filters, paginated. Vital API: GET /v3/orders.

입력 스키마

{
  "type": "object",
  "properties": {
    "page": {
      "description": "Page number (1-based).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "size": {
      "description": "Page size.",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "user_id": {
      "description": "Filter to a single Vital user id (UUID).",
      "type": "string"
    },
    "status": {
      "description": "Filter by order status.",
      "type": "string"
    },
    "start_date": {
      "description": "Filter by created-at start (ISO datetime).",
      "type": "string"
    },
    "end_date": {
      "description": "Filter by created-at end (ISO datetime).",
      "type": "string"
    },
    "search_input": {
      "description": "Free-text search.",
      "type": "string"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_order(order_id)

Get a single lab-test order by id. Vital API: GET /v3/order/{order_id}.

입력 스키마

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The order id (UUID)."
    }
  },
  "required": [
    "order_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢vital_get_order_results(order_id)

Get the lab-test results for an order. Vital API: GET /v3/order/{order_id}/result.

입력 스키마

{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "The order id (UUID)."
    }
  },
  "required": [
    "order_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴vital_create_user(client_user_id, fallback_time_zone, fallback_birth_date, ingestion_start, ingestion_end)

Creates a Vital user record (additive). Returns the Vital user_id. Vital API: POST /v2/user.

입력 스키마

{
  "type": "object",
  "properties": {
    "client_user_id": {
      "type": "string",
      "description": "Your own stable id for the user (required)."
    },
    "fallback_time_zone": {
      "description": "IANA time zone used if the provider doesn't report one.",
      "type": "string"
    },
    "fallback_birth_date": {
      "description": "Fallback birth date yyyy-mm-dd.",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "ingestion_start": {
      "description": "Earliest date to ingest data from (yyyy-mm-dd).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    },
    "ingestion_end": {
      "description": "Latest date to ingest data to (yyyy-mm-dd).",
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$"
    }
  },
  "required": [
    "client_user_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🔴vital_create_link_token(user_id, provider, redirect_url, filter_on_providers)

Creates a short-lived Link token to connect a user's wearable/provider (no health data is modified). Vital API: POST /v2/link/token.

입력 스키마

{
  "type": "object",
  "properties": {
    "user_id": {
      "type": "string",
      "description": "The Vital user id to create the link token for (required)."
    },
    "provider": {
      "description": "Pre-select a single provider slug to connect.",
      "type": "string"
    },
    "redirect_url": {
      "description": "URL to redirect to after the connection flow.",
      "type": "string"
    },
    "filter_on_providers": {
      "description": "Restrict the connectable providers to this list of slugs.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "user_id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

권장 프롬프트

retrieve_data
Get details about [item] from vital
예상 도구: vital_get_user
fetch_info
Fetch [information type] using vital
예상 도구: vital_get_user
list_items
List all [items] available in vital
예상 도구: vital_list_users
browse_collection
Show me the [collection] from vital
예상 도구: vital_list_users
explore_workflow
List available [items], then get details for each one using vital
예상 도구: vital_list_usersvital_get_user

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 21개
검증됨버전이 기록되지 않음도구 21개