Access your Gevety health data - biomarkers, healthspan scores, biological age, supplements, medications, medical profile, activities, strength training, erg results, daily actions, 90-day health protocol, upcoming tests, lab reports, health documents, clinical findings, and health content
You have access to the user's health data from Gevety via the REST API. Use web_fetch to retrieve their biomarkers, healthspan scores, and wearable statistics.
If this is the user's first time using Gevety, guide them through setup:
gvt_~/.clawdbot/clawdbot.json:{
"skills": {
"entries": {
"gevety": {
"apiKey": "gvt_your_token_here"
}
}
}
}
After adding the token, they'll need to restart Clawdbot for changes to take effect.
All requests require Bearer authentication. Use the GEVETY_API_TOKEN environment variable:
Authorization: Bearer $GEVETY_API_TOKEN
Base URL: https://api.gevety.com
The API preserves biomarker specificity. Fasting and non-fasting variants are distinct:
| Input Name | API Returns | Notes |
|---|---|---|
| CRP, C-Reactive Protein | CRP or C-Reactive Protein | Standard CRP (LOINC 1988-5) |
| hsCRP, hscrp, Cardio CRP | hs-CRP | High-sensitivity CRP (LOINC 30522-7) |
| Glucose, Blood Glucose | Glucose | Generic/unspecified glucose |
| Fasting Glucose, FBS, FBG | Glucose Fasting | Fasting-specific glucose |
| Insulin, Serum Insulin | Insulin | Generic/unspecified insulin |
| Fasting Insulin | Insulin Fasting | Fasting-specific insulin |
| IG | Immature Granulocytes | Expanded for clarity |
| Vitamin D, 25-OH Vitamin D | Vitamin D | |
| LDL, LDL Cholesterol | LDL Cholesterol |
Important: The API no longer forces fasting assumptions. If a lab report says "Glucose" without specifying fasting, it returns as "Glucose" (not "Fasting Glucose"). This preserves the original context from your lab results.
Always call this first to discover what health data exists.
GET /api/v1/mcp/tools/list_available_data
Returns:
biomarkers: List of tracked biomarkers with test counts and latest dateswearables: Connected devices and available metricsinsights: Whether healthspan score is calculated, axis scores availabledata_coverage: Percentage of recommended biomarkers tracked (0-100)Overview of the user's health status.
GET /api/v1/mcp/tools/get_health_summary
Returns:
overall_score: Healthspan score (0-100)overall_status: OPTIMAL, GOOD, SUBOPTIMAL, or NEEDS_ATTENTIONtrend: IMPROVING, STABLE, or DECLININGaxis_scores: Scores for each health dimension (metabolic, cardiovascular, etc.)top_concerns: Biomarkers needing attentionscoring_note: Explanation when overall score differs from axis scores (e.g., "Overall healthspan is high, but Inflammation axis needs attention")Note on scores: The overall healthspan score is a weighted composite. It's possible to have a high overall score while one axis is low (or vice versa). The scoring_note field explains these situations.
Get detailed history for a specific biomarker.
GET /api/v1/mcp/tools/query_biomarker?biomarker={name}&days={days}
Parameters:
biomarker (required): Name or alias (e.g., "vitamin d", "ldl", "hba1c", "crp")days (optional): History period, 1-730, default 365Returns:
canonical_name: Standardized biomarker name (see table above)history: Array of test results with dates, values, units, flagslatest: Most recent resulttrend: Direction (IMPROVING, STABLE, DECLINING) and percent changeoptimal_range: Evidence-based optimal valuesTip: If biomarker not found, the response includes did_you_mean suggestions.
Daily metrics from connected wearables (Garmin, Oura, Whoop, etc.).
GET /api/v1/mcp/tools/get_wearable_stats?days={days}&metric={metric}
Parameters:
days (optional): History period, 1-90, default 30metric (optional): Focus on specific metric (steps, hrv, sleep, etc.)Returns:
connected_sources: List of connected wearable platformsdaily_metrics: Per-day data (steps, resting HR, HRV, sleep, recovery)summaries: Aggregated stats with averages, min, max, trendsGet ranked health improvement opportunities with estimated healthspan impact.
GET /api/v1/mcp/tools/get_opportunities?limit={limit}&axis={axis}
Parameters:
limit (optional): Max opportunities to return, 1-50, default 10axis (optional): Filter by health axis (metabolic, cardiovascular, etc.)Returns:
opportunities: Ranked list of improvement opportunitiestotal_opportunity_score: Total healthspan points availabletotal_years_estimate: Estimated years of healthy life if all optimizedhealthspan_score: Current healthspan scoreEach opportunity includes:
biomarker: Standardized biomarker namecurrent_value / optimal_value: Where you are vs targetopportunity_score: Healthspan points gained if optimizedyears_estimate: Estimated healthy years gainedpriority: Rank (1 = highest impact)Calculate biological age using validated algorithms (PhenoAge, Light BioAge).
GET /api/v1/mcp/tools/get_biological_age
Returns:
result: Biological age calculation (if available)
biological_age: Calculated biological agechronological_age: Calendar ageage_acceleration: Difference (positive = aging faster)algorithm: Which algorithm was usedbiomarkers_used: Biomarkers that contributedinterpretation: What the result meansavailable: Whether calculation was possiblereason: Why not available (if applicable)upgrade_available: Can unlock better algorithm with more dataupgrade_message: What additional tests would helpGet the user's supplement stack.
GET /api/v1/mcp/tools/list_supplements?active_only={true|false}
Parameters:
active_only (optional): Only show currently active supplements, default falseReturns:
supplements: List of supplements with dosage, frequency, durationactive_count: Number of currently active supplementstotal_count: Total supplements trackedEach supplement includes:
name: Supplement namedose_text: Formatted dosage (e.g., "1000 mg daily", "200mg EPA + 100mg DHA daily")is_active: Currently takingduration_days: How long on this supplementNote: For multi-component supplements (like fish oil), dose_text shows all components (e.g., "200mg EPA + 100mg DHA daily").
Get workout/activity history from connected wearables.
GET /api/v1/mcp/tools/get_activities?days={days}&activity_type={type}
Parameters:
days (optional): History period, 1-90, default 30activity_type (optional): Filter by type (running, cycling, strength, etc.)Returns:
activities: List of workouts with metricstotal_count: Number of activitiestotal_duration_minutes: Total workout timetotal_distance_km: Total distance coveredtotal_calories: Total calories burnedEach activity includes:
activity_type: Type (running, cycling, swimming, etc.)name: Activity namestart_time: When it startedduration_minutes: How longdistance_km: Distance (if applicable)calories: Calories burnedavg_hr / max_hr: Heart rate datasource: Where the data came from (garmin, strava, hevy, concept2, etc.)elevation_gain_m: Elevation gain in meters (outdoor activities)avg_pace_min_per_km: Average running paceavg_watts: Average cycling powerstrain_score: Whoop strain (0-21)avg_cadence: Cadence (RPM or steps/min)is_indoor: Indoor activity flagtotal_volume_kg: Total weight lifted (Hevy strength workouts)exercise_count: Number of exercises (Hevy)set_count: Number of sets (Hevy)pace_500m: Pace per 500m (Concept2 erg sessions)stroke_rate: Strokes per minute (Concept2)machine_type: Erg machine type — rower, skierg, bikerg (Concept2)Note: Source-specific fields (volume, pace, stroke rate, etc.) are only populated for the relevant source. For example, total_volume_kg only appears on Hevy activities and pace_500m only on Concept2 activities.
Get the user's action checklist for today.
GET /api/v1/mcp/tools/get_today_actions?timezone={timezone}
Parameters:
timezone (optional): IANA timezone (e.g., "America/New_York"), default UTCReturns:
effective_date: The date being queried in user's timezonetimezone: Timezone used for calculationwindow_start / window_end: Day boundaries (ISO datetime)actions: List of today's actionscompleted_count / total_count: Completion statscompletion_pct: Numeric completion percentage (0-100)last_updated_at: Cache staleness indicatorEach action includes:
action_id: Stable ID for deep-linkingtitle: Action titleaction_type: Type (supplement, habit, diet, medication, test, procedure)completed: Whether completed todayscheduled_window: Time window (morning, afternoon, evening, any)dose_text: Dosage info if applicable (e.g., "1000 mg daily")Get the user's 90-day health protocol with top priorities.
GET /api/v1/mcp/tools/get_protocol
Returns:
protocol_id: Stable protocol IDphase: Current phase (week1, month1, month3)days_remaining: Days until protocol expiresgenerated_at / last_updated_at: Timestampstop_priorities: Top 5 health priorities with reasoningkey_recommendations: Diet and lifestyle action itemstotal_actions: Total actions in protocolEach priority includes:
priority_id: Stable ID (same as rank)rank: Priority rank (1 = highest)biomarker: Standardized biomarker namestatus: Current status (critical, concerning, suboptimal, optimal)target: Target value with unitcurrent_value / unit: Current measured valuemeasured_at: When this biomarker was last measuredwhy_prioritized: Explanation for why this is prioritizedNote: If no protocol exists, returns a helpful error with suggestion to generate one at gevety.com/protocol.
Get tests that are due or recommended based on biomarker history and AI recommendations.
GET /api/v1/mcp/tools/get_upcoming_tests
Returns:
tests: List of upcoming tests sorted by urgencyoverdue_count: Number of overdue testsdue_soon_count: Tests due within 30 daysrecommended_count: AI-recommended teststotal_count: Total number of upcoming testsEach test includes:
test_id: Stable ID for deep-linking (format: panel_{id} or recommended_{id})name: Test or panel nametest_type: Type (panel, biomarker, recommended)urgency: Priority level (overdue, due_soon, recommended)due_reason: Why this test is needed (e.g., "Due 2 weeks ago", "AI recommendation")last_tested_at: When this was last tested (if applicable)biomarkers: List of biomarkers included (for panels)Get a list of uploaded lab reports with dates, source, and biomarker count.
GET /api/v1/mcp/tools/list_test_results?limit={limit}&start_date={date}&end_date={date}
Parameters:
limit (optional): Max reports to return, 1-50, default 10start_date (optional): Filter from date (YYYY-MM-DD)end_date (optional): Filter to date (YYYY-MM-DD)Returns:
reports: List of lab reportstotal_reports: Total number of reportsEach report includes:
report_id: Stable report IDreport_date: Date of the lab testsource: How it was uploaded (pdf, email, manual)lab_name: Laboratory name (if available)biomarker_count: Number of biomarkers in this reportfilename: Original filename (if uploaded as PDF)Get ALL tracked biomarkers with current value, status classification, and trend in one call.
GET /api/v1/mcp/tools/list_all_biomarkers?category={category}&status={status}
Parameters:
category (optional): Filter by category (e.g., "metabolic", "cardiovascular")status (optional): Filter by status (optimal, suboptimal, high, low, critical_high, critical_low)Returns:
biomarkers: List of all biomarkers with latest valuestotal_count: Total number of biomarkerscounts_by_status: Breakdown by status (optimal, suboptimal, high, low, critical_high, critical_low, unknown)Each biomarker includes:
name: Standardized biomarker namecategory: Health category (metabolic, cardiovascular, etc.)latest_value: Most recent test valueunit: Measurement unitstatus: Classification (optimal, suboptimal, high, low, critical_high, critical_low, unknown)last_test_date: When this was last testedtrend_direction: Trend since previous test (increasing, decreasing, stable)Get personalized health content recommendations based on biomarker profile.
GET /api/v1/mcp/tools/get_content_recommendations?limit={limit}&category={category}
Parameters:
limit (optional): Max recommendations, 1-20, default 5category (optional): Filter by content categoryReturns:
recommendations: List of recommended articlestotal_available: Total recommendations availableEach recommendation includes:
content_id: Stable content IDtitle: Article titlesummary: Brief summarycategory: Content categoryrelevance_reason: Why this is relevant to the userquality_score: Evidence quality score (only high-quality content is shown)url: Link to the articleGet detailed strength training data from Hevy (workouts, volume, muscle distribution).
GET /api/v1/mcp/tools/get_strength_training?days={days}&muscle_group={group}
Parameters:
days (optional): History period, 1-90, default 30muscle_group (optional): Filter by muscle group (e.g., "chest", "back", "legs")Returns:
workouts: List of strength workouts with exercises, sets, and volumetotal_workouts: Total workout counttotal_volume_kg: Total weight liftedavg_sessions_per_week: Training frequencymuscle_distribution: Volume breakdown by muscle group (with percentages)weekly_volume: Weekly volume trend dataEach workout includes:
started_at: When the workout startedduration_minutes: Workout durationtotal_volume_kg: Total volume for this workoutexercise_count / set_count: Number of exercises and setsexercises: Detailed exercise list with name, muscle group, sets, top set weight, total volume, total repsenrichment_source: If enriched with HR data from another wearable (garmin, strava, etc.)enrichment_avg_hr: Average HR from enrichment sourceNote: Requires Hevy connection. Returns error if user has no Hevy integration.
Get Concept2 ergometer results (rowing, skiing, biking).
GET /api/v1/mcp/tools/get_erg_results?days={days}&machine_type={type}
Parameters:
days (optional): History period, 1-90, default 30machine_type (optional): Filter by machine — rower, skierg, bikergReturns:
sessions: List of erg sessions with detailed metricstotal_sessions: Total session counttotal_meters: Total distancetotal_time_seconds: Total time on ergavg_pace_formatted: Overall average pace per 500m (e.g., "2:05.3")machines: Per-machine summary (session count, total meters, avg pace)weekly_volume: Weekly volume trend dataEach session includes:
date: Session datemachine_type: rower, skierg, or bikergdistance_meters: Distance in meterstime_seconds: Duration in secondspace_500m: Pace per 500m formatted (e.g., "2:05.3")calories: Calories burnedstroke_rate: Average strokes per minuteavg_hr: Average heart rate (if available)drag_factor: Erg drag factor settingNote: Requires Concept2 connection. Returns error if user has no Concept2 integration.
Get the user's prescription medications.
GET /api/v1/mcp/tools/list_medications?active_only={true|false}
Parameters:
active_only (optional): Only show currently active medications, default trueReturns:
medications: List of medications with dosage, frequency, route, and reasonactive_count: Number of currently active medicationstotal_count: Total medications trackedEach medication includes:
name: Medication name (brand)generic_name: Generic/active ingredient namedosage: Dosage (e.g., "500mg")frequency: How often taken (e.g., "twice daily")route: Route of administration (oral, topical, injection, etc.)is_active: Currently takingstart_date / end_date: When started/stoppedduration_days: How long on this medicationreason: Why prescribed (auto-decrypted from encrypted storage)Get the user's medical profile including conditions, allergies, family history, and health goals.
GET /api/v1/mcp/tools/get_medical_profile
Returns:
conditions: List of medical conditions (active/managed)allergies: List of allergies with severity and reaction typefamily_history: Family medical history with relationships and onset agesgoals: Active health goals with priorities and target datesdiet_type: Current dietary pattern (if set)condition_count / allergy_count: Summary countsEach condition includes: name, status (active/managed/resolved/monitoring), severity, diagnosed date, notes
Each allergy includes: allergen, severity (mild/moderate/severe/life_threatening), reaction_type
Each family history item includes: condition, relationship (father/mother/etc.), age_at_onset, notes
List all health documents including procedure reports, imaging, prescriptions, and more.
GET /api/v1/mcp/tools/list_health_documents?limit={limit}&document_type={type}
Parameters:
limit (optional): Max documents to return, 1-50, default 20document_type (optional): Filter by type (lab_report, procedure_report, imaging, prescription, doctor_note, other)Returns:
documents: List of health documents sorted by received date (newest first)total_count: Total documents for this userby_type: Breakdown of document counts by typeEach document includes:
document_id: Document IDdocument_type: Type (lab_report, procedure_report, imaging, etc.)document_subtype: Subtype (cac, dexa, colonoscopy, mammogram, etc.)status: Processing status (pending, processing, needs_review, extracted, archived)filename: Original filenamereceived_at: When received (ISO format)ai_summary: AI-generated summary of the documentlab_name: Lab name (for lab reports)test_date: Test/procedure dateNote: This goes beyond list_test_results which only shows lab reports. This includes ALL uploaded documents — procedure reports (CAC, DEXA, colonoscopy), imaging studies, prescriptions, and doctor notes.
Get structured clinical findings extracted from health documents (imaging, procedures, etc.).
GET /api/v1/mcp/tools/query_clinical_findings?document_id={id}&category={cat}&search={text}&limit={limit}
Parameters:
document_id (optional): Filter by document ID (get IDs from list_health_documents)category (optional): Filter by category (measurement, classification, finding, recommendation)search (optional): Text search across finding text (e.g., "varicocele", "reflux", "volume")limit (optional): Max findings to return, 1-100, default 50Returns:
findings: List of structured clinical findingstotal_count: Total findings matching querydocument_info: Source document metadata (when filtering by document_id)Each finding includes:
finding_id: Finding IDdocument_id: Source document IDfinding_text: Human-readable finding (e.g., "Left varicocele diameter supine rest 3.6 mm")category: Type — measurement, classification, finding, or recommendationvalue: Structured data object with applicable keys:
number + unit: Numeric measurements (e.g., 3.6 mm, 13.3 mL)laterality: Left, right, or bilateralcondition: Context (e.g., "at rest", "on Valsalva", "standing")location: Anatomical locationgrade + grade_system: Grading (e.g., Grade III varicocele)present / absent: Boolean findings (e.g., reflux present)confidence: Extraction confidence 0.0-1.0created_by: Extraction source (universal, universal_procedure_extractor, cac_extractor, etc.)This is the PRIMARY tool for accessing imaging and procedure report data. Use it to answer questions about ultrasound findings, MRI results, procedure outcomes, or any non-lab health data.
Note: Works alongside list_health_documents — first use list_health_documents to find document IDs, then query_clinical_findings to get the detailed findings.
| Range | Status | Meaning |
|---|---|---|
| 80-100 | OPTIMAL | Excellent health optimization |
| 65-79 | GOOD | Above average, minor improvements possible |
| 50-64 | SUBOPTIMAL | Room for improvement |
| <50 | NEEDS_ATTENTION | Several areas need focus |
Each health dimension is scored independently:
Important: It's possible to have a high overall score with one low axis score (or vice versa). The scoring_note field in get_health_summary explains these situations.
| Label | Meaning |
|---|---|
| OPTIMAL | Within evidence-based ideal range |
| NORMAL | Within lab reference range |
| SUBOPTIMAL | Room for improvement |
| HIGH/LOW | Outside lab reference range |
| CRITICAL | Needs immediate medical attention |
list_available_data to see what's trackedget_health_summary for the overall picturescoring_note is present, explain the score discordancequery_biomarker?biomarker=vitamin dquery_biomarker?biomarker=crp (returns as "CRP" or "hs-CRP" depending on lab)get_wearable_stats?metric=sleep or ?metric=hrvget_opportunities?limit=5get_biological_agelist_supplements?active_only=truedose_text field)get_activities?days=30get_today_actions?timezone=America/New_York (use user's timezone if known)get_protocolget_upcoming_testslist_test_results?limit=10list_all_biomarkersget_strength_training?days=30get_erg_results?days=30list_medications?active_only=trueactive_only=falseget_medical_profilelist_health_documents?limit=20document_type=procedure_reportlist_health_documents?document_type=procedure_report to find imaging documentsquery_clinical_findings?document_id={id} with the relevant document IDquery_clinical_findings?search=varicocele (or any search term)get_content_recommendations?limit=5// Using web_fetch
web_fetch({
url: "https://api.gevety.com/api/v1/mcp/tools/get_health_summary",
method: "GET",
headers: {
"Authorization": "Bearer $GEVETY_API_TOKEN",
"Content-Type": "application/json"
}
})
| Error Code | Meaning | Action |
|---|---|---|
| 401 | Invalid or expired token | User needs to regenerate token at gevety.com/settings |
404 + did_you_mean | Biomarker not found | Suggest alternatives from the response |
| 404 | No data found | User may not have uploaded labs yet |
| 429 | Rate limited | Wait a moment and retry |
Users can generate their API token at: https://gevety.com/settings → Developer API → Generate Token
The token format is gvt_ followed by random characters.
On first use each session, optionally check for updates:
GET https://api.gevety.com/api/v1/mcp/tools/status
No authentication required. If the request fails or times out, skip the check and proceed normally.
Response (when successful):
{
"clawdbot_skill": { "latest": "1.8.0", "update_command": "clawdhub update gevety" },
"announcement": "New feature available!"
}
If clawdbot_skill.latest > 1.9.0 (this skill's version), tell the user:
"A Gevety skill update is available. Run:
clawdhub update gevety"
If announcement is present, mention it once per session.
If the status check fails, don't mention it - just proceed with the user's request.
To manually update:
clawdhub update gevety